LinuxプログラマとしてはLinuxが動いてくれないと商売にならないので、Linuxも動かすことに。
Linuxは64bitも32bitも使いたいし、DebianもUbuntuも使いたい。そこでVMということになるのだけど、これもなかなか頭痛い。
元々ノートPCの方では「VMWareでLinuxを動かして、WindowsのXに貼りつけて動かす」ということをやっていた。ノートのWindowsを抜いてしまうと、いろいろ不便なことが多いし、かと言ってWindowsだけだと不便でしょうがなかったので、そうやることにしていた。
Xは試行錯誤の結果、Cygwinを入れて動かすのがリーズナブルだとわかっている。Windows上のXは各種あるのだけど、たいていは商用だし、Freeなものは結局CygwinのXを取り出したものだったりするので、あれこれ悩むよりもCygwinを入れてしまうのが手っ取り早い。
CygwinのX serverを入れてしまえば、XWin Serverというアイコンが出来るので、これをクリックするだけでxtermが動く。あとは、VMにsloginしてやればいい。
さて、そのVMなのだけど、最近は選択に迷うほどある。
隠れMS信者としては、MSのVMを使いたいと言うか、第一選択に思っていたのだけど、これでLinuxを動かすのはちょっと面倒なことがあるようで諦めることに。2004の時に使っていて悪くない感じではあったのだけど、知らぬ間に落ちてしまったりということもあって、信頼性には「?」だったということもある。そんなわけで、第一選択が早々に落選。
定番としてはVMWareがある。
VMWare serverはノートで常用していたのだけど、2.0になって管理コンソールがさっぱりわけわかになってしまった。CPUが2個使えるのは嬉しいんだけど、そういったわけのわからないところが嫌なので、敬遠して他の選択肢を探すことに。
そこで発見したのは、SunのVirtual Boxだ。製品でもあるけど、GPLでもあるので、いろいろ見通しがいい。何しろ「わからなかったらソースを見る」という手が使える。CPUが1つしか使えなさそうなのが困るのだけど、当座には我慢しておけばいい。
普通にVMイメージを作って動かす分にはどうとでもなるのだけど、元々使って動かしていたLinuxの環境を動かしたい。これが使えないことには、いろいろ不自由である。そこでいろいろ調べてみたら、「物理パーティションをゲストにする方法」というのがあるのを発見する。
方法はわかってしまえばどうということはなく、物理パーティションの情報を持った仮想パーティション定義ファイルを作ってやればいい。ヘルプの
9.10. Using a raw host hard disk from a guest
に詳しいことが書いてある。具体的には、
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk \\.\PhysicalDrive1 -register
のようにして、vmdkファイルを作る。どこに作るかと言えば、
C:\Users\<ユーザ名>\.VirtualBox\HardDisks
だ。ここにあるvdiファイル(仮想ディスクイメージ)とvmdkファイル(仮想パーティション定義ファイル)がゲストで使うことの出来るディスクイメージとなる。
これで元々Linuxの入っていたドライブ全体を仮想ディスクとして登録してやって、それを起動するようにしてやると、元々のLinux環境がまるっと動いてしまった。動いてしまえば、後はどうとでもなる。
ただ、ゲスト上ではなぜかディスクは「hdx」になってしまう。今時のLinuxでは、たいていのディスクは「sdx」になっているはずなので、この辺がうまく行かなくて起動エラーになる。これは慌てず騒がず「hdx」に書き換えてやればいい。
PS.
64bitのゲストを起動すると、「このプロセッサは64bitじゃないぞ」的なエラーを返したりしてたのだけど、BIOSをアップグレードすることで解決した。どうやら、CPUのフラグの初期化あたりがおかしかったらしい。