QEMU: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
(Artikel grob überarbeitet)
(Weitere Änderungen (Struktur, Aktualisierungen))
Zeile 9: Zeile 9:
installiert.
installiert.


==Installation eines Betriebssystems==
==Über QEMU==
Die große Stärke des puren QEMUs ist die Unabhängigkeit vom Type der CPU. So ist es zum Beispiel möglich auf einer normalen 32Bit CPU ein 64bit Betriebssystem zu installieren indem QEMU die 64bit CPU simuliert. Diese Stärke ist aber auch die große Schwäche da durch das Simulieren viel CPU Leistung verloren geht.  
QEMU bietet verschiedene Möglichkeiten der Virtualisierung. Zum einen die Hardware Emulation durch '''tcg''' (Tiny-Code-Generator) und Hardware-unterstützte-Virtualisierung von Typ-1-Hypervisor (z.B. '''Xen''') und Typ-2-Hypervisor (z.B. '''KVM''')
Standardmäßig nutzt QEMU '''tcg'''. Zudem muss die Unterstützung für '''Xen''' oder '''KVM''' während des Kompilierens explizit aktiviert werden.


Unter anderem folgende CPU Typen können mit folgenden Befehlen simuliert werden.
Die große Stärke des puren QEMUs ist die Unabhängigkeit vom Typ der CPU. So ist es zum Beispiel möglich auf einer normalen 32Bit CPU ein 64bit Betriebssystem zu installieren indem QEMU die 64bit CPU simuliert. Diese Stärke ist aber auch die große Schwäche da durch das Simulieren die Ausführungsgeschwindigkeit im Vergleich zu anderen Virtualisierungsmethoden sehr langsam ist.  


Mit '''tcg''' können folgende Prozessor Typen simuliert werden:
qemu-system-alpha
  qemu-system-arm
  qemu-system-arm
  qemu-system-cris
  qemu-system-cris
qemu-system-i386
qemu-system-lm32
  qemu-system-m68k
  qemu-system-m68k
qemu-system-microblaze
qemu-system-microblazeel
  qemu-system-mips
  qemu-system-mips
  qemu-system-mips64  
  qemu-system-mips64
  qemu-system-mips64el
  qemu-system-mips64el
  qemu-system-mipsel
  qemu-system-mipsel
qemu-system-or32
  qemu-system-ppc
  qemu-system-ppc
  qemu-system-ppc64
  qemu-system-ppc64
  qemu-system-ppcemb
  qemu-system-ppcemb
qemu-system-s390x
  qemu-system-sh4
  qemu-system-sh4
  qemu-system-sh4eb
  qemu-system-sh4eb
  qemu-system-sparc
  qemu-system-sparc
qemu-system-sparc64
qemu-system-unicore32
  qemu-system-x86_64
  qemu-system-x86_64
  ...
  qemu-system-xtensa
qemu-system-xtensaeb


===Erweitern des zuweisbaren Rams===
==Installation eines Gast-Betriebssystems==
Qemu vergibt standardmäßig 128mb Ram an das emulierte OS, um diese Grenze zu Erweitern gibt die Option "-m XXX" wobei XXX die Ramgröße in mb ist. Wieviel RAM man einstellen kann ist abhängig von
===Erstellen einer Festplatte für das Gastsystem===
/dev/shm
Möchte man das Gast-Betriebssystem installieren, so benötigt man einen Container dafür. QEMU liefert ein Programm mit, das einem hilft einen solchen Container zu erstellen:
, welches Teil von
  $ qemu-img create -f qcow2 arch.img 4G
tmpfs
ist. Dies bedeutet, dass
/dev/shm
standardmäßig die Hälfte des physikalischen RAM zur Verfügung hat.
 
In Systemen wo es noch in der
/etc/fstab
einen separaten /dev/shm Eintrag gibt, kann man diesen beliebig erweitern.
  none                  /dev/shm      tmpfs    defaults,size=XXXM            0      0
Damit die Änderung Wirkung zeigt sollte man
/dev/shm
neu einbinden:
  $ mount -o remount /dev/shm


===Erstellen einer virtuellen Festplatte===
Nun haben wir ein Festplatten-Image ''arch.img'' mit einer maximalen Größe von 4GByte. Da qcow2 ein [https://de.wikipedia.org/wiki/Sparse-Datei Sparse-Format] ist, belegt es nur soviel Platz wie es braucht.
Für die Installation eine Betriebsystems erstellen wir zunächst eine virtuelle Festplatte.
$ qemu-img create -f qcow2 arch.img 4G


Nun haben wir ein Festplatten-Image ''arch.img'' mit einer maximalen Größe von 4GByte. Die Datei ist dabei nur so groß, wie der tatsächlich vom Gastsystem benötigte Platz.
{{ic|qemu-img}} unterstützt viele weitere Formate. Unter anderem auch die Image- Formate anderer Virtualisierungslösungen, wie Vmware oder Virtualbox.
Da QEMU mit '''qcow2''' oder '''raw''' am besten funktioniert, kann und sollte man die Fremdformate mit {{ic|qemu-img}} konvertieren.


qemu-img
Mehr Informationen zu qemu-img findet man in der dazu gehörigen Man-Page.
unterstützt noch weitere Image-Formate. Näheres dazu in der Man-Page.


===Starten vom Installationsmedium===
===Starten vom Installationsmedium===
Wir können das Gastsystem direkt von einem ISO-Image oder von einem physischen Medium installieren. Bei letzterem ersetzen wir den ISO-Dateinamen einfach durch das entsprechende Gerät, wie z.B. ''/dev/dvd''.
Wir können das Gastsystem direkt von einem ISO-Image oder von einem physischen Medium installieren. Bei letzterem ersetzen wir den ISO-Dateinamen einfach durch das entsprechende Gerät, wie z.B. ''/dev/dvd''.
  $ qemu-system-* -hda arch.img -cdrom arch-0.7.2-ftp.iso -boot d
  $ qemu-system-i386 -hda arch.img -cdrom arch-0.7.2-ftp.iso -boot d


Hierbei bedeutet ''-boot d'', dass wir vom virtuellem CD-ROM-Laufwerk starten wollen.
Hierbei bedeutet ''-boot d'', dass wir vom virtuellem CD-ROM-Laufwerk starten wollen.
Zeile 66: Zeile 64:
Das Gastsystem lässt sich einfach durch Angabe des Fesplatten-Abbildes starten:
Das Gastsystem lässt sich einfach durch Angabe des Fesplatten-Abbildes starten:
  $ qemu-system-* arch.img
  $ qemu-system-* arch.img
Bzw:
Bei mehreren Festplatten wird die {{ic|-hdX}} Option benötigt:
  $ qemu-system-* -hda arch.img
  $ qemu-system-* -hda arch.img
$ qemu-system-* -hda arch.img -hdb mehr.img -hdc Speicher.img
Standardmäßig startet eine VM mit 128mb RAM. Möchte man diesen Wert erhöhen wird die Option {{ic|-m}} verwendet:
$ qemu-system-* -hda arch.img -m 1024
Die gestartete VM hat 1gb RAM zur Verfügung.
Weitere nützliche Optionen sind:
-smp n
n gibt die Anzahl der für die VM benutzbaren CPU-Kerne an.
-vga TYP
Standard ist die Emulation von ''cirrus'', möglich sind noch: ''std'', ''vmware'', ''none'' und ''qxl''. Letzteres sollte mit dem spice-Protokoll genutzt werden, was standardmäßig nicht eingebaut ist. Die entsprechenden Grafiktreiber sollten unter Umständen im Gast-System installiert werden.
{{Hinweis|Mit ''vmware'' lässt sich bei einer Linux-LIVE CD eine höhere bzw. die native Bildschirmauflösung benutzen.}}
-full-screen
Startet die VM im Vollbild.


==Bedienung==
==Bedienung==
Durch Klicken mit der Maus in das Qemu-Fenster, kann die Maus im Gast genutzt werden. Durch Drücken von "Strg+Alt" kann der Mauszeiger wieder ''befreit'' werden.
Durch Klicken mit der Maus in das Qemu-Fenster, kann die Maus im Gast genutzt werden. Durch Drücken von "Strg+Alt" kann der Mauszeiger wieder ''befreit'' werden.
Mit der Tastenkombination ''STRG+ALT+F'' lässt sich zwischen Vollbild- und Fenstermodus wechseln.
===QEMU-Monitor===
Sobald wie VM läuft, kann man mittels der Tasten ''STRG+ALT+2'' in den QEMU-Monitor wechseln, mit dem man verschiedene Aktionen an der VM durchführen kann. Eine Befehlsübersicht erhält man hier mittels:
help
Möchte man wieder zum Fenster der laufenden VM zurückkehren, ist lediglich die Tastenfolge ''STRG+ALT+1'' erforderlich.


==Beschleunigung mit KVM==
==QEMU mit KVM Unterstützung==
 
Mit QEMU 1.3 wurde der Fork QEMU-KVM wieder aufgenommen, wodurch QEMU-KVM als separates Paket wegfällt.
===Vorbereitung===
Durch die Emulation einer vollständigen CPU arbeitet ein System in QEMU um Faktor 5 bis 20 langsamer als auf realer Hardware. Mit KVM ist es möglich, ohne CPU-Emulation Code direkt auf der Host-CPU auszuführen, falls diese die dazu nötigen Hardware-Virtualisierungstechniken unterstützt.
Durch die Emulation einer vollständigen CPU arbeitet ein System in QEMU um Faktor 5 bis 20 langsamer als auf realer Hardware. Mit KVM ist es möglich, ohne CPU-Emulation Code direkt auf der Host-CPU auszuführen, falls diese die dazu nötigen Hardware-Virtualisierungstechniken unterstützt.


Zeile 79: Zeile 102:


{{veraltet}}
{{veraltet}}
Bin mir aktuell nicht sicher, ob das auf systemd-Systemen noch nötig ist.
{{Hinweis|Der Benutzer muss Mitglied der Gruppe kvm sein.}}
{{Hinweis|Der Benutzer muss Mitglied der Gruppe kvm sein.}}


KVM wird entweder mit der Option ''-enable-kvm'' aktiviert oder mit ''-machine type=pc,accel=kvm''.
===Einsatz===
Nachdem die passenden Kernelmodule geladen wurden, lässt sich die VM einfach mit
  $ qemu-system-{i386,x86_64} -enable-kvm
  $ qemu-system-{i386,x86_64} -machine type=pc,accel=kvm
starten.


==QEMU mit KVM benutzen==
==Tipps und Tricks==
===Erweitern des zuweisbaren Rams===
Qemu vergibt standardmäßig 128mb Ram an das emulierte OS, um diese Grenze zu Erweitern gibt die Option "-m XXX" wobei XXX die Ramgröße in mb ist. Wieviel RAM man einstellen kann ist abhängig von {{ic|/dev/shm}}, welches Teil von {{ic|tmpfs}} ist. Dies bedeutet, dass {{ic|/dev/shm}} standardmäßig die Hälfte des physikalischen RAM zur Verfügung hat.


Mit QEMU 1.3 wurde der Fork QEMU-KVM wieder aufgenommen, wodurch QEMU-KVM als separates Paket wegfällt.
In Systemen wo es noch in der {{ic|/etc/fstab}} einen separaten /dev/shm Eintrag gibt, kann man diesen beliebig erweitern.
 
   none                  /dev/shm      tmpfs    defaults,size=XXXM            0      0
Nachdem die passenden Kernelmodule geladen wurden, lässt sich die VM einfach per
Damit die Änderung Wirkung zeigt sollte man {{ic|/dev/shm}} neu einbinden:
   $ qemu-system-* -enable-kvm
  $ mount -o remount /dev/shm
  $ qemu-system-* -machine type=pc,accel=kvm
mit den passenden Parametern starten.
 
ein Beispiel für das Laden eines Fedora-LIVE-Systems:
  $ qemu-system-x86_64 -enable-kvm -m 1024 -cdrom Downloads/Fedora-13-x86_64-Live.iso -boot d
Dies startet die VM mit einem zugeteilten Arbeitsspeicher von 1024 MB und dem CD-Image der Fedora-LIVE-CD als eingebundenes CD-ROM Laufwerk. Von letzterem wird hier mit der Option ''-boot d'' gestartet.
 
 
einige zusätzliche Parameter sind z.B.:
 
-m X
X ist die Menge des Arbeitsspeichers mit dem die VM arbeiten darf.


-smp n
===Strg+Alt Konflikte===
n gibt die Anzahl der für die VM benutzbaren CPU-Kerne an.
Es kann zu Problemen kommen, wenn man einerseits im Window-Manager die Tastenkombination Strg+Alt+Ziffer verwendet und QEMU am laufen hat. Solange das QEMU Fenster den Fokus hat passiert nichts. Wechselt man aber zum Beispiel in den QEMU-Monitor verliert das Fenster den Fokus und die Tastenkombination des WM greift. Um wieder zur Gast-Oberfläche wechseln zu können muss man die Tastenkombination ein wenig erweitern:
Strg+Alt+Shift+1
Dies ermöglicht einem wieder die Oberfläche des Gastsystems zu erreichen.


-hda FILE
Die angegebene Datei wird als erste Festplatte / Partition benutzt. Weitere Platten werden mit -hdb, -hdc, etc eingebunden
-vga TYP
Standard ist die Emulation von ''cirrus'', möglich sind noch: ''std'', ''vmware'', ''none'' und ''qxl''. Letzteres sollte mit dem spice-Protokoll genutzt werden, was standardmäßig nicht eingebaut ist. Die entsprechenden Grafiktreiber sollten unter Umständen im Gast-System installiert werden.
{{Hinweis|Mit ''vmware'' lässt sich bei einer Linux-LIVE CD eine höhere bzw. die native Bildschirmauflösung benutzen.}}
-full-screen
Startet die VM im Vollbild.
{{Hinweis|Mit der Tastenkombination ''STRG+ALT+F'' lässt sich zwischen Vollbild- und Fenstermodus wechseln.}}
===VM während des Betriebes steuern===
Sobald wie VM läuft, kann man mittels der Tasten ''STRG+ALT+2'' in den QEMU-Monitor wechseln, mit dem man verschiedene Aktionen an der VM durchführen kann. Eine Befehlsübersicht erhält man hier mittels:
help
Möchte man wieder zum Fenster der laufenden VM zurückkehren, ist lediglich die Tastenfolge ''STRG+ALT+1'' erforderlich.
==Todo==
==Todo==
* Allgemeiner auf QEMU eingehen
* Allgemeiner auf QEMU eingehen
* QEMU-Monitor ein wenig erläutern
* QEMU-Monitor ein wenig erläutern
Zeile 129: Zeile 131:


==Weblinks==
==Weblinks==
* [http://fabrice.bellard.free.fr/qemu/ Projektseite von QEMU] {{sprache|en}}
* [http://wiki.qemu.org/Main_Page Projektseite und Wiki von QEMU] {{sprache|en}}
* [http://qemu-buch.de/de/index.php/QEMU-KVM-Buch:Portal Wikibook "QEMU und KVM"] {{sprache|de}}
* [http://qemu-buch.de/de/index.php/Hauptseite Wikibook "QEMU und KVM"] {{sprache|de}}
* [http://www.linuxforen.de/forums/showthread.php?t=141201 Deutsches HOWTO von Stefan Becker] {{sprache|de}}
* [http://www.linuxforen.de/forums/showthread.php?t=141201 Deutsches HOWTO von Stefan Becker] {{sprache|de}} (nicht top-aktuell)
* [http://de.wikipedia.org/wiki/QEMU Wikipedia-Artikel] {{sprache|de}}
* [http://de.wikipedia.org/wiki/QEMU Wikipedia-Artikel] {{sprache|de}}
* [http://wiki.qemu.org/Main_Page QEMU-Wiki] {{sprache|en}}
* [http://www.linux-kvm.org/page/Main_Page KVM-Wiki] {{sprache|en}}
* [http://www.linux-kvm.org/page/Main_Page KVM-Wiki] {{sprache|en}}


[[Kategorie:Virtualisierung]]
[[Kategorie:Virtualisierung]]
[[Kategorie:Unvollständig]]
[[Kategorie:Unvollständig]]

Version vom 4. April 2013, 21:50 Uhr

Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.


Dieser Artikel oder Artikelabschnitt ist noch nicht vollständig!


QEMU ist ein Prozessor-Emulator, der einen virtuellen Rechner bereitstellt. Für das darin installierte Betriebssystem verhält sich QEMU wie echte Hardware. Dies ist zum Testen und zum gleichzeitigen Ausführen mehrerer Betriebssysteme auf der selben Hardware sehr hilfreich. Zudem bietet QEMU die Möglichkeit, die Virtualisierung durch XEN oder KVM zu beschleunigen (falls ein Prozessor genutzt wird, der dies unterstützt).

Windows XP unter QEMU

Installation

QEMU wird mittels

$ pacman -S qemu

installiert.

Über QEMU

QEMU bietet verschiedene Möglichkeiten der Virtualisierung. Zum einen die Hardware Emulation durch tcg (Tiny-Code-Generator) und Hardware-unterstützte-Virtualisierung von Typ-1-Hypervisor (z.B. Xen) und Typ-2-Hypervisor (z.B. KVM) Standardmäßig nutzt QEMU tcg. Zudem muss die Unterstützung für Xen oder KVM während des Kompilierens explizit aktiviert werden.

Die große Stärke des puren QEMUs ist die Unabhängigkeit vom Typ der CPU. So ist es zum Beispiel möglich auf einer normalen 32Bit CPU ein 64bit Betriebssystem zu installieren indem QEMU die 64bit CPU simuliert. Diese Stärke ist aber auch die große Schwäche da durch das Simulieren die Ausführungsgeschwindigkeit im Vergleich zu anderen Virtualisierungsmethoden sehr langsam ist.

Mit tcg können folgende Prozessor Typen simuliert werden:

qemu-system-alpha
qemu-system-arm
qemu-system-cris
qemu-system-i386
qemu-system-lm32
qemu-system-m68k
qemu-system-microblaze
qemu-system-microblazeel
qemu-system-mips
qemu-system-mips64
qemu-system-mips64el
qemu-system-mipsel
qemu-system-or32
qemu-system-ppc
qemu-system-ppc64
qemu-system-ppcemb
qemu-system-s390x
qemu-system-sh4
qemu-system-sh4eb
qemu-system-sparc
qemu-system-sparc64
qemu-system-unicore32
qemu-system-x86_64
qemu-system-xtensa
qemu-system-xtensaeb

Installation eines Gast-Betriebssystems

Erstellen einer Festplatte für das Gastsystem

Möchte man das Gast-Betriebssystem installieren, so benötigt man einen Container dafür. QEMU liefert ein Programm mit, das einem hilft einen solchen Container zu erstellen:

$ qemu-img create -f qcow2 arch.img 4G

Nun haben wir ein Festplatten-Image arch.img mit einer maximalen Größe von 4GByte. Da qcow2 ein Sparse-Format ist, belegt es nur soviel Platz wie es braucht.

qemu-img unterstützt viele weitere Formate. Unter anderem auch die Image- Formate anderer Virtualisierungslösungen, wie Vmware oder Virtualbox. Da QEMU mit qcow2 oder raw am besten funktioniert, kann und sollte man die Fremdformate mit qemu-img konvertieren.

Mehr Informationen zu qemu-img findet man in der dazu gehörigen Man-Page.

Starten vom Installationsmedium

Wir können das Gastsystem direkt von einem ISO-Image oder von einem physischen Medium installieren. Bei letzterem ersetzen wir den ISO-Dateinamen einfach durch das entsprechende Gerät, wie z.B. /dev/dvd.

$ qemu-system-i386 -hda arch.img -cdrom arch-0.7.2-ftp.iso -boot d

Hierbei bedeutet -boot d, dass wir vom virtuellem CD-ROM-Laufwerk starten wollen.

Starten des Gastsystems

Das Gastsystem lässt sich einfach durch Angabe des Fesplatten-Abbildes starten:

$ qemu-system-* arch.img

Bei mehreren Festplatten wird die -hdX Option benötigt:

$ qemu-system-* -hda arch.img
$ qemu-system-* -hda arch.img -hdb mehr.img -hdc Speicher.img

Standardmäßig startet eine VM mit 128mb RAM. Möchte man diesen Wert erhöhen wird die Option -m verwendet:

$ qemu-system-* -hda arch.img -m 1024

Die gestartete VM hat 1gb RAM zur Verfügung.

Weitere nützliche Optionen sind:

-smp n

n gibt die Anzahl der für die VM benutzbaren CPU-Kerne an.

-vga TYP

Standard ist die Emulation von cirrus, möglich sind noch: std, vmware, none und qxl. Letzteres sollte mit dem spice-Protokoll genutzt werden, was standardmäßig nicht eingebaut ist. Die entsprechenden Grafiktreiber sollten unter Umständen im Gast-System installiert werden.

Hinweis: Mit vmware lässt sich bei einer Linux-LIVE CD eine höhere bzw. die native Bildschirmauflösung benutzen.

-full-screen

Startet die VM im Vollbild.

Bedienung

Durch Klicken mit der Maus in das Qemu-Fenster, kann die Maus im Gast genutzt werden. Durch Drücken von "Strg+Alt" kann der Mauszeiger wieder befreit werden. Mit der Tastenkombination STRG+ALT+F lässt sich zwischen Vollbild- und Fenstermodus wechseln.

QEMU-Monitor

Sobald wie VM läuft, kann man mittels der Tasten STRG+ALT+2 in den QEMU-Monitor wechseln, mit dem man verschiedene Aktionen an der VM durchführen kann. Eine Befehlsübersicht erhält man hier mittels:

help

Möchte man wieder zum Fenster der laufenden VM zurückkehren, ist lediglich die Tastenfolge STRG+ALT+1 erforderlich.

QEMU mit KVM Unterstützung

Mit QEMU 1.3 wurde der Fork QEMU-KVM wieder aufgenommen, wodurch QEMU-KVM als separates Paket wegfällt.

Vorbereitung

Durch die Emulation einer vollständigen CPU arbeitet ein System in QEMU um Faktor 5 bis 20 langsamer als auf realer Hardware. Mit KVM ist es möglich, ohne CPU-Emulation Code direkt auf der Host-CPU auszuführen, falls diese die dazu nötigen Hardware-Virtualisierungstechniken unterstützt.

Wenn man systemd nutzt muss man nichts weiter beachten, ansonsten müssen die Kernelmodule kvm und je nach Prozessortyp kvm-intel oder kvm-amd manuell geladen werden. Systemd lädt die entsprechenden Module nach.

$ modprobe kvm kvm-intel kvm-amd

Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.


Hinweis: Der Benutzer muss Mitglied der Gruppe kvm sein.

Einsatz

Nachdem die passenden Kernelmodule geladen wurden, lässt sich die VM einfach mit

 $ qemu-system-{i386,x86_64} -enable-kvm
 $ qemu-system-{i386,x86_64} -machine type=pc,accel=kvm

starten.

Tipps und Tricks

Erweitern des zuweisbaren Rams

Qemu vergibt standardmäßig 128mb Ram an das emulierte OS, um diese Grenze zu Erweitern gibt die Option "-m XXX" wobei XXX die Ramgröße in mb ist. Wieviel RAM man einstellen kann ist abhängig von /dev/shm, welches Teil von tmpfs ist. Dies bedeutet, dass /dev/shm standardmäßig die Hälfte des physikalischen RAM zur Verfügung hat.

In Systemen wo es noch in der /etc/fstab einen separaten /dev/shm Eintrag gibt, kann man diesen beliebig erweitern.

 none                   /dev/shm      tmpfs     defaults,size=XXXM            0      0 

Damit die Änderung Wirkung zeigt sollte man /dev/shm neu einbinden:

$ mount -o remount /dev/shm

Strg+Alt Konflikte

Es kann zu Problemen kommen, wenn man einerseits im Window-Manager die Tastenkombination Strg+Alt+Ziffer verwendet und QEMU am laufen hat. Solange das QEMU Fenster den Fokus hat passiert nichts. Wechselt man aber zum Beispiel in den QEMU-Monitor verliert das Fenster den Fokus und die Tastenkombination des WM greift. Um wieder zur Gast-Oberfläche wechseln zu können muss man die Tastenkombination ein wenig erweitern:

Strg+Alt+Shift+1

Dies ermöglicht einem wieder die Oberfläche des Gastsystems zu erreichen.

Todo

  • Allgemeiner auf QEMU eingehen
  • QEMU-Monitor ein wenig erläutern
  • Netzwerk
  • aktivierung / weiterleitung von eingesteckten USB-Massenspeichern

Weblinks