Mac OS X Leopard (10.5.6) 上に VirtualBox をインストールし、ゲスト OS として Ubuntu をインストールする。コマンドラインでの開発環境として使うことを念頭に置き、デスクトップ環境は整えない。
 
VIrtualBox
  1. ウンロードページより 2.0.6 の Mac OS X 向けバイナリの .dmg をダウンロードする
  2. ディスクイメージをマウントし、VirtualBox.mpkg でインストールする
  3. /Applications にインストールされた VirtualBox.app を起動
  4. 初回起動時は登録フォームが表示されるので登録する
仮想マシンの作成
 
「新規仮想マシン作成ウィザード」で新しい仮想マシンを作成する:
  1. OS タイプは「Ubuntu」
  2. メインメモリのサイズは 256 MB
  3. 仮想ハードディスクで「新規...」→「新規仮想ディスク作成ウィザード」
  4. 可変サイズのイメージ(4 GB)を作成。~/Library/VirtualBox/VDI/Ubuntu.vdi(20KB) が出来た。
Ubuntu のインストール
 
ダウンロードページから Ubuntu 8.10 の Server Edition (i386) をダウンロードし、MD5 チェックサムを検証する。
 
% test `md5 -q ~/Downloads/ubuntu-8.10-server-i386.iso` == a2ec9975a91e1228c8292ed9799dc302 && echo OK
OK
 
ダウンロードした ISO イメージファイルを VirtualBox で使うには、まず、仮想ディスクマネージャに登録する必要がある:
  1. 「ファイル」メニューから「仮想ディスクマネージャ」を起動
  2. 「CD/DVD イメージ」にダウンロードした ISO イメージファイルを追加
  3. 先ほど作成した仮想マシンの設定で、ストレージに「CD/DVD-ROM」>「ISO イメージファイル」で登録したファイルを選択
Ubuntu
 
仮想マシンを起動して Ubuntu のインストールを開始する:
  • 基本的にデフォルト設定
  • 言語は English
  • "Select and Install Software" では無選択のまま Continue
"This kernel requires the following features not present on the CPI: pae" で起動しない:
VirtualBox で仮想マシンの「一般」>「高度」>「PAE/NX を有効にする」にチェックを入れて再起動(PAE - Physical Address Extension = 物理アドレス拡張)。
 
The VirtualBox Guest Additions
 
ゲスト拡張(Guest Additions)はデバイスドライバとシステムアプリケーションで構成され、仮想マシンに組み込むことで、ゲスト OS の機能をより使いやすいものにする。VirtualBox がサポートするすべてのゲスト OS に対するゲスト拡張は、一枚の CD-ROM イメージファイル VBoxGuestAdditions.iso で提供されている。仮想マシンにゲスト拡張を組み込むには、この CD-ROM イメージファイルを仮想 CD-ROM としてマウントし、ゲスト拡張をインストールする。
 
dkms
 
カーネルモジュールをビルドできるようにゲスト OS 側Dynamic Kernel Module Support (DKMS) とカーネルのヘッダファイルを導入する。
 
% sudo apt-get install dkms linux-headers-2.6.27-7-server
 
VBoxGuestAdditions.iso
 
VBoxGuestAdditions.iso は /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso にあるのだが、Ubuntu の実行中にメニューから「デバイス」>「Guest Additions のインストール」を実行すると、VBoxGuestAdditions.iso がマウント可能な状態になる。
そして、マウントする:
 
% sudo mount -r /dev/cdrom /media/cdrom0/
 
マウントされたディレクトリに移動し、インストールスクリプトを実行
 
% cd /media/cdrom0/
% sudo sh ./VBoxLinuxAdditions-x86.run kernel-module vfs-module control timesync
 
X11 拡張はいらないので、必要なモジュールを個別に指定した
 
Unable to set System Clock to (time and date)
 
ブート時に Unable to set System Clock to (time and date) と表示される(Bug #251334 in util-linux (Ubuntu): “[Intrepid] Unable to set System Clock to....”
 
Network の設定
 
ホスト OS からゲスト OS にネットワーク的にアクセスするためには NAT を使ってポート転送を行うか、ブリッジ接続でホスト OS とゲスト OS を同じネットワーク上に置く(あとは固定 IP を振ることもできる)ふたつの方法がある。とりあえずはホストの Mac から SSH でログインしたいだけなので、NAT を使ってポート転送を行うようにする。なお、VirtualBox の NAT 機能についてはユーザマニュアルの 6.4 に記述がある。
 
% VBoxManage setextradata "Ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
% VBoxManage setextradata "Ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
% VBoxManage setextradata "Ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 12345
 
毎回コピーライトが表示されて、実際に変更が反映されているのか分かりづらいのだが、VBoxManage getextradata で値が取得できる。
 
% VBoxManage getextradata Ubuntu "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol"
VirtualBox Command Line Management Interface Version 2.0.6
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

Value: TCP
 
 一度、VirtualBoxを終了させる必要があるみたい。
あとは SSH サーバの起動した Ubuntu にログインできるか試す:
 
% ssh -p 12345 -l hogehoge localhost
Linux ubuntu 2.6.27-7-server #1 SMP Fri Oct 24 07:37:55 UTC 2008 i686
...
[~]
% uname -a
Linux ubuntu 2.6.27-7-server #1 SMP Fri Oct 24 07:37:55 UTC 2008 i686 GNU/Linux

なお、Mac の場合、各仮想マシンの設定ファイルは ~/Library/VirtualBox/Machines/<name>/<name>.xml にある。


Network の設定(ブリッジ接続)

VirtualBox 上の仮想マシンに Subversion リポジトリを用意する。そうなると、ネットワークが NAT 経由なのは使いづらい。VirtualBox2 のブリッジ接続でホストとゲストを同一ネットワークにしよう。
ゲスト側の IP アドレスを設定しておく

% sudo ifconfig eth0 192.168.2.2


NetWork の設定 (BootCamp + WindowsXP)
 
何故か、BootCamp 環境では NAT によるポートフォワードができなかった。VirtualBox 2.1.0 からはブリッジ接続が簡単になったため、そちらを使う。
 
BootCamp 環境の Windows XP でも VirtualBox を設定した。ネットワーク周りの設定について補足。
仮想マシンごとの設定ファイルは C:\Documents and Settings\<user>\.VirtualBox\Machines\<name> にある。

Windows XP のコマンドプロンプトは「ファイル名を指定して実行...」で cmd を実行
ホスト名の解決には nslookup プログラム
ネットワーク統計や状況を確認するには netstat -an

Clarifi | Protective case with built-in close-up lens for iPhone 3G by Griffin Technology