Libvirt und Qemu-KVM unter CentOS kompilieren

Zuerst müssen einige Pakete installiert werden:
# yum install libpciaccess-devel device-mapper-devel libxml2-devel python-devel libnl-devel

Libvirt Code runterladen, entpacken, konfigurieren, kompilieren:

cd /usr/src
wget http://libvirt.org/sources/libvirt-1.0.6.tar.gz
tar xzfv libvirt-1.0.6.tar
rm libvirt-1.0.6.tar
cd libvirt-1.0.6 
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
make -j9
make install
ldconfig

Libvirt kann nun gestartet und zum Autostart hinzugefügt werden:
# service libvirtd start
# chkconfig libvirtd on

Das ganze für Qemu:

yum install glib2-devel autoconf automake libtool
cd /usrc/src
wget http://wiki.qemu-project.org/download/qemu-1.4.2.tar.bz2
tar xzfv qemu-1.4.2.tar
rm qemu-1.4.2.tar.bz2
cd qemu-1.4.2.tar
./configure
make
make install

Nun können neue VMs erstellt werden. Es muss beachtet werden das als Emulator /usr/local/bin/qemu-system-x86_64 eingetragen wird.

####################

Mögliche Fehler:

1) Sofern libvirtd folgende Fehlermeldung liefert(/var/log/libvirt/libvirtd.log):
error : virJSONValueToString:1150 : internal error No JSON parser implementation is available

muss ein json Parser nachinstalliert werden:

yum install yajl-devel

Danach muss erneut das configure, make und make install für libvirt ausgeführt werden. Beim configue muss man --with-yajl anhängen.

2) Probleme mit Zugriffsrechten:
sollte man unerklärbare Fehlermeldungen bezüglich Zugriffsrechten bekommen (access denied for /var/…) hilft es libvirt mit einer bestimmten Usergruppe für Qemu zu konfigurieren. Dazu hängt man an den configure Befehl --with-qemu-user=qemu --with-qemu-group=qemu an.

Nach einem make und make install muss noch ein chown root:kvm /dev/kvm ausgeführt werden, danach sind die Zugriffsprobleme verschwunden. Damit die Zugriffsrechte auch nach einem reboot passen muss in die Datei /lib/udev/rules.d/65-kvm.rules mit folgendem Inhalt erstellt werden:
KERNEL=="kvm", GROUP="kvm", MODE="0660"

3) Libvirt kann qemu-kvm nicht finden
Erhalt man beim Befehl virsh version folgende Ausgabe:
virsh version Compiled against library: libvirt 1.0.6
Using library: libvirt 1.0.6
Verwende API: QEMU 1.0.6
Fehler: Abruf der Hypervisorversion scheiterte
Fehler: Interner Fehler Geeigneter Emulator für x86_64 konnte nicht gefunden werden

liegt es höchstwahrscheinlich daran das neuere Vanilla Versionen von qemu-kvm (die originalen Versionen der Entwickler, ohne Patches irgendwelcher Distributionen) sich unter /usr/local/bin/qemu-system-x86_64 ablegen, libvirt aber unter /usr/bin/qemu-kvm sucht. Dies lässt sich mit einem Symlink beheben:

ln -s /usr/local/bin/qemu-system-x86_64 /usr/bin/qemu-kvm

Danach passt die Ausgabe wieder:
-bash-4.1# virsh version
Compiled against library: libvirt 1.0.6
Using library: libvirt 1.0.6
Using API: QEMU 1.0.6
Running hypervisor: QEMU 1.4.2

-bash-4.1#

This entry was posted in General, Linux, Virtualization. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.