Linux下VirtualBox啟動物理硬盤上已安裝的Window 8系統


創建虛擬機

1.創建一個沒有硬盤的windows虛擬機,與已安裝在物理硬盤上的系統一致。
2.通過命令行在創建的虛擬機目錄下創建一個指向物理硬盤的虛擬硬盤
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,2,3,4,5,8 -relative
3.在創建的虛擬機中加載剛創建的vmdk虛擬硬盤。
4.正常啟動虛擬機,一切搞定。
5.當然,要在虛擬機里用得爽,就要把配置搞好,並安裝上extension包里的guest additions。

過程中的問題
看似簡單的過程,還是有些問題會出現。
1.創建好的vmdk虛擬硬盤無法使用,報 VERR_ACCESS_DENIED 錯誤。
:首先找到了一往篇windows下的文章 http://blog.csdn.net/dewafer/article/details/41366441 ,其中提到了同樣的錯誤。但windows下的問題出在,博主沒有用管理員權限創建虛擬硬盤,博主通過用管理員權限創建之后解決了他的問題。而我是用linux,而且是sudo創建的(創建完之后會是兩人個文件,一個是你創建的文件名加上.vmdk,另一個是文件名加上-pt,然后才是.vmdk,不知這兩個文件分別是什么作用?),所屬用戶已經是root了。但我還把用戶改成了自己,把文件的組歸屬到了vboxusers(virtualbox的用戶組),並設置了664的權限,問題依舊。再看了一遍官方文檔,發現自己沒有完全按文檔中寫,我寫成了VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,2,3,4,5,8 少了-relative參數!加上之后,再運行virtualbox,一切正常!

P.S.
要使系統開機之后直接能使用物理硬盤上的windows,要在系統加載時就添加對這些物理盤的讀寫權限,在/etc/ude/rules.d下創建一個新的文件61-vbox-vmdk.rules,其內容為

# Full disk needs to be readable by vboxusers
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="disk", GROUP="vboxusers", MODE="0640"
# sda2, 6 need to be R/W by vboxusers
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="1", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="2", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="3", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="4", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="5", GROUP="vboxusers", MODE="0660"
ENV{ID_SERIAL_SHORT}=="TF655BWH163KLR", ENV{DEVTYPE}=="partition",ENV{ID_PART_ENTRY_NUMBER}=="8", GROUP="vboxusers", MODE="0660"

而其中的TF655BWH163KLR是硬盤的標識,可以以下命令來獲取

hdparm -I /dev/sda | grep Serial

而其中的數字表示了硬盤的分區,1表示第一個分區,sda1,依次類推。

參考鏈接:
https://cnzhx.net/blog/opensuse-tw-virtualbox/#i-5
https://cnzhx.net/blog/boot-linux-partition-on-physical-hd-with-vm-in-windows/
http://www.virtualbox.org/manual/ch09.html#rawdisk

P.S.P.S.
其實,這一次的目的是想在virtualbox中通過passthrough來實現物理機在virtualbox里流暢運行的,但在買電腦的時候只注意了CPU是否支持vt-d(amd叫IOMMU)而忽略了主機對vt-d(北橋芯片,詳見http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf)的支持性,結果本本是intel的HM77(http://ark.intel.com/products/64339),官方已經確認不支持vt-d。后來又了解到,即便是主板芯片組支持了該功能,但生產廠商的BIOS中沒有相關的開啟項,也是惘然,除非主機默認打開了vt-d功能。所以要使用vt-d這個高級功能還真是要費點心思。當然,使用vt-d,你還得有兩塊顯卡(一般的獨顯本本都能滿足的吧,一個是CPU的集顯,一個是獨顯)以及兩個顯示器(如果沒有,也可以用VNC來遠程使用,據說只損失5%的性能)。好了,如果之后有機會換上了全套功能的電腦,再來一發passthrough的文章。

最后給一篇半虛擬化的文章,以供擴展閱讀。

http://smilejay.com/2012/11/kvm-vtd-overview/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM