Dies ist eine AlteSeite aus unserem UseModWiki bei Sourceforge.

Bitte überarbeite die Seite, passe die Formatierung für das JSPWiki an und entferne diesen Text.

Vielen Dank!

= QEmu =

QEmu ist ein PC-Emulator (http://qemu.org), der einen kompletten
Rechner in einem Fenster nachbildet. Seine
Ausführungsgeschwindigkeit ist für einen reinen Emulator
sensationell hoch. Man kann in QEmu ohne grosse Probleme z.B. eine
Windows-Installation ausführen und so das Problem umgehen, daß es
immer noch das eine oder andere Programm gibt, dass es noch nicht
in einer Linux-Version gibt.

Bei mir läuft Windows 98se geschätzt ca. 2-3 mal langsamer als
direkt auf dem Original-Rechner. Zusätzlich gibt es noch einen
Accellerator, der, falls das Wirts-System auch ein i386-System ist,
den Gast-Rechner nicht nur emuliert, sondern virtualisiert. Dadurch
soll die Geschwindigkeit dann so gut wie gleich der
Original-Geschwindigkeit sein.

Auf dieser Seite sammle ich Tips und Tricks zu QEmu.

== Installation ==

In Debian Sarge ist ein Paket '''qemu''' enthalten. Dieses habe ich
einfach installiert. Dann kann man mit

  qemu-img create harddisk.img 500M

ein leeres Festplatten-Image erzeugen. Ich habe ein Image meiner
Windows98-CD in das Verzeichnis kopiert (Ja - ich habe eine
Original-CD und damit eine Linzenz! :-) ) und dann den Emulator mit
folgendem Befehl gestartet:

  qemu -cdrom win98cd.iso harddisk.img -boot d

Das System bootet von cd CD und man kann Windows installieren. Der
Rest geht wie bei jeder normalen Installation. Übrigens kann man
mit obigem Befehl auch z.B. ein Knoppix-Image booten.


== Einrichten des Netzwerks für qemu ==

''Das Netzwerk ist mit der in Debian Sarge verfügbaren Version Qemu
0.6.1 nicht stabil zu betreiben. Ich empfehle wie unten angegeben
eine eigene Kompilierung, die auch den Vorteil hat, daß man das
Kernel-Modul kqemu dazubekommt.''

Ich möchte gerne, daß die qemu-Instanzen direkt auf die
Netzwerkkarte zugreifen können. Hierzu richte ich eine Bridge ein.
Diese muss man sich wie einen Hub vorstellen, der das externe
Interface (eth0) und die Netzwerkkarten der qemu-Instanzen
miteinander verbindet.

Der Benutzer, unter dem qemu laufen soll, muss die Rechte haben, um
komplett auf die Netzwerkschnittstelle und damit auf den gesamten
Netzwerkverkehr zugreifen zu können, 
weil der von qemu emulierte Rechner ja genau das können soll. Dies
ist eine immanente Sicherheitslücke, über die man sich im klaren
sein sollte.

Will man dieses Problem vermeiden, so darf man keine Bridge
einrichten, sondern muss auf dem Hostsystem ein Routing mit einer
geeigneten Firewall aufsetzen.

'''Tip:''' Da die Einrichtung des Netzwerkes bei allen
Virtualisierungslösungen ähnlich ist, lohnt ggf. ein Blick auf
UserModeLinux.

Als erstes erlauben wir dem Benutzer (im Beispiel qemu) also ein
paar Dinge:

  export VISUAL=/usr/bin/joe
  visudo

jetzt in die sudoers-Datei anfügen:

  qemu  ALL=(root) NOPASSWD: /usr/sbin/brctl addif bridge tun?
  qemu  ALL=(root) NOPASSWD: /sbin/ifconfig tun? 0.0.0.0 up

Nach Verlassen des Editors (mit Ctrl-K X) ist eine Datei
'''/etc/udev/rules.d/021_tun_for_qemu.rules''' neu anzulegen:
  
  # tun-Device zugaenglich fuer User, damit qemu Netzwerken kann
  KERNEL="tun",   MODE="0660", GROUP="qemu"

Nun darf der Benutzer qemu ein TUN-Device einrichten und dieses
dann in eine vorhandene Bridge konfigurieren. Damit dies auch
automatisch geschieht, schreiben wir folgendes in
die Datei '''/etc/qemu-ifup''':

  #!/bin/sh
  sudo brctl addif bridge $1
  sudo ifconfig $1 0.0.0.0 up


== Compilieren von qemu ==

Da ich bei der Installation des Netzwerks einige Schwierigkeiten
hatte, habe ich mir von der Webseite die aktuellen Sourcen geholt
und diese neu übersetzt. Danach funktionierte DHCP über die Bridge
auch bei einem Windows98. Ein weiterer Grund, dies zu tun, ist, daß
man dann das '''kemu'''-Kernelmodul dazu übersetzen kann. Man
benötigt vor dem übersetzen noch folgende Debian-Pakete (Version
der Kernel-Headers ggf. dem laufenden Kernel anpassen):

  aptitude install libsdl1.2-dev make

Dann die Sourcen herunterladen, auspacken und
    
  ./configure
  make
  make install

(Man kann auch auf ''make install'' verzichten und qemu direkt aus
dem Verzeichnis ''i386-softmmu/qemu'' starten, wenn man einen
Softlink auf das Verzeichnis mit der qemu-Firmware setzt.)

== Der Turbo: Compilieren von KQEMU ==

KQEmu ist ein Kernelmodul, das dafür sorgt, daß i368-Gäste auf
einem i386-Host nicht mehr emuliert, sondern virtualisiert werden.
Das bedeutet einen zusätzlichen, grossen Geschwindigkeitszuwachs.
Gefühlsmäßig würde ich sagen, daß die Geschwindigkeit mit kqemu
über der Hälfte des Hostsystems liegt und damit bei heutigen
Rechnern auf jeden Fall im angenehm benutzbaren Bereich. Aufgrund
der nicht-freien Lizenz muss man das Modul auf jeden Fall selbst
kompilieren, was aber kein Problem ist, wenn man soweit ist, daß
man QEmu schon kompiliert hat.

Die  beste Anleitung zur Installation ist auf der Homepage des
Projektes: http://fabrice.bellard.free.fr/qemu/kqemu-doc.html. Im
Prinzip muss man folgendes szusätzlich zu obigem Ablauf machen:

  aptitude install kernel-headers-2.6.8-2-686

und das kqemu-Archiv innerhalb des qemu-Source-Verzeichnis
entpacken,bevor man ''configure'' aufruft. Dann lädt man das Modul
(wenn man udev benutzt) mit 

  modprobe kqemu major=0

und legt eine Datei ''/etc/udev/rules.d/qemu.rules'' an, in der
steht:

  KERNEL="kqemu",      MODE="0660", GROUP="kqemu"

und erzeugt mit '''addgroup kqemu''' eine neue Gruppe. Alle
Benutzer, die mit '''adduser username kqemu''' in diese Gruppe
aufgenommen wurden, können nun auf das Kernelmodul zugreifen.
''(natürlich kann man das auch unsichererweise für alle Benutzer
freigeben, wenn man den Mode ändert und die Group weglässt...)''.

== Links ==

* http://wiki.ubuntuusers.de/QEMU eine Installationsbeschreibung
für Ubuntu