« 時代遅れなものに、今から飛びつく | トップページ | VirtualBox の仮想ハードディスクのサイズを小さくする »

2011.09.28

ノートPCの中身を VirtualBoxの仮想環境にコピーしてみた

結論から言うと、コピーしてちゃんと Windows XP を起動できるところまでは持っていけるが、Windows XP は、自分が稼動しているハードウェアの状態が変更されていることを検知してライセンス認証を求めてくるので、正直なやり方では使えない。ノートPCの底面には、マイクロソフトがパソコンハードメーカー向けにライセンスする場合のライセンスキーが貼ってあるけれど、この文字列は、パソコンメーカーごとに(ひょっとしたら機種ごとに)特定のパターンになっていて、他社のパソコンや仮想PCにインストールした Windows XP では無効だ。市販版のXPを使う場合なら問題ないし、実は1ライセンス持っているのだが、これはデスクトップPCで使用中で、そちらではいずれ本当に実PCから仮想環境にXPを引っ越させるつもりなので、いまここで、ひとつしかない市販版のライセンスキーを使うわけにはいかない。そんなわけで、「とにかく、やり方はわかった」だけで、実験としては満足している。


実PCから仮想環境にコピーして動作させる手順は、ハードディスク全体のコピーをするため時間こそ非常にかかるが、やること自体は比較的単純だ(運がよければ)。VirtualBoxのサイトにある「How to migrate existing Windows installations to VirtualBox」に、一歩ずつ作業を進めるやり方が載っている。

私がやったのは、こんなことである。

手順に従って、リンク先にある MergeIDE をノートPCのWindows XPで実行し、レジストリを修正すること。これは、Widnowsのハードディスクコントローラーに対する監視を緩めるためのレジストリ操作で、マイクロソフト自身が、パソコンの機種変更のときに起こるトラブルを回避する方法として公開している情報に沿った処理である。

次に、いったんPCの電源を切り、Live版のLinuxのCDを使って再起動、端末画面で

 dd if=/dev/sda od=/media/sdb/rawimage.raw

を実行して、内蔵ハードディスクの全データをまるごと外付けのディスクに書き出した。手順書によれば、Windows がインストールされているパーティションだけでなく、ディスク全体を書きだす必要があるとのこと(たぶん、パーティションの管理情報なども書きだす必要があるから)。なお、/dev/sda は、ノートパソコンのハードディスク、/media/sdb はUSB接続した市販の外付けハードディスクで、PCのハード構成によっては違う名前になっているかも知れない。ファイル名 rawimage.raw は、適当に付けただけでなんでもよい。今回使った外付けディスクは、買った時点であらかじめ NTFSフォーマットされていたものをそのまま使っている。Linuxは NTFSをサポートしているので、読み書きに何ら支障はない。80GBのディスクのコピーに4時間くらいかかった。

(外付けディスクにノートPCの内蔵ディスクの中身をまるごとコピーできたら、かりに以後の実験が失敗したとしても、Live CD 版のLinuxで、上に書いたコマンドの if と of を入れ替えて外付けディスクに保存したイメージをノートPCに書き戻せば、いつでも元の状態に戻せる。圧縮も破損状態の有無のチェックもないけれど、いちおう、完全バックアップ済みになったので、今後、このPCでいろいろ実験できそうだ。)

次は、Windows なり Linux なりで VirtualBox の管理コマンドを実行し、仮想PCから使用できるファイルに変換する。今回は、もともとインストールされている Windows XP をホストOSとして、VirtualBoxをインストールし、Windows のコマンド画面で以下のように実行した。

 VBoxManage convertfromraw rawimage.raw fromLL900BD.vdi

ファイル名 fromLL900BD は、なんでもよい。そして、また数時間待つ。ただひたすら待つのみなので、寝る前や外出前にやったほうがいいかも知れない。

できた仮想ハードディスク fromLL900BD.vdi を仮想PCで使うように設定して、仮想PCを起動すれば、運がよければ一発でゲストOSとして Windows が起動する。運が悪ければブルースクリーンになる。

私のノートPCは NECのPC-LL900BDで、旧式であることが幸いして、Windows のカーネル hal.dll の入れ替えなどは必要なかった。移行後に仮想PCを起動したらブルースクリーンで止まってしまったが、あらかじめWindows復旧用に用意していた BartPEの isoイメージを仮想PCの仮想CD-ROMドライブにセットして再起動、前述のサイトにある注意書きにしたがって agp440.sys と intelppm.sys を削除したら、Windows XP が起動し、ユーザアカウントの設定なども含め、すべてまとめて仮想環境に持ってくることができた。もっとも、ライセンスキーがないので、30日後には使えなくなるのだが。

TIPSとして、仮想環境に引っ越すとき、前準備として、デフラグでデータをなるべくパーティションの先頭部分に集め、次に、マイクロソフトが公開している SDelete を使って、ディスクの空き領域をゼロデータで塗りつぶしておくと、最終的にできあがる仮想ハードディスクの実容量を節約できる。仮想ハードディスクのデフォルトの設定では、パーティション内のゼロが連続している部分はスキップし、実際のハードディスクで占有する量を節約するようになっている(このことに気がついたのは、作業完了後)。

ところで、仮想PCのBIOSがOSに報告する値は、仮想PCの管理コマンドで修正できる。メーカー名などをうまく改ざんし、あたかももとのノートPCと同じ製品であるかのように偽装すれば、Windows は、自分の居場所がすり替えられたことに気がつかないので、ライセンス認証を再度求めてくることもなく、そのまま仮想環境で継続的に使用可能なはずである。さらに調べてみると、仮想環境でなくても、自作PC用のマザーボードのBIOSを書き換えて、OSに対して、マイクロソフトのOEM供給先のパソコンであるかのように見せかけて、Windows のライセンス認証を回避する事例が、インターネットのあちこちで報告されていた。

面白い話だとは思うけれど、あからさまな不正コピーなので、あまり深入りしたくない。ただ、その情報を調べていて、10年以上前の知識しかなかった自分としては、いまどきのBIOSは、非常に詳細なハードウェア情報をOSに提供する仕組み持っているのだと知ることができたので、ちょっと喜んでいる。ISAバス時代の割り込みの割り当てなど、完全に昔話。ハードディスクでさえ、任意に着脱できるように個別にUUIDが与えられ、/dev/sda などのようなディスクを接続している場所には依存しないようになっている。

それは、「そもそも最初からそうあるべきもの」だったかもしれないけれど、少なくとも私がパソコンをいじり始めた時代には、もっと「素朴で大雑把」な規格で普通の用途には十分だと考えられていて、しわ寄せは一部のシステム管理者が負担していた。あるべき姿が実用化されるには、長い年月が必要だったわけで、今、それを享受できるのは幸せだ。もっとも、おかげで、もはや手作業で細かい設定をするのは無理という気もしないではない。それとも、それは「にわとりとたまご」の関係で、手作業の設定では管理不能なほどパソコンが複雑化したから、自動的にすべて管理させるような仕組みが発達したと考えるほうが正しいのか・・・ まあ、よくわからないけれど、とにかく時代は変わった。また勉強しなくては。

« 時代遅れなものに、今から飛びつく | トップページ | VirtualBox の仮想ハードディスクのサイズを小さくする »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: ノートPCの中身を VirtualBoxの仮想環境にコピーしてみた:

« 時代遅れなものに、今から飛びつく | トップページ | VirtualBox の仮想ハードディスクのサイズを小さくする »

2021年11月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
無料ブログはココログ