web-dev-qa-db-ja.com

VirtualBox:クローンディスクの起動

Linuxで既存のWindows XPインストールを起動しようとしています。VMWareFusionでは簡単なことでしたが、Ubuntu10.10で同じことをするために髪を引っ張っています。 。

最初にVMWareサーバーを試しました。 (仮想マシンはネットワークサービスです。)多くの努力を重ねた後、Windowsは起動しているように見えますが、コンソールの操作がないため、Windowsライセンスキーを入力できず、VMWare自体が頻繁にクラッシュするようです。正式にはサポートが終了しているので、最近のUbuntuデスクトップではお勧めできません。

VirtualBoxは非常に簡単にインストールでき、VMWareで使用していた.vmdkファイルを起動できます。残念ながら、このプロセスには時間がかかりすぎたため、新しいマシンイメージを使用する必要があります。これらのコマンドを使用して、ディスクのクローンを再度作成しました。

Sudo dd if=/dev/sdf2 of=powerhouse.dd
VBoxManage convertfromraw powerhouse.dd powerhouse.vdi

しかし、私はこのメッセージを受け取り続け、OSはありません:

A disk read error occurred
Press Ctrl+Alt+Del to restart

私の推測では、パーティション化されていないイメージを起動しようとしています。既存のVDIにパーティションマップを追加できますか、またはこれを行うための正しいプロセスは何ですか? (そして、パーティション化されていない画像は、この時代の時代遅れの煩わしさではありませんか?)

3
Potatoswatter

これは、正確に正しく行うための複雑なプロセスになる可能性があります。 VirtualBox.orgページには、これを行うための一般的なプロセスといくつかの落とし穴を説明する手順があります。 http://www.virtualbox.org/wiki/Migrate_Windows -具体的には、単にパーティションをイメージ化するためのddは機能しません(あなたが知っているように)。

短縮バージョン-使用するデバイスのバイト数を取得し、デバイスをVBoxManageにパイプしてドライブを作成します。

# fdisk -l /dev/sdf
Disk /dev/sdf: 1500.3 GB, 1500301910016 bytes
# cat /dev/sdf | VBoxManage convertfromraw stdin OutPutFile.vdi 1500301910016

そのデバイス上に本当に持ち込みたくない他のデータがある場合は、 Clonezilla のようなより洗練されたクローン作成ユーティリティが必要になります。これは単一のパーティション(および関連するブートローダー情報)を作成し、新しいドライブに「クローン」します。そのシナリオでは、イメージを取得してから、クローンイメージを書き込む空の仮想ハードディスクを使用して新しい仮想マシンを起動します(おそらくClonezilla Live ISOを起動します)。

2
Goyuix

コピーしたパーティションの前に、MBRと適切な量のスペースをパーティションの前に付ける必要があります。多くのディスクの場合、これは合計63(0x3F)x 512Kブロックになりますが、新しいドライブの場合は異なる場合があります。

私はこのようなアプローチで成功しました:

  • 単一のパーティションのみを含む、調整された新しいMBRイメージを作成します。$ Sudo dd if =/dev/sdf count = 63 | xxd> new-mbr.img.xxd $ vim new-mbr.img.xxd

  • イメージを作成します。

    $ { xxd -r new-mbr.img.xxd; dd if=/dev/sdf2; } \
      | VBoxManage convertfromraw stdin newdrive.vdi \
                                        $(( $partition_bytes + 63 * 512 ));
    

これを行うには MBRのバイナリ形式 を理解する必要があるため、既存のMBRを保持し、ライブを実行して[sc]?fdiskで修正する方が簡単な場合があります。結果の.vdiを起動する前に、VMのCDをレスキューします。

パーティションのサイズ($partition_bytes)を取得するのも難しい場合があります。これは、MBRの値をそのまま読み取り、ブロックサイズ(512)を掛けることで理解できたと思います。 sfdisk --dumpもこの値を与えると思います。

とにかく、これは実際に機能しました。帽子からライオンと爆発性のエイリアンのアーティファクトを数匹引き出した後です。

0
intuited