Mit Qemu unter Windows schnell und schlank virtualisieren

Aus LinuxUser 11/2020

Mit Qemu unter Windows schnell und schlank virtualisieren

© Dean Drobot, 123RF

Fertig, los!

Geht es um die Virtualisierung von Betriebssystemen, greifen Nutzer in der Regel zu Virtualbox oder Vmware. Die freie Virtualisierungssoftware Qemu bietet sich jedoch auch unter Windows als Alternative an.

Virtualisierung ist an sich schon ein interessantes Thema, weil es die Möglichkeit bietet, Betriebssysteme schnell auszuprobieren, ohne die Partitionierung der Festplatten ändern zu müssen. Das minimiert die Gefahr, bei diesen Festplattenoperationen etwas falsch zu machen und so aus Versehen Daten zu löschen. Neben den Platzhirschen Vmware und Virtualbox gibt es die Open-Source-Software Qemu, die unter Windows allgemein eher weniger Beachtung findet, da Qemu nicht über eine komfortable Oberfläche zum Konfigurieren von virtuellen Maschinen verfügt.

Dafür bietet Qemu im Vergleich zu seinen Konkurrenten jedoch unzählige Konfigurationsmöglichkeiten. Es überzeugt zudem mit hoher Leistung, sodass sogar leistungsschwache Net- und Notebooks eine flotte virtuelle Maschine betreiben können und auch schnelles paralleles Arbeiten und Umschalten zwischen Host- und Gastbetriebssystem möglich ist.

Deswegen sehen wir uns im Folgenden einmal näher an, wie Sie mithilfe von Qemu auch unter Windows virtuelle Maschinen komfortabel einrichten und mit einer Linux-Distribution betreiben.

Grundlegendes

Im ersten Zug laden Sie Qemu [1] und Haxm, den Hardware Accelerated Execution Manager [2], auf den Rechner. Qemu benötigt Haxm, um die Virtualisierung der CPU nahezu in Echtzeit zu gewährleisten. Die Reihenfolge der Installation spielt keine große Rolle. Bei Qemu haben Sie die Möglichkeit, die Installation ein wenig zu optimieren, indem Sie im Rahmen des Setups nur Emulatoren installieren, die Sie auch wirklich benötigen. Dabei kommt es darauf an, ob Sie mit einem 32- oder 64-Bit-System arbeiten. In der Regel benötigen Sie die vier Emulatoren i386, i386w, x86_64 und x86_64w (Abbildung 1).

Abbildung 1: Die Installation von Qemu erfolgt über ein Setup-Programm. Auf einem klassischen PC genügt es lediglich die Komponenten für i386-Rechner einzuspielen.

Abbildung 1: Die Installation von Qemu erfolgt über ein Setup-Programm. Auf einem klassischen PC genügt es lediglich die Komponenten für i386-Rechner einzuspielen.

Wie Sie schon am Namen erkennen, handelt es sich bei den ersten beiden Varianten um 32-Bit- und bei den anderen beiden um 64-Bit-Systeme. Das “w” am Ende des Dateinamens signalisiert, dass Qemu beim Start keine Ausgaben erzeugt und daher auch kein zusätzliches Terminalfenster öffnet. Diese Variante empfiehlt sich, wenn man beispielsweise eine Powershell-Skriptdatei erstellt, die eine virtuelle Maschine startet. Nach der Installation von Qemu empfiehlt es sich, den Pfad zu Qemu in die Umgebungsvariablen einzutragen.

Diese Einstellung finden Sie am schnellsten, wenn Sie in der Windows-Suche einfach den Begriff “Umgebungsvariablen” eingeben und dann den Dialog Umgebungsvariablen für dieses Konto bearbeiten aufrufen. Im oberen Bereich des Fensters legen Sie dann mit einem Klick auf Neu… eine neue Variable an.

In die entsprechenden Felder tragen Sie als Name PATH ein und als Wert den Pfad zur Qemu-Installation, also in der Regel C:\Program Files\qemu. Optional wählen Sie den Ordner über den Schalter Verzeichnis durchsuchen… aus (Abbildung 2). Programme wie etwa qemu-img sollten Sie nun direkt aus einer Windows-Powershell heraus starten können. Bei Bedarf lassen Sie sich den aktuellen Pfad über $Env:PATH ausgeben.

Abbildung 2: Damit das System die mit Qemu installierten Programme findet, passen Sie die <code>PATH</code>-Variable der Shell an.

Abbildung 2: Damit das System die mit Qemu installierten Programme findet, passen Sie die PATH-Variable der Shell an.

Um ein Gefühl dafür zu bekommen, wie mächtig und konfigurierbar Qemu ist, führen Sie in einer Powershell das Kommando qemu-system-i386 -help aus. Die darauffolgende Ausgabe umfasst mehr als 400 Zeilen, die auf den ersten Blick sehr unübersichtlich erscheinen. Lassen Sie sich nicht von der Fülle erschlagen: In der Regel benötigen Sie nur einen Bruchteil der Schalter, um eine virtuelle Maschine zum Laufen zu bringen. Die wichtigsten und effektivsten Möglichkeiten erklären wir in den folgenden Abschnitten, indem wir das neueste Ubuntu auf einem scheinbar für die Virtualisierung zu schwachen Laptop installieren (Abbildung 3).

Abbildung 3: Die Konfiguration von Qemu f&auml;llt zugegebenerma&szlig;en nicht so ganz leicht. Doch sobald Sie sich ein wenig mit der Windows-Powershell auskennen, bringen Sie schnell Ordnung in die Ausgabe der Qemu-Hilfe.

Abbildung 3: Die Konfiguration von Qemu fällt zugegebenermaßen nicht so ganz leicht. Doch sobald Sie sich ein wenig mit der Windows-Powershell auskennen, bringen Sie schnell Ordnung in die Ausgabe der Qemu-Hilfe.

Das genutzte System arbeitet mit einer 1,6 GHz “schnellen” CPU. Damit liegt die Taktrate immer noch über den Mindestanforderungen von Ubuntu, die 1,2 GHz betragen – wenn man von einer Installation auf einem physischem System ausgeht. Da wir hier aber virtualisieren, schaden einige zusätzliche Megahertz nicht. Beim Arbeitsspeicher empfiehlt Ubuntu 2,4 GByte RAM, bei der Festplatte eine Größe von 25 GByte.

Haben Sie nur ein Netbook mit 1,2 GHz CPU-Takt und wenig Festplattenplatz zur Verfügung, müssen Sie trotzdem nicht auf Virtualisierung verzichten. Qemu bietet genügend Konfigurationsmöglichkeiten, um diesen Umstand auszugleichen. Zudem gibt es unzählige Distributionen, die nur geringe Anforderungen an Festplattenplatz und CPU-Leistung stellen.

Die Festplatte

Zum Erstellen von virtuellen Festplatten bietet Qemu das Tool Qemu-img an, das Sie gleich mit der Eingabe qemu-img -help in der Powershell austesten können. Am Ende der etwas länglichen Ausgabe sehen Sie, welche Formate Qemu unterstützt (Listing 1). Um einen besseren Überblick zu den unterstützten Formaten zu bekommen, splitten Sie die Ausgabe mit dem Kommando aus Zeile 4 auf.

Listing 1

$ qemu-img.exe -help
[...]
Supported formats: blkdebug blklogwrites blkreplay blkverify bochs cloop compress copy-on-read dmg file ftp ftps host_de vice http https luks nbd null-aio null-co parallels qcow qcow2 qed quorum raw replication sheepdog throttle vdi vhdx vmdk vpc vvfat
$ (qemu-img.exe -help | select-string "supported formats:") -split " "
$ qemu-img.exe create -f qcow2 festplatte.qcow2 30G

Die Wahl des Formats bleibt Ihnen überlassen. In diesem Beispiel greifen wir auf Qcow2 zurück, das aktuelle Standardformat von Qemu. Es unterstützt unter anderem Verschlüsselungsalgorithmen, falls Sie im Gastsystem schützenswerte Daten aufbewahren möchten. Zudem zeigen wir im späteren Verlauf des Artikels, wie leicht Sie auf die Daten einer Qcow2-Image-Datei zugreifen können.

Mit dem Kommando aus der letzten Zeile von Listing 1 erstellen Sie die virtuelle Festplatte. Interessant ist hier, dass diese nicht von Anfang an die angegebene Größe auf dem Dateisystem des Host-Rechners beansprucht. Erst wenn Sie das virtuelle System mit Daten befüllen, wächst die Größe der virtuellen Festplatte langsam an – je nachdem, wie viel Speicherplatz das Gastsystem tatsächlich benötigt. Bei einer tatsächlichen Installation hätten Sie 30 GByte der Festplatte opfern müssen und dabei wahrscheinlich auch schlecht einer Partitionierung aus dem Weg gehen können.

Um schließlich mit der Installation zu starten, müssten Sie bei einer Installation auf Festplatte zudem noch ins UEFI booten und festlegen, welche UEFI-Datei der Rechner starten darf. Viele Netbook-Benutzer haben hier das Nachsehen, da die Systeme oft nur 32-Bit-UEFI-Dateien starten können und das kaum eine Linux-Distribution unterstützt. Bei einer Virtualisierung laufen Sie nicht in diese Probleme und gehen gleichzeitig unnötigem Datenverlust aus dem Wege.

Konfiguration

Neben der Festplatte gibt es bei Qemu jedoch diverse andere Dinge zu konfigurieren. Listing 2 zeigt ein typisches Startskript. Um wie im Beispiel für etwas mehr Übersicht zu sorgen und ein komplexes Startkommando zu vermeiden, untergliedert sich das Skript in Variablen und den eigentlich Aufruf. Das Powershell-Skript setzt dann am Ende das Startkommando zusammen. Das Skript gehört mit in das Verzeichnis, in dem sich die Datei für die virtuelle Festplatte und das heruntergeladene Installationsabbild für das Linux-System befindet.

Listing 2

Add-Type -AssemblyName System.Windows.Forms
$width=[System.Windows.Forms.Screen]::PrimaryScreen.Bounds.Width
$height=[System.Windows.Forms.Screen]::PrimaryScreen.Bounds.Height
$qemu="qemu-system-x86_64w.exe"
$machine=" -machine q35,kernel_irqchip=on,sata=on"
$sound=" -soundhw hda"
$tuning=" -accel hax -overcommit cpu-pm=on"
$grafik=" -display sdl -device virtio-vga,xres=$width,yres=$height -full-screen"
$speicher=" -m 3500"
$festplatte=" -hda festplatte.qcow2"
$cdrom = " -cdrom ubuntu-20.04-desktop-amd64.iso" + " -boot d"
$netzwerk=" -nic user,model=rtl8139"
Invoke-Expression -Command ($qemu + $machine + $sound + $tuning + $grafik + $speicher + $festplatte + $netzwerk + $cdrom)
$qemuProcess = get-process qemu*
$qemuProcess.ProcessorAffinity=3
$qemuProcess.PriorityClass="high"

Grundsätzlich sollten Sie bei dem Skript darauf achten, dass das Leerzeichen nach dem ersten Anführungszeichen in einer Variablenzuweisung nicht fehlt, da daraus ja ein Befehl für Qemu zusammengesetzt wird.

In Zeile 1 lädt das Skript erst einmal ein Assembly nach, das die Powershell benötigt, um die Höhe und die Breite des Bildschirms auszulesen. Die Zeilen 2 und 3 verwenden diese Werte ebenfalls, um sie im späteren Verlauf als Parameter für grafische Einstellungen des virtuellen Systems zu nutzen.

Das w vor dem .exe in Zeile 4 weist Qemu an, in einem eigenständigen Fenster zu starten, wobei das Programm eventuelle Fehlermeldungen nicht extra in einem Terminalfenster ausgibt. Klappt es nach dem Erstellen der Konfiguration nicht so wie gewünscht, entfernen Sie einfach dieses w hinter der Bezeichnung des Emulators, sodass sich beim Start ein Terminal mit den Logs öffnet. Funktioniert später alles, machen Sie die Änderung wieder rückgängig.

In der Zeile 5 wird der Machine-Type festgelegt. Diese Option zählt zu den wichtigsten Parametern, um auch die neuesten Linux-Systeme virtuell zum Laufen zu bringen. Lassen Sie diesen Eintrag weg, bekommen Sie in der Regel Schwierigkeiten, die neuesten Systeme zu installieren. Mit q35 legen Sie fest, dass Qemu PC-Hardware aus dem Jahre 2009 emulieren soll.

Mit dem Befehl qemu-system-x86_64.exe -machine ? gibt Qemu alle unterstützten Typen aus. Verwenden Sie anstelle von q35 standesgemäß pc, dann würde nur Hardware aus dem Jahr 1996 emuliert. Es leuchtet ein, dass wohl die meisten modernen Linux-Systeme so ihre Probleme damit hätten. Wollen Sie hingegen tatsächlich ein etwas älteres Linux-System virtualisieren, um zum Beispiel möglichst wenig Ressourcen zu verbrauchen, könnte tatsächlich pc die richtige und bessere Wahl sein, da solche Linux-Systeme eben auf ältere Hardware getrimmt sind.

Bei der Sound-Hardware klappt es nicht immer sofort. Eventuell müssen Sie durch Probieren herausfinden, welche von Qemu emulierten Soundkarten mit dem Linux Ihrer Wahl gut zusammenarbeiten. Der Befehl qemu-system-x86_64.exe -soundhw ? listet die verfügbaren Soundkarten auf.

Zeile 7 aktiviert Intels Hardware Accelerated Execution Manager als sehr wichtigen Bestandteil. Die Komponente sorgt dafür, dass die Virtualisierung mit Qemu an Geschwindigkeit gewinnt. Zeile 8 konfiguriert die virtuelle Grafikkarte. Da das Skript die Werte aus dem Wirtssystem ausliest und dann einfach im Startkommando einsetzt, übernimmt Qemu die aktuelle Auflösung des Systems. Die Zeilen 10 bis 12 kümmern sich um Netzwerkkarte, Festplatte und virtuelles CD-ROM-Laufwerk. Mit der richtigen Konfiguration startet die Installation im Vollbildmodus, ohne irgendwelche Gasterweiterungen installieren zu müssen.

In der Zeile 14 finden Sie schließlich die zusammengesetzte Qemu-Anweisung. Die Zeilen 16 bis 18 sorgen zu guter Letzt für eine weitere Optimierung des virtuellen Systems.

Nachdem Qemu gestartet ist, wird der Qemu-Prozess durch eine Variable referenziert. Die letzten beiden Zeilen legen dessen Prozessoraffinität genau fest und erhöhen die Priorität. Um optimale Leistung zu erreichen, müssen Sie eventuell bei der Prozessoraffinität noch etwas nachjustieren (siehe Kasten “CPU-Tuning”).

CPU-Tuning

In der Powershell bringen Sie mit der Anweisung gwmi win32_processor | fl Number* in Erfahrung, mit wie vielen Kernen die im Rechner verbaute CPU arbeitet. Die Prozessoraffinität wird über ein Bitmuster festgelegt, das im Fall von Listing 3 den Wert 00000011 hat. Von rechts aus gesehen sind die ersten beiden Bits aktiviert. Die Umrechnung des binären Werts in eine Dezimalzahl ergibt dann den im Skript eingetragenen Wert 3. Wollten Sie mit drei Kernen arbeiten, würde das Bitmuster 00000111 lauten und dem dezimalen Wert 7 entsprechen. Es empfiehlt sich, ein wenig zu experimentieren, ob Sie einen oder mehrere Kerne auf die virtuelle Maschine ansetzen wollen. Mehr Kerne bringen nicht zwangsläufig eine bessere Performance: Je mehr Kerne, desto häufiger muss die Software zwischen den Kernen springen. Je nach Hardware führt dieser Wechsel sogar zu Performance-Einbußen.

Erster Start

In der Standardeinstellung von Windows lässt sich das Startskript noch nicht ausführen. Aus Gründen der Sicherheit verhindert Windows das Ausführen von Powershell-Skripten. Mit der Anweisung Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser ändern Sie diese Konfiguration.

Danach starten Sie die Installation, indem Sie in das Verzeichnis wechseln, in dem alle Komponenten gespeichert sind. Dort führen Sie in einem Terminalfenster das Kommando powershell.exe skriptdatei.ps1 aus. Im Idealfall öffnet sich die virtuelle Maschine im Vollbild bei optimaler Auflösung (Abbildung 4). Anschließend konfigurieren Sie das virtuelle Betriebssystem nach Wunsch und spielen es auf der virtuellen Festplatte ein.

Abbildung 4: Die Installation des virtuellen Ubuntu startet sofort in einer passenden Aufl&ouml;sung. Qemu ist nicht auf zus&auml;tzliche Gasterweiterungen oder propriet&auml;re Tools angewiesen.

Abbildung 4: Die Installation des virtuellen Ubuntu startet sofort in einer passenden Auflösung. Qemu ist nicht auf zusätzliche Gasterweiterungen oder proprietäre Tools angewiesen.

Die Installation des virtuellen Ubuntu-Systems gleicht der auf einem herkömmlichen Rechner. Der Vorgang benötigt je nach Leistung des Gastsystems in etwa eine halbe Stunde. In einem Dialog innerhalb der Installation werden Sie gefragt, welches Dateisystem Sie benutzen wollen. Hier empfiehlt sich die Wahl von Ext4, da Sie so das Image der virtuellen Festplatte später mit dem freien Packprogramm 7-Zip [3] öffnen und durchsuchen können.

Nach dem Abschluss des Installationsassistenten startet das virtuelle System neu. Bevor Sie jedoch die fertiggestellte virtuelle Maschine booten, sollten Sie noch in der Zeile 14 des Startskripts den Punkt $cdrom aus dem zusammengesetzten Befehl entfernen: Sonst startet die Installation noch einmal.

Um dann noch die virtuelle Maschine per Mausklick starten zu können, erstellen Sie eine Verknüpfung zum Skript; Listing 3 zeigt das Startkommando dazu. Zum Ausschmücken weisen Sie der Verknüpfung noch ein passendes Icon zu. In der Regel führt eine Bildersuche im Netz schnell zum Ziel.

Listing 3

powershell.exe -windowstyle hidden D:\Pfad/zum/OS-Verzeichnis\Ubuntu.ps1

Wichtig ist auch, unter Ausführen in den Pfad zur virtuellen Maschine einzutragen, da Qemu ja in diesem Verzeichnis nach der virtuellen Festplatte und dem Installationsmedium sucht.

Tastenkürzel wie zum Beispiel [Alt]+[Tab] und auch alle anderen Shortcuts unter Windows funktionieren weiter, werden allerdings nicht an die virtuelle Maschine durchgereicht. Mit der Tastenkombination wechseln Sie also unter Windows die Anwendungen, nicht im virtuellen System. Für solche Fälle müssten Sie in der virtuelle Maschine neue Tastenkürzel definieren.

Unter Ubuntu wechseln Sie dazu in die Einstellungen und geben dann in der Suche “Tastaturkürzel” ein. Sie könnten hier dann zum Beispiel [Strg]+[Pfeil-rechts] verwenden, um innerhalb der virtuellen Maschine zwischen den Anwendungen zu wechseln.

TIPP

Um Sonderzeichen wie die Pipe (|) oder die Tilde (~) zu erstellen, drücken Sie [AltGr]+[<]. Unter Qemu schreibt das System diese Zeichen allerdings erst, wenn Sie vor der Tastenkombination einmal [Strg] drücken, also mit [Strg]+[AltGr]+[<] und [AltGr]+[+].

Kommt es während der Nutzung zu Problemen mit der Zuordnung des Mauszeigers zwischen virtueller Maschine und Gastsystem, helfen die Kürzel [Strg]+[Alt] zum Lösen des Mauszeigers aus der VM und [Strg]+[Alt]+[F] für den Wechsel zwischen der Vollbildansicht und dem Fenstermodus.

Datenaustausch

Ein weiterer wichtiger Punkt ist der Datenaustausch zwischen Host- und Gastsystem. Auch dazu benötigt Qemu keine Gasterweiterungen. Sie müssen lediglich in der virtuellen Maschine das Paket smbnetfs installieren. Das erledigen Sie bei Debian-basierten Systemen mit dem Kommando sudo apt install smbnetfs, bei RPM-basierten Systemen wie Fedora oder OpenSuse mit dnf install smbnetfs.

Auf dem Windows-System müssen Sie noch die Netzwerkfreigabe für Ordner aktivieren – in Windows 10 etwa über die Option Datei- und Druckerfreigabe aktivieren aus dem Dialog Systemsteuerung | Netzwerk und Internet | Netzwerk- und Freigabecenter | Erweiterte Freigabeeinstellungen.

Danach öffnen Sie in der virtuellen Maschine einen Dateimanager (etwa Dateien aus dem Gnome-Desktop), wählen dort die Option Andere Orte, und geben den Pfad zur Windows-Freigabe ein. Die Pfadangabe sieht dann so aus: smb://10.0.2.2/users/Windows-Benutzername. Nach Eingabe der Zugangsdaten erhalten Sie Zugriff auf die unter Windows gespeicherten Daten (Abbildung 5).

Abbildung 5: Obwohl Sie sich nur in einem virtuellen Netzwerk befinden, k&ouml;nnen Sie alle Services nutzen, die das Windows-Host-System bietet, und greifen so auch auf die Netzwerkfreigabe von Windows zu.

Abbildung 5: Obwohl Sie sich nur in einem virtuellen Netzwerk befinden, können Sie alle Services nutzen, die das Windows-Host-System bietet, und greifen so auch auf die Netzwerkfreigabe von Windows zu.

Möchten Sie den umgekehrten Weg gehen und vom Windows-System auf die Daten der virtuellen Maschine zugreifen, auch ohne das virtuelle Linux zu starten, können Sie etwas tricksen. Der kostenlose Archivmanager 7-Zip versteht sich mit dem vom Qemu genutzten Qcow2-Image-Format – so lange Sie als Dateisystem des darin installierten Linux ein Ext-Dateisystem gewählt haben (Abbildung 6). Das funktioniert auch mit anderen Formaten, wie etwa Raw; allerdings dauert das Öffnen des Images mit 7-Zip dann wesentlich länger.

Abbildung 6: Das quelloffene 7-Zip hilft Ihnen, das Dateisystem von virtuellen Maschinen im Ruhezustand zu durchst&ouml;bern. Das erweist sich als besonders n&uuml;tzlich, wenn man nur schnell eine Datei aus der VM kopieren m&ouml;chte.

Abbildung 6: Das quelloffene 7-Zip hilft Ihnen, das Dateisystem von virtuellen Maschinen im Ruhezustand zu durchstöbern. Das erweist sich als besonders nützlich, wenn man nur schnell eine Datei aus der VM kopieren möchte.

Fazit

Die üblichen Kandidaten zur Virtualisierung von Betriebssystemen wie Virtualbox oder Vmware erleichtern die Konfiguration der VMs mit grafischen Tools. Qemu fehlen unter Windows solche Annehmlichkeiten, doch das Programm bietet sehr viele Möglichkeiten, um Betriebssysteme virtuell zu betreiben und vor allen Dingen passgerecht auf die Leistung des Host-Systems zu justieren. Allein schon, dass Sie in den grafischen Einstellungen -sdl anstatt des standardmäßigen -display gtk verwenden, bringt einen Leistungsschub.

In der Praxis überzeugt Qemu mit dem blitzschnellen Wechsel zwischen Host und Gast. Als Nutzer merkt man kaum, dass die Windows-Umgebung durch die Virtualisierung belastet wird oder innerhalb der virtuellen Maschine etwas zu langsam geht. Sogar kleinere 3D-Spiele wie Tuxracer laufen flüssig, ohne dass es zu spürbaren Rucklern kommt. Alles in allem braucht sich Qemu also keineswegs vor Vmware oder Virtualbox zu verstecken – das Programm ist schlank, lässt sich zusätzlich durch geschickte Konfiguration weiter abspecken und agiert unheimlich schnell, sodass für die Virtualisierung eines Linux-Systems sogar ein Netbook genügt. (cla/jlu)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 11/2020 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben