次のコマンドを実行しました。
VBoxManage clonehd d6b9f0a5-98df-48ca-83c8-91a0809ec349 --format RAW Debian.raw
sudo dd if=~/.VirtualBox/HardDisks/Debian.raw of=/dev/sda5
パーティションをマウントしようとすると、次の苦情が表示されます。
EXT4-fs (sda5): VFS: Can't find ext4 filesystem
これで、仮想マシンにext4パーティションがあることがわかりました。私は何が間違っていましたか?
ベストアンサー1
イメージはファイルシステムイメージではなくディスクイメージです。ファイルシステムはそのイメージ内のパーティションにあります(非常に珍しいことをしない限り)。file Debian.raw
とを実行してこれを確認できますfdisk -l Debian.raw
。
このパーティションにアクセスする最も簡単な方法は、ループデバイスに接続することです。可能であれば、ドライバがこのオプションをサポートしてロードしていることをloop
確認してください。その後、ディスクイメージをループデバイスに関連付けると、次のようになります。max_parts
rmmod loop; modprobe loop max_part=63
losetup -fs Debian.raw # prints /dev/loop0 (or some other number)
mount /dev/loop0p1 /mnt # 0 as above, 1 is the partition number
ループドライバにパーティションを使用させることができない場合は、ディスクイメージ内のパーティションのオフセットを見つける必要があります。実行してfdisk -lu Debian.raw
パーティションをリストし、開始セクターS(セクターは512バイト)を見つけます。その後、losetup
屋根ふき装置がこのオフセットで開始されることを望んでいることを伝えます。
fdisk -lu Debian.raw # note starting sector $S
losetup -fs -o $(($S * 512)) Debian.raw
mount /dev/loop0 /mnt # /dev/loop0 or whatever losetup prints
VMイメージからシステムにパーティションをコピーする場合は、上記のように開始($S
)および終了()オフセットを決定します。その後、パーティションをコピーします。$E
fdisk -lu
<Debian.raw tail -c +$((512*$S)) | dd of=/dev/sda5 bs=4M
(ソースとターゲットが同じディスクにない場合は面倒ではなく、出力にリダイレクトするだけです。dd
同じディスクにある場合は、より大きなパラメータを使用する方がはるかに高速です。)tail
/dev/sda5
dd
bs