[華語, cmn-Hant-TW]
之前有提到過用VMWare 開 FreeBSD 實體磁碟區會遇到的小問題,現在這個組合又遇到另一個超怪的現象了。 這次的情況是有其他的 Guest OS 要用 FreeBSD 磁碟區前面的實體磁碟區 (有兩個,分別是 fat32 和 ntfs),把 VMWare 的虛擬磁碟對應設好之後,一跑就會吃到這個錯誤訊息:
Cannot open disk "S:\Virtual Machines\test\physical.vmdk" or one of the snapshot disks it depends on. |
進去看 log 之後發現錯誤訊息是長這樣子的:
Jun 24 09:21:46.216: vmx| Partition:Invalid slice magic number. Jun 24 09:21:46.216: vmx| DEVCREAT: Unable to read partitions from device Jun 24 09:21:46.216: vmx| DISKLIB-LIB : Sanity check failed! Jun 24 09:21:46.218: vmx| DISKLIB-LIB : Failed to open 'S:\Virtual Machines\test\physical.vmdk' with flags 0xa (The specified device is not a valid physical disk device). |
無論 FAT32 或是 NTFS 都一樣,而 FreeBSD 的那塊倒是可以正常讀取。 再繼續試了幾種設定都不成功之後,就決定狠下心來備份重灌做實驗了。 首先是砍掉最後面的那塊 FreeBSD,結果砍掉之後 VMWare 就讀得到前面的那兩塊了。 接著在砍掉的地方建立了一塊新的 NTFS 磁碟區,試一下確定三塊都可以正常使用,這時候心想可能是原來的 FreeBSD 磁碟區有問題,那就重灌一個新的 FreeBSD 吧。
重灌 FreeBSD 之後再把 VMWare 設定好,靠腰,跟原來的情況一模一樣,該不會是 VMWare 和 FreeBSD 的磁碟區八字不合吧? 這時候心裡就浮現了一個念頭:如果是假的 FreeBSD 磁碟區不知道會怎樣? 在網路上找到一個可以修改磁碟區類型的小工具 – MBRwizard! 來做實驗:首先建立一個 NTFS 的磁碟區,確認 VMWare 可用之後,接著用 MBRwizard! 把這個磁碟區的類型從 NTFS (0x07) 改成 386BSD (0xA5),再重設 VMWare 虛擬磁碟之後發現…… 這 樣 就 不 行 了! 而且把類型改回來 VMWare 就讀得到了,改成其他的類型也都沒問題,所以搞了半天真的是 VMWare 和 FreeBSD 的磁碟區不合,真是的。 因為不合所以 FreeBSD 不能用那就算了,沒想到居然是 FreeBSD 可用,反而是旁邊的其他磁碟區不能用,這就不知道該如何去解釋了,也許 VMWare 在遇到 386BSD 類型 (0xA5) 的時候,會做一些什麼特別的事情造成誤判吧?
再進一步的實驗發現其實改磁碟區類型是不需要重新設定 VMWare 的 (一般情況 VMWare 在實體磁碟區有變更的時候會發出警告要求重新建立一個對應實體磁碟區的虛擬磁碟,但這種情況不會)。 在 NTFS 類型 (0x07) 的情況下可以用的磁碟區,改成 386BSD (0xA5) VMWare 依然可用,那理論上只要建立虛擬磁碟的時候不要出現 386BSD,等設定好 VMWare 之後再改回來就可以解決問題。 所以接下來的實驗就是安裝 FreeBSD,然後在 Windows 下用 MBRwizard! 把他偽裝成其他類型的磁碟區,然後看 VMWare 吃不吃。結果真的沒問題! 當然,偽裝過的 FreeBSD 是沒辦法開機的,要再改回來才能使用。 把磁碟區類型改回來但不重設 VMWare 的虛擬磁碟,哈,果然可以! 現在那顆硬碟上不只 FreeBSD 可以正常使用,其他的磁碟區也可以正常讀取了。
所以結論就是:同一顆硬碟上如果同時有 FreeBSD 和其他的磁碟區,在建立 VMWare 的虛擬磁碟前,先用 MBRwizard! 把 FreeBSD 的磁碟區偽裝成別的,等所有的磁碟區對應都設好之後再把 FreeBSD 用的那塊改回 386BSD 類型即可,然後王子和公主就可以繼續過幸福美滿的日子了。