Virtual Machine 的 Guest 怎麼從 USB 開機?

最近因為工作的關係,很需要從 USB 不斷的開機。在實體的機器,開機需要等待兩分鐘以上的 BIOS 過程,生命不斷的流逝下,興起了採用 VM 進行測試的念頭。剛好最近買了一台新的 notebook,記憶體特意買大一點,所以就開始試起 VM boot。

過去同事們最常使用的是 VM Ware,所以先說說 VMWare ,簡單的答案是,VMWare 沒有支援從 USB 開機。但是有好心人寫了一套 plop boot manager,只要在 VMWare 中選擇建立一個以 iso 為開機的新 vm,其中的 iso 可以指定從 plop 的 zip 中取出的 plpbt.iso檔。然後當你 boot 時,就可以看到 usb 開機的選項。選了就可以從 usb 開機。但這個方法我用了身邊的所有 usb 碟,一直沒有成功 ,Clonezilla 可以,但 Windows embedded 7 的安裝 usb 就是不行 (FAT32 or NTFS 皆不行),我得到的畫面如下

大概就是說找不到可以 boot 的 device。另一個問題是 VMWare 的字在我的 notebook 上實在太小了,為了眼睛,我就跳槽到 virtual box 的懷抱了。

VirtualBox 是 Oracle 的 Open Source project,所以免費。另外他支援 VMWare 的 vmdk 檔案,這代表過去我們已經用了多時的 vm 基本上都可以繼續使用。不過小地方可能要注意,那就是兩個 vm 系統模擬的硬體可能會有些差異,所以一些 driver 可能得重裝。

進入正題,VirtualBox 有沒有支援 USB 開機呢? 答案是:也沒有。因為開機能不能選 USB 是 BIOS 的事情,所以簡單的說就是 VirtualBox 的 bios 並沒有提供 USB 開機,我看到有人在 virtualbox 的論壇上提到此事,開發人員的回應是,這樣的工程相當浩大,目前有更重要的事情是讓 vm 內 USB 3.0 的速度不要插實體的太多。聽起來是有點道理,但,我的大計不就報銷了 Orz。

不過幸好請教G大神後,找到很多人教你怎麼讓  VirtualBox 可以用 USB 開機,其中最多人教的做法是:利用 VirtualBox 的 command line 命令 VBoxManage internalcommands createrawvmdk -filename c:\usb.vmdk -rawdisk \\.\PhysicalDrive# raw disk,然後將這個 raw disk 加到 virtualbox 的 vm 內。記得這個 disk 看起來像 hard disk,所以一定要跟原來 vm 內的 hard disk 在同一個 storage controller 內 (一般來說是 SATA)。而且這個 disk 一定要是編號最小的一個,可以將原來硬碟的編號改大,再將 usb.vmdk 改到最小。


這樣就可以開機了。但是,我照做之後,得到的畫面是



看起來結果跟 VMWare 差不多(Clonezilla 也是可以)。後來猜想應該是  file system 的問題,所以費了九牛二虎之力 (中間的故事也很黯然銷魂,不過就不贅述了),終於讓我可以從  USB 開機了,所以 VirtualBox 的 bios 看來無法支援 NTFS 的 USB 開機,不過高興只有一下下,就又被塞了這個訊息



幸好 G 大神根據錯誤訊息給了一個指引:Virtual Machine USB Boot。
下載,免安裝,一切 OK,真是太完美了。Virtual Machine USB Boot + Virtual Box 看來將會是我最近的好幫手。

1 comments