qemu, kvm, xen & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

KVM QEMU Download Installation, Grundlagen und Praxis kernelbasierter Virtualisierung mit Linux

(Link zu dieser Seite als [[QEMU-KVM-Buch/ QEMU+KVM unter Linux]])

<<<|###| >>> | English


Debian/Ubuntu – Mit Synaptic werden Softwarepakete installiert.
Debian/Ubuntu – Mit Synaptic werden Softwarepakete installiert.
OpenSuSE - Softwarequellen.
OpenSuSE - Softwarequellen.
OpenSuSE - Software wird mit YAST installiert.
OpenSuSE - Software wird mit YAST installiert.
Unter Mac OS X läuft in VMware Fusion ein Ubuntu, in dem unter QEMU ein Microsoft Windows-2003-Server gestartet wurde.
Unter Mac OS X läuft in VMware Fusion ein Ubuntu, in dem unter QEMU ein Microsoft Windows-2003-Server gestartet wurde.
Der Qemu-Manager für Windows 6.0 unter Linux mit Wine.
Der Qemu-Manager für Windows 6.0 unter Linux mit Wine.
Warnke, Ritzauqemu-kvm & libvirt 4. Auflage 2010 ISBN: 978-3-8370-0876-0 276 Seiten,  27,27 EURBestellen
Warnke, Ritzau
qemu-kvm & libvirt
4. Auflage 2010
ISBN: 978-3-8370-0876-0
276 Seiten, 27,27 EUR
Bestellen


Inhaltsverzeichnis

[bearbeiten] Installation von QEMU und KVM unter Linux

Die Unterstützung der Hardware-Virtualisierung ist im BIOS meist deaktiviert. Dadurch werden Rootkits verhindert, die die Hardware-Virtualisierung verwenden. Für den Einsatz der KVM-Kernel-Module muss die Unterstützung der Hardware-Virtualisierung aktiviert werden (Beispiel):

Advanced
  CPU Configuration
    Virtualization Technology [Enabled]

Unter Linux wird die Unterstützung der 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.

Zu empfehlen ist die Installation eines 64-Bit-Linux. Dies ist natürlich nur bei einer 64-Bit-CPU möglich. Eine 64-Bit-CPU erkennt man am Flag lm (Long Mode). Werden beim folgenden Befehl Zeilen mit lm ausgegeben, kann ein 64-Bit-Linux installiert werden.

Host ~$ grep " lm " /proc/cpuinfo

Optional ist Kernel Samepage Merging (KSM) zu aktivieren. Mit KSM wird den virtuellen Maschinen mehr Arbeitsspeicher zur Verfügung gestellt, als das Host-System besitzt. Allerdings erfordert dies Rechenleistung der CPUs. Zu empfehlen ist KSM bei knappen Arbeitsspeicher des Host-Systems. Mit folgendem Befehl wird ermittelt, ob der Kernel KSM unterstützt.

Host ~$ grep KSM /boot/config-`uname -r`
CONFIG_KSM=y

In diesem Beispiel wird KSM unterstützt. Ob der KSM-Support auch aktiviert ist, zeigt die Datei /sys/kernel/mm/ksm/run an.

Host ~$ cat /sys/kernel/mm/ksm/run
0

In diesem Beispiel ist der KSM-Support nicht aktiviert. Aktiviert wird er mit einer 1. Damit der KSM-Support auch nach einem Neustart aktiviert wird, ist diese Zeile in der Datei /etc/rc.local einzutragen.

Host ~$ sudo echo 1 > /sys/kernel/mm/ksm/run

Mit einer 2 in der Datei /sys/kernel/mm/ksm/run wird der KSM-Support beendet und die zusammengelegten Speicherbereiche werden wieder aufgeteilt.

Host ~$ sudo echo 2 > /sys/kernel/mm/ksm/run

Ein Fein-Tuning erfolgt durch Anpassen der Dateien im Verzeichnis /sys/kernel/mm/ksm/.

Unter Debian/Ubuntu erfolgt diese Konfiguration in der Datei /etc/default/qemu-kvm.

# /etc/default/qemu-kvm
# To disable qemu-kvm's page merging feature, set KSM_ENABLED=0 and
# sudo restart qemu-kvm
KSM_ENABLED=1
#SLEEP_MILLISECS=2000

[bearbeiten] Software-Pakete

Download: http://qemu-buch.de/download/qemu-self-compiled_1.3-1_amd64.deb

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 kvm 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

Die von den Distributionen zur Verfügung gestellten Pakete sind nicht immer aktuell und haben mitunter Einschränkungen im Funktionsumfang. Dann ist die Software aus den Quellen zu kompilieren. Es ist möglich die kompilierte Version zusätzlich zur Paket-Installation zu betreiben.

[bearbeiten] QEMU 1.4 unter Debian/Ubuntu

Download: http://wiki.qemu.org/Download

Die Abhängigkeiten für das Kompilieren des Paketes qemu-kvm werden mit folgenden Befehl aufgelöst.

Host ~$ sudo apt-get build-dep qemu-kvm

Zur Anpassung an eigene Wünsche sollten die notwendigen Pakete einzeln ausgewählt und installiert werden.

Host ~$ sudo apt-get install build-essential gcc make wget
Host ~$ sudo apt-get install libdirectfb-dev libjpeg-dev
Host ~$ sudo apt-get install zlib1g-dev libsdl-gfx1.2-dev
Host ~$ sudo apt-get install gcc libsdl1.2-dev libasound2-dev 
Host ~$ sudo apt-get install pkg-config libpci-dev
Host ~$ sudo apt-get install dh-autoreconf

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. libjpeg8-dev wird für den VNC-JPEG-Support benötigt. 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 libjpeg8-dev libvdeplug2-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 Compiler die Bibliothek libxen-dev.

Host ~$ sudo apt-get install libxen-dev

Zur Generierung der Dokumentationen dienen die Pakete texi2html und texinfo.

Host ~$ sudo apt-get install texi2html texinfo

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

Damit der SPICE-Support in QEMU aktiviert werden kann, ist die Bibliothek libspice notwendig (siehe auch http://qemu-buch.de/d/Netzwerkoptionen/_Netzwerkdienste#SPICE).

Host ~$ sudo apt-get install libspice-protocol-dev libspice-server-dev

Für die iSCSI-Unterstützung ist das Paket libiscsi-dev zu installieren.

Host ~$ sudo apt-get install libiscsi-dev

Zum Kompilieren von QEMU wird das Quellpaket 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://wiki.qemu-project.org/download/qemu-1.4.0.tar.bz2
Host ~$ tar xjvf qemu-1.4.0.tar.bz2
Host ~$ cd qemu-1.4.0

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 [/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 or32-softmmu ppc-softmmu 
                           ppcemb-softmmu ppc64-softmmu sh4-softmmu 
                           sh4eb-softmmu sparc-softmmu sparc64-softmmu 
                           s390x-softmmu xtensa-softmmu xtensaeb-softmmu 
                           unicore32-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 or32-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 [/home/ich/source/qemu-1.4.0]
  --cross-prefix=PREFIX    use PREFIX for compile tools []
  --cc=CC                  use C compiler CC [cc]
  --host-cc=CC             use C compiler CC [cc] for code run at
                           build time
  --objcc=OBJCC            use Objective-C compiler OBJCC [cc]
  --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/qemu
  --docdir=PATH            install documentation in PATH/qemu
  --bindir=PATH            install binaries in PATH
  --sysconfdir=PATH        install config in PATH/qemu
  --localstatedir=PATH     install local state in PATH
  --with-confsuffix=SUFFIX suffix for QEMU data inside datadir and sysconfdir [/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-virtfs         disable VirtFS
  --enable-virtfs          enable VirtFS
  --disable-vnc            disable VNC
  --enable-vnc             enable VNC
  --disable-cocoa          disable Cocoa (Mac OS X only)
  --enable-cocoa           enable Cocoa (default on Mac OS X)
  --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-xen-pci-passthrough
  --enable-xen-pci-passthrough
  --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-ws         disable Websockets support for VNC server
  --enable-vnc-ws          enable Websockets support 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-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-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-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]
  --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-cap-ng         disable libcap-ng support
  --enable-cap-ng          enable libcap-ng support
  --disable-attr           disables attr and xattr support
  --enable-attr            enable attr and xattr support
  --disable-blobs          disable installing provided firmware blobs
  --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, stderr, ust, simple, 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-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
  --disable-seccomp        disable seccomp support
  --enable-seccomp         enables seccomp support
  --with-coroutine=BACKEND coroutine backend. Supported options:
                           gthread, ucontext, sigaltstack, windows
  --enable-glusterfs       enable GlusterFS backend
  --disable-glusterfs      disable GlusterFS backend
  --enable-gcov            enable test coverage analysis with gcov
  --gcov=GCOV              use specified gcov [gcov]

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.

Wenn das Kompilieren fehlschlägt, sollte SPICE mit --disable-spice deaktiviert werden (siehe https://bugs.launchpad.net/qemu/+bug/816370).

Host ~$ ./configure --prefix=/usr --enable-spice \
        --audio-card-list=ac97,es1370,sb16,adlib,gus,cs4231a \
        --enable-trace-backend=simple 
Install prefix    /usr
BIOS directory    /usr/share/qemu
binary directory  /usr/bin
library directory /usr/lib
libexec directory /usr/libexec
include directory /usr/include
config directory  /usr/etc
local state directory   /usr/var
Manual directory  /usr/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /home/ich/source/qemu-1.4.0
C compiler        cc
Host C compiler   cc
Objective-C compiler cc
CFLAGS            -O2 -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -fPIE -DPIE -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing  -fstack-protector-all -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits     -I/usr/include/libpng12   -I$(SRC_PATH)/pixman/pixman -I$(BUILD_DIR)/pixman/pixman
LDFLAGS           -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g 
make              make
install           install
python            python
smbd              /usr/sbin/smbd
host CPU          x86_64
host big endian   no
target list       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 or32-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu 
 sh4-softmmu sh4eb-softmmu sparc-softmmu sparc64-softmmu s390x-softmmu xtensa-softmmu 
 xtensaeb-softmmu unicore32-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 or32-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 
tcg debug enabled no
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
-Werror enabled   no
pixman            internal
SDL support       yes
curses support    yes
curl support      yes
mingw32 support   no
Audio drivers     oss
Extra audio cards ac97 es1370 sb16 adlib gus cs4231a
Block whitelist   
Mixer emulation   yes
VirtFS support    yes
VNC support       yes
VNC TLS support   yes
VNC SASL support  yes
VNC JPEG support  yes
VNC PNG support   yes
VNC WS support    yes
xen support       no
brlapi support    yes
bluez  support    yes
Documentation     yes
NPTL support      yes
GUEST_BASE        yes
PIE               yes
vde support       yes
Linux AIO support no
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
TCG interpreter   no
fdt support       no
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
sigev_thread_id   yes
uuid support      no
libcap-ng support no
vhost-net support yes
Trace backend     simple
Trace output file trace-<pid>
spice support     yes (/)
rbd support       no
xfsctl support    no
nss used          no
usb net redir     no
OpenGL support    yes
libiscsi support  no
build guest agent yes
seccomp support   no
coroutine backend ucontext
GlusterFS support no
virtio-blk-data-plane no
gcov              gcov
gcov enabled      no

Mit make wird kompiliert.

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 --fstrans=no --pkgname=qemu-self-compiled \
        --pkgversion=1.3
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-system-x86_64 -version
QEMU emulator version 1.4.0, Copyright (c) 2003-2008 Fabrice Bellard

[bearbeiten] Der neueste Source-Code

Wer zum experimentieren den neusten Source-Code benötigt, muss diesem mit einem Git-Client (http://git-scm.com) herunterladen. Der Git-Client ist unter Ubuntu mit einer Befehlszeile installiert.

Host ~$ sudo apt-get install git

Der Source-Code von QEMU wird heruntergeladen. In dem angelegten Verzeichnis qemu erfolgt das Kompilieren wie oben beschrieben.

Host ~$ mkdir -p ~/source
Host ~$ cd ~/source
Host ~$ git clone git://git.qemu.org/qemu.git
Host ~$ cd qemu
Host ~$ ./configure && make
Host ~$ i386-softmmu/qemu-system-i386 -version

Möchte man lieber einen stabilen Branch verwenden, ist zuerst dessen Name zu ermitteln.

Host ~$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/stable-0.10
  remotes/origin/stable-0.11
  remotes/origin/stable-0.12
  remotes/origin/stable-0.13
  remotes/origin/stable-0.14
  remotes/origin/staging

In diesem Beispiel wird der Branch stable-0.12 verwendet.

Host ~$ git checkout stable-0.12
Host ~$ git branch
  master
* stable-0.12
Host ~$ ./configure && make
Host ~$ i386-softmmu/qemu-system-i386 -version
QEMU PC emulator version 0.12.5, Copyright (c) 2003-2008 Fabrice Bellard

[bearbeiten] KVM-Kernel-Module

Bei Ubuntu sind die KVM-Kernel-Module Bestandteil der Distribution. Sind die KVM-Kernel-Module korrekt geladen, gibt im QEMU-Monitor der Befehl info kvm die Meldung kvm support: enabled aus.

Host ~$ qemu-system-x86_64 -monitor stdio -machine type=pc,accel=kvm
(qemu) info kvm
kvm support: enabled

Bis QEMU 0.14 wird KVM mit der Option -enable-kvm aktiviert.

Host ~$ qemu-system-x86_64 -monitor stdio -enable-kvm
(qemu) info kvm
kvm support: enabled

Wurden die Kernel-Module nicht geladen, wird diese Meldung ausgegeben:

Host ~$ qemu-system-x86_64 -monitor stdio -machine type=pc,accel=kvm
Could not access KVM kernel module: No such file or directory
failed to initialize KVM

Folgende Befehle laden die Kernel-Module:

Host ~$ sudo modprobe kvm

Bei Prozessoren vom Typ Intel ist das Modul kvm_intel notwendig.

Host ~$ sudo modprobe kvm_intel

Bei Prozessoren vom Typ AMD ist das Modul kvm_amd notwendig.

Host ~$ sudo modprobe kvm_amd

Mit der Option nested=1 wird das Betreiben einer Virtualisierungslösung innerhalb der Gast-Systeme ermöglicht. Das heißt, innerhalb einer KVM-Instanz kann eine weitere KVM-Instanz betrieben werden. Dazu musste bisher das Host-System über AMD-Prozessoren verfügen. Ab dem Kernel 3.1 ist die Nested Virtualization integriert es werden auch Intel-Prozessoren unterstützt. Notwendig ist die Emulation einer entsprechenden 64-Bit-CPU. Weiterhin wird mit der Option npt=1 Nested Paging aktiviert.

Host ~$ sudo modprobe -r kvm_amd
Host ~$ sudo modprobe kvm_amd nested=1 npt=1

Man überprüft das Laden der Module.

Host ~$ dmesg | grep kvm
[ 4147.118755] kvm: Nested Virtualization enabled
[ 4147.118767] kvm: Nested Paging enabled

Bei einigen Linux-Distributionen ist ein Test mit dem Skript kvm-ok (Paket cpu-checker) möglich.

Host ~$ sudo apt-get install cpu-checker
Host ~$ kvm-ok
INFO: Your CPU supports KVM extensions
INFO: /dev/kvm exists
KVM acceleration can be used

Für eine dauerhafte Konfiguration legt man die Datei /etc/modprobe.d/kvm_amd.conf mit folgenden Inhalt an:

# /etc/modprobe.d/kvm_amd.conf
options kvm_amd nested=1 npt=1

Die Zugriffsrechte für /dev/kvm werden bei den meisten Linux-Distributionen mit der Gruppe kvm geregelt.

Host ~$ sudo groupadd kvm
Host ~$ sudo chown root:kvm /dev/kvm
Host ~$ sudo usermod -a -G kvm `whoami` 

Alternativ ermöglicht folgender Befehl allen Benutzern das Device /dev/kvm zu beschreiben:

Host ~$ sudo chmod a+rwx /dev/kvm

Unter Debian/Ubuntu werden die Module mit dem Skript /etc/init.d/qemu-kvm ge- und entladen.

Host ~$ sudo restart qemu-kvm

Falls das Skript /etc/init.d/qemu-kvm nicht existiert, trägt man die notwendigen Befehle in der Datei /etc/rc.local ein. Hier ein Beispiel mit AMD-Prozessoren:

# /etc/rc.local
echo 1 > /sys/kernel/mm/ksm/run
modprobe kvm_amd
chmod a+rwx /dev/kvm
exit 0

Unter Fedora ist in der Datei /etc/sysconfig/modules/kvm.modules diese Zeile zu konfigurieren:

modprobe -b kvm_amd >/dev/null 2>&1

Damit man nicht immer den Befehl qemu-system-x86_64 -machine type=pc,accel=kvm eingeben muss, legt man einen Alias in der Datei ~/.bash_aliases (Ubuntu) beziehungsweise ~/.bashrc (Fedora) an. Man braucht dann nur noch k eingeben.

alias k="qemu-system-x86_64 -machine type=pc,accel=kvm"

[bearbeiten] Probleme

Unterstützen die Prozessoren keine Hardware-Virtualisierungstechniken werden folgende Fehlermeldungen ausgegeben:

Host ~$ sudo modprobe kvm_intel
FATAL: Error inserting kvm_intel: Operation not supported

Beziehungsweise:

Host ~$ sudo modprobe kvm_amd
FATAL: Error inserting kvm_amd: Operation not supported

Es kann aber auch sein, dass im BIOS die Hardware-Virtualisierung deaktiviert ist.

Wird ein Kernel vor 2.6.29 verwendet, wird folgende Fehlermeldung ausgegeben.

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.
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 --fstrans=no --pkgname=qemu-self-compiled
Host ~$ qemu-system-x86_64 -monitor stdio -machine type=pc,accel=kvm
(qemu) info kvm
kvm support: enabled

[bearbeiten] Quickstart

Eine Anleitung für die ersten Schritte mit QEMU findet man unter der URL http://qemu-buch.de/d/Quickstart.


<<<|###| >>> http://qemu-buch.de/

Von „http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_QEMU%2BKVM_unter_Linux

Diese Seite wurde bisher 76.978 mal abgerufen. Diese Seite wurde zuletzt am 18. Februar 2013 um 06:37 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Tipps für Autoren
Autoren
Impressum


English
Recommendation
The Authors
Contact



Letzte Änderungen


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …