virtualbox-rawdisk
update 2020-03-05
概要
VirtualBox Guestマシンから仮想ディスクファイル(vmdk)を経由してHostマシンのHDD(またはUSBメモリなど)にアクセスする。(rawdiskアクセスという)
※vmdkファイルは 1KB程度の小さいファイルである。
ここではHostマシンはWindowsとしている。
Hostマシンの Disk 0 をGuestマシンの hdd0.vmdk として割り当て、 Guestマシンで hdd0.vmdk にアクセスすれば Disk 0 にアクセスすることになる。
Hostマシンの Disk 1 をGuestマシンの usb1.vmdk として割り当て、 Guestマシンで usb1.vmdk にアクセスすれば Disk 1 にアクセスすることになる。
仮想ディスクファイル(vmdk)を作る
(1) コマンドプロンプトを「管理者として実行」する。
VBoxManage.exeコマンドのあるフォルダに移って作業する。
cd %programfiles%\Oracle\VirtualBox
(2) VBoxManage コマンドでHDD情報(物理ディスク番号)を確認する。
実行するとpartition情報が表示される。
ディスク0 (\\.\PhysicalDrive0)の場合は
VBoxManage internalcommands listpartitions -rawdisk \\.\PhysicalDrive0
ディスク1 は \\.\PhysicalDrive1 のように指定する。
Windowsの場合は物理ディスク番号は次のようにして解る。
「ディスクの管理」で表示されている「Disk 0」「Disk 1」などの番号である。
Powershell(管理者)で下記のコマンドを実行すれば物理ディスク番号が解る。
Get-WmiObject Win32_DiskDrive | Select-Object -Property BytesPerSector, DeviceID, Model, Partitions, Size | Sort-Object DeviceID
コマンドプロンプト「管理者として実行」で物理ディスク番号を調べるには、
wmic diskdrive list brief を実行する。
接続しているデバイスの物理ディスク番号が \\.\PHYSICALDRIVE0のように末尾に番号が付いて表示される。
USBデバイスの場合はデバイス名が「USB DISK USB Device」として表示される。
Linuxの場合は次のようにデバイスを指定する。( fdisk -l コマンドでデバイスを確認できる)
VBoxManage internalcommands listpartitions -rawdisk /dev/sda
(3) rawdiskイメージファイル(vmdk)を作成する。(例: F:\hdd0.vmdk を作成する)
HostマシンのDisk 0 (\\.\PhysicalDrive0)を rawdiskとして vmdkファイル(hdd0.vmdk)に割り当てる。
VBoxManage internalcommands createrawvmdk -filename f:\hdd0.vmdk -rawdisk \\.\PhysicalDrive0
これでf:\hdd0.vmdkファイルが作成されている。
Linuxの場合は次のように指定する。
VBoxManage internalcommands createrawvmdk -filename /VirtualBox/hdd0.vmdk -rawdisk /dev/sda
(4) 以上で 仮想ディスクファイル が作成できた。
作成した vmdkファイルを経由してHostマシンのDisk 0 にアクセスすることになる。
仮想ディスクファイルを使う
(1) VirtualBoxを「管理者として実行」で起動する。
(2) 新規にGuesマシンを作成する際に「ハードディスクの選択」では、すでに作成してある f:\hdd0.vmdkファイルを使うので、
「すでにある仮想ディスクファイルを使用する」を選択し「参照」ボタンで「f:\hdd0.vmdk」を選択する。
(3) 作成した仮想マシンのストレージには hdd0.vmdk が割り当てられている。
この状態でGuestマシンを起動するとhdd0.vmdk(つまり HostマシンのDisk 0)が起動することになる。
USBメモリから起動する
USBメモリを仮想ディスクファイル(例: usb1.vmdk )として作成すればUSBメモリから起動できる。
作業手順は「仮想ディスクファイル(vmdk)を作る」と同じ要領である。
(1)ブート可能なUSBメモリを作成して、USBポートに挿しておく。
※Windowsの「ディスクの管理」でUSBメモリに割り付けられたディスク番号を確認するためである。
(2)Windowsの「ディスクの管理」でUSBメモリに割り付けられたディスク番号を確認する。
ここではディスク番号 1 (disk 1)であるものとする。
(3) コマンドプロンプトを「管理者として実行」する。
VBoxManage.exeコマンドのあるフォルダに移って作業する。
cd %programfiles%\Oracle\VirtualBox
(4) VBoxManage コマンドでHDD情報を確認する。
次のように実行するとpartition情報が表示される。
PhysicalDriveX の「X」はディスク番号である。
ディスク番号はWindowsの「ディスクの管理」(diskmgmt.msc)で確認できる。
今回のUSBスティックはディスク1なので \\.\PhysicalDrive1 のように指定する。
VBoxManage internalcommands listpartitions -rawdisk \\.\PhysicalDrive1
(5) rawdiskイメージファイル(vmdk)を任意のフォルダに作成する。
HostマシンのUSBスティックを (\\.\PhysicalDrive1) rawdiskとして vmdkファイルに割り当てる。
VBoxManage internalcommands createrawvmdk -filename f:\usb1.vmdk -rawdisk \\.\PhysicalDrive1
(6) 以上で 仮想ディスクファイル が作成できた。
作成した vmdkファイルを経由してHostマシンのDisk 1にアクセスすることになる。
(7) VirtualBoxを「管理者として実行」で起動する。(管理者として実行しないと 作成した xxx.vmdk を追加できなくて、エラーになる)
VirtualBoxを新規に名前を付けて作成する
「すでにある仮想ディスクファイルを使用する」選択して「フォルダ参照」アイコンをクリックする
追加アイコンをクリックする
vmdkを選択する
追加されたvmdkをダブルクリックして割り当てる
vmdkが設定された
仮想PCのストレージに、すでに作成済みの usb1.vmdk が割り当てられた。( xxx.vdi を割り当てるのではない)
属性の「ホストの I/O キャッシュを使う」を「ON」にする。
(8) 「設定」/「USB」で「USBコントローラーを有効化」をON にして「USB2.0コントローラー」または「USB3.0コントローラー」にチェックを付ける。
USBデバイスフィルターには何も指定しない。(指定しているとbootエラー発生。FATAL: Could not read from the boot medium! Sysytem Halted. )
※理由は、HOST側に存るUSBデバイスからbootするわけなので、GUEST側に起動デバイスを指定してはいけないからである。
(9)VirtualBoxを「管理者として実行」で起動する。(「管理者として実行」しないとエラーになる)
作成した仮想PCを起動するとUSBスティックからブートする。
※VirtualBox/設定/システム の拡張機能の「EFIを有効化」をオンにするとEFIブートで起動する。
※「EFIを有効化」をオフにすればレガシーブート(MBR)で起動する。
Hostマシンのpartitionにアクセスする
※ partitionを指定して仮想ディスクファイル(vmdk)を作成する。
例えば partition1、partition2を使用したい場合は次のようになる。
VBoxManage
internalcommands createrawvmdk -filename
f:\part-12.vmdk -rawdisk \\.\PhysicalDrive0
-partitions 1,2
※ -partitions パラメータを指定すると part-12.vmdk および part-12-pt.vmdk のように「pt」付きのファイルも自動的に作成される。
HostマシンのMBRにアクセスする
※GuestマシンをHostマシンとは異なるブートローダで起動したい場合に利用できる。
例えばWin10(partition1)、fedora(partition2) をインストールしたWin10ブートマネージャ起動のデュアルブートPCがあるとする。
Guestマシンでfedoraを起動したい場合は、fedora起動時のMBRを反映した仮想ディスクファイル(vmdk)を作成すればいい。
(1) fedora(Grub2)ブートマネージャでPCを起動する状態にして、MBRを fedora.mbr のようにファイル化する。
dd if=/dev/sda of=fedora.mbr bs=512 count=1
(2) fedora.mbr を反映した仮想ディスクファイル(vmdk)を作成する。
※ fedora.mbr ファイルはVBoxManager.exe のあるフォルダに置いておく。
VBoxManage
internalcommands createrawvmdk -filename
f:\part-12.vmdk -rawdisk \\.\PhysicalDrive0
-partitions 1,2 -mbr fedora.mbr
(3) 作成した仮想ディスクファイルでGuestマシンを起動すれば fedora(Grub2)ブートマネージャが起動する。
VBoxManage.exe のヘルプ表示
VboxManage または VBoxManage
internalcommands だけを入力して実行すればヘルプを表示できる。
画面に表示できない場合は VboxManage | more コマンドでページ表示して参照する。
more コマンドのヘルプは more /? で参照。
マニュアル
Oracle VM VirtualBox User Manual (ユーザーマニュアル)
http://www.virtualbox.org/manual/UserManual.html
Using a raw host hard disk from a guest (GuestマシンからHostマシンのHDDを使う)
http://www.virtualbox.org/manual/ch09.html#rawdisk
end of list