Debian/testing(squeeze)上でのKVM環境の構築
PCのOSをubuntu 9.10からDebian/testing(squeeze)に変えた。ついでにソースからKVM環境を作ってみたのでメモを残しておく。
コンパイルに必要となるパッケージの記述は省略した。必要に応じてapt-get installすること。
カーネルパッケージ作成
普通にmake installでもいいんだけど、複数のPC間で使い回したいし、せっかくなのでパッケージ化しておく。Debian勉強会「月刊Deb専 2010年5月号」の岩松さんの記事を参考にカーネルパッケージを作る。
まずはlinusのツリーをベースにdebパッケージ化する。カーネルのバージョンはv2.6.35-rcではなくv2.6.34にした。環境変数CONCURRENCY_LEVELはmakeの-jオプションの引数になる。この時点のカーネルコンフィグでパッケージ化されるようなので、make-kpkg実行前にコンフィグしておく。
$ cd linux-2.6 $ git pull $ git checkout v2.6.34 -b v2.6.34 $ make oldconfig (&& make menuconfig) $ $ make-kpkg clean $ export CONCURRENCY_LEVEL=8 $ fakeroot make-kpkg --revision=1+`git log --pretty=format:%h -1` --initrd kernel_image
make-kpkgの実行が成功すればこれで親ディレクトリにdebパッケージが作られるので、インストールする。この際、(Grub2の)update-grubも実行されるが、デフォルトカーネルは変更されないので、/etc/default/grubのGRUB_DEFAULTを編集してupdate-grubする。
$ sudo dpkg -i ../linux-image-2.6.34_1+e40152e_amd64.deb $ sudo vi /etc/default/grub $ sudo update-grub
再起動してカーネルが無事立ち上がってくることを祈る。
ちなみにDeb専の記事では、make-kpkgがinitrdを作らなくなったとあるけど、そんなことはないようだ(明示的に--initrdオプションが必要になったてことかな?)。/etc/kernel/postinst.d/initramfs-toolsってそれっぽいファイルがある。ちなみにmake-kpkgのバージョンは12.033。
KVMモジュール & QEMU
KVMのgitリポジトリには、カーネル込みのkvmとモジュール単体のkvm-kmodが存在するが後者を使う。
$ git clone git://git2.kernel.org/pub/scm/virt/kvm/qemu-kvm.git $ git clone git://git2.kernel.org/pub/scm/virt/kvm/kvm-kmod.git
KVMモジュールをコンパイルする前に、バージョンをカーネルに合わせておく。v2.6.34に対応するのは、kvm-kmod-2.6.34になる。カーネルのバージョンを変えたら、make syncを忘れないこと。
$ cd kvm-kmod $ git tag -l kvm-86 : $ git checkout kvm-kmod-2.6.34 -b kvm-kmod-2.6.34 $ ./configure $ make sync LINUX=/lib/modules/2.6.34/source $ make $ sudo make install
続いてQEMUのコンパイル。こちらは特にはまることはないと思う。
$ cd qemu-kvm $ ./configure $ make $ sudo make install
あとはゲストOSとしてPlan 9を動かすなりなんなりお好きなように。