VMWare Playerを使っていろいろなOSを動かす方法が
たくさんのブログで紹介されています。
後々のメモのために表題の件を試した際の流れを
書いておくことにしました。
ホストOSはWindows XP Professional SP2です。
1. VMWare Playerのダウンロード
以下からダウンロードしてインストールします。
http://www.vmware.com/download/player/
バージョンは1.01です。インストール中にGoogle
SearchBarを入れるか訊かれますが、ボクの場合は
入れませんでした。
2. CentOS用のフォルダを作成しておく
CentOSを稼動させる仮想マシン用のフォルダを作成
しておきます。ボクの場合は「c:\VMWare\CentOS」
としました。
3. CentOSのインストールイメージを取得する
試したCentOSのバージョンは4.3です。インストール
イメージは通常4枚組のCD-ROMになっています。
VMWare上にインストールする場合には普通と同様に
仮想マシンのCD-ROMに対してメディアを入れ替える
方法やIDEのプライマリ/セカンダリのマスターと
スレーブをフルに使って4つのイメージファイルを
仮想マシンに認識させる方法などがあるようです。
幸いなことにDVDで一つにまとまったイメージが
あるので、今回はそれを使うことにしました。
BitTorrentで下記サイトからDVDイメージを取得します。
ftp://ftp.riken.jp/Linux/centos/4.3/isos/i386/CentOS-4.3-i386-binDVD.torrent
BitTorrentのクライアントはBitCometやAzureusなど好きなもので良いと思います。
ダウンロードした「CentOS-4.3-i386-binDVD.iso」は2.のフォルダ内に置いておきます。
4. vmdkファイルの作成
VMWareでは仮想マシンのディスクはvmdkファイル
というファイルが実現するようになっており、
このファイルを用意しておく必要があります。
VMWareのサイトにはサンプル用の仮想マシンが
用意されています。「Browser Appliance」と
いう名前でUbuntuベースでFireFoxを手軽に動作
させることができます。これに付属しているvmdk
ファイルを使っても良いのですが、サイズが少々
小さいので、ここではQemuというツールを使って
vmdkファイルを作成することにしました。
以下のサイトからダウンロードします。ボクの場合は
qemu-0.8.0-windows-2.zipを使いました。Qemuは本来
エミュレーションツールですが、ここではごく一部の
機能しか使わないので、細かいバージョンは気にする
必要はないかと思います。
http://www.h7.dion.ne.jp/~qemu-win/index-ja.html/
ダウンロードしたzipを解凍したフォルダの中にある
qemu-img.exeというコマンドを下記のように実行します。
qemu-img.exe create -f vmdk c:\VMWare\CentOS\CentOS.vmdk 20G
ディスクサイズを20GBに指定していますが、作成時点で
いきなり20GBになるわけではないようです。
5. vmxファイルの作成
仮想マシンに対する全ての設定は拡張子がvmxとなって
いるファイルに記述されます。このファイルがVMWare
での設定の肝になっています。作成したファイルを以下
に記載しておきます。作成したファイルは2.のフォルダ
内に入れておきます。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
#VMWare Playerの場合のバージョン指定
config.version = "8"
virtualHW.version = "3"
#ゲストOSの表示名
displayName = "CentOS"
#vmxファイルを特定するID、vmxファイルを移動したり
#リネームした場合は更新する必要がある。
#uuid.locationとuuid.biosが自動生成されるので、
#この二つの項目は記述しておかなくても大丈夫。
uuid.action = "create"
#ゲストOSの識別名
#CentOS4.3そのものの識別子はないが、rhel4を指定
guestOS = "rhel4"
#仮想マシンのBIOS設定情報が格納されるファイル
#ファイル自体は自動生成されるのであらかじめ
#作成しておく必要はない
nvram = "CentOS.nvram"
#仮想マシンのメモリサイズ指定
memsize = "256"
#USBデバイスが存在することを示すフラグ
usb.present = "TRUE"
#フロッピーはついていないマシンなのでFALSEにした
floppy0.present = "FALSE"
#プライマリのマスターハードディスクの指定
#作成したvmdkファイルを指定する
#vmxファイルと同じディレクトリに入れておき
#下記のようにファイル名のみを指定するのが無難
ide0:0.present = "TRUE"
ide0:0.fileName = "CentOS.vmdk"
ide0:0.deviceType = "disk"
ide0:0.autodetect = "TRUE"
ide0:0.mode = "persistent"
ide0:0.redo = ""
ide0:0.startConnected = "TRUE"
#プライマリのスレーブにはインストーライメージを設定する
ide0:1.present = "TRUE"
ide0:1.fileName = "CentOS-4.3-i386-binDVD.iso"
ide0:1.deviceType = "cdrom-image"
ide0:1.mode = "persistent"
ide0:1.autodetect = "TRUE"
ide0:1.startConnected = "TRUE"
#セカンダリは未使用
ide1:0.present = "FALSE"
ide1:1.present = "FALSE"
#デフォルトではSCSIデバイスを使う設定になるため、
#SCSIが不要な場合は明示的に指定する
scsi0.present = "FALSE"
#イーサネットカードの設定
ethernet0.present = "TRUE"
ethernet0.connectionType = "bridged"
ethernet0.addressType = "generated"
#ethernet0.virtualDev = "vmxnet"
#ethernet0.virtualDev = "vlance"
#ethernet0.virtualDev = "e1000"
ethernet0.generatedAddress = "00:0c:29:cd:33:8b"
ethernet0.generatedAddressOffset = "0"
#サウンドカードの設定
sound.present = "TRUE"
#sound.virtualDev = "es1371"
#sound.virtualDev= "sb16"
sound.autoDetect = "TRUE"
sound.fileName = "-1"
#サスペンド時の仮想マシン設定が保存されるファイル名
#自動的に生成されるので、作成しておく必要はない
#サスペンド時にはvmssの他にvmemtというファイルも
#生成されるが、こちらにはメモリ状態が保持されるらしい
checkpoint.vmState = "CentOS.vmss"
#VMWare Toolsがインストールされていない場合にその旨を
#伝えるメッセージを表示するかどうかのフラグ
#VMWare PlayerではVMWare Toolsは使えないらしいが、
#とりあえずTrueにしておく
tools.remindInstall = "TRUE"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
6. CentOSのインストール
作成したvmxファイルをダブルクリックすると、VMWare
Playerが立ち上がり、CentOSのインストールが始まります。
詳細は以下のCentOSの本などが参考になるかと思います。
http://www.seshop.com/detail.asp?pid=6335
通常のインストールと何ら変わりありませんが、ディスク
パーティションの設定で警告が出ます。「自動」「手動」
のいずれの場合でも『パーティションテーブルが壊れて
います、ドライブを初期化しますか?』というダイアログ
が表示されます。一瞬ドキッ!としますが、初期化の対象
になるのはvmdkファイルで実現されている仮想ドライブの
はずなので、『はい』をクリックします。そうすると、
Qemuで指定した通り20GBのパーティションが作成されます。
7. vmxファイルの手直し
CentOSのインストールでは『おめでとうございます、
インストールが完了しました』という表示の後にシステム
の再起動が入ります。この画面が表示された段階でVMWare
Playerの画面上部メニューから「Player→Trouble shoot
→ Power Off and Exit」を選んで、一度サスペンド状態
にします。その上で、vmxファイルのプライマリIDEの
スレーブの設定を下記のように書き換えます。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ide0:1.present = "TRUE"
ide0:1.fileName = "auto detect"
ide0:1.deviceType = "cdrom-raw"
ide0:1.mode = "persistent"
ide0:1.autodetect = "TRUE"
ide0:1.startConnected = "TRUE"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
要はDVDのインストーラを取り外して、通常のCD-ROM
ドライブに設定し直すわけです。その後、vmxファイル
再度ダブルクリックして、CentOSのインストールを続行
します。
8. 画面解像度の設定
以上で通常のインストールは完了ですが、この状態だと
画面解像度が800×600になってしまっているので、設定
を変更します。ゲストOSによってはここでVMWare Tools
が必要になることもあるようですが、この場合には設定
を変更するだけで大丈夫みたいです。
/etc/X11/xorg.confを以下のように書き換えます。
「Screen」セクションの「Display」サブセクションの以下の行を変更
※「Display」サブセクションはDepthが16と24の二つあるが、両方とも変更する
変更前: Modes "800x600" "640x480"
変更後: Modes "1280x768" "800x600" "640x480"
「Monitor」セクションの以下の行を変更
変更前: HorizSync 31.5 - 37.9
変更後: HorizSync 1.0 - 10000.0
変更前: VertRefresh 50.0 - 70.0
変更後: VertRefresh 1.0 - 10000.0
9. 注意点
ethernet0.virtualDevやsound.virtualDevは記述しなければ
最適なものを自動的に認識してくれるようです。
ボクの場合、始めにethernet0.virtualDev="vmxnet"とした
場合にはCentOSのインストール時にイーサネットカードを
認識してくれませんでした。始めは設定せずにおいて、後で
lspciで実際にどれで認識しているかを確認しておくのが良い
かと思います。ボクのマシンではイーサネットはAMD(vlance)
でサウンドはES 1371(es1371)で認識していました。ちなみに
ethernet0でのMACアドレス値は仮想的なものですので、実際
のMACアドレスに書き換える必要はありません。また、今回の
設定ではVMWareがサポートしているゲストOSのネットワーク
環境設定のうちの「ブリッジ」を用いています。この場合は
ホストOSがネットワークに接続されていないとゲスト/ホスト
間の通信もできなくなってしまうので、外出先での利用には
他の方法に切り替えるなどの対処が必要です。
VMWare Playerは仮想OSの実行のみが可能で、仮想OSイメージ
の作成はできないことになっていますが、実際にはこのような
方法で任意のOSをインストールして実行させることができます。
CentOSに限らず、それなりに著名なOSについては何かしらの情報
がブログなどで出回っているみたいです。
ここ最近になって仮想化のためのツールが相次いで無償化され、
開発のためのコスト低減という意味ではとても嬉しい状況に
なったと思います。今後はこうした仮想化技術が運用環境でも
活用されるようになるのはほぼ確実です。そうなると、従来の
ライセンス体系やインストーラの仕組みなどビジネスと技術の
両方で考えなくてはならない事柄がたくさん出てきます。開発
段階での仮想化の恩恵にあずかりつつ、そうした将来への備え
も進めていかないといけないですね。