Personal tools
You are here: Home ブログ matsuyama Gentoo + KVM で Windows XP を起動してみる
Document Actions

Gentoo + KVM で Windows XP を起動してみる

一連の作業を GNU Screen でログってたのですが、ログファイルのフォーマットが何か od の出力みたいになってて解読するのがめんどうくさいので、以下うろ覚えですが一連の作業を復元して掲載します。

ちなみに環境はこんな感じ。

% uname -a
Linux gentoo 2.6.18-r6 #10 SMP Sun Jan 14 22:55:06 JST 2007 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ AuthenticAMD GNU/Linux

-mm kernel のインストール

現在、 portage にある gentoo-sources の最新は KVM を含んでいないので、 mm-sources の最新版 (sys-kernel/mm-sources-2.6.20_rc4-r1) を使ってカーネルを構築します。

% USE="symlink" emerge '=sys-kernel/mm-sources-2.6.20_rc4-r1'
% cd /usr/src/linux
% cp /boot/<oldconfig> .config
% make oldconfig

CONFIG_KVM=y 、 Intel の CPU を使っている場合は CONFIG_KVM_INTEL=y 、 AMD の CPU を使っている場合は CONFIG_KVM_AMD=y に設定しておいて、

% make && make modules_install

します。 mm/mempolicy.c:885 でエラーが出る場合は、以下のように修正してから再コンパイル。

#ifdef CONFIG_CPUSETS
nodes_and(nodes, nodes, current->mems_allowed);
#endif

完成したカーネルはインストールして起動できるようにしておいてください。ちなみに 2.6.20 の少し前ぐらいから make menuconfig の ESC が ESC ESC とツーストロークになっており、また Device Drivers のセクションには Serial ATA (prod) and Parallel ATA (experimental) drivers というセクションが新設されており、自分が用いている ATA ドライバを適切に設定しておく必要があります。

KVM qemu のインストール

KVM qemu は 32 ビット環境でしかうまくコンパイルできないようですが(いろいろ奮闘しました)、めんどいくさいというか 64 ビット環境で無理やりコンパイルしたやつも一応動いているようなのでそちらの方法を紹介しておきます。ちなみにちゃんとやるなら chroot で 32 ビット環境つくらないといけないと思います(あるいは各種ライブラリを 32 ビット用にコンパイルするか)。

準備:

% gcc-config -l
[1] x86_64-pc-linux-gnu-3.4.6
[2] x86_64-pc-linux-gnu-3.4.6-hardened
[3] x86_64-pc-linux-gnu-3.4.6-hardenednopie
[4] x86_64-pc-linux-gnu-3.4.6-hardenednopiessp
[5] x86_64-pc-linux-gnu-3.4.6-hardenednossp
[6] x86_64-pc-linux-gnu-4.1.1 *
% gcc-config 1
% source /etc/profile

んで http://kvm.sourceforge.net/ から kvm-<release>.tar.gz を取ってきて、

% tar zxf kvm-<release>.tar.gz
% cd kvm-<release>.tar.gz

qemu/configure が意味不明な処理をしているので無理やり

qemu/configure(around 456):

-sdl=no
+sdl=yes

としてから、

% ./configure --prefix=/usr/local/kvm --with-patched-kernel --qemu-cc=gcc
% make && make install

インストールができたので gcc-config を元に戻しておきます。

% gcc-config 6
% source /etc/profile

Windows XP を起動してみる

まずはディスクイメージを作ります。

% /usr/local/kvm/bin/qemu-img create -f qcow /var/vm/winxp/disk.img 10G

Windows XP の CD を挿入して起動します。

% /usr/local/kvm/bin/qemu-system-x86_64 -hda /var/vm/winxp/disk.img -cdrom /dev/cdrom -boot d -m 256 -no-acpi

何も問題がなければ普通にインストールが完了するはずなので、それ以降は、

% /usr/local/kvm/bin/qemu-system-x86_64 -hda /var/vm/winxp/disk.img -cdrom /dev/cdrom -boot -c -m 256 -no-acpi

で起動できます。ついでにいろいろな機能を有効にしてスクリプト化しておきましょう。

/var/vm/winxp/run:

#!/bin/sh
/usr/local/kvm/bin/qemu-system-x86_64 -hda /var/vm/winxp/disk.img -cdrom /dev/cdrom -soundhw all -usb -boot c -m 256 -no-acpi > /dev/null 2> /dev/null &
% chmod a+x /var/vm/winxp/run

これで必要なときに /var/vm/winxp/run をすれば Windows XP が起動してくれます。

備考

lsmod | grep -i kvm が空なのでおそらくカーネルの KVM を利用して動作していると思います。んでもってスクリーンショットにもあるように、単なる qemu のエミュレーションではなく KVM を利用した仮想化がちゃんと動作しているように思われます。ただ、マウスやキーボードのレスポンスはひどく悪く、 VM 内から HDD にフルアクセスしたりすると、 qemu client から抜けだせなくなったりと、かなり不安定です。それに加えて時計の針の進みも異常です。実用するにはまだまだ改善が必要なようです。ちなみに tick に関しては以下のようなパッチが投げられていて tick による無駄な計算を省くことができるらしいです。

http://kerneltrap.org/node/7568

最後になりましたが、次の stable リリースがこれほど待ち遠しいのは初めてです。 lkml を ROM るだけじゃなく、いつかは自分も Linux 開発に参加してやろうと機会を伺っているのですが、 lkml を読むかぎりではまだまだ自分では道が遠いようです。まあそれよか健康管理をもっと頑張って、この死にかけた精神を何とか再構築して、普通に仕事できるようにするのが先決なのですが。

kvm-winxp.png

Category(s)
linux
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/matsuyama/booting-windows-xp-with-gentoo-kvm/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.