Virtual Machines

今まで、Virtual PC(Connectix時代から)、VMware、Colinuxなどを使ってきたのですが、SunからVirtualBoxという製品が無償提供されているのを知り使ってみました。仮想PCの作成も可能です。VMware Playerも無償ですが仮想PCの作成はできないので、これはありがたいです。
http://www.virtualbox.org/

今のところ、Virtual PCやVMwareよりパフォーマンスがよいようです。UbuntuをゲストOSとして動かしてみた感じだと、VMwareよりも気持ち速いです。

ネットワーク設定ですが、ブリッジ接続だとネットワーク環境がころころ変わるモバイルでは使いづらい。そこで、NAT接続ですが、デフォルトではホストOSからゲストOSへのアクセスができません。そこで、ポートフォワーディングの設定をして、ホストOSの空きポートをゲストOSの使用したいポートにフォワードするように設定します。
それには、コマンドプロンプトでViurtualBoxのインストールディレクトリに移動して、VBoxManageというコマンドでポートフォワーディングを指定します。
以下は、"Ubuntu 8.04 LTS"という仮想マシンのHTTPポートにローカルポート8008をフォワードする場合のコマンドです。guesthttpという部分は任意の文字列を指定することができるので、使用するポートのプロトコル名が分かるように設定するとよいでしょう。

> cd "C:\Program Files\Sub\xVM VirtualBox"

> VBoxManage setextradata "Ubuntu 8.04 LTS" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/Protocol" TCP
> VBoxManage setextradata "Ubuntu 8.04 LTS" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/GuestPort" 80
> VBoxManage setextradata "Ubuntu 8.04 LTS" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guesthttp/HostPort" 8008

設定は、仮想マシンの定義用XMLファイルに書き込まれます。これで、ホストOSからゲストOSに http://localhost:8008 で接続できます。ホストOSのファイアーウォールでポート設定をすれば、外部からの接続も可能です。

ポートフォワーディングの設定は、このように多少面倒ですが、仮想PCの作成やメモリ・ディスク割り当てなどはGUIで可能です。ゲストOS毎にGuestAdditonというユーティリティが用意されており、マウスカーソルをホストとゲストでシームレスに移動できます。
リモートデスクトップのプロトコルもサポートしているので、パワフルなサーバにインストールすれば、非力なノートPCでも使えますね。

少し前に、colinuxをWindowsのサービスとしてセットアップしてsshで接続して開発するというのをやってました。ThinkPad X40ぐらいのマシンでも軽快に動作してくれて助かりました。
マルチコアのCPUが普及した現在、10万円ぐらいのPCでも、ほとんどの作業をゲストOSでやることが可能になってます。
新しい開発ツールやOSを試すためのサンドボックス用のVirtual Machineや実作業をするためのVirtual Machineを切り替えて使うことができます。