Li Wei's Blog

"I Think, Therefore I Am" ~ René Descarte

This website is encoded with UTF-8.

Home > Technical > 在同一顆外接硬碟做出 HFS+ 和 FAT32 共存的分割磁區

在同一顆外接硬碟做出 HFS+ 和 FAT32 共存的分割磁區

HFS+及Journaled HFS+是Mac OS X所用的磁碟格式,而FAT 32則是windows長年以來用的格式,這個大家應該不陌生。對於有Apple又有Windows的使用者來說,檔案交換用外接硬碟最方便,容量又大,傳得又快。可是為了平台相容性,磁碟格式不得不用FAT32,這個最多windows用的、而Mac也認得的格式。

老實說,FAT32的限制很大,尤其對長檔名的支援度很差。有iPod或是外接硬碟的人就知道,用FAT32格式在copy mac上的資料時,常常會出現什麼檔名不支援啦等等問題,一般檔案也就算了,有時copy的是一大堆檔,或是程式,這時根本就不知道什麼檔案的檔名出了問題,這時的解決方法就只有做成一個壓縮檔,才能克服這個問題。這個方法的缺點是,當檔案又多又大時,壓縮就要很久,而且每一次傳都要壓縮,是一件很煩人的事情。

用windows格式的另外一個缺點就是,用FAT32的格式久了,不知是不是兩個OS的paging方式不一樣,所以檔案的indexing會出問題。症狀就是Mac一次要傳一堆檔案過去時,就會出現什麼錯誤-58之類的訊息,然後檔案就不能傳了,這個問題在我以前備份時經常出現,真是氣到發昏。

那麼我們為什麼不在一個外接硬碟上做切兩個磁區呢?
一個給Mac用,一個給windows用。在Mac上FAT32也吃啊,理論上應該在Mac上兩種磁區都看得到,那麼傳檔案就方便很多了:要傳給Mac平台的放在HFS+或是Journaled HFS+格式的磁區,這樣就不會有長檔名問題;要給Windows或是windows自己要互通的,當然就放到FAT32去,也不會有什麼怪問題出現啦!可是事實上沒有這麼簡單,Windows不用說了,只知道兩種格式:FAT32和NTFS(哦,還有FAT16),不可能在windows上做出HFS+的格式。Mac上雖然可以做出MS-DOS的格式,但是用系統的Disk Utility(磁碟工具程式),只要有一個磁區是HFS+,所有的硬碟格式都會變成HFS+,換句話說整個硬碟的格式要一樣,MS-DOS就全是MS-DOS,HFS+就是HFS+。這實在是很惱人。
昨天想起以前在網路上教過如何在一顆磁碟做出混合式磁區的夢幻神技,於是就來嘗試看看,結果居然試成功了!在這裡分享給大家,步驟其實不難,但是需要用到command line的指令,其實也不多,以下我就把指令如何打,如何分割寫出來。

一、需要的工具
1.外接硬碟一顆(廢話)
2. Mac一台,最好是有Panther在裡頭
3. Terminal.app (終端機)
強調一下,這個方法一定會有危險性在,比如說在下分割的指令時打錯磁碟的序號,很可能就把另外一個磁碟的東西全部洗掉了。至於磁碟的效能會不會受影響?我不知道,可能會吧,有好處一定會有壞處,就看個人的取捨囉。

二、用到的指令:diskutil
這個指令就是Disk Utility,其實也是Mac內建的,算是Unix用的指令。功能和Disk Utilities差不多,只是更為強大,它可以做出混合式的磁碟磁區。會用到的指令大多都是diskutil的附屬指令,大家看下去就會了解了。

三、步驟
1. 先把外接硬碟接到Mac上,但是先不要開電源
2. 打開Terminal,在Terminal中鍵入
ls /dev/rdisk?
這個指令是要列出你目前系統上有掛載的磁碟,磁碟後面會有編號,例如 /dev/rdisk0, /dev/rdisk1之類的。
3. 把外接硬碟打開,再輸入一次相同的指令,這樣你就可以比較兩次出現的結果的不同。如此一來我們就知道我們的外接硬碟是哪一顆了。如果不知道是哪顆磁碟就亂下指令,後果可是不堪設想的!

4. 輸入
diskutil list
這個指令會顯示出所有系統上掛載磁碟的詳細資訊,對照剛剛在 ls /dev/rdisk?找到的外接硬碟序號,就能知道你的外接硬碟叫什麼名字。For example: disk1。如我這裡要切的硬碟取名叫做FUJITSU,就能看到FUJITSU的identifier是disk1。在我們進行下一步之前,先把磁碟卸載,卸載後,在Terminal上還是看得到你的外接硬碟的。

附帶一提,如果已經很熟練的話,其實ls /dev/rdisk?這個指令是可以不用用的,只要用diskutil list就可以了。


5. 重頭戲
diskutil partitionDisk device numberOfPartitions MBRFormat < part1Format part1Name part1Size > < part2Format part2Name part2Size >
這個指令就是我們要來分割磁碟的指令,這是一個綱要,你不能照抄喲。

我來一個一個指令解釋一下:
首先
diskutil partitionDIsk 這是分割硬碟的指令。
之後的參數有:
< device > 這個要打你要分割的磁碟名字,如剛剛看到的是disk1
< numberOfPartitions > 打你要分割成幾個硬碟,分成兩個就打 2
MBRFormat 這個參數是要給Windows看的,讓這個硬碟的Partition Talbe用Windows讀得到的方式寫入
< part1Format part1Name part1Size > 這個三個參數分別是你的第一個分割是什麼格式、取什麼名字、大小是多少。如果我第一個磁區要用Journaled HFS+,取名為Mac,大小是30G,那麼我就打 "Journaled HFS+" Mac 30G ,之後依此類推。
要注意的是,windows用的格式名叫做"MS-DOS",不能打"FAT32"。還有,給windows用的磁區名字不要用小寫,一定要大寫,且不能超過12個字母。
所以我自己分割的磁區就是用這樣的指令:
diskutil partitionDisk disk1 2 MBRFormat "Journaled HFS+" Mac 30G "MS-DOS" WINDOWS 30G


關於磁區大小的問題,你可以不用打的那麼詳細,或是用計算機慢慢算。其實只要打個大概的值,比如說30G,這樣就可以了。給第二個磁區的值大可以大過剩下的空間,反正剩下多少就只能割多少,電腦會自己處理的。總比割小了,反而浪費硬碟空間。

這樣分割完基本上就大功告成了!在windows上可以看到專屬他的那個磁區,而在Mac上呢,嘿嘿,可是兩個都能看到呢!以後如果熟練的話,只要兩個步驟就可以了呢!如下圖所示。

如果有時交換用時,windows格式的磁區可能在掛載時比較慢,這時開Disk Utilities修一下磁區,馬上就可以讓Windows磁區乖乖出現囉!


 

Site Meter


Copyright © 立維. All rights reserved.