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してやればよさそうだけど、それはまだ未確認なので次回以降に。