DDコマンドを使用してVHDファイルを物理ハードディスクにコピーする方法



問題を排除するために楽器を試してください

仮想ハードディスク(VHD)ファイルは、VirtualBoxおよびその他の仮想x86 / x86_64エミュレーターでの物理メディアの使用をエミュレートする巨大なファイルです。これにより、Linuxディストリビューション内でWindows、OS X、MS-DOS、FreeBSD、OpenBSD、OS / 2、またはその他のバージョンのLinuxを実行できます。これらのファイルでは、ISOで同じことを実行できるddコマンドを使用して、内容を物理ディスクに直接書き込むことはできませんが、それを行う方法はあります。一部のガイドではVHDファイルをISOに変換する必要がありますが、最新バージョンのLinuxでVirtualBoxを実行している場合は、これを行う必要はありません。 QEMUユーザーにも解決策がありますが、もっと遊んでみる必要があります。



使用するドライブまたはパーティションが、起動元のものではないことを確認する必要があります。この例では、パーティション化されたNANDメモリを使用しましたが、それ以外の方法で使用できない場合は、ライブDVDまたはUSBブートを使用することをお勧めします。問題のマシンを起動した方法に関係なく、Ctrl、Alt、Tを押しながら、Ubuntu Dashで検索するか、Xfce4またはLXDEの[システムツール]サブメニューから開くことで、ターミナルプログラムを起動します。



方法1:コマンドプロンプトからVBoxManageを使用する

これを行う最も簡単な方法は、従来のVirtualBoxインストールを使用することです。宛先の物理ハードウェア上のデータを破壊する一方で、その過程でVHDまたはVHDXファイルに対して何かを行う可能性があるため、失うことを心配しているすべてのデータを最初にバックアップしたことを確認してください。これは、他の方法や、この破壊的なコマンドを含むすべての方法にも当てはまります。



すべてが安全であり、宛先ドライブがマウント解除されているがマシンに接続されていることを確認したら、プラグを差し込んでいるがマウントされていないか、すべてが失われる可能性がある外付けハードディスクを言います。その過程で、 VBoxManage clonehd freeBSD.VHDX –フォーマットRAW freeBSD.RAW freeBSD.VHDXを仮想ハードディスクに置き換えている間。テスト目的でFreeBSDがやや適度にインストールされた仮想ハー​​ドディスクファイルがあったため、この名前が付けられました。

このコマンドが終了したらすぐに、 sudo dd if = freeBSD.RAW of = / dev / sde 、RAWファイルの名前を作成したばかりのRAWに置き換え、sdeブロックデバイスを実際に関心のあるデバイスに置き換えます。不明な場合は、いつでも実行できます。 sudo fdisk -l 正しいパーティション名を知っていることを確認します。他の目的でddを使用する場合と同様に、間違ったデバイスに書き込みをしたくありません。

大きなファイルを小さなデバイスに書き込もうとした場合と同じように、デバイスに空き容量がないというエラーが表示される場合がありますが、テストでは問題は発生しませんでした。このプロセスは余分なゼロを追加するようです。それ以外の場合は、2つの手順で仮想ディスクを物理ディスクにコピーすることができ、最小限の操作で済みます。



方法2:QEMUディスクネットワークブロックデバイスサーバーコマンドを使用

クイックエミュレーター(QEMU)仮想化システムにのみアクセスできるユーザーは、VBoxManageコマンドにアクセスできるユーザーよりも少し複雑な手順を処理する必要があります。コマンドプロンプトで、 sudo modprobe nbd に続く qemu-nbd -r -c / dev / ndb0 -f vpc ourTest.vhd 、使用している実際のファイル名を反映するようにファイル名が変更されています。インストールの構成方法によっては、qemu-nbdを実行するためにsudoが必要になる場合があります。ここからコマンドをコピーして貼り付ける場合は、実行する前に必ず変更してください。ほとんどの場合、ここで心配するのはndb0デバイスだけなので、問題は発生しないはずです。

完了したら、次のコマンドでパーティションを作成できます。 qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd に続く sudo ddrescure -v -f / dev / nbd2 / dev / sde2 、ただし、デバイスファイルを実際に使用したいファイルに置き換えることを忘れないでください。これらをコピーして自分の端末に貼り付ける場合は、それらのファイル名とパーティション番号を、書き込もうとしているものに置き換えてください。私たちの/ dev / sdeデバイスは、何も損傷することなくこれを安全にテストするために使用していた使用済みのSDHCカードにすぎませんでした。 qemu-nbdを実行するにはsudoが必要な場合がありますが、必要ありません。同様に、構成によっては、パーティション番号を削除する必要がある場合があります。これらの理由により、QEMUプロセスはそれほど直感的ではありません。

Hyper-Vユーザーは、VHDファイルではなくVHDXイメージを使用している場合があります。この場合は、代わりに実行する必要があります qemu-nbd -c / dev / nbd0 -f VHDX ourTest.vhd ファイル名をもう一度置き換えながら。この形式は、仮想化マシンにより大きなストレージ容量を追加するためにWindows Server 2012に追加されたものですが、VHDの2TBの制限を回避するために、ますます多くのLinuxユーザーがこの形式に目を向けています。それ以外の場合、これらの手順は、問題の実際のファイルサイズに関係なく機能するはずです。 GNU ddrescueツールはddのように機能するはずですが、最初に最適なブロックをコピーするようにします。

これを実行したら、VHDXイメージを使用するユーザーは実行する必要があります sudo ddrescue -v -f / dev / nbd2 / dev / sde2 、上記のファイルを再度置き換えます。それ以外の場合は、すべてのタイプのVirtualBoxイメージを持つすべての人が使用できます qemu-nbd -P 2 -r -c / dev / nbd2 -f vpc ourTest.vhd 問題のパーティションを古いディスクであるかのようにマウントします。使用する必要があります sudoマウント/ dev / nbd2 / cdrom または sudoマウント/ dev / nbd2 / mnt それをマウントします。試す前に、/ cdromまたは/ mntディレクトリに他に何もマウントされていないことを確認してください。

方法3:ファイルをアンマウントしてから切断する

イメージをアンマウントするには、単に使用する必要があります sudo umount / mnt または sudo umount / cdrom それを切り離す。結局のところ、Linuxカーネル自体は、他のボリュームであるかのように扱うことに忙しかったのです。

ただし、QEMUシステムから切断する必要があるため、次のように入力します qemu-ndb -d / dev / nbd2 それを切断します。

読んだ4分