QEMUとVMware Player@FC5

Linux JournalFC5を動かしてるデスクトップのCPUを、P4-2.4GHzからP4-3.06GHz(HT 533FSB northwood)へと、微妙かつシステム的には限界のアップグレードをしたのですが、Fry’sへシリコングリスを買いにいったついでになんとなくLinux Journal誌を買ってみました。
Virtual Linux特集ってことで、xenだのVMwareだのQEMUだの載ってたわけですが、こないだxenは試したし、オフィスでOS別のRPMビルド環境として活用できてるし、とりあえずxenはおなかいっぱい。
xenでイイ感じだっただけに、VMwareとQEMUもちょっとやってみたいなってことでやってみた。

VMwareに関しては、実はVersion3ぐらいのとき有償版を買って使ってて、Win2K@VMware@Kondaraって状態で使ってた記憶がある。
けど、いろいろアップグレードしていくうちに、古いバージョンが2.4カーネルで使えなかった&アップグレードが有償だったので使うのやめちゃったのよね。
メインの目的がWebサイトのIEでの動作確認と、IEでしかつかえないインチキWebサイトの閲覧だったんで、Firefoxがどんどん良くなっていくにつれて、必要性も下がってきてたから、もう追加でお金をはらってまでやることはねーか、という判断をしたってワケです。
そんな中、実質フリーで使えるVMware Playerを使うのは、またVMwareのマーケティングに引っ掛かる形になるのでちょっとシャクな気がするんだけど、昔使ってたとき気に入らなかったわけじゃないんでここは引っ掛かって然るべきだなってことで。

めずらしく長い前置きになってしまったけど、本編は続きます。

QEMU (qemu + kqemu @Fedora Core 5)

まずはオープンソースのCPUエミュレータ「QEMU」からです(QEMU公式サイト)。
fedora extrasリポジトリにRPMがあるのですが、このRPMではkqemuというアクセラレータがサポートされてません。kqemu無しだとVMとして動かすには厳しいですので、ここでは本家からとってきたソースからインストールすることにします。

下準備

qemu+kqemuのビルドにはカーネルヘッダおよびgcc32が必要ですので、RPMパッケージ kernel-devel(またはkernel-smp-devel) compat-gcc-32 を導入しておきます。
# yum install -y kernel-smp-devel compat-gcc-32

tarballの取得

QEMUのdownloadページから
- qemu-0.8.0.tar.gz
- kqemu-0.7.2.tar.gz
をダウンロードしておきます。

ソースの展開とビルド

ビルドとインストールはrootで作業してます(makeまではユーザーでやれよってツッコミは省略)。
kqemuはqemuを展開したソースツリーの中で展開します。
# cd /usr/local/src
# tar xzf ~/qemu-0.8.0.tar.gz
# cd qemu-0.8.0
# tar xzf ~/kqemu-0.7.2.tar.gz

gcc32を使ってビルドします
# ./configure --cc=gcc32
# make
# make install

アクセラレータモジュール「kqemu.ko」をロードします
# modprobe kqemu

qemuでつくったVMにWindows XPをインストールしてみる

(あたりまえですが)ここからは一般ユーザーでの作業です。一般ユーザーなのに仮想とはいえPCつくり放題。これであなたも仮想PCベンダーです。

仮想ディスク winxp.img の作成
$ qemu-img create winxp.img 4G

WindowsXPのインストールCDをドライブに入れて、そこからブート
$ qemu -hda winxp.img -cdrom /dev/cdrom -boot d -m 256 -monitor stdio

qemuにgrabされたキーボードとマウスは、CTRL+ALT同時押しで解放されます
インストール作業中暇なので、コンソールに立ち上がってるモニタで情報を表示してみましょう
(qemu) info version
0.8.0
(qemu) info kqemu
kqemu is enabled

helpやinfo helpと入力すると、モニタで使えるコマンドのヘルプを参照できます。
便利くさいのはscreendumpコマンド。PPM形式でスクリーンショットを保存できます。OSのインストール記事を書くコマンドライン派のライターさん(そんな人いるの?)には最高なんじゃないでしょーか?
インストールが完了したら、qemu内でwindowsを終了し、仮想マシンの電源を切れる状態にします。
モニタから
(qemu) quit
として終了するのが礼儀正しい(?)作法のようです。

次回以降のブートは、「-boot d」オプションを外して
$ qemu -hda winxp.img -n 256
とすればOKです。

-monitorオプションなしで起動したとき、CTRL+ALT+2でモニタ画面に切り替えることができます。CTRL+ALT+1で仮想マシン画面に戻ります。

サスペンドとレジューム

モニタからsavevmコマンドとloadvmコマンドを使用して、サスペンドとレジュームが可能です。

サスペンドして終了
(qemu) savevm mystate
(qemu)q

起動してレジュームする
$ qemu -hda winxp.img -n 256 -loadvm mystate

VMware Player @Fedora Core 5

次はVMware Player(公式サイト)です。
実行環境だけで、仮想マシン作成環境はなしよというふれこみのVMware Playerですが、仮想マシンのイメージをqemu-imgで作れたり、公開されてる仮想マシンのイメージをダウンロードすることで結局有償版のVMwareは無しで使えたりすることがすぐ判明して、(僕を含めて)いっきに利用者が増えた気がします。

下準備

VMwareはRPMになってますが、モジュールのビルドにはカーネルヘッダが必要ですので、kernel-develもしくはkernel-smp-develを導入しておきます。
# yum install -y kernel-smp-devel

パッケージの取得

VMware Playerのダウンロードページからlinux .rpmを取得します。
FC5のカーネルでは、VMwareのモジュールのビルドがそのままではできません。この問題を解消するためのパッチが非公式に配布されています。
vmwareパッチ置き場からvmware-any-any-update101.tar.gzを取得します。

インストールとパッチの導入

rootでの作業です。
VMware Playerのインストール
# rpm -ivh VMware-player-1.0.1-19317.i386.rpm
anyanyパッチの展開と実行
# tar xzf vmware-any-any-update101.tar.gz
# cd vmware-any-any-update101
# ./runme.pl

質問されまくりですが、ウチでは全部デフォルトのままエンター連打になりました。
runme.plはそのままvmware-config.plを実行してくれるので、VMwareのモジュールのインストールまで完了します。
# 途中EULAがmoreで表示されますが、抜けるには’q'です。
最終的に
Starting VMware services:
Virtual machine monitor [ OK ]
Virtual ethernet [ OK ]
Bridged networking on /dev/vmnet0 [ OK ]
Host-only networking on /dev/vmnet1 (background) [ OK ]
Host-only networking on /dev/vmnet8 (background) [ OK ]
NAT service on /dev/vmnet8 [ OK ]

The configuration of VMware Player 1.0.1 build-19317 for Linux for this running
kernel completed successfully.

You can now run VMware Player by invoking the following command:
"/usr/bin/vmplayer".

Enjoy,

--the VMware team
こーなったら勝ち組です(笑)

VMの作成

VMの作成は有償版のVMwareで!じゃなくって、なぜかqemu-imgコマンドで出来ちゃいます。

qemu-imgコマンドでVMware用のイメージを作成する。
qemu-img create -f vmdk winxp.vmdk 4G

コンフィグファイルwinxp.vmxの作成
config.version = "8"
virtualHW.version = "3"
memsize = "256"
ide0:0.present = "TRUE"
ide0:0.fileName = "winxp.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.deviceType = "cdrom-raw"
floppy0.present = "FALSE"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
usb.present = "TRUE"
sound.present = "TRUE"
sound.virtualDev = "es1371"
displayName = "Windows XP"
guestOS = "winxppro"
nvram = "winxp.nvram"
ide0:0.redo = ""
ide1:0.autodetect = "TRUE"

VMの実行

作成したコンフィグファイルを引数にしてvmplayerを起動します。
vmplayer winxp.vmx

VMwareもqemu同様に、CTRL+ALTでgrabしたキーボードとマウスを解放してくれるます。
ウチではgnomeのキーボード設定でCaps LockをCtrlに割り当ててるのですが、VMwareはこのCaps LockはホントにCaps Lockとして受け入れられますのでちょっと注意が必要でした(ってゆーか使いにくいよ)。

サスペンドとレジューム

VMware Playerでは仮想マシン内でOSを起動したまま終了すると、自動的にサスペンドしてくれました。同じコンフィグファイルで起動すると、自動的にレジュームしてくれます。

むすび

やっぱりちょっとVMwareのほうが軽い気がする。
けど、ウチでは十分使えるしコア部分はGPLだしキーボードでのオペレーションがイイ感じだしってことでQEMUを常用することにしました。

思い出したんだけど、昔VMwareを使ってたとき、仮想マシン上のWindowsにドライバを入れると、マウスを画面のはじっこにもってったとき自動的にキーボードとマウスをホスト側に返してくれるソフトがあった気がする。それのQEMU用が無いか探してみることにします(仮想マシンでWindows Updateかけながら)。

関連記事

6個のコメント

  1. 2006 年 4 月 30 日 9:02 AM に投稿 | パーマリンク

    Power Toolsっていうんじゃなかったっけ、それ。
    のぶしが「えーPlayerにはないんだったらVMWareの魅力半減」とか言っていた気がする。

  2. 2006 年 4 月 30 日 9:33 AM に投稿 | パーマリンク

    なんと、VMware Playerのもないのかー
    そしてQEMUのもとりあえずいまんとこみつからん〜

  3. 2006 年 4 月 30 日 12:28 PM に投稿 | パーマリンク

    よく考えたらVMwareやQEMUでこないだ書いたホームレスコンピューティングの実験がやり放題だわ
    家のPC全部にQEMU入れて、USBメモリブートのマシンを仮想マシンの中で動かす
    ホームレスコンピューティングというよりは家庭内居候だな

  4. 2006 年 5 月 3 日 12:51 AM に投稿 | パーマリンク

    > USBメモリブートのマシンを仮想マシンの中で動かす
    それ以前に、KNOPPIXのisoイメージからブートしてみたら重さに涙が出そうになってあきらめた^^;
    ディスク上のisoイメージであんなに重いなら、USBメモリからだとどれくらい重いんだろ・・・

  5. 2006 年 5 月 3 日 7:07 AM に投稿 | パーマリンク

    そんなに遅いのかー。
    支障が出るくらい遅いという声はみたことがなかったけど、実マシンだったらふつー?

  6. 2006 年 5 月 3 日 3:48 PM に投稿 | パーマリンク

    うん、KNOPPIXも他の1CDディストリも、実マシンではふつーに快適に動く

    ディスクイメージにインストールしたQEMUは、それなりに動いてくれるのになぁ〜

    物理CDじゃなくて論理CD(iso)で動かしてる分、軽そうな気がするのに。。。
    CDエミュレートの部分のオーバーヘッドかなぁ?

1個のトラックバック

  1. DOOM! DOOMER!! DOOMEST!? さんからのコメント 2006 年 5 月 19 日, 1:12 AM

    仮装コンピュータに手を出してみよう

    Windowsを入れ直したことがある人って結構いると思います。リカバリーを含めて。
    私はかなり入れ直してきました。「流離いのインストーラー」と異名をつけられるほどに。。。
    だって、…