Ubuntu Weekly Recipe

第61回「Ubuntuらしく」仮想マシンを使う:ubuntu-vm-builder

Ubuntuで構築したデスクトップ環境を使っていく上で、どうしてもテスト的にソフトウェアをインストールしたいことがあります。こうした場合、常用環境を壊さないように、別のマシンで試してみたくなるはずです。ですが、そうそう多くの物理的なハードウェアを用意することはできません。

その際、仮想マシンを使うのが常套手段です。そこで今回は、⁠多少ハードウェアを選ぶとはいえ)Ubuntuで手軽に仮想マシンを使う方法を説明します。

Ubuntuにおける仮想マシン

「仮想マシン」とは、ソフトウェアを用いて物理的なハードウェア(PC)をエミュレーションし、あたかも複数台のPCが存在するかのように扱うことができる技術のことを指します。古くから存在するVMwareなどが代表的な例ですが、Microsoft VirtualPC・VirtualBox・Xen・KVMなど、代表的なものだけでも多くの実装が存在します。

仮想マシンソフトウェアを導入すれば、アプリケーションの一つとして仮想マシンを動作させることができます。

どのような形で仮想マシンを使うにせよ、仮想マシンイメージをどこかから入手するか、作成する必要があります。Ubuntu上でもVMwareやVirtualBox・Xen・KVMを利用することができ、また、VMwareとVirtualBoxについてはJapanese Teamのページから仮想マシンイメージをダウンロードすれば、それだけで仮想マシン上で動作するUbuntuを手に入れることができます[1]⁠。

通常の場合、仮想マシンは通常のPCを起動したのと同じように動作しますので、Ubuntuのインストールも通常通りに行えば問題ありません。

ですが、UbuntuにはServer Edition向けの機能として、⁠コマンドラインから仮想マシンイメージを生成する」という機能があります。今回はこれを使って、KVMを使った仮想マシン環境を手軽に構築してみましょう。

ubuntu-vm-builder

それではUbuntu独自の仮想マシン作成機能、ubuntu-vm-builder[2]を使ってみましょう。この機能は8.10以降で利用できますが、快適に利用したい場合は9.04を利用する方が安全です(この内容も9.04が前提です。9.04はすでにAlpha6で、あと一ヶ月程度でリリースされますので、実験的な環境を準備できない方はリリース日である4月23日をお待ちください[3]⁠。

ubuntu-vm-builderはコマンドラインから利用するユーティリティなので、以下の操作は全て[アプリケーション⁠⁠→⁠アクセサリ⁠⁠→⁠端末]とたどり、gnome-terminalを起動して操作します。

まず、ubuntu-vm-builderを次のコマンドでインストールします。

$ sudo apt-get install ubuntu-vm-builder

インストールが完了すれば、⁠ubuntu-vm-builder」というコマンドが利用できるようになります。仮想マシンのインストールを行ってみましょう。これも以下のコマンドをタイプするだけです。ただし、ubuntu-vm-builderはカレントディレクトリ直下に仮想マシンを格納するディレクトリを作成しますので注意してください。

以下では念のためホームディレクトリ直下に「vm」というディレクトリを作り、そこに移動しています。

$ mkdir ~/vm
$ cd ~/vm
$ sudo ubuntu-vm-builder kvm intrepid --mirror=http://jp.archive.ubuntu.com/ubuntu

⁠sudo ubuntu-vm-builder kvm intrepid」の最後の「intrepid」の部分で、インストールするUbuntuのバージョンを変更できます。hardy(8.04)・intrepid(8.10)・jaunty(9.04)のいずれかを通常は使うことになるでしょう。

以下のようなメッセージが出力され、マシンの仮想HDD領域の作成・フォーマットやソフトウェアのインストールが始まりますので、しばらく待ってください(マシンの性能にもよりますが、30~40分ほどの時間がかかります。この間ユーザーが行うことはありませんので、そのまま待っていてください⁠⁠。

$ sudo ubuntu-vm-builder kvm intrepid --mirror=http://jp.archive.ubuntu.
com/ubuntu
2009-03-14 20:24:07,042 INFO     Creating disk image: /tmp/vmbuilderDcvG3r/disk0.img
2009-03-14 20:24:07,061 INFO     Adding partition table to disk image: /tmp/vmbuilderDcvG3r
/disk0.img
2009-03-14 20:24:07,180 INFO     Adding type 1 partition to disk image: /tmp/vmbuilderDcvG3
r/disk0.img
2009-03-14 20:24:07,198 INFO     Adding type 3 partition to disk image: /tmp/vmbuilderDcvG3
r/disk0.img
2009-03-14 20:24:07,207 INFO     Creating loop devices corresponding to the created partiti
ons
2009-03-14 20:24:07,225 INFO     Creating file systems
2009-03-14 20:24:07,258 INFO     mke2fs 1.41.4 (27-Jan-2009)
2009-03-14 20:24:08,252 INFO     Mounting target filesystems
2009-03-14 20:24:08,263 INFO     Installing guest operating system. This might take some time...
/var/lib/python-support/python2.6/Cheetah/CacheRegion.py:30: DeprecationWarning: the md5 module is deprecated; use hashlib instead
  import md5

(省略)

2009-03-14 20:57:42,091 INFO     Updating certificates in /etc/ssl/certs....done.
2009-03-14 20:57:42,091 INFO     Running hooks in /etc/ca-certificates/update.d....done.
2009-03-14 20:57:50,233 INFO     grep: /proc/self/status: No such file or directory
2009-03-14 21:05:13,228 INFO     update-initramfs: deferring update (trigger activated)
2009-03-14 21:05:20,308 INFO     Copying to disk images
2009-03-14 21:05:26,678 INFO     Installing bootloader
2009-03-14 21:05:38,080 INFO     Unmounting target filesystem
2009-03-14 21:05:38,340 INFO     Converting /tmp/vmbuilderDcvG3r/disk0.img to qcow2, format ubuntu-kvm/disk0.qcow2
2009-03-14 21:06:05,935 INFO     Cleaning up

こうして仮想マシンの生成が完了するとプロンプトが表示されます。エラーメッセージ等がなければ、~/vm/ubuntu-kvm/以下に、仮想マシンのためのイメージ一式が準備されているはずです。この仮想マシンを起動してみましょう。

$ cd ubuntu-kvm/
$ ./run.sh

この操作でUbuntuがインストールされた仮想マシン図1が起動し、コンソールベースのログイン画面図2が表示されるはずです。既存の仮想マシンを使ったことがある方にとっては非常に拍子抜けするかもしれませんが、ubuntu-vm-builderにより、仮想マシンがこのように、非常に簡単に作成・起動できるようになります。

図1 KVM-QEMUの起動直後の画面
図1 KVM-QEMUの起動直後の画面
図2 起動が終了してログインできるようになった状態
図2 起動が終了してログインできるようになった状態

ウインドウには「QEMU」と表示されていますが、これはKVMが専用のQEMUを利用して起動しているためです。これで最小限のUbuntuが利用できる状態になりました。

ユーザー名・パスワードともに「ubuntu」でログインが可能です。

多くの場合は仮想環境上でもデスクトップが必要と思われますので、以下のコマンドでDesktop関連の機能を導入してください。サーバー的な用途でのテスト環境であれば、このまま利用しても問題はありません。

$ sudo tasksel install ubuntu-desktop

おすすめ記事

記事・ニュース一覧