VMware等ディスクイメージ用仮想ドライブ作成ドライバ Type2

NVP for Linux Ver.0 alpha06

最近の更新

ダウンロード

説明

使用できる形式

使用できる形式はNVD等と同じです(vmdk,vhd,hdi等)。

注意

PlamoLinux4でのnbdの使い方

modprobeを実行します。

# modprobe nbd
メジャー番号を調べます。
# dmesg | grep nbd
nbd: registered device at major 43
デバイスファイルを作成します。
# mknod /dev/nbd0 b 43 0
これで準備ができました。

使い方

コンソールを2つ用意します。1つはnvpが起動したままになり、もう1つはmountするのに使います。
赤い文字のところが入力部分です。

コンソール1
nbdモジュールが起動していない場合は起動します。
# modprobe nbd
nvpを実行します。ここではカレントディレクトリにnvpのプログラム本体が存在するとします。
# ./nvp
nbdのパスを聞いてくるので入力します。ここでは/dev/nbd0を使うことにします。/dev/nbd0は存在していなければなりません。
nbd name: /dev/nbd0
イメージファイル名を聞いてくるので入力します。ここではカレントディレクトリのtest.vmdkを使うことにします。test.vmdkは存在していなければなりません。
filename: test.vmdk
書き込み禁止にするかどうか聞いてくるので選択します。ここでは書き込み禁止にするとして1を入力します。
readonly?
1. readonly
2. readwrite
3. cancel
: 1
nvpが認識できるイメージ形式でハードディスクだった場合はパーティションを選択します。ここでは1番目のパーティションを選択することにします。
partition no?
0. cancel
1. 0x04 DOS FAT16(<32M) offset=63,length=61425
2. 0x04 DOS FAT16(<32M) offset=61551,length=41013
3. 0x06 DOS FAT16(32M-2G) offset=102627,length=107037
: 1
今回入力した内容のコマンドライン引数が表示されます。このコマンドライン引数を使用することで上の入力を省くことができます。
nvpがスタートします。
終了はCtrl-Cです。
command line [# nvp /dev/nbd0 test.vmdk r 1]
start (stop:Ctrl-C)

コンソール2
コンソール1で指定した/dev/nbd0をマウントします。ここでは/mntにマウントすることにします。
# mount /dev/nbd0 /mnt
パーティションの形式がわかっている場合は指定したほうがいいかもしれません。
利用が終わったらアンマウントします。
# umount /mnt
アンマウントが終わったらコンソール1をCtrl-Cで終了します。
アンマウントする前にコンソール1を絶対に終了させないでください。

bochsのflatイメージの例(ファイル名:c.img)
bochsの設定ファイルに次のように書かれているとします。
ata0-master: type=disk, path="c.img", mode=flat, cylinders=20, heads=16, spt=63
コンソール1
前の例と同じように実行します。
# ./nvp
nbd name: /dev/nbd0
filename: c.img
readonly?
1. readonly
2. readwrite
3. cancel
: 1
ハードディスクイメージなので1を選択します。
harddisk?
1. harddisk
2. floppydisk
3. cancel
: 1
PC/AT系なので1を選択します。
pc/at?
1. pc/at
2. pc-98
3. cancel
: 1
イメージ開始位置は0,セクタ長は512バイト,全セクタ数はcylinders*heads*spt=20160,ヘッド数はheadsの16,トラック長はsptの63を指定します。
image offset: 0
bytes per sector: 512
total sectors: 20160
heads: 16
sectors per track: 63
あとは同じです。
partition no?
0. cancel
1. 0x0E DOS FAT16X offset=63,length=20097
: 1
command line [# nvp /dev/nbd0 c.img r h a 0 512 20160 16 63 1]
start (stop:Ctrl-C)

フロッピーディスクイメージの例(ファイル名:floppy.tst)
コンソール1
前の例と同じように実行します。
# ./nvp
nbd name: /dev/nbd0
filename: floppy.tst
readonly?
1. readonly
2. readwrite
3. cancel
: 1
フロッピーディスクイメージなので2を選択します。
harddisk?
1. harddisk
2. floppydisk
3. cancel
: 2
1.44MBのフロッピーの場合は以下のようになります。
image offset: 0
bytes per sector: 512
total sectors: 2880
heads: 2
sectors per track: 18
パーティションは1つなので選択なしでスタートします。
command line [# nvp /dev/nbd0 floppy.tst f 0 512 2880 2 18 ]
start (stop:Ctrl-C)
拡張子によっては細かい設定なしでスタートするかもしれません(flp,ima等)。

bochsのgrowingイメージの例
bochsの設定ファイルに次のように書かれているとします。
ata0-master: type=disk, path="growing.img", mode=growing, cylinders=203, heads=16, spt=63
コンソール1
# ./nvp
nbd name: /dev/nbd0
filename: growing.img
readonly?
1. readonly
2. readwrite
3. cancel
: 1
growingイメージではヘッド数とトラック長を指定します。
heads: 16
sectors per track: 63
あとは同じです。
partition no?
0. cancel
1. 0x04 DOS FAT16(<32M) offset=63,length=61425
2. 0x04 DOS FAT16(<32M) offset=61551,length=41265
3. 0x06 DOS FAT16(32M-2G) offset=102879,length=101745
: 2
command line [# nvp /dev/nbd0 growing.img r 16 63 2]
start (stop:Ctrl-C)

bochsのundoableイメージの例
bochsの設定ファイルに次のように書かれているとします。
ata0-master: type=disk, path="base.img", mode=undoable, cylinders=20, heads=16, spt=63, journal="redo.img"
コンソール1
# ./nvp
nbd name: /dev/nbd0
undoableイメージでは差分ファイル名(journal=に書いてある方)を先に指定します。
filename: redo.img
growingイメージと同様に入力していきます。
readonly?
1. readonly
2. readwrite
3. cancel
: 2
heads: 16
sectors per track: 63
ここで元ファイル名(path=に書いてある方)を指定します。
base file name: base.img
あとは同じです。
partition no?
0. cancel
1. 0x0E DOS FAT16X offset=63,length=20097
: 1
command line [# nvp /dev/nbd0 redo.img 16 63 base.img 1]
start (stop:Ctrl-C)

bochsのsparseイメージの例
bochsの設定ファイルに次のように書かれているとします。
ata0-master: type=disk, path="test.img1", mode=sparse, cylinders=203, heads=16, spt=63
sparseイメージではファイル名の最後の数字から1引いた数字のついた同名のファイルが存在した場合は、それを親のファイルとして認識します。この例の場合test.img0が存在すると、それを親としてtest.img1はそこからの差分となっていると認識します。親のファイルに対して書き込みをした場合子供のファイルは無効となるので注意してください。
コンソール1
growingイメージと同様に入力していきます。
# ./nvp
nbd name: /dev/nbd0
filename: test.img1
readonly?
1. readonly
2. readwrite
3. cancel
: 1
heads: 16
sectors per track: 63
上で書いたようにsparseイメージでは親のファイル名が決まるので指定する必要はありません。
あとは同じです。
partition no?
0. cancel
1. 0x04 DOS FAT16(<32M) offset=63,length=61425
2. 0x04 DOS FAT16(<32M) offset=61551,length=41265
3. 0x06 DOS FAT16(32M-2G) offset=102879,length=101745
: 2
command line [# nvp /dev/nbd0 test.img1 r 16 63 2]
start (stop:Ctrl-C)