KVM入れてみた
諸事情でアブク銭が手に入ったので、こんなマシン(Lesance NB G7541/GTX670M/C)を買ってみた。デフォルトメモリが8GBとちょっと物足りなかったので、追加(スロット4つに対し、4GB2つが挿された状態がデフォ)で8GBメモリを二枚買った。8wayのCPUなら24GBくらいメモリがあっても悪くないよねー。もっとも、空のメモリスロットは「サポート以外は開けちゃダメよ」と言われるキーボード裏にあったわけだが…。いいもんっ!当面は16GBでもいいもんっ!
さて
yumで入れるのはなんか負けた気がするので、ソースから。
今回はインストールのみ。VM作成はまた別の記事で。
1.OS(CentOS 6.2)をぶっ込む
まぁ特に何も考えず、「デスクトップ」で。
今もそうなのかわかんないけど、DVD一枚で済ませたいので、オフィス関連はインストールしない。
インストール後初回ログイン時に、yum updateをかけておく。
2.本家のサイトからソースをダウンロードする
http://www.linux-kvm.org/page/Main_Page へ行き、左側の「DOWNLOADS」から、http://sourceforge.net/projects/kvm/files/ に飛び、「qemu-kvm」 -> 「1.0」から「qemu-kvm-1.0.tar.gz」をダウンロード。
めんどくさかったら
# cd /var/tmp/kvm/ # wget http://sourceforge.net/projects/kvm/files/qemu-kvm/1.0/qemu-kvm-1.0.tar.gz/download
3.解凍、展開
# tar xvzf ./qemu-kvm-1.0.tar.gz && cd qemu-kvm-1.0
4.configureのオプションを確認すると、こんな感じ
# ./configure --help Usage: configure [options] Options: [defaults in brackets after descriptions] Standard options: --help print this message --prefix=PREFIX install in PREFIX [/usr/local] --interp-prefix=PREFIX where to find shared libraries, etc. use %M for cpu name [/usr/gnemul/qemu-%M] --target-list=LIST set target list (default: build everything) Available targets: i386-softmmu x86_64-softmmu alpha-softmmu arm-softmmu cris-softmmu lm32-softmmu m68k-softmmu microblaze-softmmu microblazeel-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu sh4-softmmu sh4eb-softmmu sparc-softmmu sparc64-softmmu s390x-softmmu xtensa-softmmu xtensaeb-softmmu i386-linux-user x86_64-linux-user alpha-linux-user arm-linux-user armeb-linux-user cris-linux-user m68k-linux-user microblaze-linux-user microblazeel-linux-user mips-linux-user mipsel-linux-user ppc-linux-user ppc64-linux-user ppc64abi32-linux-user sh4-linux-user sh4eb-linux-user sparc-linux-user sparc64-linux-user sparc32plus-linux-user unicore32-linux-user s390x-linux-user Advanced options (experts only): --source-path=PATH path of source code [/var/tmp/kvm/src/qemu-kvm-1.0] --cross-prefix=PREFIX use PREFIX for compile tools [] --cc=CC use C compiler CC [gcc] --host-cc=CC use C compiler CC [gcc] for code run at build time --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS --make=MAKE use specified make [make] --install=INSTALL use specified install [install] --python=PYTHON use specified python [python] --smbd=SMBD use specified smbd [/usr/sbin/smbd] --static enable static build [no] --mandir=PATH install man pages in PATH --datadir=PATH install firmware in PATH --docdir=PATH install documentation in PATH --bindir=PATH install binaries in PATH --sysconfdir=PATH install config in PATH/qemu --enable-debug-tcg enable TCG debugging --disable-debug-tcg disable TCG debugging (default) --enable-debug enable common debug build options --enable-sparse enable sparse checker --disable-sparse disable sparse checker (default) --disable-strip disable stripping binaries --disable-werror disable compilation abort on warning --disable-sdl disable SDL --enable-sdl enable SDL --disable-vnc disable VNC --enable-vnc enable VNC --enable-cocoa enable COCOA (Mac OS X only) --audio-drv-list=LIST set audio drivers list: Available drivers: oss alsa sdl esd pa fmod --audio-card-list=LIST set list of emulated audio cards [ac97 es1370 sb16 hda] Available cards: ac97 es1370 sb16 cs4231a adlib gus hda --block-drv-whitelist=L set block driver whitelist (affects only QEMU, not qemu-img) --enable-mixemu enable mixer emulation --disable-xen disable xen backend driver support --enable-xen enable xen backend driver support --disable-brlapi disable BrlAPI --enable-brlapi enable BrlAPI --disable-vnc-tls disable TLS encryption for VNC server --enable-vnc-tls enable TLS encryption for VNC server --disable-vnc-sasl disable SASL encryption for VNC server --enable-vnc-sasl enable SASL encryption for VNC server --disable-vnc-jpeg disable JPEG lossy compression for VNC server --enable-vnc-jpeg enable JPEG lossy compression for VNC server --disable-vnc-png disable PNG compression for VNC server (default) --enable-vnc-png enable PNG compression for VNC server --disable-vnc-thread disable threaded VNC server --enable-vnc-thread enable threaded VNC server --disable-curses disable curses output --enable-curses enable curses output --disable-curl disable curl connectivity --enable-curl enable curl connectivity --disable-fdt disable fdt device tree --enable-fdt enable fdt device tree --disable-check-utests disable check unit-tests --enable-check-utests enable check unit-tests --disable-bluez disable bluez stack connectivity --enable-bluez enable bluez stack connectivity --disable-slirp disable SLIRP userspace network connectivity --disable-kvm disable KVM acceleration support --enable-kvm enable KVM acceleration support --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) --disable-kvm-pit disable KVM pit support --enable-kvm-pit enable KVM pit support --disable-kvm-device-assignment disable KVM device assignment support --enable-kvm-device-assignment enable KVM device assignment support --disable-nptl disable usermode NPTL support --enable-nptl enable usermode NPTL support --enable-system enable all system emulation targets --disable-system disable all system emulation targets --enable-user enable supported user emulation targets --disable-user disable all user emulation targets --enable-linux-user enable all linux usermode emulation targets --disable-linux-user disable all linux usermode emulation targets --enable-darwin-user enable all darwin usermode emulation targets --disable-darwin-user disable all darwin usermode emulation targets --enable-bsd-user enable all BSD usermode emulation targets --disable-bsd-user disable all BSD usermode emulation targets --enable-guest-base enable GUEST_BASE support for usermode emulation targets --disable-guest-base disable GUEST_BASE support --enable-pie build Position Independent Executables --disable-pie do not build Position Independent Executables --fmod-lib path to FMOD library --fmod-inc path to FMOD includes --oss-lib path to OSS library --enable-uname-release=R Return R for uname -r in usermode emulation --cpu=CPU Build for host CPU [x86_64] --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9 --disable-uuid disable uuid support --enable-uuid enable uuid support --disable-vde disable support for vde network --enable-vde enable support for vde network --disable-linux-aio disable Linux AIO support --enable-linux-aio enable Linux AIO support --disable-attr disables attr and xattr support --enable-attr enable attr and xattr support --disable-blobs disable installing provided firmware blobs --disable-cpu-emulation disables use of qemu cpu emulation code --enable-docs enable documentation build --disable-docs disable documentation build --disable-vhost-net disable vhost-net acceleration support --enable-vhost-net enable vhost-net acceleration support --enable-trace-backend=B Set trace backend Available backends: nop simple stderr ust dtrace --with-trace-file=NAME Full PATH,NAME of file to store traces Default:trace-<pid> --disable-spice disable spice --enable-spice enable spice --enable-rbd enable building the rados block device (rbd) --disable-libiscsi disable iscsi support --enable-libiscsi enable iscsi support --disable-smartcard disable smartcard support --enable-smartcard enable smartcard support --disable-smartcard-nss disable smartcard nss support --enable-smartcard-nss enable smartcard nss support --disable-usb-redir disable usb network redirection support --enable-usb-redir enable usb network redirection support --disable-guest-agent disable building of the QEMU Guest Agent --enable-guest-agent enable building of the QEMU Guest Agent NOTE: The object files are built at the place where configure is launched
5.依存性を解消しておくために、事前にパッケージを幾つか入れておく
# yum install make gcc cloog-ppl cpp glibc-devel glibc-headers kernel-headers mpfr ppl zlib-devel glib2-devel
(多分コレで良かったはずだけど…。ま、まぁconfigureに失敗したらエラーメッセージに何が足りないか出るので、都度頑張
ってください)
6.インストール
# ./configure && make && make install
7.qemu-system-x86_64コマンド(以前のqemu-kvmに相当するKVM管理コマンド)の確認
# which qemu-system-x86_64 /usr/local/bin/qemu-system-x86_64
8.管理スクリプトの存在確認
# grep -r '#!/bin/' /var/tmp/kvm/src/qemu-kvm-1.0 /var/tmp/kvm/src/qemu-kvm-1.0/block/cloop.c: const char *magic_version_2_0 = "#!/bin/sh\n" バイナリー・ファイル/var/tmp/kvm/src/qemu-kvm-1.0/block/cloop.oは一致 しました バイナリー・ファイル/var/tmp/kvm/src/qemu-kvm-1.0/qemu-nbdは一致しました /var/tmp/kvm/src/qemu-kvm-1.0/configure:#!/bin/sh /var/tmp/kvm/src/qemu-kvm-1.0/scripts/signrom.sh:#!/bin/sh /var/tmp/kvm/src/qemu-kvm-1.0/scripts/refresh-pxe-roms.sh:#!/bin/bash /var/tmp/kvm/src/qemu-kvm-1.0/scripts/tracetool:#!/bin/sh /var/tmp/kvm/src/qemu-kvm-1.0/scripts/update-linux-headers.sh:#!/bin/sh -e /var/tmp/kvm/src/qemu-kvm-1.0/scripts/create_config:#!/bin/sh /var/tmp/kvm/src/qemu-kvm-1.0/scripts/feature_to_c.sh:#!/bin/sh /var/tmp/kvm/src/qemu-kvm-1.0/scripts/hxtool:#!/bin/sh /var/tmp/kvm/src/qemu-kvm-1.0/scripts/qemu-binfmt-conf.sh:#!/bin/sh バイナリー・ファイル/var/tmp/kvm/src/qemu-kvm-1.0/x86_64-softmmu/qemu-system-x86_64は一致しました バイナリー・ファイル/var/tmp/kvm/src/qemu-kvm-1.0/qemu-ioは一致しまし た /var/tmp/kvm/src/qemu-kvm-1.0/kvm/configure:#!/bin/bash /var/tmp/kvm/src/qemu-kvm-1.0/kvm/scripts/qemu-ifup:#!/bin/sh /var/tmp/kvm/src/qemu-kvm-1.0/kvm/scripts/mkbootdisk:#!/bin/sh /var/tmp/kvm/src/qemu-kvm-1.0/kvm/scripts/kvm:#!/bin/sh /var/tmp/kvm/src/qemu-kvm-1.0/kvm/scripts/make-release:#!/bin/bash -e /var/tmp/kvm/src/qemu-kvm-1.0/kvm/vgabios/dataseghack:#!/bin/bash バイナリー・ファイル/var/tmp/kvm/src/qemu-kvm-1.0/qemu-imgは一致しました
バイナリを除くファイルを軽く眺めたところ、「/var/tmp/kvm/src/qemu-kvm-1.0/kvm/scripts/kvm」を /etc/init.dにコピーして、chkconfig --add kvm && chkconfig kvm onしてやればよさそうだけど、それはまだ未確認なので次回以降に。