virtualbox-rawdisk
update 2018-05-18

概要

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 にアクセスすることになる。
rawdisk-gaiyou.jpg
 
仮想ディスクファイル(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スティックをセットする。
(2)USBのパーティションをactiveにしておく。(diskpartにてselectしたpartitionをactiveにする。非activeにするにはinactive)
※activeにしておかないとブート時にboot failureエラーになりbootできない。
(3) コマンドプロンプトを「管理者として実行」する。
VBoxManage.exeコマンドのあるフォルダに移って作業する。
cd %programfiles%\Oracle\VirtualBox
(4) VBoxManage コマンドでHDD情報を確認する。
実行するとpartition情報が表示される。
今回の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を「管理者として実行」で起動する。(「管理者として実行」しないとエラーになる)
仮想PCのストレージにusb1.vmdkを割り当てる。
(8)仮想PCを起動するとUSBスティックからブートする。



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