x86_64バイナリ版VirtualBox1.4.0にUbuntu Feistyを入れてみた
備忘録を書くにあたって、他のディストリを試すテスト環境もあるとよいかと思い、せっかくなので、最近出たx86_64向けVirtualBoxのクローズドソース版に、試しにUbuntu Feistyの日本語ローカライズ版を入れてみた。
VirtualBoxに関する感想としては、まだまだこれからな部分もあるが、使い方しだいでは現状でも安定して使えるので、今後に期待。
メモ
- カーネルモジュール「vboxdrv」をビルド*1し、事前に読み込ませる必要がある
- ユーザインターフェースは、既に日本語対応がされている
- デスクトップ版のUbuntuにおけるメモリ割り当ては、256MB以上を推奨。VirtualBoxにおいて、OSタイプ「Linux 2.6」の推奨メモリとされている128MB*2だと、LiveCDではGNOMEのスプラッシュ画面のあたりで固まり、使えない。公式版のAlternateディスクからのインストールも試したが、128MBの割り当てでは途中で固まった
- Xのグラフィックドライバは「VESA」で動作している
- 音はALSA経由の出力が設定でき、ゲストOSからは特に設定をしなくても問題なく音が出た。
- ゲストOSのGNOME端末上でCtrl+Rを押して、シェルの履歴から検索をしようとしたら、ゲストOSが突然再起動した、と思ったら、これは再起動のショートカットキーで、Hostキーの割り当てを別のキー(現在は左Shift)に変更すればよいことだった。
- Guest Additionsを入れると、ウィンドウの中でクリックした後、Hostキーを押さなくても、マウスポインタをウィンドウの外に出したり中に入れたりできるようになる(マウス統合機能)。ゲストOSの中でカーネルモジュールをビルドしたりしていたが、Ubuntu Feistyのインストール直後の状態では、カーネルモジュールをビルドする準備は特にしなくても問題なかった
- 更に、Additionsを入れると、ホストOSのディレクトリをマウントする「共有フォルダ機能」も使える
- (2007/7/8)ネットワークはNATを使えば簡単に使用できるが、ネットワークに参加させるようにするためにはブリッジの準備と設定が必要→「VirtualBoxでブリッジ接続をする(Linuxホスト)」
問題点
- 初めの起動は途中(カーネル読み込み後、Ubuntuのusplashが出るまでの間)で固まる。そこで「仮想マシン」メニューの「リセット」をすると、次は何故か起動できる。これはハードディスクへインストールしてからも同じで、仮想マシンの設定をいじっても未解決
- ゲストOSの時刻は、残念ながらずれることがある
- ゲストOSのシャットダウン後、VirtualBoxを再起動するまで、メインウィンドウからゲストOSの起動や設定ができなくなることがある。*3「詳細」タブの中の、仮想マシンの状態の表示がおかしくなることもある
- スナップショットを保存して実験をしていると、次に起動させようとしたときにsegfaultして、VirtualBox自体の起動ができなくなってしまうことが2回あった。そのままだと二度と起動できないので、${HOME}/.VirtualBox/VirtualBox.xmlを消すとVirtualBoxは起動するが、仮想マシンの作成はやり直しになるので、しばらくこの機能は使わないようにするつもり。
固まった状態
ゲストOSシャットダウン後に設定変更や仮想マシン起動をしようとすると出るエラー
Guest Additionsのインストール
ゲストOSのウィンドウにある「デバイス」-「Guest Additionsのインストール」を実行すると、Guest AdditionsのCDイメージがマウントされるので、中のLiunx用実行ファイルを適当な場所にコピーして管理者権限で実行。
$ cp /media/cdrom/*.run . $ sudo ./VBoxLinuxAdditions.run
無事にインストールされたら再起動。環境や設定によって、自動的にCDイメージがマウントされていない場合は
$ sudo mount -t iso9660 /dev/cdrom /media/cdrom0/
などのように、手動でマウントしてからインストールをする。
共有フォルダ機能の使用例
ホストOSのディレクトリ/tmp/を「temp」という名前の共有フォルダにして、ゲストOSの/mnt/にマウントするものとする。
まず、VirtualBoxのゲストOSの設定にある「共有フォルダ」を開き、追加のアイコンをクリックして
- フォルダのパス: /tmp/
- フォルダ名: temp
$ sudo mount -t vboxsf -o uid=[一般ユーザのユーザID],gid=[一般ユーザのグループID] temp /mnt/
と実行*4することで、ホストOSの指定したディレクトリの内容が見えるようになり、読み書きができるようになる。
(2007/7/8)uid=とgid=を指定しなくても、現状では、これらを付けずにマウントして「root:root」の所有に見えていても、ファイルが消せたり、作成できたりしている。上書きはできない?
iocharsetオプションは、UTF-8の場合省略可(デフォルト)。共有フォルダにホスト側で「テスト」というファイルを作成して実験したところ、ゲストUbuntuでは問題なし。ゲストVineにて「iocharset=euc-jp」を付けてマウントしたところ、lsコマンドを実行したときに
/bin/ls: /mnt/テスト: 無効な引数です
のようになり、表示されるリストから除外された。
なお、読み取り専用でマウントするのにはroオプションが使える。
*1:Gentoo Linuxではパッケージ「virtualbox-modules」をemergeすればよい
*2:他のOSの値を調べてみたが、Win2kが168MB、WinXPが192MBなのに比べても、間違いなく多くのメモリを使用するはずなのに、何故128MBなのだろうか
*3:「仮想マシン""のセッションを開けませんでした。」とエラーダイアログが出る。
*4:vboxfsではなく、vboxsf