Ubuntu Weekly Recipe

第313回UbuntuとVirtualBox再入門

VirtualBoxは第95回で紹介していますが、あまりにも前のことすぎるのであらためて紹介しようと思います。

VirtualBoxとは

VirtualBoxはOracleが提供している仮想環境です。オープンソースでマルチプラットフォームであり、多彩なゲストOSに対応しています。

一言で紹介するとこのようになりますが、ここまでGUIがしっかりしているオープンソースの仮想環境はVirtualBoxしかありません[1]し、ゲストOSも懐かしのNetWareやOS/2やHaikuなどにも対応する充実ぶりです。これらのゲストOSが動かないとバグ報告され、ものによっては修正もされます。同時にOracle Enterprise LinuxやSolarisのバグ報告も見られ、なかなかに微笑ましいです。

VMware Playerもマルチプラットフォームですが、個人かつ非商用利用のみという制限があります。しかしVirtualBoxはGPLv2であり、誰でも自由に使用することができますし、機能も充実しています。必要であればサポートサービスを購入することもできます。

もともとはinnotekという会社が開発していましたが、Sun Microsystemsが買収し、さらにOracleが買収したので現在はOracleが開発元です。残念な話ではあるのですがOracleが開発元というのはそれなりにリスクであり、具体的にはUbuntu Weekly Topics 2014年2月14日号のMySQLに関する記述にあります。しかし、ここにも書かれているとおりVirtualBoxに関してはOracleのポリシーが全面的に適用されているわけではありません。たとえば現在もSubversionのリポジトリは公開されています[2]⁠。セキュリティポリシーはOracleのものを踏襲していますが、どのリビジョンに施した修正がセキュリティの修正なのかをこっそり(?)教えてくれたりもしますし、ほかにもコミュニティに対して真摯に対応している姿が見え、今のところは安心しています。

なお今回⁠Ubuntu⁠と表現するものは、とくに断りがない限りすべてのUbuntuフレーバーを含んでいます。

VirtualBoxの用途

考えられるVirtualBoxのおもな用途としては、いろんなLinuxディストリビューションを試してみることですが、ホストOSがUbuntuだったらゲストOSにWindowsがあると便利ですし、加えて筆者の場合はビルド環境にも使用していますし、ownCloudを動かしたゲストOSもあります[3]⁠。

ただ、このような用途がなかったとしても、PCのスペックに余裕があれば仮想環境を用意していただきたい理由があります。それはズバリ検証用です。真っ先に思いつくのはPPAを使用する前に試してみることですが、それ以外にも各種パッケージを検証してみる場合に便利です。

なぜかと言いますと、スナップショットを保存しておけばひどい品質のパッケージでもロールバックするのが簡単ですし、Ubuntuをインストールしたということは再インストールしないアップグレード[4]をしたいところですが、これは単純にパッケージ数が少なければ少ないほど成功する確率が高いのです。であれば検証用のパッケージなんてそもそもインストールされていないほうが有利です。

VirtualBoxのホストOSへのインストール

前述のとおりGPLv2なのでOracleが公開しているオフィシャルのバイナリのほか、UbuntuのリポジトリからもVirtualBoxのインストールは可能です。オフィシャルのバイナリはどんどんバージョンアップしていきますし、Ubuntuのバイナリはあまりバージョンアップをしません。リポジトリのバージョンと同じUbuntuを使用する分にはそれで良いのですが[5]⁠、現実はなかなかそうも行きません。

たとえばLTSを使用していると、UbuntuのリポジトリにあるVirtualBoxではゲストOSを13.10にするといろいろ不便です。そこで筆者はPPAで独自に管理しています。これだと使用するバージョンを自分で決められるばかりか、リリース版になっていない修正を先行して盛り込むこともできます。

インストール方法もさまざまで、Ubuntuのリポジトリにあるものは普通にインストールできますし、Oracleのものはダウンロードページにインストール方法が書かれています。筆者のPPAからだと、

$ sudo add-apt-repository ppa:ikuya-fruitsbasket/virtualbox
$ sudo apt-get update
$ sudo apt-get install virtualbox virtualbox-guest-additions-iso

でインストールできます。筆者の都合によってアップデートが行われるので、使いにくいとは思いますが。

Ubuntuのリポジトリにあるバイナリを使用する場合は、3行目だけを実行してください。

ゲストOS

インストール後GUIフロントエンドを起動し、⁠新規]をクリックするとウィザード形式でゲストOSの初期設定をすることができます。最初に[タイプ][バージョン]がありますが、ここは間違いなく指定してください図1⁠。たとえばUbuntuだと[Ubuntu][Ubuntu (64bit)]があります。実際に体験したところだとWindows 8を使用していてWindows 8.1にアップグレードしようとしてもCPUが対応していない旨のエラーメッセージが出てアップグレードが始まらない、ということがありましたが、この場合は[タイプ][Windows 8.1]ないし[Windows 8.1 (64bit)]にする必要があったりと、意外とハマるところです。とくに以前はここで何を選んでもさしたる影響がなかったこともあり、それを知っている人は余計にハマりやすいと思います。

図1 ⁠タイプ][バージョン]は間違いなく指定してください
図1 [タイプ]と[バージョン]は間違いなく指定してください

ゲストOSのインストールが終わったら、Guest Additionsをインストールします。これはホストOSと統合するために必要なものだと思ってください。一応なくても動作はしますが、画面の解像度の変更すらもできないので、非常に不便です。

Ubuntuの場合、事前にdkmsパッケージをインストールしておくと便利です。その後[デバイス][Guest AdditionsのCDイメージを挿入]でGuest AdditionsのCDイメージを認識させ、あとは表示されるダイアログに従ってインストールすれば良いです。

実はUbuntuにはGuest Additionsのパッケージもあります。通常はX.Orgを使用しているはずなので、

$ sudo apt-get install virtualbox-guest-x11

を実行します。Ubuntu ServerなどX.Orgを使用していない場合は

$ sudo apt-get install virtualbox-guest-utils

を実行します。いちいちCDイメージを挿入する必要がないのでこちらのほうが楽ですが、VirtualBoxは原則としてVirtualBox本体とGuest Additionsのバージョンを合わせる必要があります。実際には多少ずれていても大して問題ない場合が多いですが、合っているほうが良いに越したことはありません。というわけで筆者の場合は前述のPPAをゲストOSでも登録してバージョンを合わせています。

頭が痛いのはUbuntuの開発版です。Guest AdditionsはLinuxカーネルとX.Orgのバージョンに依存します。具体的には、執筆段階でVirutalBoxの最新版は4.3.6であり、Ubuntu 14.04のカーネルは3.13です。それはいいのですが、X.OrgのXサーバーのバージョンは1.15であり、これはVirtualBox 4.3.6では非対応です図2⁠。こういう場合は4.3.8を待つのが王道ではあるのですが、そんなに待てないこともあります。

図2 非対応のX.Orgのバージョンだと、このようにゲストOSの解像度がとても悲しいことになります
図2 非対応のX.Orgのバージョンだと、このようにゲストOSの解像度がとても悲しいことになります

筆者の場合は簡単なものであればリポジトリから差分を取得して手元で修正し、PPAにアップロードするということをやります。それでも太刀打ちできない場合は、BTSを検索します。時期にもよるのですが、開発中のGuest Additionsを提供していることがあります。たとえば4.3.6と4.3.8の間には、4.3.7というバージョン番号でisoイメージを公開しています。これを覚えておけば、今後役に立つこともあるかも知れません[6]⁠。

[設定][共有フォルダー]機能は便利で、要はこれはホストOSのフォルダーをゲストOSからマウントする機能です。ただし、Guest Additionsをインストールしてここの設定をしても、共有フォルダーにアクセスできるようになりません。ユーザーをvboxsfグループに追加する必要があります。ikuyaというユーザーで共有フォルダーにアクセスする場合は、

$ sudo addgroup ikuya vboxsf

を実行し、一旦ログアウトして再ログインします。これで、/media/sf_(共有フォルダー名)からアクセスできるようになります。

[設定][一般][高度][ドラッグ&ドロップ]というのがあり、これを見る限りホストOS/ゲストOSを問わずに自由にドラッグ&ドロップができそうに見えますが、現在(4.3.x)はLinuxゲストのみ、ホストOSからゲストOSへのドラッグ&ドロップだけが実装されています。すなわちこの設定項目はフェイクも混じっているということです。この機能は4.2で実装されましたが、4.3でもとくに改善は見られませんでした[7]⁠。素直に共有フォルダー機能を使うのが便利でしょう。

Extension Pack

ダウンロードページからExtension Packのダウンロードもできます。これはOracleのバイナリにもUbuntuのバイナリにも筆者のPPAのバイナリにもインストールできます。ここにもあるとおり機能が3つばかり追加されます。ただし筆者はインストールしていません。なぜなら、USB 2.0対応とありますが、これをインストールしなくてもUSB 1.1相当には対応していますし[8]⁠、そもそもゲストOSでそんなに高速なデバイスは使用しません[9]⁠。RDPも便利だとは思いますが、ほとんど使うことはありません。

それよりVirtualBoxをアップデートするたびにExtension Packもアップデートする必要があり、鬱陶しいのと、ライセンスを気にする必要があるというデメリットのほうが上回っているように思えるからです。もちろんメリットが大きい場合はインストールしたほうが良いのですが、ライセンスには気をつけ下さい[10]⁠。

おすすめ記事

記事・ニュース一覧