WindowsのVirtualBox上でubuntuサーバを動かしsshで接続する

これまで、ノートPCで作業するときは家においたサーバにssh(putty)で接続してemacsでいろいろ書く、というスタイルを取っていました。
ただ、これだとオフラインでは作業できずWindowsXPノートにLinux環境が欲しいなあとずっと考えていました。
で、最初にcoLinuxに挑戦したのですが、いろいろとややこしくて降参。 そこでもう少し簡単な方法はないかなあと探してVirtualBoxを使うことにしました。
タイトルの通り、WindowsVirtualBoxを入れて、そのVirtualBox上でUbuntuサーバを動かし、そのサーバにホストOSであるWindowsからsshで接続をする、という手順を書きたいと思います。
ウェブ上に情報はいっぱいあるのですが、「WindowsVirtualBox上でubuntuサーバを動かしsshで接続する」方法をまとめて説明したサイトはなかったので自分用のメモもかねて。

準備

VirtualBox2.1.2, ubuntu server8.10, WindowsXP SP3という環境で行いました。
とりあえず、VirtualBox, ubuntu server8.10をダウンロードしてきて、VirtualBoxをインストールします。

ubuntuのインストール

VirtualBox仮想マシンを作成し、ダウンロードしたイメージから普通にubuntuをインストールします。
仮想マシンのネットワークの設定はNATを使います。

動かない

インストールが終わると再起動しますが、この途中で「Unable to boot - please use a kernel appropriate for your CPU」というメッセージがでてubuntuが起動しません。
http://d.hatena.ne.jp/ksaito11/20080510#1210436271 の「 Ubuntu 8.04 ServerがVirtualbox上で動かない問題」の通りの作業で起動するようになります。

ポートフォワーディングの設定

これで無事VirtualBox上でubuntuが動くようになりましたが、このままではホストOSであるWindowsからゲストOSのubuntuに接続することが出来ません。
ssh等での接続を可能にしるためにポートフォワーディングの設定を行います。
これはホストOSのポートnへの接続をゲストOSのポートmへ転送するようにするという設定です。
http://d.hatena.ne.jp/masaking/20080823/1219501272 を参考に。
WindowsVirtualBoxをインストールしたフォルダで以下のコマンドを実行します。
ホストOSの22番をゲストOSの22番へ転送しています。 (vmnameは仮想マシン名に置き換え)

> cd "C:\Program Files\Sun\xVM VirtualBox"
> VBoxManage setextradata "vmname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
> VBoxManage setextradata "vmname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
> VBoxManage setextradata "vmname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 22

これにより、Windowsからlocalhost:22にsshで接続することによってubuntuにアクセスできるようになります。

VirtualBoxをバックグラウンドで走らせる

これでWindowsVirtualBox上でubuntuサーバを動かしsshで接続できるようになりました。
次は、画面の表示は必要ないので(操作はsshで行うため)ゲストOSをバックグラウンドで動くようにします。
"C:\Program Files\Sun\xVM VirtualBox\VBoxHeadless.exe" -startvm "vmname"へのショートカットを作成します。
このショートカットから起動すればディスプレイ無しで起動します。
ただ、バックグラウンドといってもコンソールがでちゃいます。
完全に常駐アプリっぽく動かす方法はわかりません。