[VirtualBox] 在 VM 中掛載 USB disk
這一篇其實是接續著 在 Mac 上建立 Ubutu 的安裝 USB disk 這篇而來的,
當我製作好 USB 安裝碟後,想先在自己的 VM 上測試一下,
看看這個 USB 碟是不是真的能拿來用,
結果發現,VirtualBox 似乎不能直接選擇 USB disk 來當作開機媒體,
得有一些手動操作才行…
真希望 VirtualBox 這一部分可以改善呀…
參考資料:
VirtualBox Mac OS X 10.9: Boot From an USB Drive
Directly mount disk in virtualbox vm
1. 建立一個連接到 USB 的 VMDK 硬碟檔
首先執行 diskutil list,看一下 USB disk 是被掛載在哪一個設備上面,
以下例來說,是在 /dev/disk2:
testuser@localhost ~ $ diskutil list /dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *750.2 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_CoreStorage 749.3 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3 /dev/disk1 #: TYPE NAME SIZE IDENTIFIER 0: Apple_HFS Macintosh HD *748.9 GB disk1 Logical Volume on disk0s2 3253F173-1E9F-4890-B6F5-13E06D335810 Unencrypted /dev/disk2 #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *4.1 GB disk2 1: DOS_FAT_32 MULTIBOOT 4.1 GB disk2s1
接著要把掛載的分割區都卸載~這邊要注意並不是要彈出 (eject) 整個 USB 碟,
而只是卸載 USB 碟上的分割區,
因此要用 diskutil unmountDisk 這個指令,而不是 diskutil unmount 喔~
在卸載的過程中有可能會遇到錯誤,多執行幾次,
確定執行成功,才能往下一步囉~
testuser@localhost ~ $ diskutil unmountDisk /dev/disk2 Unmount of disk2 failed: at least one volume could not be unmounted testuser@localhost ~ $ diskutil unmountDisk /dev/disk2 Unmount of all volumes on disk2 was successful
Mac 上的 USB 碟設備通常 owner 是 root,導致接下來的某些動作會因為沒有權限而失敗,
因此要先用 chown 把 USB 碟相關的所有設備,都改成目前使用者~
像我現在的使用者是 testuser,那就用 chown 將 /dev/disk2* 的 owner 都改成自己:
testuser@localhost ~ $ sudo chown testuser /dev/disk2* testuser@localhost ~ $ ll /dev/disk2* brw-r----- 1 testuser operator 1, 5 Sep 19 00:53 /dev/disk2 brw-r----- 1 testuser operator 1, 6 Sep 19 00:51 /dev/disk2s1
這時就可以執行 VirtualBox 的命令,建立一個名叫 usb.vmdk 的 raw VMDK,
讓它連結到 /dev/disk2 這個 USB 設備~
testuser@localhost ~ $ VBoxManage internalcommands createrawvmdk -filename usb.vmdk -rawdisk /dev/disk2
RAW host disk access VMDK file usb.vmdk created successfully.
2. 將這個新建的 raw VMDK 掛載到 VM 中
在 VirtualBox 中,選擇 VM > Settings > Storage,
在 Controller: IDe 的部分,選擇新增一個硬碟:
選擇 Choose existing disk 來加入剛剛建立好的 raw vmdk:
假設出現了 “Failed to open the disk image file….” 類的訊息,
非常有可能是因為 Mac 又去自動掛載了 USB 碟上的分割區,
但事實上同時是只能有一個人來存取 USB 碟,
因此會出現 VERR_RESOURCE_BUSY 的訊息:
當發生上述錯誤時,把 步驟 1 裡提到的 diskutil unmountDisk 和 chown 等指令都再執行 一下,
再試一次看看,通常是會成功的,掛載好的 usb.vmdk 就會出現了~
3. 將 VM 以連接到 USB 碟的硬碟 VMDK 重開機
在步驟 2 中,我們新增了一個 usb.vmdk 的硬碟,
因此在 VM 開機時,在讀取這個硬碟時,事實上就會去讀取 USB 碟~
跟步驟 2 類似,如果又看到了 VERR_RESOURCE_BUSY 的錯誤訊息的話,
極有可能又是 Mac 去掛載了 USB disk 的分割區,
解決方法一樣是去執行 diskutil unmountDisk 和 chown後,再立刻將 VM 重開機囉~
只要搶在 Mac 去掛載分割區之前,讓 VM 開機開起來,就不會有問題了:
如果開機成功的話,就會用這 USB 碟的內容,開始安裝 Ubuntu 囉~