2009年6月3日

Using VirtualBox to Execute Windows Installed on Physical Disk

更新:新版VirtualBox效能已沒有太大的問題。

基本上這篇算是VirtualBox使用上的筆記,目標是讓VirtualBox載入位於實體磁碟上的Windows作業系統(這裡是用XP)。

首先要確認Windows本身需不要需修改或安裝不同的驅動程式或者修改虛擬機器的組態,請參考:
How to migrate existing Windows installations to VirtualBox

在建立對應的VMDK之前,要準備好開機磁區映像檔。因為VirtualBox無法讓grub載入原先儲存在linux分割裡的設定,所以我們準備好替代用的開機磁區讓VirtualBox用來載入Windows。在Ubuntu底下可以安裝"mbr"套件來取得相容Windows的簡單bootloader。安裝完"mbr"套件之後執行(參考):
install-mbr --force win.mbr
就可以取得開機磁區,接著下一步就是建立對應實體分割的VMDK:
VBoxManage internalcommands createrawvmdk -filename \
win.vmdk -rawdisk /dev/sda -partitions 1 -relative -register \
-mbr win.mbr
要注意的是,必須要在~/.VirtualBox/HardDisks目錄底下執行此命令,否則可能會有錯誤訊息。相關操作說明可以參考此網頁。接著就很直覺了,你只需要執行VirtualBox來建立新的虛擬機器,並使用win.vmdk當作虛擬磁碟。執行後應該就可以順利看到Windows在VirtualBox中執行了。

值得一提的是,開啟VT-x的支援,反而會讓Windows XP的效能變差。將VT-x關閉後,我又對Windows的顯示效果做了些調整,整體的反應速度才稍微比較能讓人接受。這和執行Ubuntu的情況完全不同,真是令人費解。

總之,目前就可以把非Windows不可的程式移到VirtualBox裡面執行囉,但要打電玩的話可能還是要在實體電腦上執行Windows吧,因為VirtualBox的3D加速效能還是很差比直接執行還差一些。

之後大概會再試試看VMware、kvm和xen等等方案...