Qemu
Virtuelle Maschinen und Emulatoren
Achtung dieser Artikel ist noch in Arbeit und dient vorläufig nur als Vorlage. Dieser Beitrag zu Linux oder der Abschnitt ist in Bearbeitung. Weitere Informationen findest du hier. Der Ersteller arbeitet an dem Beitrag oder Abschnitt und entsorgt den Wartungsbaustein spätestens 3 Tage nach der letzten Bearbeitung. Änderungen außer Rechtschreibkorrekturen ohne Absprache mit dem Urspungsautor sind möglichst zu vermeiden, solange dieser Baustein noch innerhalb der genannten Frist aktiviert ist. |
Inhaltsverzeichnis
Qemu - open source processor emulator
Installation und Bedienung von Qemu (mit Kernelmodul kqemu).
Allgemeines
Qemu ist ein von Fabrice Bellard entwickelter Emulator, mit dem es möglich ist andere Betriebssysteme in einer Virtuellen Umgebung zu installieren.
Dies ist z.B. interessant für Software Entwickler um Programme in einer abgeschotteten Umgebung gefahrlos (für das eigene Produktivsystem) zu testen.
Im Gegensatz zu den kommerziellen Emulatoren wie z.B. VMWare oder VirtualPC steht Qemu jedoch unter der GPL (GNU General Public License).
Lediglich KQemu - das Kernelmodul zur Hardwarebeschleunigung - wird nicht unter der GPL veröffentlicht.
Laut Angaben des Entwicklers zum Schutz gegen die kommerziellen Anbieter von Emulatoren.
Installation
Einige Distributionen liefern bereits fertige Pakete von Qemu mit.
Allerdings ist - aufgrund der schnell fortschreitenden Entwicklung von Qemu - zu empfehlen, wenigstens die aktuelle stabile Version von Qemu oder einen aktuellen CVS-Snapshot zu verwenden.
Ein großes Problem ist, dass Qemu zur Zeit noch einen 3.x C-Compiler zum übersetzen benötigt, die meisten modernen Distributionen aber mittlerweile den einen gcc >= 4.x einsetzen.
Für Benutzner von Debianbasierten Distributionen lässt sich dieses Problem recht einfach lösen, da mehrere verschiedene gcc-Versionen parallel installiert werden können.
Ein einfaches
apt-get install gcc-3.4
reicht also aus.
Für Fedora Core Benutzer gibt es entsprechende compat-* Pakete um Programme mit einer anderen Version des C-Compilers zu übersetzen.
Schwierig gestaltet sich die Installation auf SuSE Linux Systemen.
Da sich mit rpm keine unterschiedlichen Versionen des gcc installieren lassen und es keine compat-Pakete wie bei Fedora Core gibt, bleibt nichts anderes übrig, als den benötigten gcc selbst aus den Sourcen zu kompilieren.
gcc
Dazu läd man sich als erstes das Paket mit dem gcc-Quellcode herunter.
cd /usr/local/src/ wget -c ftp://ftp.gwdg.de/pub/misc/gcc/releases/gcc-3.4.6/gcc-3.4.6.tar.bz2
und entpackt dieses anschließend
tar -xjf gcc-3.4.6.tar.bz2
Dann wechselt man in das entpackte gcc-Verzeichnis und ruft configure auf:
Wichtig!
An dieser Stelle unbedingt die Optionen prefix und program-suffix beachten, da ansonsten der bereits installierte C-Compiler überschrieben wird, was wiederum fatale Folgen für das System hat!
cd ./gcc-3.4.6 ./configure --prefix=/opt/gcc-3.4 --program-suffix=-3.4
Anschließend - nach dem fehlerfreien Durchlauf von configure - den Kompiliervorgang starten:
make bootstrap
Wenn das Übersetzen erfolgreich war den neuen alten gcc installieren:
make install
Danach die Installation abschließen (aufräumen):
make clean make distclean
qemu
Um Qemu installieren zu können, benötigt man zusätzlich zu dem gcc-3.x noch die SDL-devel Pakete:
Bei Debian heißt das entsprechende Pakez z.B. libsdl-dev.
Wenn alle Vorausetzungen erfüllt sind kann Qemu installiert werden:
Dazu läd man sich als erstes den Quellcode herunter.
Für die aktuelle stabile Version: http://fabrice.bellard.free.fr/qemu/download.html
cd /usr/locals/src/ wget -c <Hier den Link zum aktuellen tar.gz-Archiv einfügen> tar -xzf <Archiv> cd ./qemu
Für die Installation aus dem CVS-Repositiory:
cd /usr/locals/src/ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qemu co qemu cd ./qemu
Anschließend kann Qemu installiert werden:
Wichtig dabei ist die Option cc, die auf den entsprechenden Kompiler zeigen muss (die Pfadangabe ist nur Notwendig, wenn der Kompiler zuvor manuell installiert wurde).
Die Option enable-alsa aktiviert die Soundunterstützung für die Virtuelle Maschine.
./configure --prefix=/usr/local --cc=/opt/gcc-3.4/gcc-3.4 --enable-alsa
Alternativ kann eine andere gcc-Version auch mit dem Setzen der entsprechenden Umgebungsvariable (export CC) verwendet werden:
export CC=/opt/gcc-3.4/gcc-3.4; ./configure --prefix=/usr/local --enable-alsa
Danach (wenn configure keinen Fehler meldet) kann Qemu installiert werden.
Dabei ist die Verwendung von checkinstall zu empfehlen um ein Distributionsspezifisches Paket zu erzeugen.
make checkinstall
Unter Debian wird dass so erzeugte *.deb automatisch installiert, unter SuSE Linux muss das *.rpm noch manuell installiert werden:
rpm -Uhv /usr/src/packages/RPMS/`arch`/qemu*.rpm
Danach noch die Installation abschließen (aufräumen):
make clean make distclean
kqemu
Dazu das Source-Paket für das Kernelmodul KQemu herunterladen und entpacken: http://fabrice.bellard.free.fr/qemu/download.html
wget -c <Hier den Link zum aktuellen tar.gz-Archiv einfügen> tar -xzf <Archiv>
und installieren:
Wichtig!
Dabei ist unbedingt darauf zu achten, dass die gleiche gcc-Version verwendet, wird, mit der auch der aktuelle Kernel übersetzt wurde.
(Falls zuvor die CC-Umgebungsvariable verändert wurde, sollte diese nun wieder so gesetzt werden, dass sie wieder auf den aktuellen C-Kompiler zeigt).
./configure make make install
Und auch wieder die Installation abschließen (aufräumen):
make clean make distclean
Bedienung
Kernelmodul kqemu laden
Um Qemu schließlich zu verwenden muss zuerst das Kernelmodul KQemu geladen werden:
modprobe kqemu major=0
Da modprobe als root ausgeführt werden muss, empfiehlt es sich an dieser Stelle sudo zu verwenden:
Dazu muss mit visudo die /etc/sudoers um den Eintrag
Cmnd_Alias KQEMU = /sbin/modprobe kqemu major=0, \ /sbin/rmmod kqemu, \ /bin/chmod a+rw /dev/kqemu username rechnername = NOPASSWD: KQEMU
erweitert werden.
Anschließend kann das Modul mit
sudo /sbin/modprobe kqemu major=0 sudo /sbin/rmmod kqemu
als User geladen bzw. entladen werden.
Mit dem Befehl
sudo /bin/chmod a+rw /dev/kqemu
wird sichergestellt, dass alle User Lese-und Schreibzugriff auf das Gerät haben.
Alternativ können die Rechte auch über eine entsprechende udev-Regel gesetzt werden.
Der entprechende Eintrag in der /etc/udev/permissions.rules sieht dann wie folgt aus:
KERNEL=="kqemu", MODE="0660", GROUP="qemu"
Dazu muss natürlich sichergestellt sein, dass es eine Gruppe qemu gibt und der jeweilige User die Gruppe angehört.
Andernfalls eine Gruppe anlegen und den User dieser zuordnen:
addgroup --system qemu adduser username qemu
Image für das Gastsystem anlegen
Qemu starten
Wenn das Kernelmodul geladen wurde (und der User Zugriff darauf hat), kann Qemu gestartet werden:
Achtung!
Der Aufruf von Qemu auf einem 64bit System lautet qemu-system-x86_64.
Wer also eine x86_64 Architektur verwendet sollte im nachfolgen alle Startbefehle ersetzen (qemu <-> qemu-system-x86_64).
qemu -kernel-kqemu -hda /pfad/zum/image.img -sound-hw all -k de -localtime -m 256
-kernel-kqemu - aktiviert die Unterstützung für kqemu
-k de - gibt das zu verwendende Tastaturlayout an - In diesem Fall Deutsch
-localtime - Setzt die Systemzeit des Gastes auf die des Hostsystems
-m 256 - weist der Virtuelle Maschine den zu verwendenden Arbeitsspeicher zu
Tun/Tap Netzwerkdevice
Pakete:
bridge-utils iproute
sudo /bin/chmod a+rwx /dev/net/tun
/etc/udev/udev.rules
/etc/udev/devfs.rules
KERNEL=="tun", NAME="net/%k", GROUP="qemu", MODE="0660"
#!/bin/sh export BRCTL=`which brctl` export BR0=br0 export PT0=eth1 echo "Bringing up bridging..."; ip link set $PT0 down; ip link set $PT0 up; ip link set $PT0 promisc on; $BRCTL addbr $BR0; $BRCTL stp $BR0 off; $BRCTL setbridgeprio $BR0 0; $BRCTL setfd $BR0 1; $BRCTL sethello $BR0 1; $BRCTL addif $BR0 $PT0; $BRCTL setportprio $BR0 $PT0 0;
sudo /sbin/ifup br0
#!/bin/sh sudo /sbin/ip link set $1 up sudo /usr/sbin/brctl addif br0 $1
Quellen und weiterführende Links
- Projektseite: http://fabrice.bellard.free.fr/qemu/
- CVS-Repository: http://savannah.nongnu.org/cvs/?group=qemu
- http://en.opensuse.org/Qemu_with_kqemu_kernel_module_support
- Qemu-HowTo von Stefan Becker: http://www.linuxforen.de/forums/showthread.php?t=141201
- Qemu boot from disk: http://elstel.org/qemu/
- Step-by-step, Win. unter Linux: http://www.ademsahin.de/qemu/qemu.htm
- Howto aus dem Forum