QEMU KQEMU Support Download QEMU 0.11.1, invalid option-kernel-kqemu
(Link zu dieser Seite als [[QEMU-KVM-Buch/ QEMU+KQEMU unter Linux]])
Inhaltsverzeichnis |
[bearbeiten] QEMU und KQEMU unter Linux
Der Support für den Beschleuniger KQEMU endet mit QEMU 0.11. Unter Ubuntu 9.10 (Karmic Koala) bietet das Paket qemu-kvm mit QEMU 0.11.0 bereits keinen KQEMU-Support. 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. Parallel dazu kann man auch eine neuere QEMU-Version ohne KQEMU-Support nutzen. Zum Beispiel installiert das Ubuntu-Paket die QEMU-Binaries im Pfad /usr/bin/. Die kompilierte Version liegt unter /usr/local/bin/. Unter Angabe des vollständigen Pfades kann jeweils die gewünschte Version aufgerufen werden.
[bearbeiten] Software-Pakete
Bei der Installation von QEMU mit Software-Paketen kann der KQEMU-Support nicht sichergestellt werden. Selbst wenn das derzeitige Paket noch KQEMU-Support bietet, kann dies nach einem Update anders sein. Zu empfehlen ist daher das Kompilieren von QEMU. KQEMU kann als Paket installiert werden. Zu beachten ist, dass die Pakete bei einer neueren Version der Distribution obsolet werden können. Für Red Hat und Fedora lädt man die RPM-Pakete von der URL http://atrpms.net/name/kqemu/ herunter. Um unter Ubuntu den Beschleuniger KQEMU zu installieren, sind die Pakete kqemu-common, kqemu-source und module-assistant zu installieren.
Host ~$ sudo apt-get install kqemu-common kqemu-source
Bei Versionen vor Ubuntu 9.10 sind noch folgende Schritte notwendig.
Host ~$ sudo apt-get install module-assistant Host ~$ sudo module-assistant prepare Host ~$ sudo module-assistant auto-install kqemu
Der Befehl lsmod zeigt ob das Modul kqemu erfolgreich vom Betriebssystem geladen wurde.
Host ~$ lsmod | grep kqemu kqemu 123940 0
[bearbeiten] Quellen kompilieren
[bearbeiten] KQEMU 1.4.0 pre1 unter Ubuntu 9.10
Download: http://qemu-buch.de/download/kqemu-1.4.0pre1.tar.gz
Die Quellen von KQEMU sind wie üblich zu kompilieren. Vorher sind die Pakete gcc, make und wget zu installieren. Unter Debian/Ubuntu werden die Tools zum Kompilieren im Paket build-essential zusammengefasst.
Host ~$ sudo apt-get install build-essential make gcc wget
Zu empfehlen ist weiterhin das Paket checkinstall.
Host ~$ sudo apt-get install checkinstall
Die Quellen werden heruntergeladen, entpackt und kompiliert.
Host ~$ wget http://qemu-buch.de/download/kqemu-1.4.0pre1.tar.gz Host ~$ tar xzvf kqemu-1.4.0pre1.tar.gz Host ~$ cd kqemu-1.4.0pre1 Host ~$ ./configure 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 kqemu-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
Man kann alternativ auch auf herkömmliche Weise die Software installieren.
Host ~$ sudo make install
Das kompilierte Kernel-Modul wird mit dem Befehl modprobe geladen.
Host ~$ sudo modprobe kqemu
Dabei wird das Device /dev/kqemu angelegt.
Host ~$ ls -l /dev/kqemu crw-rw-rw- 1 root root 250, 0 2009-03-17 14:24 /dev/kqemu
Über diese Gerätedatei kommunizieren die virtuellen Maschinen mit dem Kernel-Modul kqemu. Zum Test wird QEMU mit der Option -kernel-kqemu und -monitor stdio aufgerufen. Es darf die Fehlermeldung qemu: invalid option nicht erscheinen. Mit dem QEMU-Monitor-Befehl info kqemu überprüft man den Support von KQEMU.
Host ~$ qemu qemu -kernel-kqemu -monitor stdio (qemu) info kqemu kqemu support: enabled for user and kernel code
Mitunter wird beim Start von QEMU diese Fehlermeldung ausgegeben:
Could not open '/dev/kqemu' - QEMU acceleration layer not activated
Dann sind die folgenden Befehle auszuführen:
Host ~$ sudo mknod /dev/kqemu c 250 0 Host ~$ sudo chmod 666 /dev/kqemu
Damit das Modul beim Systemstart des Hosts automatisch geladen wird, ist bei Debian-Derivaten eine Zeile mit kqemu in der Datei /etc/modules einzutragen. Damit die Zugriffsrechte von /dev/kqemu auch nach dem Neustart richtig gesetzt werden, ist der Befehl chmod 666 /dev/kqemu in die Datei /etc/rc.local einzutragen. Steht /dev/kqemu auch nach dem Neustart zur Verfügung, war die Installation erfolgreich.
Neuere Linux-Distributionen mit Kernel 2.6 benutzen anstelle des betagten devfs das neue udev zur Verwaltung der Kernel-Gerätedateien. Damit ist es möglich Hotplug-Geräte zur Laufzeit automatisch einzubinden. Die Konfiguration von udev erfolgt über Konfigurationsdateien in /etc/udev. Wenn die Linux-Distribution udev unterstützt, wird das Device /dev/kqemu nicht automatisch beim Booten angelegt. Dazu sind in ein Boot-Skript folgende Zeilen einzutragen.
mknod /dev/kqemu c 250 0 chmod 666 /dev/kqemu
[bearbeiten] QEMU 0.11.1 unter Ubuntu 9.10
Download: http://download.savannah.gnu.org/releases/qemu/qemu-0.11.1.tar.gz
Zum Kompilieren sind diese Paket notwendig:
Host ~$ sudo apt-get install make gcc wge Host ~$ sudo apt-get install zlib1g-dev libsdl-gfx1.2-dev
Zu empfehlen ist das Paket checkinstall.
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 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 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 oder 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.11.1.tar.gz Host ~$ tar xzvf qemu-0.11.1.tar.gz Host ~$ cd qemu-0.11.1 Host ~$ ./configure ... kqemu support yes ... Host ~$ make
Zu empfehlen ist das Generieren eines Softwarepaketes mit checkinstall. Eindeutig ist der Paket-Name vorzugeben, zum Beispiel qemu-with-kqemu-support-self-compiled.
Host ~$ sudo checkinstall
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 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.11.1, Copyright (c) 2003-2009 Fabrice Bellard
[bearbeiten] Spezielle Optionen und Befehle für KQEMU
Wenn Host- und Gast-System in x86-Prozessorarchitektur vorliegen, kann QEMU mit dem optionalen Beschleuniger KQEMU auch die Native Virtualization anwenden. Dabei reicht KQEMU die meisten Befehle direkt an die reelle CPU weiter. Nur die CPU-Befehle, die direkt die Hardware ansprechen, werden abgefangen und durch angepasste Routinen ersetzt. Bei Linux-Gast-Systemen wird die beste Beschleunigung mit dem 2.4er Kernel erreicht. Die 2.6er Versionen funktionieren, sind aber langsamer. Zur Aktivierung der vollen KQEMU-Virtualisierung ist die Option -kernel-kqemu anzuwenden. Im QEMU-Monitor zeigt der Befehl info kqemu die Verwendung von KQEMU an.
Host ~$ qemu Platte.img -monitor stdio -kernel-kqemu (qemu) info kqemu kqemu support: enabled for user and kernel code
Eine weitere Option ist -enable-kqemu. Dabei wird nur KQEMU im User-Code aktiviert.
Host ~$ qemu -monitor stdio -enable-kqemu (qemu) info kqemu kqemu support: enabled for user code
Wenn die Verwendung von KQEMU unterbunden werden soll, ist bei älteren QEMU-Versionen die Option -no-kqemu anzugeben. Bei der Installation von einigen Gast-Betriebssystemen, wie zum Beispiel Microsoft Windows, ist KQEMU nicht anzuwenden. Das heißt, wenn die Deaktivierung der KVM Hardware-Virtualisierung mit -no-kvm empfohlen wird, ist hier KQEMU zu deaktivieren. Nach der Installation kann KQEMU bei allen Windows-Versionen aktiviert sein.
Host ~$ qemu -monitor stdio -no-kqemu (qemu) info kqemu kqemu support: disabled
In diesem Fall wurde KQEMU deaktiviert. Im nachfolgenden Beispiel wurde QEMU ohne KQEMU-Support kompiliert. Die Optionen -kernel-kqemu und -no-kqemu stehen nicht zur Verfügung.
(qemu) info kqemu kqemu support: not compiled
[bearbeiten] Quickstart
Eine Anleitung für die ersten Schritte mit QEMU findet man unter der URL http://qemu-buch.de/d/Quickstart.