Linux下VirtualBox啓動物理硬盤/移動硬盤/U盤上已安裝的WINDOWS系統上已安装的Window 8系统
一、創建一個無盤虛擬機
創建一個沒有硬盤的WINDOWS系統的虛擬機,要與物理硬盤上的系統保持一致。創建過程就不廢話了,最常規的流程。
二、將當前用戶加入vboxusers和disk組
sudo gpasswd -a $USER disk
實際上只加入disk組應該就可以了,爲了保險起見,我還是加了vboxusers組。
三、以命令行的方式創建一個指向物理硬盤的虛擬磁盤文件
VBoxManage internalcommands createrawvmdk -filename ~/VirtualBox\ VMs/windows10/raw_windows10.vmdk -rawdisk /dev/sda -partitions 1,2,3,4 -relative
virtualbox默認在當前用戶主目錄下創建了一個虛擬機儲存和運行的目錄--VirtualBox VMs,我沒有更改,直接使用了默認路徑。windows10目錄就是第一步中創建的虛擬機所在目錄,我將vmdk虛擬磁盤文件創建在了這個目錄下,本來就是給這個虛擬機使用的嘛!
-rawdisk參數表示要創建的是一個指向物理磁盤的文件,/dev/sda是我的WINDOWS系統所在的物理硬盤在linux系統下的路徑和名稱,-partitions用來指定需要映射哪些磁盤分區,如果要映射整個硬盤則可以省略此參數。
-relative參數表示創建的虛擬磁盤文件是一個指向別處物理磁盤的鏈接文件,沒有加這個參數可能會導致失敗。
此條命令執行成功之後,會生成兩個文件,一個主文件名帶_pt尾巴,一個不帶。
四、打開虛擬機的設置,加載剛創建的vmdk虛擬磁盤
只需要加載不帶_pt尾巴的那個虛擬磁盤就可以了。然後正常啓動虛擬機,完美。下一步在虛擬機系統中安裝virtualbox的extension包裏的guest additions套件。
先在宿主linux系統中安裝extension包,我的系統的是Arch Linux,因此如下安裝:
sudo pacman -S virtualbox-guest-iso virtualbox-guest-utils
再加/usr/lib/virtualbox/additions/VBoxGuestAdditions.iso 加載到虛擬機的虛擬光驅中,再到虛擬系統中運行虛擬光驅中的VboxWindowsAdditions.exe文件來安裝guest extension包,安裝好之後就可以實現鼠標在宿主系統和虛擬系統中無縫漫遊,虛擬系統的屏幕分辨率也可以隨着窗口的調整而自動適配,宿主機和虛擬機之間還能實現雙向複製粘貼。
五、可能出現的問題
創建的vmdk虛擬磁盤可能無法使用,在往虛擬機上掛載時會報“VERR_ACCESS_DENIED”的錯誤。
這個問題一看就明白,訪問拒絕嘛!權限問題,但是使用chown修改文件屬主沒用,使用chmod修改文件訪問權限也沒用,因爲vmdk文件最終指向的是物理磁盤,所以僅修改vmdk文件的屬主和訪問權限是不可能解決問題的。
修改/dev/sda磁盤文件的屬主和權限也是不可取的,也是沒法做到的事。其實碰到這類與硬件訪問權限相關的問題,最簡單的解決方法就是將當前用戶加入到具有此硬件設備操作權限的用戶組中去,也就是第二步所做的事,將當前用戶加入到disk組,這樣就可以了。網上很多扯蛋的文章,什麼往/etc/udev/rules.d目錄加規則文件,還寫一大堆看上去就很繁的權限規則,簡直能搞人搞吐血。
archlinux wiki上是這樣說的: Access to block devices not affected by other groups such as optical, floppy, and storage 。這是說用戶加入了disk組之後就能夠訪問那些不受 optical ,floppy 和 storage組控制的塊設備。