2010/03/26

稼働中のマシンのHDDから、VMware Player用の仮想マシンを作る

稼働中の物理マシンの HDD を、そっくり仮想イメージに変換して、 VMware Player で再生できるようにしたい。手順としてはこれだけなんだけど……
  1. 対象の HDD をダンプする(partimage を使う)
  2. VMware 用の仮想ディスクを空っぽの状態で作る(QEMU を使う)
  3. 2.の空っぽ仮想ディスクに領域を作る(fdisk を使う)
  4. 1.のダンプを、3.の領域へとリストアする(partimage を使う)
それなりに広大な作業スペースが必要だし、個々の作業に時間がかかるので(待ち時間にこんな記事がかけるくらい)、次回以降はできるだけ要領よく済ませたい。だから自分用にメモ。もちろん無保証です。

用意するもの。
  • 作業場
    ここでは Windows マシンを使う。対象の HDD 上で動いてなくて、VMware と QEMU が使えて、でかいディスク容量があるマシンなら、何でもいいと思う。

  • 起動環境
    ここでは Knoppix の iso イメージを使う。VMware 用の仮想イメージ以外で、fdisk と partimage が使える環境を VMware Player から起動できるものなら、何でもいいと思う。

  • QEMU
    空っぽの仮想ディスクを作るのに使う。ここでは QEMU on Windows の qemu-img コマンドを使う。


実際の作業の流れ。
  1. partimage で対象の HDD をダンプして、作業場からファイルとして見える場所にイメージファイル(群)として保管する。

  2. Windows のコマンドプロンプトで、qemu-img コマンドを使って空っぽの VMware 用仮想ディスクを作る。対象の HDD と同じサイズで vmdk 形式にする。対象が 120Gバイトならこんな具合。
    > qemu-img create -f vmdk hokansaki.vmdk 120G
    これでhokansaki.vmdkという仮想ディスクができる。

  3. 空っぽの仮想ディスクをフォーマットしたいのだけど、空っぽなので、当然のことながら VMware Player で仮想マシンを起動することができない。そこで、何かしら起動環境が必要になる。空っぽの物理ディスクに OS をインストールするときと同じ理屈ですね。つまり、BIOSチップ を CD/DVDブートにするのと同じ要領で、VMware Player の BIOS を CD/DVD ブートに設定し、ROM ドライブに Knoppix のディスクを入れて Player を再起動すればいい。VMware Player の起動時に F2 を押せば BIOS 画面に入れる。
    ただ、せっかく仮想マシンなんだから、わざわざ物理的な起動ディスクを使う必要もない。作業場の HDD 上に Knoppix の iso を置いておいて、それを Player の起動時に読むようにしたほうが手っ取り早いというもの。つまり、こんな vmx ファイルで仮想マシンを読み込めばいい。(この例では Windows の Fドライブ以下に Knoppix 5.1.1 の iso が置いてある。guestOS の一覧はこのへんを参考に。ide1 の deviceType を cdrom-image としているため、この場合も BIOS で CD/DVD ブートに設定する必要あり)
    .encoding                = "Shift_JIS"
    config.version = "8"
    virtualHW.version = "4"
    memsize = "512"

    ide0:0.present = "TRUE"
    ide0:0.fileName = "hokansaki.vmdk"
    ide0:0.mode = "persistent"
    ide0:0.deviceType = "disk"

    ide1:0.present = "TRUE"
    ide1:0.fileName = "F:\knoppix-iso\KNX5.1.1J_AC.200.iso"
    ide1:0.deviceType = "cdrom-image"

    ethernet0.present = "TRUE"
    ethernet0.connectionType = "nat"

    usb.present = "TRUE"

    displayName = "hokan saki"
    guestOS = "other26xlinux"
    nvram = "hokansaki.nvram"
    この構成で仮想マシンを起動する前に、仮想マシンから作業場(具体的には、ダンプしたイメージファイルの置き場所)が見えるようにする設定を忘れずに。VMware Player のバージョン3 には、「仮想マシン設定の編集」という GUI が用意されているので、そこから作業場のハードディスクを追加するだけだった。

  4. 空っぽの仮想ディスクを fdisk でフォーマット。上記の構成なら、くだんの空っぽの仮想ディスクは /dev/hda として認識されているはずなので、
    $ sudo fdisk /dev/hda
  5. partimage で、ダンプした対象 HDD のイメージファイルを /dev/hda1 にリストア。partimage を実行する前に、対象 HDD のイメージファイルの置き場所をマウントしておくこと。イーサネットだと、たぶんすごい時間がかかる。ついててよかった eSATA。

  6. ブートローダの修復。GRUB ならこんな感じ。
    $ sudo mount /dev/hda1 /media/hda1
    $ sudo chroot /media/hda1
    $ grub-install /dev/hda
    (マウントのときは Knoppix の UI を使わず、コンソールから mount コマンドで実行すること(Knoppix についてくる /etc/fstab の設定のせいで読み取り専用になってしまうため)
    あと、fdiskで領域(この場合は/dev/hda)をブート可能に設定しておくこと。

  7. BIOS の CD/DVD ブートを解除すれば、物理マシンで稼動していたシステムがそっくり VMware Player 上で起動するようになるはず。

0 件のコメント: