VMware Playerを用いたイメージの作成法

デスクトップ仮想化ソフトウェアVMware Playerのフリーバージョンが、VMwareからリリースされたのは数カ月前のことである。これは既存のデスクトップ上で第2のオペレーティングシステムを動作させることができる非常に有用なアプリケーションなのだが、唯一の問題点は、VMware Playerを用いた仮想イメージの新規作成はできないということだ。ただし、少しばかりの労を惜しまなければ、VMware Playerを用いてゲストオペレーティングシステムを構築するのは不可能な話ではない。

必要となる仮想イメージを入手する最短の方法は、VMware Workstationを所有している人間に作成を依頼するか、VMwareから作成済みイメージをダウンロードすることだ。もっとも、VMware Workstationを持っている知り合いがいない、あるいは手に入れたいOSがVMwareアプライアンスに用意されていないというケースも充分に考えられるが、その際は自分の不幸さ加減を呪うしかないだろう。たとえばUbuntuやDebianの開発リリースを欲しいと思っても、これらのVMwareイメージが見つかる可能性は望み薄のはずだ。

自分がVMwareの積極的活用を考えており、たとえば複数のOSを稼働させたい、業務で使用したい、あるいは単に興味半分でいじってみる以上の操作をしたいというのであれば、ここは思い切って製品版のVMware Workstationを購入してしまおう。VMware Workstationさえ手に入れれば、手動操作で右往左往するよりも、はるかに簡単に仮想マシンの構築が行えるはずだ。またVMware Workstationには、ゲストOSのスナップショット撮影、仮想マシンの動画作成、仮想SMPの使用など、VMware Playerでは使えない各種の機能が装備されている。

ただし、仮想ホストをLinuxあるいはWindows環境で動かしたいだけであれば、VMware Playerだけでも必要な仕事を賄うのは不可能ではない。またVMware Workstation用の仮想マシンの場合も、ここで解説するVMware Player用の修正をそのまま適用できるはずだが、こうした設定変更のすべてとは言わないものの大部分はVMware Workstation GUIを介しても実行できるようになっている。なおここではLinux環境におけるゲストOSの作成法を取り上げているが、Windows環境であっても、パス名の変更などをするだけで、これらの手順は基本的にそのまま使用できるはずだ。

準備作業

一番お手軽な方法は、VMwareのサイトにアクセスして適当なVMwareアプライアンスを入手してから、後述する設定変更を施すことだろう。なおこの解説で使用しているのは、Gentooアプライアンスのものだ。

必要なアプライアンスをダウンロードして~/vmwareディレクトリに解凍する。これにともない、Gentooディレクトリ中にGentoo.vmxというファイル、あるいは他の仮想イメージの場合は同様の.vmxファイルが作成されていることを確認する。これはVMwareの使用する設定ファイルで、仮想環境に関する情報の格納に使われるものである。たとえばディスクイメージの位置や使用可能なRAMの量などの情報は、この中に記録されることになる。

ファイル中にある、ide1:0.fileNameおよびide1:0.deviceTypeという行に移動する。新規ゲストOSのインストール元としてCD-ROMあるいはDVDを用いる場合は、デフォルトの設定のまま使用できる。そうではなく、CD-ROMの代わりにISOイメージを用いる場合は、若干の変更が必要である。具体的にはISOイメージの使用を指定するため、fileNameおよびdeviceTypeの行に下記の変更を加える。

ide1:0.fileName = "cd.isoへのパス"
ide1:0.deviceType = "cdrom-image"

変更の終了後、VMware Playerを起動する。ただしそのまま仮想マシンをブートさせるのではなく、BIOS起動画面でEscキーを押下し、ブート用デバイスの選択オプションをVMwareに表示させる。このブートメニューで、ハードディスクの代わりにCD-ROMドライブを選択する。これ以降は、通常のインストール手順に従って操作を行う。

なお私が気に入っているVMware Workstationの機能の1つに、ダウンロードしてきたLinuxディストリビューション用ISOをCDに焼き込むことなくVMware上で直接試用できる、というものがある。この機能は、CD-Rの無駄焼きを回避できるので助かっている。

独自の仮想イメージの新規作成

既存のゲストOSを入手して必要な変更を加えるのは非常にお手軽な手法だが、それ故の制限も覚悟しなければならない。その1つが仮想ディスクのサイズ指定で、この場合は仮想イメージ作成時のサイズで固定されてしまい、ユーザによる変更はできない。またVMwareのサイトでは仮想イメージ別のサイズが明記されていないので、必要なサイズのイメージを入手するには、試行錯誤的にいくつかダウンロードしてみるしかないだろう。

また私が確認した範囲内での話だが、仮想イメージの大部分はIDEでなくSCSI形式の仮想ハードドライブを使用しているようだ。そしてオペレーティングシステムの中には、SCSIとの相性が悪くて、このタイプのディスクを認識できないものがある。よって、IDEディスクを使いたい場合、あるいはディスクサイズを独自指定したい場合は、ゲストのディスクイメージをVMwareのツールを介さずに作成することも考えなければならない。

こうした処理を行うとなると、Qemuをインストールしなければならない。ただしここで必要となるのは、Qemu用のディスクイメージを作成するqemu-imgプログラムである。このアプリケーションには、ディスクイメージを各種のフォーマットで作成する機能が装備されており、こうしたフォーマットの中にはVMwareも含まれている。ディスクイメージの作成はqemu-img create -f vmdk イメージ名.vmdk nGという構文で行えるが、この n が作成するディスクイメージのサイズを指定する。なおこの場合のディスクイメージのサイズとは、作成時におけるサイズではなく“最終的”に到達可能なサイズを意味するので注意が必要である。たとえば、20 Gというサイズ指定でイメージを作成しても、何もデータを持たない状態でのディスク容量は3 MB程度に収まっているはずだ。

作成したイメージをVMware Playerに認識させるには、設定ファイルに変更を加える必要がある。VMwareはQemuディスクをIDEディスクであるものとして認識するので、先頭がscsi0で始まる行をすべてコメント化しておく。その後、下記の2つのエントリを設定ファイルに追加する。

ide0:0.present = "TRUE"
ide0:0.fileName = "ファイル名.vmdk"

なお、設定ファイルと同じディレクトリにあるファイルについては、フルパスを指定する必要はない。

このようにqemu-imgを用いて独自のハードディスクを作成するのであれば、必ずしも仮想ゲストをダウンロードする必要はなく、サンプルの設定ファイルと仮想ディスクだけを入手すればよい。起動用のテンプレートとしては、下記の指定を流用すればいいだろう。

#!/usr/bin/vmware
config.version = "8"
virtualHW.version = "4"
memsize = "256"
ide0:0.present = "TRUE"
ide0:0.fileName = "仮想マシン.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "ISOへのパス"
ide1:0.deviceType = "cdrom-image"
floppy0.fileName = "/dev/fd0"
ethernet0.present = "TRUE"
usb.present = "TRUE"
sound.present = "TRUE"
sound.virtualDev = "es1371"
displayuName = "Test Machine"
guestOS = "otherlinux"

scsi0:0.redo = ""
ethernet0.addressType = "generated"

displayName = "表示名"

checkpoint.vmState = "test.vmss"

ide0:0.redo = ""

また具体的にどのような差異が生じるかは不明だが、インストールするゲストOSのタイプをVMware Playerに指定したい、という場合も考えられる。これを行うには、guestOSの行にあるOSの指定を、インストールするものに変更すればよい。私が知っている限り、サポートされているOSの一覧はForever For Nowというサイトで確認できる。なおこのサイトはSCSIおよびIDEのゲストイメージも提供しているので、Qemuのインストールという手間を避けたければ、これらを使用するという手もある。

ここで設定ファイルに追加した指定の中には、ダウンロードしてきたゲストの多くには見られないものもあるが、これらはsound.virtualDevおよびsound.presentディレクトリ経由でサウンドカードの追加に用いる情報である。私が通常行っているCentOSなどのサーバ用オペレーティングシステムのテストにサウンドカードは不要なのだが、VMware Player上でデスクトップ用OSを使うのであれば、こうした機能も必要となるだろう。

仮想フロッピー

その他に必要となる変更は、おそらくfloppy.fileNameに関するものだろう。私がここ数年使っているメインシステムにフロッピードライブは装備されていないが、仮想マシンを再起動するたびにVMwareから、フロッピーが接続されていないという旨のメッセージが表示されるのに、いいかげん閉口させられ始めたところだ。これを黙らせるには、下記の設定を追加すればよい。

floppy0.startConnected = "FALSE"

また、必要上コンピュータにフロッピードライブは搭載していないが、仮想マシン上ではフロッピーを使いたい、という場合は下記の設定を試してもらいたい。

floppy0.startConnected = "TRUE"
floppy0.fileName = "floppy.imgへのパス"

OpenBSDなどをインストールする際に、システムのブートをISOイメージではなくフロッピーイメージで行いたいという場合、こうした設定が有用である。

ネットワークインタフェースの複数化

ネットワークインタフェースを複数使用したい場合、OSに仮想インタフェースを追加する代わりに、下記の行を挿入することで、2番目のEthernetインタフェースを追加できる(3番目や4番目以降も追加可能かもしれないが、私は2番目までしか試していない)。

Ethernet1.present = "TRUE"

なお.vmxファイルの中を覗いてみると、1番目のEthernetデバイスに関して、上記以外の行もいくつか存在していることに気づくだろう。

ethernet0.addressType = "generated"
ethernet0.generatedAddress = "00:0c:29:03:31:3d"
ethernet0.generatedAddressOffset = "0"

これらの行は、VMware Playerを起動して最初にEthernet1のデバイスが認識された際に追加されるだけのものなので、特に気にする必要はない。

必要な作業は、基本的にこれで完了である。より多数のハードディスクを追加したい場合はもう少し設定を変更する必要があるが、単にOSを実行させるだけならば、これだけで充分のはずだ。

最後に繰り返しになるが、VMwareの機能を最大限に活用したいのであれば、ここで解説した手法で新規に仮想マシンを作成するのではなく、VMware Workstationを購入することを強くお勧めする。ただし、単発プロジェクトなどで仮想ゲストを動かせればいいというだけであれば、こうしたVMware PlayerでOSを運用するというのも1つの有望な選択肢になるだろう。

NewsForge.com 原文