Ein zentraler Eckpfeiler moderner IT-Infrastrukturen ist die Virtualisierung, eine Technologie, die es ermöglicht, mehrere virtuelle Maschinen auf einem einzigen physischen Server auszuführen. Diese Virtualisierungstechniken spielen eine entscheidende Rolle bei der Ressourcenoptimierung, Kosteneffizienz und Flexibilität in Rechenzentren und Unternehmen. In diesem Kontext erweisen sich QEMU und KVM (Kernel-based Virtual Machine) als leistungsstarke und Open-Source-Lösungen für die Virtualisierung unter Debian, einem weit verbreiteten Linux-basierten Betriebssystem.
Inhalt
1. Einleitung
QEMU, eine schnelle Emulationsplattform, und KVM, eine Virtualisierungserweiterung des Linux-Kernels, bilden eine robuste Kombination, die es Administratoren ermöglicht, virtuelle Maschinen mit hoher Performance und geringer Latenz zu betreiben.
Die Entscheidung für QEMU und KVM unter Debian verspricht nicht nur umfassende Funktionalität, sondern auch erhebliche Kostenvorteile. Im Gegensatz zu lizenzierten Produkten ermöglicht die Open-Source-Natur von QEMU und KVM eine flexible Anpassung an individuelle Anforderungen, ohne dass dabei teure Lizenzgebühren anfallen. Dieser Ansatz fördert nicht nur die Kostenoptimierung, sondern auch die Freiheit, Ressourcen nach Bedarf zu skalieren, ohne in proprietäre Einschränkungen zu geraten.
So kann man zum Beispiel Windows 10 in einer virtuellen Maschine betreiben, ohne auf das kostenpflichtige VMWare Workstation oder VirtualBox von Oracle zu setzen.
2. Installation
2.1 Paketinstallation
Die Grundinstallation ist recht simpel, und besteht aus mehreren Paketen die über die Paketverwaltung installiert werden sollten. Zusätzliche Abhängigkeiten werden automatisch mit installiert:
$ sudo apt install qemu-system qemu-kvm qemu-utils libvirt-daemon libvirt-daemon-system libvirt-clients bridge-utils virtinst virtiofsd ovmf
Damit sind allerdings nur die Kommandozeilentools installiert. Das wäre vollkommen ausreichend, aber einfacher gestaltet es sich natürlich, wenn man alles über eine grafische Benutzeroberfläche einrichten könnte. Dafür empfehle ich die Virtuelle Maschinenverwaltung, kurz virt-manager:
$ sudo apt virt-mangager
2.2 Benutzer zu Gruppe hinzufügen
Um nun die virtuellen Maschinen auch als normaler Benutzer ohne root-Rechte nutzen zu können, muss der entsprechende Benutzer noch in die Gruppe libvirt eingetragen werden:
$ sudo adduser <Benutzername> libvirt
2.3 Netzwerk aktivieren
Damit die virtuellen Maschinen auch mit dem Netzwerk kommunizieren können, muss dieses noch aktiviert werden und dafür gesorgt werden, dass dieses nach einem Neustart des Rechner auch wieder automatisch gestartet wird.
Netzwerk default aktivieren:
$ virsh --connect qemu:///system net-start default
Netzwerk default automatisch starten:
$ virsh --connect qemu:///system net-autostart default
Wenn man jetzt die vorhandenen Netzwerke abfragt:
$ virsh --connect qemu:///system net-list --all
sollte sich folgende Ausgabe ergeben:
Name Status Automatischer Start Bleibend ---------------------------------------------------- default Aktiv ja ja
Damit ist alles bereit, die erste virtuelle Maschine einzurichten.
3. Windows 10 in einer VM einrichten
Es können eine Vielzahl von Betriebssystemen unter verschiedenen Arten von Maschinen installiert werden. Dabei können nicht nur Intel, bzw. AMD x86 Architekturen, sondern auch ARM, PPC und viele weitere Systeme emuliert werden. In diesem Beispiel nehme ich ein Windows 10 als Betriebssystem, da dies vermutlich am häufigsten vorkommt.
Dabei wird die VM wie folgt eingerichtet:
- Windows 10 64-Bit Version
- 16GB RAM
- 1xCPU mit 4 Kernen und jeweils pro Kern 2 Threads
- 60GB Festplatte
- UEFI BIOS
Diese Konfiguration sollte auf den meisten aktuellen Rechnern passen. Sollte der Rechner nicht mindestens 32GB RAM haben und eine CPU mit 8 Kernen haben, sollten die Werte entsprechend angepasst werden. Windows 10 würde auch mit 8 oder sogar 4GB RAM laufen und es würden auch 2 Kerne reichen. Was die Festplatte angeht, so wird es unterhalb von 40GB meistens Schwierig, Windows 10 in der Standardausführung zu installieren.
3.1 Vorbereitungen
Um Windows 10 in einer virtuellen Maschine zu installieren, wird folgendes benötigt:
- Windows 10 ISO Image
- Gültige WIndows 10 Lizenz für die jeweilige Version (Home, Pro, etc.)
- VirtIO Windows Treiber
Ein aktuelles ISO Image von Windows 10 kann direkt bei Microsoft unter https://www.microsoft.com/de-de/software-download/windows10ISO herunter geladen werden. Für dieses Image wird natürlich weiterhin eine gültige Lizenz (also nicht nur ein Key) benötigt.
Die notwendigen Treiber und Erweiterungen (um zum Beispiel Cut&Paste zwischen Host und Gast zu ermöglichen) findet man unter https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md. Dort lädt man sich die “Stable” Version, ebenfalls als ISO Image herunter.
3.2 Neue virtuelle Maschine einrichten
Der Einfachheit halber beschränke ich mich hier auf die grafische Benutzeroberfläche “Virtuelle Maschenverwaltung”, die über die Kommandozeile mit virt-manager oder über das Startmenüs von zum Beispiel KDE gestartet werden kann:

Mit einem Klick auf das Symbol
oben links wird der Konfigurator für eine neue virtuelle Maschine aufgerufen.
Alternativ kann auch über <Datei> –> <Neue virtuelle Maschine> dieser Konfigurator gestartet werden.
3.2.1 Architektur auswählen
Im ersten Schritt wird die Architektur ausgewählt, und wovon installiert werden soll. Da in diesem Beispiel ein ISO Image auf einer x86_64 Maschine installiert werden soll, kann alles so belassen werden, wie vorgegeben.

Der nächste Schritt wird mit einem Klick auf <Weiter> aufgerufen.
3.2.2 Installationsmedium auswählen
Schritt 2 legt fest, welches ISO installiert werden soll. Images werden in sogenannten Pools organisiert. Der Hintergrund ist, dass man entsprechende Verzeichnisse oder Laufwerke definiert, wo ISO Images, Treiber und vieles mehr abgelegt werden. Das hat den Vorteil, dass man immer wieder bei weiteren virtuellen Maschinen leicht darauf zugreifen kann.
Am besten legt man dazu zwei Verzeichnisse an, eines für die ISO Images und eines für die Treiber ISOs. Zum Beispiel:
- /home/<benutzername>/iso-images
- /home/<benutzername>/driver-images

3.2.2.1 Pool erstellen
Oben rechts auf
klicken.

Unten rechts auf das
klicken. Dort einen Namen (ohne Sonder- oder Leerzeichen) unter Name eingeben und den Typ auf <dir: Dateisystemverzeichnis> belassen. Es gibt hier viele weitere Möglichkeiten, wie zum Beispiel eigene Dateisysteme oder sogar Festplatten. Aber für ein normales Desktop System reicht hier ein einfaches Verzeichnis vollkommen aus.
Den Zielpfad ändert man entsprechend auf das oben angelegte Verzeichnis aus:

Nun auf
klicken:

Damit wäre der Pool für die Installationsmedien angelegt. Nun wiederholt man diese Schritte erneut, legt also einen neuen Pool an, nur diesmal für die Treiber ISOs. Danach sollten die beiden angelegten POOLs angezeigt werden:

Danach klickt man erste auf der linken Seite den Pool für die ISO-Images an, um danach auf der rechten Seite das entsprechende ISO Image auszuwählen, welches installiert werden soll. In diesem Beispiel ist nur eines zu sehen. Aber hier würden alle ISO Images stehen, die man in das entsprechende Verzeichnis kopiert hat:

Danach auf
klicken, um wieder zurück zu Schritt 2 zu kommen.
Sollte das Betriebssystem nach Auswahl des Images nicht automatisch erkannt werden, den Haken bei <Automatische Erkennung aus dem Installationsmedium / der Quelle> entfernen und in das Suchfeld einfach anfangen Windows zu tippen. Es öffnet sich ein weiteres Fenster mit einer Auswahl, die dazu passt. Dort dann Windows 10 auswählen:

Danach kann mit einem Klick auf <Weiter> zum nächsten Schritt gegangen werden.
3.2.3 CPU & RAM einstellen
Im 3. Schritt wird die Größe des RAM Speichers, der in der VM später zur Verfügung stehen soll, und die Anzahl der CPUs zugewiesen. Beim RAM Speicher sollte immer in 1024er Schritten gearbeitet werden, also möglichst keine “krummen” Werte, die bei einem realen Rechner auch nicht möglich wären. Es ist zwar möglich, dort zum Beispiel 4000 einzugeben, und es wird auch vermutlich funktionieren, kann aber zu einem instabilen System führen.
Zusätzlich sollte die Anzahl der CPUs angegeben werden. In diesem Beispiel konfiguriere ich 8 CPUs und 16GB RAM. Die Anzahl der CPU wird später noch etwas feiner konfiguriert. In dieser Anzeige werden auch die “virtuellen Kerne” für das Hyper-Threading angezeigt. Obwohl in meinem Rechner eine 16-Kern CPU eingesetzt ist, werden 32 Kerne angezeigt, die verfügbar wären, weil jeder reale Kern virtuell sich in 2 Kerne aufteilt (siehe dazu auch das Thema Hyper-Threading):

Damit kann zum nächsten Punkt gesprungen werden.
3.2.4 Virtuelle Festplatte anlegen
Im vorletzten Schritt Nr. 4 wird noch eine virtuelle Festplatte angelegt. Ich lege hier in diesem Beispiel eine 60GB große Festplatte an:

3.2.5 Abschluß
Im letzten Schritt wird ein Name vergeben. Wichtig ist hier den Punkt
anzuklicken, damit noch weitere Punkt konfiguriert werden können:

Mit einem Klick auf <Fertig> wird der erste Teil der Einrichtung abgeschloßen.
3.3 Virtuelle Maschine Konfiguration anpassen
Die grundlegende Konfiguration ist abgeschlossen und die virtuelle Maschine wäre jetzt einsatzbereit. Es macht aber Sinn, noch weitere Parameter zu konfigurieren, um die Performance zu steigern und auch die Treiber einzubinden.
Dadurch, dass im 5. Schritt der Haken bei <Konfiguration bearbeiten vor der Installation> gemacht wurde, ist die VM aber noch nicht komplett eingerichtet und es öffnet sich folgendes Fenster. Wichtig ist, dieses Fenster nicht einfach weg zu klicken, denn ansonsten wird die komplette Einrichtung bis hier hin verworfen und es muss von vorne begonnen werden:

3.3.1 Anzahl der CPUs
Auf der linken Seite den Punkt <Anzahl der CPUs> auswählen. Auf der rechten Seite klickt man den Haken bei <Manuell die CPU-Netzstruktur einstellen> anklicken. Es wird hier so konfiguriert, wie ein realer Rechner aussehen würde. Sockets steht dabei für die Anzahl von eingesteckten CPUs, die Kerne dafür, wie viele Kerne in dieser CPUs enthalten sind und Threads, wie viele Threads parallel ein Kern abarbeiten soll. Ich stelle hier eine CPU mit 4 Kernen und Hyper-Threading, also 2 ein:

Jeder Konfigurationsänderung auf der rechten Seite muss jeweils mit <Apply> bestätigt werden. Vergisst man diesen Punkt und wechselt in der linken Seite auf einen anderen Punkt, wird man gefragt, ob man Speichern möchte.
3.3.2 Festplatte
Dank der VirtIO Technik, kann anstatt einer reinen Emulation auf Softwarebasis auch die Paravirtualisierung genutzt werden. Damit wird die reale Hardware vereinfacht ausgedrückt an die virtuelle Maschine durchgereicht. Das geht natürlich wesentlich schneller, als wenn alle Zugriffe emuliert werden müssen. Diese Technik ist in aktuellen Linux Distributionen schon enthalten. Für Windows werden allerdings extra Treiber benötigt, damit zum Beispiel auf die Festplatte zugegriffen werden kann.
Dazu wählt man auf der linken Seite den Punkt <SATA Festplatte 1> aus. Auf der rechten Seite ändert man den Festplattenbus von <SATA> auf <VirtIO>:

Nach <Apply> ändert sich der Eintrag automatisch von <SATA Festplatte 1> auf <VirtIO Festplatte 1>.
3.3.3 Zusätzliches CD-ROM Laufwerk
Damit während der Installation von Windows 10 schon die Treiber für das VirtIO Laufwerk zur Verfügung stehen, wird ein zweites CD-ROM Laufwerk benötigt. Dazu fährt man mit der Maus auf den Eintrag <SATA CDROM1> und drückt die rechte Maustaste. Es öffnet sich ein kleines Fenster und wählt dort <Gerät hinzufügen>:

Es öffnet sich ein neues Fenster, wo links schon <Speicher> ausgewählt sein sollte. Ansonsten auf <Speicher> links klicken. Rechts wird der Gerätetyp auf <CDROM-Gerät> abgeändert. Danach beim Punkt <Benutzerdefinierten Speicher auswählen oder erstellen> auf <Verwalten> klicken:

Es öffnet sich das Pool Fenster, wie auch schon bei der Auswahl des Installationsmedium. Wie unter 3.2.2.1 (Pool erstellen) schon beschrieben, kann hier nun der Pool für die Treiber aufgerufen werden und das VirtIO ISO Image ausgewählt werden:

Mit einem Klick auf <Fertig> kehrt man wieder zu der Konfigurationsübersicht zurück.
3.4 Installation starten
Soweit ist die Konfiguration erst einmal abgeschlossen. Später wird noch die Netzwerkschnittstelle auf VirtIO umgestellt. Dies kann aber jetzt noch nicht gemacht werden, da aufgrund eines Fehlers in der aktuellen QEmu Version die Installation hängen bleiben würde. Daher werden erst noch die Treiber installiert und anschließend umgestellt:

Damit nun die virtuelle Maschine eingerichtet wird und die Windows 10 installation starten kann, muss oben links nur noch auf
geklickt werden.
3.4.1 Windows 10 installieren
Im Hintergrund wird die virtuelle Maschine gestartet, allerdings sieht man nur folgendes Bild:

Um auf den virtuellen Bildschirm der gerade eingerichteten VM zugreifen zu können, muss als erstes die Windows_10 VM mit der Maus ausgewählt werden. Danach klickt man in der oberen Menüzeile auf
.

Meistens hat man aber dann schon den Moment verpasst, wo man bei der Windows “CD” die Leertaste drücken musste, damit die Installation beginnt. Daher wird die VM noch einmal ausgeschaltet, indem man auf des Menü auf <Virtuelle Maschine> klickt, und dann auf <Herunterfahren> und <Ausschalten erzwingen>. Die anderen Punkte funktionieren noch nicht, da diese nur ein Software basiertes System ist, was an das Betriebssystem ein entsprechendes Signal sendet. Nur da noch kein Betriebssystem installiert ist, kann darauf auch nicht reagieren.
Die Fehlermeldung noch einmal bestätigen:

Danach wird die VM hart ausgeschaltet, als wenn der Power Knopf an einem PC betätigt wird:

Jetzt wird die VM erneut eingeschaltet, mit einem Klick auf
.
Der Rechner bootet erneut und lädt erst einmal von der CD-ROM. Es erscheint die bekannte Meldung von Windows, dass man die Leertaste drücken solle, damit die Installation beginnen kann. Dies sollte man auch mit einem Druck auf die Leertaste bestätigen:

Und schon erscheint der bekannte Startbildschirm der Windows 10 Installationsquelle:

Es läuft jetzt erst einmal die normale Installationsroutine ab, die auch auf einem realen PC ablaufen würde. Daher muss dies nicht weiter ausführlich beschrieben werden. Wichtig wird es erst wieder bei dem Punkt, wo Windows installiert werden soll. Denn hier findet sich keine Festplatte:

Das liegt daran, dass ein VirtIO Laufwerk angelegt wurde, und Windows dieses nicht kennt. Aber die Treiber CD steht ja schon im zweiten CD-Laufwerk parat. Dazu auf <Treiber laden> klicken, in dem neuen Fenster auf <Durchsuchen> auf das Laufwerk, in der das Image von VirtIO liegt, klicken und denn Dateipfad erweitern. Dort findet sich ein Verzeichnis mit dem Namen <amd64>. Darin wiederum befindet sich ein <w10> Ordner. Diesen Auswählen und auf <OK> klicken.
Schon wird der entsprechende Treiber angezeigt:

Mit einem Klick auf <Weiter> wird der Treiber geladen. Und schon wird auch die Festplatte gefunden:

Ab hier läuft die Installation von Windows 10 ganz normal weiter, wie man es kennt.
3.5 Weitere Treiber und Guest-Tools installieren
Windows ist nun fertig installiert, man hat das ganze Frage und Antwortspiel von Microsoft durchgespielt, sich also einen User angelegt und alle weiteren Punkte erledigt. Und nach dem letzten Neustart und der Anmeldung an Windows 10 können die Treiber und die Guest-Tools installiert werden:

Das ISO Image ist nach wie vor in dem virtuellen Laufwerk gemountet. Auf diesem Laufwerk findet sich u.a. eine Datei mit dem Namen virtio-win-gt-x64.exe. Diese durch einen Doppelklick starten und die Installation durchgehen.
Wenn die Treiber installiert wurden, kann als nächstes die Datei virtio-win-guest-tools.exe gestartet und die Installation durchlaufen werden. Diese Tools sind vergleichbar mit denen, die auch bei VirtualBox oder VMWare dabei sind. Diese ermöglichen eine bessere Integration und stellen unter anderem auch die Möglichkeit zur Verfügung, Cut&Paste zwischen Hostsystem und Gastsystem durchzuführen.
Danach Windows 10 ganz normal herunter fahren.
3.5.1 Netzwerktreiber ebenfalls auf VirtIO ändern
Um wieder an die Einstellungen der VM zu gelangen, reicht ein Klick auf ![]()
Hier auf der linken Seite den Eintrag, der mit NIC:<xx:xx:xx> beginnt aufrufen. Dort auf der rechten Seite bei Gerätemodell den Eintrag <VirtIO> auswählen und mit <Apply> speichern>:

Danach kann die Windows 10 Instanz wieder gestartet werden.
Jetzt im Gerätemanager noch einmal kontrollieren, ob nirgendwo ein Ausrufezeichen vor einem Gerät steht. Es könnte sein, das bei dem Netzwerkadapter noch ein Ausrufezeichen steht. Wenn dies der Fall ist, mit der rechten Maustaste auf diesen Eintrag klicken und dort <Gerät deinstallieren> auswählen. Das nächste Fenster bestätigen, aber darauf achten, dass kein Haken bei <Treibersoftware für dieses Gerät löschen> gesetzt ist.
Anschließend mit der rechten Maustaste auf den Eintrag <Netzwerkadapter> und dann auf <Nach geänderter Hardware suchen> klicken. Danach sollte der Geräte Manager auch die Netzwerkkarte ohne Fehler anzeigen:

Damit wäre die Installation abgeschlossen und die Windows 10 VM steht zur Verfügung.
4. Fazit
Die Welt der Virtualisierung steht nicht mehr ausschließlich im Fokus von Unternehmen; auch für private Nutzer eröffnen sich dank QEMU und KVM unter Debian spannende Möglichkeiten. Diese Open-Source-Technologien bringen nicht nur eine Fülle von Funktionen mit sich, sondern bieten auch eine finanziell attraktive Alternative zu kostenpflichtigen Virtualisierungstools.
Die Kombination aus QEmu als vielseitiger Emulationsplattform und KVM als Virtualisierungserweiterung des Linux-Kernels erlaubt es auch privaten Nutzern, ihre digitalen Umgebungen mit einer beeindruckenden Kontrolle und Anpassbarkeit zu gestalten. Die entscheidende Tatsache, dass QEMU und KVM keine Lizenzgebühren erfordern, stellt sicher, dass diese leistungsstarken Virtualisierungstools auch für den privaten Geldbeutel zugänglich sind.
Dieser Leitfaden bietet eine klare Anleitung für private Nutzer, die QEMU und KVM unter Debian nutzen möchten. Von der einfachen Installation bis hin zur Feinabstimmung von Ressourcen und Konfigurationen werden die Leser in die Welt der kostengünstigen Virtualisierung eingeführt. Egal, ob es um die Möglichkeit geht, verschiedene Betriebssysteme zu testen, Entwicklungsprojekte zu isolieren oder einfach nur eine flexible digitale Umgebung zu schaffen – QEMU und KVM bieten private Nutzer eine offene Tür zu einer Welt der Virtualisierung, die nicht nur leistungsstark, sondern auch budgetfreundlich ist.
Mit QEMU und KVM unter Debian können private Nutzer ihre digitalen Erfahrungen auf eine Weise erweitern, die sowohl erschwinglich als auch durch die Freiheit der Open-Source-Software inspiriert ist. Tauchen Sie ein in die Welt der Virtualisierung und entdecken Sie, wie diese leistungsstarken Werkzeuge auch für private Anwender einen Mehrwert schaffen können.
Es ist sogar möglich, eine 2. Grafikkarte exklusiv für eine virtuelle Windows Instanz einzurichten. So können grafiklastige Anwendungen und sogar Spiele problemlos in einer virtuellen Maschine genutzt werden. Dazu habe ich eine Anleitung erstellt. Auch kann man, ähnlich wie bei anderen VM Lösungen, ein Laufwerk sharen, damit sowohl unter Linux, als auch Windows darauf zugegriffen werden kann. Dazu empfehle ich diesen Artikel.
Quellen:
https://wiki.debian.org/KVM
https://www.qemu.org/
https://linux-kvm.org/page/Main_Page
https://github.com/virtio-win/kvm-guest-drivers-windows
https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md
https://virt-manager.org/
https://de.wikipedia.org/wiki/Paravirtualisierung
https://wiki.debian.org/libvirt
https://wiki.debian.org/QEMU
