M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

Ubuntu 13.4 on VirtualBoxのもたつき問題の解決

f:id:m12i:20130924013338p:plain

Linuxを勉強するにしろアプリを開発するにしろ、必要に応じて使い捨てにしたり、特定時点の状態に簡単に巻き戻したりできる仮想マシン(VM)は何かと便利です。

そこで最近はMac上でVirtualBoxを動かして、ゲストOSとしてLinuxを使用することが多いのですが、一点問題が。VirtualBox仮想マシン上でUbuntu OSを稼働させると異様にもたつきが発生してほとんど使用に耐えないレベルなのです。

最初こそCPUやメモリのスペックの問題と思っていましたが、仮想マシンに2GBを振り分けても状態が変わらないのでCPU・GPU間の処理振り分けの問題かなーとなんとなく想像はしていました。

そんな折、こちらのブログの記事を発見。紹介されているリンク先の英文記事で問題の解決法がほぼステップごとに示されていました。この記事はUbuntu 12.10向けのものでしたが、私の環境で確認した限りではUbuntu 13.4でも有効でした。

設定を確認する

ターミナルを起動して下記のコマンドを実行。Unityの設定を確認します。

/usr/lib/nux/unity_support_test -p

「Not software rendered」と「Unity 3D supported」がともに「no」となっていることを確認します。

f:id:m12i:20130924010113p:plain

拡張パックをインストールする

VirtualBox公式サイトのこちらのページで配布されている拡張パック(Extension Pack)をダウンロードして、インストールします。

f:id:m12i:20130924011055p:plain

原典ではとくに注記されていませんでしたが、私は一応、仮想マシンをシャットダウンした上でインストールを行いました。

必要なパッケージをインストールする

仮想マシンを再起動したあとで、下記のコマンドを実行して、必要なパッケージをインストールします。

sudo apt-get install linux-headers-$(uname -r) build-essential

ちなみに linux-headers は私の環境ではすでにインストール済みでした。このため実際上インストールされたのは build-essential のみです。

f:id:m12i:20130924011015p:plain

Guest Additionsをインストールする

仮想マシンを起動した状態でVirtualBoxのメニュー[デバイス]→[Guest Additionsのインストール]をクリック。Guest Additionsパッケージを含むCD(ISOファイル)がゲストOSにマウントされ、数秒待つとインストール・スクリプトの自動起動の可否を問うダイアログが表示されるので許可します。

インストール・スクリプト自体はすべてのプロセスを自動で済ませて、完了すると[Enter]キーを押してウィンドウを閉じるよう促すメッセージが表示されるのでこれに従います。

原典ではこのGuest Additionsのインストールに関して、「sudo sh /media/typicaltips/VBOXADDITIONS_4.2.6_82870/VBoxLinuxAdditions.run」というコマンドの実行を支持していますが、少なくとも現行バージョンのVirtualBoxUbuntuでは不要です(上述の通り半自動でスクリプトが実行されます)。

vboxvideoドライバを追加する

下記のコマンドを実行してゲストOSにvboxvideoドライバを追加します。

sudo bash -c 'echo vboxvideo >> /etc/modules'

3Dアクセラレーション設定をONにする

ここで一度仮想マシンをシャットダウンします。そしてVirtualBox マネージャーの画面で、対象の仮想マシンを選択、[設定]ボタンをクリックします。

表示された設定画面で[ディスプレイ]タブをクリックし、[3Dアクセラレーションを有効化]というチェックボックスをONにします。

f:id:m12i:20130924012328p:plain

仮想マシンを起動し設定を再確認

以上で設定は完了したので仮想マシンを再起動して最初と同じコマンドを実行します。

/usr/lib/nux/unity_support_test -p

「Not software rendered」と「Unity 3D supported」がともに「yes」に変化していることを確認します。

f:id:m12i:20130924012631p:plain

これでもたつき問題は解決しているはずです。

ところで……、3DアクセラレーションをONにすると、なぜかVirtualBoxの機能でゲストOSの画面のスクリーンショットを撮ることができなくなります。撮っても真っ黒な画像ができあがるだけです。まあ実害はないんですけどね……。