KVM QEMU Download Installation: qemu-kvm qemu-kvm-extras QEMU Ubtuntu, KVM Ubuntu, Fedora, SuSE, Linux, Build QEMU
(Link zu dieser Seite als [[QEMU-KVM-Buch/ Installation]])
Inhaltsverzeichnis |
[bearbeiten] Installation von QEMU
Die Installation von QEMU ist für die gängigen Betriebssysteme unkompliziert und erfolgt jeweils mit den üblichen Methoden. Installationsanleitungen findet man unter der jeweils angegebenen URL.
| Microsoft Windows und Wine | http://qemu-buch.de/d/QEMU_unter_Microsoft_Windows |
| OS/2 Warp 4 und eComstation | http://qemu-buch.de/d/QEMU_unter_eComstation |
| DOS | http://qemu-buch.de/d/QEMU_unter_DOS |
| Mac OS X (x86) | http://qemu-buch.de/d/QEMU_unter_Mac_OS_X |
| FreeBSD, OpenBSD, NetBSD, Solaris | http://qemu-buch.de/d/QEMU_unter_BSD |
[bearbeiten] QEMU unter Linux
Der Support für den Beschleuniger KQEMU endet mit QEMU 0.11.*. Ab QEMU 0.12.0 wird nur noch die Kernel-based Virtual Machine (KVM) unterstützt. Auf Computern ohne Hardware-Virtualisierungstechniken ist KVM aber nicht einsetzbar. Wer keine neue Hardware kaufen möchte und trotzdem QEMU beschleunigen will muss QEMU 0.11.* oder älter installieren. Eine Anleitung findet man unter der URL http://qemu-buch.de/d/QEMU+KQEMU_unter_Linux.
Für den Einsatz der KVM-Kernel-Module muss sichergestellt werden, dass die Unterstützung der Hardware-Virtualisierung im BIOS des Rechners aktiviert ist (Beispiel):
Advanced
CPU Configuration
Virtualization Technology [Enabled]
Unter Linux wird die Unterstützung Hardware-Virtualisierung (Hardware Virtual Machine – HVM) überprüft.
Host ~$ grep "vmx" /proc/cpuinfo
Werden Zeilen mit vmx ausgegeben handelt es sich um Prozessoren vom Typ Intel VT.
Host ~$ grep "svm" /proc/cpuinfo
Werden Zeilen mit svm ausgegeben, handelt es sich um Prozessoren vom Typ AMD-V. Erfolgt keine Ausgabe wird die Hardware-Virtualisierung nicht unterstützt. QEMU kann dann nur ohne KVM-Beschleunigung installiert werden.
Die KVM-Kernel-Module verhindern das Ausführen anderer Virtualisierungslösungen, wie zum Beispiel Sun xVM VirtualBox und VMware-Server, -Workstation und -Player.
[bearbeiten] Software-Pakete
Bei neueren Linux-Distributionen werden QEMU und die Kernel-based Virtual Machine in dem Paket qemu-kvm zusammengefasst. Ansonsten sind die Pakete kvm und qemu zu installieren. Da das Paket qemu-kvm nur x86-Gast-Systeme unterstützt, ist die Installation des Paketes qemu-kvm-extras zum empfehlen. Es enthält die Emulatoren der anderen Architekturen.
Unter Debian und Ubuntu kann man die Installation mit dem grafischen Paketmanager Synaptic vornehmen. Zuvor sollten alle Programmquellen aktiviert werden (Menü System, Administration, Software-Quellen). Die Synaptic-Paketverwaltung wird über das Menü System, Administration, Synaptic-Paketverwaltung aufgerufen. Nach Auswahl der Pakete wird die Installation aus dem Internet mit dem Button Anwenden gestartet. Alternativ kann die Installation mit einer Befehlszeile erfolgen.
Host ~$ sudo apt-get install qemu-kvm qemu-kvm-extras
Unter Fedora, Red Hat Enterprise Linux und CentOS erfolgt die Installation mit yum.
Host ~# yum install qemu-kvm qemu-kvm-extras
Unter OpenSuSE werden Konfigurationen und Softwareinstallationen mit dem Tool YAST vorgenommen (Punkt Software installieren und löschen). Dort sucht man die Pakete qemu-kvm und qemu-kvm-extras und installiert sie.
[bearbeiten] Quellen kompilieren
[bearbeiten] QEMU 0.12.3 unter Ubuntu
Download: http://download.savannah.gnu.org/releases-noredirect/qemu/
Zum Kompilieren sind diese Pakete notwendig:
Host ~$ sudo apt-get install build-essential gcc make wget Host ~$ sudo apt-get install zlib1g-dev libsdl-gfx1.2-dev
Zu empfehlen ist das Paket checkinstall. Damit baut man Slackware-TGZ-, RPM- oder DEB-Paketen beim Kompilieren. Statt make install wird beim Kompilieren der Befehl checkinstall verwendet.
Host ~$ sudo apt-get install checkinstall
Die folgenden Pakete sind zwar nicht unbedingt nötig, erweitern aber die Funktionalität von QEMU. Für die Absicherung von VNC-Sessions sind die Pakete cyrus-sasl-devel und gnutsl-devel zu installieren. Mit der VDE-Library ist das Anlegen von virtuellen VDE-Switches möglich.
Host ~$ sudo apt-get install libsasl2-dev libgnutls-dev Host ~$ sudo apt-get install ibvdeplug2-dev
Die Bibliothek curl-devel unterstützt das Booten über Web-Protokolle.
Host ~$ sudo apt-get install libcurl4-gnutls-dev
Für Bluetooth-Unterstützung werden die Pakete libbluetooth-dev und bluez benötigt.
Host ~$ sudo apt-get install libbluetooth-dev bluez
Für den Xen-Support erwartet der Kompiler die Bibliothek libxen3-dev.
Host ~$ sudo apt-get install libxen3-dev
Zur Generierung der Dokumentation qemu-doc.html dient das Paket texi2html.
Host ~$ sudo apt-get install texi2html
Wird der Sparse-Checker (cgcc) benötigt, ist das Paket sparse zu installieren.
Host ~$ sudo apt-get install sparse
Die Bibliothek libbrlapi-dev wird für die Braille-Ausgabe verwendet.
Host ~$ sudo apt-get install libbrlapi-dev
Zunächst werden die Quellpakete für QEMU heruntergeladen und entpackt. Kompiliert wird mit normalen Benutzerrechten mit ./configure && make. Erst die Installation erfordert root-Rechte. Mit checkinstall beziehungsweise make install werden die angelegten Dateien in die Verzeichnisse /usr/local/bin/ und /usr/local/share/qemu kopiert.
Host ~$ mkdir -p ~/source Host ~$ cd ~/source Host ~$ wget \ http://download.savannah.gnu.org/releases/qemu/qemu-0.12.3.tar.gz Host ~$ tar xzvf qemu-0.12.3.tar.gz Host ~$ cd qemu-0.12.3
Die Optionen für das Kompilieren zeigt der folgende Befehl an.
Host ~$ ./configure --help
Usage: configure [options]
Options: [defaults in brackets after descriptions]
Standard options:
--help print this message
--prefix=PREFIX install in PREFIX []
--interp-prefix=PREFIX where to find shared libraries, etc.
use %M for cpu name [/usr/gnemul/qemu-%M]
--target-list=LIST set target list []
Advanced options (experts only):
--source-path=PATH path of source code [/home/rwarnke/source/qemu-0.12.3]
--cross-prefix=PREFIX use PREFIX for compile tools []
--cc=CC use C compiler CC [gcc]
--host-cc=CC use C compiler CC [gcc] for dyngen etc.
--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]
--static enable static build [no]
--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
--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]
Available cards: ac97 es1370 sb16 cs4231a adlib gus
--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-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-kvm disable KVM acceleration support
--enable-kvm enable KVM acceleration 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-user-pie build usermode emulation targets as PIE
--disable-user-pie do not build usermode emulation targets as PIE
--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
--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
--enable-io-thread enable IO thread
--disable-blobs disable installing provided firmware blobs
--kerneldir=PATH look for kernel includes in PATH
NOTE: The object files are built at the place where configure is launched
Der Befehl ./configure ist aufzurufen. Soll das Management der virtuellen Maschinen mit den Tools der Bibliothek libvirt erfolgen, ist die Option --prefix=/usr anzugeben. Dann werden die Binaries, wie von libvirt erwartet, unter /usr/bin installiert. Lässt man die Option --prefix=/usr weg, werden die Binaries unter /usr/local/bin/ abgelegt.
Host ~$ ./configure --prefix=/usr
Install prefix /usr BIOS directory /usr/share/qemu binary directory /usr/bin Manual directory /usr/share/man ELF interp prefix /usr/gnemul/qemu-%M Source path /home/ich/source/qemu-0.12.3 C compiler gcc Host C compiler gcc CFLAGS -O2 -g QEMU_CFLAGS -m64 -Wold-style-definition -Wold-style-declaration -I. -I$(SRC_PATH) -U_FORTIFY_SOURCE -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wendif -labels -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing LDFLAGS -Wl,--warn-common -m64 -g make make install install host CPU x86_64 host big endian no target list i386-softmmu x86_64-softmmu arm-softmmu cris-softmmu m68k-softmmu microblaze-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu sh4-softmmu sh4eb-softmmu sparc-softmmu sparc64-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 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 tcg debug enabled no gprof enabled no sparse enabled no strip binaries yes profiler no static build no -Werror enabled no SDL support yes curses support yes curl support yes check support no mingw32 support no Audio drivers oss Extra audio cards ac97 es1370 sb16 Block whitelist Mixer emulation no VNC TLS support yes VNC SASL support yes xen support yes brlapi support yes bluez support yes Documentation yes NPTL support yes GUEST_BASE yes PIE user targets no vde support yes IO thread no Linux AIO support no Install blobs yes KVM support yes fdt support no preadv support no fdatasync yes uuid support no
Mit make wird der Kompiliervorgang gestartet.
Host ~$ make
Zu empfehlen ist das Generieren eines Softwarepaketes mit checkinstall. Es wird statt make install aufgerufen. Eine Hilfestellung erhält man mit checkinstall --help. Das Programm checkinstall stellt einige Fragen, die meist mit den Default-Vorgaben beantwortet werden können. Eindeutig ist aber der Paket-Name vorzugeben, zum Beispiel qemu-kvm-self-compiled. Im aktuellen Verzeichnis wird das Paket angelegt und installiert. Unter Debian/Ubuntu listet es der Befehl dpkg -l auf und mit dpkg -r deinstalliert man es bei Bedarf.
Host ~$ sudo checkinstall Should I create a default set of package docs? [y]: y Bitte geben Sie eine Beschreibung für das Paket ein. >> qemu-self-compiled >> Das Paket wird entsprechend dieser Vorgaben erstellt: ... Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern: 2 Geben Sie einen neuen Namen ein: >> qemu-self-compiled Das Paket wird entsprechend dieser Vorgaben erstellt: 0 - Maintainer: [ root@meinpc ] 1 - Summary: [ qemu-self-compiled ] 2 - Name: [ qemu-self-compiled ] ... Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern: [Enter]
Man kann alternativ auch auf herkömmliche Weise die Software installieren.
Host ~$ sudo make install
Ein Blick in die Datei qemu-doc.html ist zu empfehlen. Wurde unter Ubuntu vorher QEMU als Paket installiert, liegt dieses im Pfad /usr/bin/. Die kompilierte Version liegt ohne Vorgabe des Prefix unter /usr/local/bin/. Unter Angabe des vollständigen Pfades wird jeweils die gewünschte Version aufgerufen.
Host ~$ /usr/bin/qemu QEMU PC emulator version 0.9.1, Copyright (c) Fabrice Bellard Host ~$ /usr/local/bin/qemu -version QEMU PC emulator version 0.12.3, Copyright (c) 2003-2009 Fabrice Bellard
Statt dem Befehl qemu ist bei einigen Distributionen der Befehl kvm anzuwenden.
[bearbeiten] KVM-Kernel-Module
Sind die KVM-Kernel-Module korrekt geladen, gibt im QEMU-Monitor der Befehl info kvm die Meldung kvm support: enabled aus.
Host ~$ qemu -monitor stdio -enable-kvm (qemu) info kvm kvm support: enabled
[bearbeiten] Probleme
Wird ein Kernel vor 2.6.29 verwendet, tritt folgende Fehlermeldung aus.
Host ~$ ./configure --enable-kvm
#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
NOTE: To enable KVM support, update your kernel to 2.6.29+ or
install recent kvm-kmod from http://sourceforge.net/projects/kvm.
ERROR
ERROR: User requested feature kvm
ERROR: configure was not able to find it
ERROR
Zu empfehlen ist die Installation eines neueren Kernels. Ist dies nicht möglich, so sind die entsprechenden Quellen der KVM-Kernel-Module zu installieren. Unter Ubuntu wird die richtige Version mit dem Paket kvm-source installiert.
Host ~$ sudo apt-get install kvm-source Host ~$ make clean Host ~$ ./configure --enable-kvm Host ~$ make Host ~$ sudo checkinstall Host ~$ qemu -monitor stdio -enable-kvm (qemu) info kvm kvm support: enabled
[bearbeiten] Links
- http://www.linux-kvm.org/page/Documents
- http://www.linux-kvm.org/page/HOWTO1
- http://www.qemu-buch.de/d/Quickstart
- http://git.savannah.gnu.org/gitweb/?p=qemu.git
- http://wiki.ubuntuusers.de/QEMU
- https://fedoraproject.org/wiki/Features/KVM_and_QEMU_merge
- Ubuntu GNU/Linux - Das umfassende Handbuch
- http://www.pro-linux.de/work/virtual-ha/print/virtual-ha8.html
- KVM paravirtualization for Linux