virtualbox-rawdisk
update 2016-06-01

概要

VirtualBox Guestマシンから仮想ディスクファイル(vmdk)を経由してHostマシンのHDDにアクセスする。(rawdiskアクセスという)
※vmdkファイルは 1KB程度の小さいファイルである。
ここではHostマシンはWindowsとしている。
rawdisk4.png
 
仮想ディスクファイル(vmdk)を作る

(1) コマンドプロンプトを「管理者として実行」する。
VBoxManage.exeコマンドのあるフォルダに移って作業する。
cd %programfiles%\Oracle\VirtualBox
 
(2) VBoxManage コマンドでHDD情報(物理ディスク番号)を確認する。
実行するとpartition情報が表示される。
ディスク0 (\\.\PhysicalDrive0)の場合は
VBoxManage internalcommands listpartitions -rawdisk \\.\PhysicalDrive0
ディスク1 は \\.\PhysicalDrive1 のように指定する。

コマンドプロンプト「管理者として実行」で物理ディスク番号を調べるには、
wmic diskdrive list brief を実行する。
接続しているデバイスの物理ディスク番号が \\.\PHYSICALDRIVE0のように末尾に番号が付いて表示される。
USBデバイスの場合はデバイス名が「USB DISK USB Device」として表示される。

Linuxの場合は次のように指定する。
VBoxManage internalcommands listpartitions -rawdisk /dev/sda

(3) rawdiskイメージファイル(vmdk)を任意のフォルダに作成する。
フォルダは事前に作成しておくこと。
ここではデフォルトの %userprofile%\.VirtualBox とする。

HostマシンのHDD0を (\\.\PhysicalDrive0) rawdiskとして vmdkファイルに割り当てる。
VBoxManage internalcommands createrawvmdk -filename %userprofile%\.VirtualBox\rawdisk0.vmdk -rawdisk \\.\PhysicalDrive0

Linuxの場合は次のように指定する。
VBoxManage internalcommands createrawvmdk -filename /VirtualBox/rawdisk0.vmdk -rawdisk /dev/sda

(4) 以上で 仮想ディスクファイル が作成できた。
作成した vmdkファイルを経由してHostマシンのHDDにアクセスすることになる。

仮想ディスクファイルを使う

(1) VirtualBoxを「管理者として実行」で起動する。

(2) 新規にGuesマシンを作成する際に「仮想ハードディスク」選択にて
「起動ディスク」にチェックを付けて、「既存のハードディスクを使用」を選択する。
「参照ボタン」をクリックして rawdisk0.vmdk ファイルを指定する。
rawdisk1.png

(3) 作成した仮想マシンのストレージは次のようになっている。
rawdisk2.png

起動媒体に何もセットしないでGuestマシンを起動するとrawdisk0.vmdk(つまり HostマシンのHDD0)が起動する。
LiveCD媒体(CD、USBメモリなど)をセットしてGuestマシンを起動すると、LiveCDのOSで rawdisk0.vmdk(つまり HostマシンのHDD0)にアクセスできる。

(4) 2台目のHDDについて仮想ディスクファイルを作成したい場合は、Hostマシンの2台目のHDDを rawdisk1.vmdk のように作成して ストレージに追加すればアクセスできるようになる。
rawdisk3.png


vmdkをストレージに追加する

(1) コントロールをクリック、「ハードディスクの追加」アイコンをクリック。
add1.png

(2) 「既存のディスクを選択」をクリックして、vmdk ディスクを追加する。
add2.png

※コマンドで追加する場合は、次のように指定する。
rawdisk の部分は「Guestマシンの名前」を指定する。
"IDE コントローラ"の部分は「コントローラの名前」を指定する。
%userprofile%\.VirtualBox\rawdisk1.vmdk の部分は vmdkファイルをフルpathで指定する。

VBoxManage storageattach rawdisk --storagectl "IDE コントローラ" --port 0 --device 0 --type hdd --medium %userprofile%\.VirtualBox\rawdisk1.vmdk

例:SATA コントローラ に追加する場合は次のように指定する。
VBoxManage storageattach rawdisk --storagectl "SATA コントローラ" --port 0 --device 0 --type hdd --medium %userprofile%\.VirtualBox\rawdisk1.vmdk

(3) 仮想ディスクが追加できた。
add3.png



IDEコントローラのストレージをSATAコントローラに変更する

(1) IDEコントローラにあるストレージを右クリック、「割り当てを除去」をクリックする。
ctl1.png

(2) 「コントローラを追加」アイコンをクリックする。
ctl2.png

(3) コントロール選択メニューが表示されるので「SATAコントローラを追加」をクリックする。
ctl3.png

(4) 作成された「SATAコントローラ」をクリック、「ハードディスクの追加」アイコンをクリック。
ctl4.png

(5) 「既存のディスクを選択」をクリックして、vmdk ディスクを追加する。
ctl5.png

(6) SATAコントローラに変更できた。
ctl6.png



Hostマシンのpartitionにアクセスする
※ partitionを指定して仮想ディスクファイル(vmdk)を作成する。

例えば partition1、partition2を使用したい場合は次のようになる。
VBoxManage internalcommands createrawvmdk -filename %userprofile%\.VirtualBox\part-12.vmdk -rawdisk \\.\PhysicalDrive0 -partitions 1,2

※ -partitions パラメータを指定すると part-12.vmdk および part-12-pt.vmdk のように「pt」付きのファイルも自動的に作成される。

HostマシンのMBRにアクセスする
※GuestマシンをHostマシンとは異なるブートローダで起動したい場合に利用できる。

例えばWin8(partition1)、fedora(partition2) をインストールしたWin8ブートマネージャ起動のデュアルブート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 %userprofile%\.VirtualBox\part-12.vmdk -rawdisk \\.\PhysicalDrive0 -partitions 1,2 -mbr fedora.mbr

(3)  作成した仮想ディスクファイルでGuestマシンを起動すれば fedora(Grub2)ブートマネージャが起動する。

USBメモリから起動する

USBメモリを仮想ディスクファイルとして作成すればUSBメモリから起動できる。
※ただし、ブートするだけで5〜6分かかり、使い物にならない状態であった。

作業手順は「仮想ディスクファイル(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 %userprofile%\.VirtualBox\rawdisk0.vmdk -rawdisk \\.\PhysicalDrive1
(6) 以上で 仮想ディスクファイル が作成できた。
作成した vmdkファイルを経由してHostマシンのHDDにアクセスすることになる。
(7)VirtualBoxを「管理者として実行」で起動する。(「管理者として実行」しないとエラーになる)
仮想PCのストレージにrawdisk0.vmdkを割り当てる。
(8)仮想PCを起動するとUSBスティックからブートする。(5〜6分待つ)


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