Windows 11 in VM installieren
Windows 11 als Guest in einer Linux VM installieren an einem Beispiel von CachyOS - Arch Linux
Quelle(n) u.a.
- YouTube - https://www.youtube.com/watch?v=WmFpwpW6Xko
- Copilot (MVP des Jahrzehnts ^^)
Links¶
Ablauf¶
swtpminstallieren:
# pacman -S swtpm- QEMM/KVM inkl. Virtuelle Maschinenverwaltung installieren:
$ paru -S libvirt virt-manager qemu-full ovmf - Den virtuellen Dienst starten:
# systemctl start libvirtd - Die Virtuelle Maschinenverwaltung aufrufen, QEMM/KVM verbinden, Rechtsclick auf QEMM/KVM, Neu erstellt eine neue VM

- CPUs einstellen

- Auswahl Lokales Installationsmedium, Win11 ISO auswählen, sollte automatisch erkannt werden
- Speicher 16384 MB (bei 32 GB Host RAM), 12 CPUs (bei 16 Host Threads), 80 GiB HDD
- Maschine benennen z.B. Windows 11 Pro, Netzwerk auswählen Virtuelles Netzwerk 'default': NAT, Konfiguration bearbeiten vor der Installation

- Windows Laufwerk (Festplatte) als VirtIO konfigurieren, SATA CDROM 1 mit Windows 11 ISO, SATA CDROM 2 mit den heruntergeladenen
- Bootreihenfolge Windows ISO -> Festplatte -> Tools ISO

- TPM einstellen

- Nicht erwähntes kann "default" bleiben, Installation starten
- Dem Installationsablauf folgen

- Treiber von der CD Virtio-Win installieren



- Laufwerk dann auswählen und installieren

- Sollte es einen Netzwerkfehler geben "nicht verbunden" und Treiber installieren Aufforderung, dann schaltet man kurzzeitig mal UFW ab:
# ufw disable
Das ist nur ein "Dirty Fix", um den richtigen kümmern wir uns später - Windows 11 soweit weiterinstallieren, Konto erstellen oder in Konto einloggen (ich habe mir mal eines erstellt, für, etwaige VM Nutzung vielleicht sinnvoll)
- Im fertigen Windows erstmal alle Updates durchlaufen lassen
- SPICE Treiberpaket installieren - Link

- Prüfen, ob alle Geräte soweit in Ordnung sind und funktionieren, z.B. im Gerätemanager:

- Windows Partition einbinden:

Dirty Fix nun clean ausführen¶
Aus Punkt 16) nun ordentlich konfigurieren für IP Forwarding, sodass ein Guest nun auch mit aktiver UFW Firewall das Internet nutzen darf/kann.
Quelle: Copilot :-)
Genau, deine Logs zeigen wieder das gleiche Muster: Pakete vom Gast (192.168.122.x über virbr0) werden von UFW beim Forwarding nach außen über enp4s0 blockiert.
Mit deaktiviertem UFW funktioniert NAT, mit aktiviertem nicht → Ursache ist die fehlende Freigabe von Forwarding/NAT in UFW.
Dauerhafte Lösung für UFW + libvirt NAT¶
1. IP‑Forwarding aktivieren¶
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-forward.conf
sudo sysctl --system
2. UFW Forward‑Policy anpassen¶
In /etc/default/ufw:
DEFAULT_FORWARD_POLICY="ACCEPT"
3. NAT/MASQUERADE in UFW eintragen¶
In /etc/ufw/before.rules vor dem finalen COMMIT:
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.122.0/24 -o enp4s0 -j MASQUERADE
COMMIT
→
192.168.122.0/24 ist dein libvirt‑Subnetz, enp4s0 dein Host‑Interface ins Internet.
4. UFW neu laden¶
sudo ufw disable
sudo ufw enable
5. Optional restriktive Route‑Regeln¶
Falls du nicht global alles forwarden willst:
sudo ufw route allow in on virbr0 out on enp4s0 from 192.168.122.0/24 to any
Kontrolle¶
- NAT sichtbar?
sudo iptables -t nat -L -n -v | grep MASQUERADE - Forwarding aktiv?
sudo iptables -L FORWARD -n -v - Im Gast:
ping 192.168.122.1 ping 8.8.8.8 nslookup example.com
👉 Damit erlaubst du UFW, die libvirt‑NAT‑Bridge korrekt weiterzuleiten. Ohne diese Anpassung blockt UFW standardmäßig alles Forwarding.
Willst du, dass ich dir eine fertige Patch‑Datei für /etc/ufw/before.rules schreibe, die du nur einfügen musst?