ibm9001
Lt. Junior Grade
- Registriert
- Juli 2005
- Beiträge
- 472
Hallo zusammen,
dies ist der zweite Teil meiner Erfahrungen mit dem Thema virtuelle Maschinen. Ich hab das hier ausgelagert, da die Anzahl der Bilder pro Thread begrenzt ist. (Der erste Teil ist hier zu finden)
Die Daten des zweiten Systems sind (zwischenzeitlich etwas angepasst):
CPU: AMD Ryzen 5900X.
Mainboard: MSI B450 MORTAR TITANIUM (mit BIOS 1.2.07).
Arbeitsspeicher: 96 GByte RAM@3000 MHZ.
Grafikkarten: AMD RX470/8Gbyte VRAM@PCIe 3.0 x 16, NVIDIA GT 1030/2 GByte VRAM@PCIe 2.0 x 4.
Monitore: 1xSamsung an AMD RX470, 1xAsus 248 an NVIDIA GT 1030.
Verwendete Software: Windows 10/11 Pro, MacOS sowie Nobara Linux in der VM, Fedora 36 / Debian 12 als Host Betriebssystem. Virtualisierung per QEMU / KVM / Virtueller Maschinenverwaltung unter Fedora / Debian.
In die jeweilige VM soll die AMD Radeon RX470 durchgereicht werden.
Hinweis : Klont man eine VM und diese lässt sich anschließend nicht booten, bzw. man kann nur ins BIOS der VM wechseln, dann dort Secure Boot ausschalten. Anscheinend wird beim klonen einer VM Secure Boot per default eingeschaltet.
dies ist der zweite Teil meiner Erfahrungen mit dem Thema virtuelle Maschinen. Ich hab das hier ausgelagert, da die Anzahl der Bilder pro Thread begrenzt ist. (Der erste Teil ist hier zu finden)
Die Daten des zweiten Systems sind (zwischenzeitlich etwas angepasst):
CPU: AMD Ryzen 5900X.
Mainboard: MSI B450 MORTAR TITANIUM (mit BIOS 1.2.07).
Arbeitsspeicher: 96 GByte RAM@3000 MHZ.
Grafikkarten: AMD RX470/8Gbyte VRAM@PCIe 3.0 x 16, NVIDIA GT 1030/2 GByte VRAM@PCIe 2.0 x 4.
Monitore: 1xSamsung an AMD RX470, 1xAsus 248 an NVIDIA GT 1030.
Verwendete Software: Windows 10/11 Pro, MacOS sowie Nobara Linux in der VM, Fedora 36 / Debian 12 als Host Betriebssystem. Virtualisierung per QEMU / KVM / Virtueller Maschinenverwaltung unter Fedora / Debian.
In die jeweilige VM soll die AMD Radeon RX470 durchgereicht werden.
Folgende Einstellungen wurden im Mainboard BIOS vorgenommen:
BIOS CSM/UEFI Mode : [UEFI]
Secure Boot : [Deaktiviert]
SMT Control : [Auto] -> Ist an zwei Stellen im BIOS zu finden.
SVM Mode : [Aktiviert]
NX Mode : [Aktiviert]
IOMMU : [Aktiviert]
Security Device Support : [Enable]
AMD fTPM switch : [AMD CPU fTPM]
Re-Size BAR Support : [Aktiviert]
Above 4G memory/Crypto Currency mining : [Deaktiviert] -> wichtig, sonst funktioniert MacOS
nicht mit GPU Passthrough.
VGA Detection : [Auto]
BIOS CSM/UEFI Mode : [UEFI]
Secure Boot : [Deaktiviert]
SMT Control : [Auto] -> Ist an zwei Stellen im BIOS zu finden.
SVM Mode : [Aktiviert]
NX Mode : [Aktiviert]
IOMMU : [Aktiviert]
Security Device Support : [Enable]
AMD fTPM switch : [AMD CPU fTPM]
Re-Size BAR Support : [Aktiviert]
Above 4G memory/Crypto Currency mining : [Deaktiviert] -> wichtig, sonst funktioniert MacOS
nicht mit GPU Passthrough.
VGA Detection : [Auto]
Die Installation des Host Systems gestaltet sich fast identisch wie bei dem in Teil 1 verwendeten Alma Linux,
wesentlicher Unterschied ist die Verwendung des sudo Kommandos . Der Vollständigkeit halber beschreibe ich das ganze hier nochmals wegen der unterschiedlichen Hardware.
a) Die Fedora-ISO unter Windows mit Rufus oder von Linux aus mit BaleanaFetcher auf einen
USB Stick schreiben. -> Im Fall von Rufus die aktuellste Version nutzen, ältere Versionen können bei der
Installation Probleme bereiten.
b) Vom so vorbereiteten USB-Stick booten (Bootauswahl mit der Taste F11 der Tastatur, den USB-Stick auswählen) und Fedora auf die bereitgestellte NVMe, SSD oder HDD installieren.
c) Nach der Installation Fedora updaten. Dafür ein Terminal Fenster öffnen und mit
das Update ausführen (LAN muss aktiv sein). Anschließend das System neu starten.
d) Die notwendige Virtualisierungssoftware installieren. D.h. wieder Terminal öffnen und
sowie anschließend
installieren. Danach den KVM Daemon libvirtd starten.
und um diesen dann bei jedem Systemstart aufrufen
Jetzt die Virtuelle Maschinenverwaltung installieren
Quelle: https://computingforgeeks.com/how-to-install-kvm-on-fedora/
e) Prüfen in welcher IOMMU Gruppe sich die durchzureichende Grafikkarte (hier RADEON
RX 470) befindet, sowie deren Geräte-ID ermitteln. D.h. Terminal öffnen und anschließend das
Script aus Link3 eingeben (eher copy & paste) und ausführen lassen.
Als Ergebnis erhält man u. a. mit der hier verwendeten Hardwarekonfiguration:
...
IOMMU Group 13:
03:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
03:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller [1022:43c8] (rev 01)
03:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge [1022:43c6] (rev 01)
20:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
20:01.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
20:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
22:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
25:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] [10de:1c82] (rev a1)
25:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9] (rev a1)
IOMMU Group 14:
26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev cf)
26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
...
In der IOMMU Group 13 findet man neben USB und SATA Controller u.a. die NVIDIA Grafikkarte, und in der
IOMMU Group 14 als einziges Device die RADEON Grafikkarte.
Da die Radeon Grafikkarte in die VM´s durchgereicht werden soll, sind deren ID´s zu nutzen.
Die Grafikkarten-ID lautet damit: [1002:67df], die ID des verbauten Audio-Controllers auf der
Grakfikkarte: [1002:aaf0]
Hinweis: Die Grafikkarten-ID´ s sind natürlich Hardware abhängig, d.h. mit einer anderen Grafikkarte ändern sich natürlich auch die ID´s.
f) Jetzt den Bootloader Grub folgendermaßen anpassen:
1) Wieder ein Terminal öffnen und dann mit einem Editor Grub bearbeiten.
2) In Grub die Zeile GRUB_CMDLINE_LINUX=" ...quiet" finden und nach quiet folgendes einfügen:
3) und speichern. Anschließend Grub neu konfigurieren:
g) Jetzt die Datei /etc/dracut.conf.d/10-vfio.conf mit folgenden Inhalt erzeugen:
Das ganze mit dem Editor der Wahl ausführen, hier
aufrufen, die Zeile
einfügen, bzw. hinein kopieren und dann speichern.
Anmerkung: vfio_virqfd wird bei neueren Kernelversionen (ab Kernel Version 6.2) nicht
mehr benötigt, bzw. wurde in das das Basismodul vfio integriert. Deshalb nur noch die Zeile
(Welche Version das eigene System hat, erfährt man mit: $ uname -a).
h) Anschließend
im Terminal ausführen damit initramfs für das aktuell laufende System neu generiert wird.
Danach das Host System neu starten (reboot).
Wenn alles richtig funktioniert, dann wird nach dem Neustart des Host Systems nur noch der
Monitor, der an der zweiten Grafikkarte (GT1030) angeschlossen ist von Fedora initialisiert
und benutzt.
Jetzt kann zusätzlich mit
geprüft werden, ob die Einbindung des Treibers gelungen ist. Dazu muss die Grafikkarte, die
durchgereicht werden soll, folgenden Eintrag enhalten: Kernel driver in use: vfio-pci
26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev cf)
Subsystem: PC Partner Limited / Sapphire Technology Radeon RX 470/480 [174b:e347]
Kernel driver in use: vfio-pci
Kernel modules: amdgpu
26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aaf0]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
Das gilt für die Grafikarte selbst, und falls vorhanden, dem auf der Karte verbautem Audiochip.
Nachtrag: Nach dem Installieren der Virtualisierungsumgebung sollte man noch der Gruppe libvirt
beitreten.
eingeben. Anderenfalls wird man beim Starten der Virtuellen Maschinenverwaltung immer nach dem sudo
Passwort gefragt.
wesentlicher Unterschied ist die Verwendung des sudo Kommandos . Der Vollständigkeit halber beschreibe ich das ganze hier nochmals wegen der unterschiedlichen Hardware.
a) Die Fedora-ISO unter Windows mit Rufus oder von Linux aus mit BaleanaFetcher auf einen
USB Stick schreiben. -> Im Fall von Rufus die aktuellste Version nutzen, ältere Versionen können bei der
Installation Probleme bereiten.
b) Vom so vorbereiteten USB-Stick booten (Bootauswahl mit der Taste F11 der Tastatur, den USB-Stick auswählen) und Fedora auf die bereitgestellte NVMe, SSD oder HDD installieren.
c) Nach der Installation Fedora updaten. Dafür ein Terminal Fenster öffnen und mit
$ sudo dnf update --refresh
das Update ausführen (LAN muss aktiv sein). Anschließend das System neu starten.
d) Die notwendige Virtualisierungssoftware installieren. D.h. wieder Terminal öffnen und
$ sudo dnf -y install bridge-utils libvirt virt-install qemu-kvm
sowie anschließend
$ sudo dnf install libvirt-devel virt-top libguestfs-tools guestfs-tools
installieren. Danach den KVM Daemon libvirtd starten.
$ sudo systemctl start libvirtd
und um diesen dann bei jedem Systemstart aufrufen
$ sudo systemctl enable libvirtd
Jetzt die Virtuelle Maschinenverwaltung installieren
$ sudo dnf -y install virt-manager
Quelle: https://computingforgeeks.com/how-to-install-kvm-on-fedora/
e) Prüfen in welcher IOMMU Gruppe sich die durchzureichende Grafikkarte (hier RADEON
RX 470) befindet, sowie deren Geräte-ID ermitteln. D.h. Terminal öffnen und anschließend das
Script aus Link3 eingeben (eher copy & paste) und ausführen lassen.
#!/bin/bash
shopt -s nullglob
for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do
echo "IOMMU Group ${g##*/}:"
for d in $g/devices/*; do
echo -e "\t$(lspci -nns ${d##*/})"
done;
done;
Als Ergebnis erhält man u. a. mit der hier verwendeten Hardwarekonfiguration:
...
IOMMU Group 13:
03:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
03:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller [1022:43c8] (rev 01)
03:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge [1022:43c6] (rev 01)
20:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
20:01.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
20:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
22:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
25:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] [10de:1c82] (rev a1)
25:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9] (rev a1)
IOMMU Group 14:
26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev cf)
26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
...
In der IOMMU Group 13 findet man neben USB und SATA Controller u.a. die NVIDIA Grafikkarte, und in der
IOMMU Group 14 als einziges Device die RADEON Grafikkarte.
Da die Radeon Grafikkarte in die VM´s durchgereicht werden soll, sind deren ID´s zu nutzen.
Die Grafikkarten-ID lautet damit: [1002:67df], die ID des verbauten Audio-Controllers auf der
Grakfikkarte: [1002:aaf0]
Hinweis: Die Grafikkarten-ID´ s sind natürlich Hardware abhängig, d.h. mit einer anderen Grafikkarte ändern sich natürlich auch die ID´s.
f) Jetzt den Bootloader Grub folgendermaßen anpassen:
1) Wieder ein Terminal öffnen und dann mit einem Editor Grub bearbeiten.
$ sudo nano /etc/sysconfig/grub
2) In Grub die Zeile GRUB_CMDLINE_LINUX=" ...quiet" finden und nach quiet folgendes einfügen:
amd_iommu=on rd.driver.pre=vfio-pci vfio-pci.ids=1002:67df,1002:aaf0 video=efifb:off kvm.ignore_msrs=1
3) und speichern. Anschließend Grub neu konfigurieren:
$ sudo grub2-mkconfig -o /etc/grub2-efi.cfg
g) Jetzt die Datei /etc/dracut.conf.d/10-vfio.conf mit folgenden Inhalt erzeugen:
add_drivers+=" vfio_pci vfio vfio_iommu_type1 vfio_virqfd "
Das ganze mit dem Editor der Wahl ausführen, hier
$ sudo nano /etc/dracut.conf.d/10-vfio.conf
aufrufen, die Zeile
add_drivers+=" vfio_pci vfio vfio_iommu_type1 vfio_virqfd "
einfügen, bzw. hinein kopieren und dann speichern.
Anmerkung: vfio_virqfd wird bei neueren Kernelversionen (ab Kernel Version 6.2) nicht
mehr benötigt, bzw. wurde in das das Basismodul vfio integriert. Deshalb nur noch die Zeile
add_drivers+=" vfio_pci vfio vfio_iommu_type1 "
verwenden.(Welche Version das eigene System hat, erfährt man mit: $ uname -a).
h) Anschließend
$ sudo dracut -f
im Terminal ausführen damit initramfs für das aktuell laufende System neu generiert wird.
Danach das Host System neu starten (reboot).
Wenn alles richtig funktioniert, dann wird nach dem Neustart des Host Systems nur noch der
Monitor, der an der zweiten Grafikkarte (GT1030) angeschlossen ist von Fedora initialisiert
und benutzt.
Jetzt kann zusätzlich mit
$ lspci -nnk
geprüft werden, ob die Einbindung des Treibers gelungen ist. Dazu muss die Grafikkarte, die
durchgereicht werden soll, folgenden Eintrag enhalten: Kernel driver in use: vfio-pci
26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev cf)
Subsystem: PC Partner Limited / Sapphire Technology Radeon RX 470/480 [174b:e347]
Kernel driver in use: vfio-pci
Kernel modules: amdgpu
26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aaf0]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
Das gilt für die Grafikarte selbst, und falls vorhanden, dem auf der Karte verbautem Audiochip.
Nachtrag: Nach dem Installieren der Virtualisierungsumgebung sollte man noch der Gruppe libvirt
beitreten.
$ sudo usermod -aG libvirt BENUTZERNAME
eingeben. Anderenfalls wird man beim Starten der Virtuellen Maschinenverwaltung immer nach dem sudo
Passwort gefragt.
Die Installation einer Windows VM gestaltet sich hier genauso wie bereits unter Alma Linux beschrieben. Von daher verweise ich auf Teil 3 der GPU-Passthrough Beschreibung in Teil 1 meines Erfahrungsberichts. Einzig bei der Installation von Windows 11 muss noch das TPM Modul bei der Konfiguration der VM hinzugefügt werden,
Anhang anzeigen 1266309
ansonsten wird der Installationsvorgang vom Windowsinstaller abgebrochen.
[Oder siehe weiter unten, die Beschreibung unter Debian]
Anhang anzeigen 1266309
ansonsten wird der Installationsvorgang vom Windowsinstaller abgebrochen.
[Oder siehe weiter unten, die Beschreibung unter Debian]
Nach der Erstellung der Windows 10 VM hat sich ein Problem mit dem Anschluss der Netzwerkkarte
gezeigt. Es war kein Internetzugang möglich. Nach kurzer Überprüfung im Gerätemanager war ersichtlich,
dass sich kein Netzwerktreiber installieren lies.
Nach einer Recherche hat es sich gezeigt, das dieses Problem schon andere hatten (u.a. Unraid und
Proxmox). Die Lösung dieses Problems hat sich dann als einfach heraus gestellt:
Die verwendete Version des benutzten Q35 Chipsatzes ist zu hoch. Unter Fedora wird bei der
Installation die Version 6.2 benutzt, mit der die Windows 10 VM ein Problem hat.
Das kann man sich in der XML Ansicht in der Maschinenverwaltung ansehen, dazu nach
Die Lösung ist dann auch entsprechend einfach, man muss nur die markierte Zeile entsprechend anpassen.
Anhang anzeigen 1266313
Die Änderung übernehmen und dann die VM neu starten. In der laufenden VM den Gerätemanager
öffnen. Ist die Netzwerkkarte dort als fehlerhaft gekennzeichnet, diese deinstallieren und die VM
erneut neu starten. Nach dem Neustart wieder den Gerätemanager öffnen und falls notwendig den
Treiber der Netzwerkkarte installieren.
gezeigt. Es war kein Internetzugang möglich. Nach kurzer Überprüfung im Gerätemanager war ersichtlich,
dass sich kein Netzwerktreiber installieren lies.
Nach einer Recherche hat es sich gezeigt, das dieses Problem schon andere hatten (u.a. Unraid und
Proxmox). Die Lösung dieses Problems hat sich dann als einfach heraus gestellt:
Die verwendete Version des benutzten Q35 Chipsatzes ist zu hoch. Unter Fedora wird bei der
Installation die Version 6.2 benutzt, mit der die Windows 10 VM ein Problem hat.
Das kann man sich in der XML Ansicht in der Maschinenverwaltung ansehen, dazu nach
<type arch="x86_64" machine="pc-q35-6.2">hvm</type>
schauen.Die Lösung ist dann auch entsprechend einfach, man muss nur die markierte Zeile entsprechend anpassen.
<type arch="x86_64" machine="pc-q35-6.0">hvm</type>.
Anhang anzeigen 1266313
Die Änderung übernehmen und dann die VM neu starten. In der laufenden VM den Gerätemanager
öffnen. Ist die Netzwerkkarte dort als fehlerhaft gekennzeichnet, diese deinstallieren und die VM
erneut neu starten. Nach dem Neustart wieder den Gerätemanager öffnen und falls notwendig den
Treiber der Netzwerkkarte installieren.
a) Die Geräte-ID der angeschlossenen Maus und Tastatur feststellen.
Dazu im einem Terminal folgendes eingeben:
Daraufhin erscheint (bei dem System hier) folgende Ausgabe:
usb-04d9_USB_Keyboard-event-kbd
usb-04d9_USB_Keyboard-if01-event-kbd
usb-Logitech_USB_Optical_Mouse-event-mouse
usb-Logitech_USB_Optical_Mouse-mouse
usb-SEMICCHIP_Usb_Mouse-event-mouse
usb-SEMICCHIP_Usb_Mouse-mouse
Benötigt werden die Angaben die "event" im Namen enthalten. Ignoriert werden Geräte-ID ́s
die If01 oder If02 usw. enthalten.
b) Jetzt per Terminal die Datei
mit dem Editor der Wahl
öffnen und die nachfolgende Passage
cgroup_device_acl = [
"/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
"/dev/rtc","/dev/hpet",
"/dev/input/by-id/usb-04d9_USB_Keyboard-event-kbd",
"/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-event-mouse",
]
user = "evdev"
group = "evdev"
clear_emulator_capabilities = 0
security_default_confined = 0
am Ende einfügen und speichern.
Jetzt noch einen neuen Nutzer/Gruppe anlegen der „evdev“ heißt. In einem Terminal Fenster also
folgendes eingeben :
Damit hat man einen Nutzer angelegt, der kein Homeverzeichnis hat und sich nicht über eine
Login Shell anmelden kann. Zusätzlich wurde dieser Nutzer „evdev“ zur input Gruppe hinzugefügt.
Anschliesend im Terminal mit
libvirtd neu starten.
c) Jetzt in der virtuelen Maschinenverwaltung, in der XML Ansicht, die erste Zeile
durch
ersetzen.
Anschließend, ganz am Ende, vor </domain> folgendes einfügen
und mit dem Anklicken von „Anwenden“ übernehmen.
Wird die virtuelle Maschine jetzt gestartet geht die Kontrolle von Maus und Tastatur sofort
an die VM über. D.h. jetzt ist es möglich in der Windows VM mit Maus und Tastatur zu ar-
beiten.
Werden Maus und Tastatur wieder auf dem Host System benötigt, dann kann mit dem gleich-
zeitigen Betätigen der beiden Steuerungstasten [Strg] auf der Tastatur von der VM auf das Host
System umgeschaltet werden.Das ganze funktioniert wechselseitig, damit wird das bequeme
Umschalten von Maus und Tastatur zwischen VM und Host einfach möglich.
Quelle
Dazu im einem Terminal folgendes eingeben:
[vm@fedora ~]$ ls /dev/input/by-id
Daraufhin erscheint (bei dem System hier) folgende Ausgabe:
usb-04d9_USB_Keyboard-event-kbd
usb-04d9_USB_Keyboard-if01-event-kbd
usb-Logitech_USB_Optical_Mouse-event-mouse
usb-Logitech_USB_Optical_Mouse-mouse
usb-SEMICCHIP_Usb_Mouse-event-mouse
usb-SEMICCHIP_Usb_Mouse-mouse
Benötigt werden die Angaben die "event" im Namen enthalten. Ignoriert werden Geräte-ID ́s
die If01 oder If02 usw. enthalten.
b) Jetzt per Terminal die Datei
/etc/libvirt/qemu.conf
mit dem Editor der Wahl
[vm@fedora ~]$ sudo nano /etc/libvirt/qemu.conf
öffnen und die nachfolgende Passage
cgroup_device_acl = [
"/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
"/dev/rtc","/dev/hpet",
"/dev/input/by-id/usb-04d9_USB_Keyboard-event-kbd",
"/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-event-mouse",
]
user = "evdev"
group = "evdev"
clear_emulator_capabilities = 0
security_default_confined = 0
am Ende einfügen und speichern.
Jetzt noch einen neuen Nutzer/Gruppe anlegen der „evdev“ heißt. In einem Terminal Fenster also
folgendes eingeben :
[vm@fedora ~]$ sudo useradd -s /usr/sbin/nologin -r -M -d /dev/null evdev
[vm@fedora ~]$ sudo groupadd evdev
[vm@fedora ~]$ sudo usermod -a -G input evdev
Damit hat man einen Nutzer angelegt, der kein Homeverzeichnis hat und sich nicht über eine
Login Shell anmelden kann. Zusätzlich wurde dieser Nutzer „evdev“ zur input Gruppe hinzugefügt.
Anschliesend im Terminal mit
[vm@fedora ~]$ sudo systemctl restart libvirtd
libvirtd neu starten.
c) Jetzt in der virtuelen Maschinenverwaltung, in der XML Ansicht, die erste Zeile
<domain type="kvm">
durch
<domain type='kvm' id='1' xmlns:qemu='[URL]http://libvirt.org/schemas/domain/qemu/1.0[/URL]'>
ersetzen.
Anschließend, ganz am Ende, vor </domain> folgendes einfügen
<qemu:commandline>
<qemu:arg value="-object"/>
<qemu:arg value="input-linux,id=kbd1,evdev=/dev/input/by-id/usb-04d9_USB_Keyboard-event-kbd,grab_all=on,repeat=on"/>
<qemu:arg value="-object"/>
<qemu:arg value="input-linux,id=mouse1,evdev=/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-event-mouse"/>
</qemu:commandline>
und mit dem Anklicken von „Anwenden“ übernehmen.
Wird die virtuelle Maschine jetzt gestartet geht die Kontrolle von Maus und Tastatur sofort
an die VM über. D.h. jetzt ist es möglich in der Windows VM mit Maus und Tastatur zu ar-
beiten.
Werden Maus und Tastatur wieder auf dem Host System benötigt, dann kann mit dem gleich-
zeitigen Betätigen der beiden Steuerungstasten [Strg] auf der Tastatur von der VM auf das Host
System umgeschaltet werden.Das ganze funktioniert wechselseitig, damit wird das bequeme
Umschalten von Maus und Tastatur zwischen VM und Host einfach möglich.
Quelle
a) Die Debian-ISO unter Windows mit Rufus oder von Linux aus mit baleanaFetcher auf einen
USB Stick schreiben. -> Im Fall von Rufus die aktuellste Version nutzen, ältere Versionen
können bei der Installation Probleme bereiten.
b) Vom so vorbereiteten USB-Stick booten (Bootauswahl mit der Taste F11 der Tastatur, den USB-
Stick auswählen) und Debian auf die bereitgestellte NVMe, SSD oder HDD installieren.
c) Nach der Installation Debian updaten. Dafür ein Terminal Fenster öffnen und mit
das Update ausführen (LAN muss aktiv sein). Anschließend das System neu starten.
d) Die notwendige Virtualisierungssoftware installieren. D.h. wieder Terminal öffnen und
sowie anschließend (zum Booten von VM’s im UEFI Modus)
installieren. Danach den KVM Daemon libvirtd starten.
und um diesen dann bei jedem Systemstart aufrufen
e) Prüfen in welcher IOMMU Gruppe sich die durchzureichende Grafikkarte (hier RADEON
RX 470) befindet, sowie deren Geräte-ID ermitteln. D.h. Terminal öffnen und anschlie-
ßend das Script aus dem Link eingeben und ausführen lassen.
Als Ergebnis erhält man u. a. mit der hier verwendeten Hardwarekonfiguration:
...
IOMMU Group 13:
03:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
03:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller [1022:43c8] (rev 01)
03:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge [1022:43c6] (rev 01)
20:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
20:01.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
20:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
22:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
25:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] [10de:1c82] (rev a1)
25:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9] (rev a1)
IOMMU Group 14:
26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev cf)
26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
...
In der IOMMU Group 13 findet man neben USB und SATA Controller u.a. die NVIDIA Grafik-
karte, und in der IOMMU Group 14 als einziges Device die RADEON Grafikkarte.
Da die Radeon Grafikkarte in die VM ́s durchgereicht werden soll, sind deren ID ́s zu nutzen.
Die Grafikkarten-ID lautet damit: [1002:67df], die ID des verbauten Audio-Controllers auf der
Grakfikkarte: [ 1002:aaf0 ]
Hinweis: Die Grafikkarten-ID´ s sind natürlich Hardware abhängig, d.h. mit einer anderen Grafikkarte ändern sich natürlich auch die ID´s.
f) Jetzt den Bootloader Grub folgendermaßen anpassen:
I) Wieder ein Terminal öffnen und dann mit einem Editor Grub bearbeiten.
II) In Grub die Zeile GRUB_CMDLINE_LINUX=" ...quiet" finden und nach quiet folgen-
des einfügen (um damit IOMMU im Host zu aktivieren)
III) und speichern. Anschließend Grub neu konfigurieren:
g) Jetzt die Datei /etc/modprobe.d/vfio.conf mit folgenden Inhalt erzeugen:
Das ganze mit dem Editor der Wahl ausführen, hier
aufrufen, die Zeilen
einfügen, bzw. hinein kopieren und dann speichern.
h) Dann als Root die Datei /etc/modules bearbeiten
und darin folgendes einfügen
und speichern.
i) Anschließend
im Terminal ausführen, damit initramfs für das aktuell laufende System neu generiert wird.
Danach das Host System neu starten (reboot).
Wenn alles richtig funktioniert, dann wird nach dem Neustart des Host Systems nur noch der
Monitor, der an der zweiten Grafikkarte (GTX1030) angeschlossen ist von Debian 12
initialisiert und benutzt.
Jetzt kann zusätzlich mit
geprüft werden, ob die Einbindung des Treibers gelungen ist. Dazu muss die Grafikkarte, die
durchgereicht werden soll, folgenden Eintrag enhalten: Kernel driver in use: vfio-pci
26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev cf)
Subsystem: PC Partner Limited / Sapphire Technology Radeon RX 470/480 [174b:e347]
Kernel driver in use: vfio-pci
Kernel modules: amdgpu
26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aaf0]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
Das gilt für die Grafikarte selbst, und falls vorhanden, dem auf der Karte verbautem Audiochip.
Nachtrag: Nach dem Installieren der Virtualisierungsumgebung sollte man noch der Gruppe libvirt
beitreten.
Anderenfalls wird man beim Starten der Virtuellen Maschinenverwaltung immer nach dem Root
Passwort gefragt.
Quellen:
https://wiki.debianforum.de/QEMU/KVM_mit_GPU_Passthrough#Paketinstallation
https://wiki.debian.org/KVM
https://www.server-world.info/en/note?os=Debian_12&p=kvm&f=1
https://www.server-world.info/en/note?os=Debian_12&p=kvm&f=13
https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Isolating_the_GPU
USB Stick schreiben. -> Im Fall von Rufus die aktuellste Version nutzen, ältere Versionen
können bei der Installation Probleme bereiten.
b) Vom so vorbereiteten USB-Stick booten (Bootauswahl mit der Taste F11 der Tastatur, den USB-
Stick auswählen) und Debian auf die bereitgestellte NVMe, SSD oder HDD installieren.
c) Nach der Installation Debian updaten. Dafür ein Terminal Fenster öffnen und mit
$ su --login
$ apt-get update
$ apt-get upgrade
das Update ausführen (LAN muss aktiv sein). Anschließend das System neu starten.
d) Die notwendige Virtualisierungssoftware installieren. D.h. wieder Terminal öffnen und
$ su --login
$ apt install qemu-kvm libvirt-daemon-system libvirt-daemon virtinst bridge-utils libosinfo-bin
$ apt install libguestfs-tools virt-manager qemu-system
sowie anschließend (zum Booten von VM’s im UEFI Modus)
$ apt install install ovmf swtpm swtpm-tools
installieren. Danach den KVM Daemon libvirtd starten.
$ su --login
$ systemctl start libvirtd
und um diesen dann bei jedem Systemstart aufrufen
$ su --login
$ systemctl enable libvirtd
e) Prüfen in welcher IOMMU Gruppe sich die durchzureichende Grafikkarte (hier RADEON
RX 470) befindet, sowie deren Geräte-ID ermitteln. D.h. Terminal öffnen und anschlie-
ßend das Script aus dem Link eingeben und ausführen lassen.
#!/bin/bash
shopt -s nullglob
for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do
echo "IOMMU Group ${g##*/}:"
for d in $g/devices/*; do
echo -e "\t$(lspci -nns ${d##*/})"
done;
done;
Als Ergebnis erhält man u. a. mit der hier verwendeten Hardwarekonfiguration:
...
IOMMU Group 13:
03:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
03:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller [1022:43c8] (rev 01)
03:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge [1022:43c6] (rev 01)
20:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
20:01.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
20:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
22:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15)
25:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] [10de:1c82] (rev a1)
25:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9] (rev a1)
IOMMU Group 14:
26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev cf)
26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
...
In der IOMMU Group 13 findet man neben USB und SATA Controller u.a. die NVIDIA Grafik-
karte, und in der IOMMU Group 14 als einziges Device die RADEON Grafikkarte.
Da die Radeon Grafikkarte in die VM ́s durchgereicht werden soll, sind deren ID ́s zu nutzen.
Die Grafikkarten-ID lautet damit: [1002:67df], die ID des verbauten Audio-Controllers auf der
Grakfikkarte: [ 1002:aaf0 ]
Hinweis: Die Grafikkarten-ID´ s sind natürlich Hardware abhängig, d.h. mit einer anderen Grafikkarte ändern sich natürlich auch die ID´s.
f) Jetzt den Bootloader Grub folgendermaßen anpassen:
I) Wieder ein Terminal öffnen und dann mit einem Editor Grub bearbeiten.
$ su --login
$ nano /etc/default/grub
II) In Grub die Zeile GRUB_CMDLINE_LINUX=" ...quiet" finden und nach quiet folgen-
des einfügen (um damit IOMMU im Host zu aktivieren)
amd_iommu=on
III) und speichern. Anschließend Grub neu konfigurieren:
$ su --login
$ update-grub
g) Jetzt die Datei /etc/modprobe.d/vfio.conf mit folgenden Inhalt erzeugen:
Das ganze mit dem Editor der Wahl ausführen, hier
$ su --login
$ nano /etc/modprobe.d/vfio.conf
aufrufen, die Zeilen
# AMD GPU
softdep amdgpu pre: vfio-pci
# alte AMD GPU
# softdep radeon pre: vfio-pci
# NVIDIA GPU
# softdep nouveau pre: vfio-pci
options vfio-pci ids=1002:67df,1002:aaf0
einfügen, bzw. hinein kopieren und dann speichern.
h) Dann als Root die Datei /etc/modules bearbeiten
$ su --login
$ nano /etc/modules
und darin folgendes einfügen
vfio_pci
vfio
vfio_iommu_type1
vfio_virqfd
und speichern.
i) Anschließend
$ su --login
$ update-initramfs -u
im Terminal ausführen, damit initramfs für das aktuell laufende System neu generiert wird.
Danach das Host System neu starten (reboot).
Wenn alles richtig funktioniert, dann wird nach dem Neustart des Host Systems nur noch der
Monitor, der an der zweiten Grafikkarte (GTX1030) angeschlossen ist von Debian 12
initialisiert und benutzt.
Jetzt kann zusätzlich mit
$ lspci -nnk
geprüft werden, ob die Einbindung des Treibers gelungen ist. Dazu muss die Grafikkarte, die
durchgereicht werden soll, folgenden Eintrag enhalten: Kernel driver in use: vfio-pci
26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev cf)
Subsystem: PC Partner Limited / Sapphire Technology Radeon RX 470/480 [174b:e347]
Kernel driver in use: vfio-pci
Kernel modules: amdgpu
26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aaf0]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
Das gilt für die Grafikarte selbst, und falls vorhanden, dem auf der Karte verbautem Audiochip.
Nachtrag: Nach dem Installieren der Virtualisierungsumgebung sollte man noch der Gruppe libvirt
beitreten.
$ su --login
$ usermod -a -G libvirt eigenerBENUTZERNAME
Anderenfalls wird man beim Starten der Virtuellen Maschinenverwaltung immer nach dem Root
Passwort gefragt.
Quellen:
https://wiki.debianforum.de/QEMU/KVM_mit_GPU_Passthrough#Paketinstallation
https://wiki.debian.org/KVM
https://www.server-world.info/en/note?os=Debian_12&p=kvm&f=1
https://www.server-world.info/en/note?os=Debian_12&p=kvm&f=13
https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Isolating_the_GPU
Jetzt kann mit dem Einrichten einer Windows VM begonnen werden. Dazu wird ein Windows
ISO-Abbild benötigt. Falls das nicht schon vorhanden ist, dann sollte jetzt ein ISO-Abbild von
Windows 10 oder 11 von der Microsoft Homepage herunter geladen werden (Link).
Um eine virtuelle Maschine aufzusetzen ist jetzt die virtuelle Maschinenverwaltung zu starten.
Nach dem Start der Maschinenverwaltung unter dem Menüpunkt
Bearbeiten -> Einstellungen
den Haken an „Enable XML editing“ setzen. Somit ist es später möglich den XML Code der
VM zwecks Anpassungen zu bearbeiten.
Die eigentliche Erstellung einer VM gestaltet sich wie folgt:
a) Unter Datei den Menüpunkt „Neue virtuelle Maschine“ anwählen.
Die Vorauswahl „Lokales Installationsmedium (ISO-Abbild oder CDROM“ stehen lassen und auf
den Button „Vor“ klicken.
b) Das Installationsmedium auswählen.
Dazu auf „Durchsuchen“ klicken und das vorher geladene ISO-Abbild von Windows 10 auswäh-
len. Anschließend wieder die Taste „Vor“ anklicken.
c) Speicher (RAM) und CPU Settings.
Die Voreinstellungen für Speicher und CPU stehen lassen, diese können noch im späteren Verlauf
angepasst werden. Daher wieder die Taste „Vor“ anklicken.
d) Speicherplatz für die virtuelle Maschine einrichten
Für erste Versuche die Voreinstellungen stehen lassen, eventuell den Speicherplatz für den Daten-
träger auf 60 oder mehr GB erhöhen (sofern genügend Platz auf dem System zur Verfügung
steht). Anschließend wieder die Taste „Vor“ anklicken.
e) Installation beginnen
Hier einen Haken bei „Konfiguration bearbeiten vor der Installation“ setzen und danach die Taste
„Fertig“ anklicken.
Jetzt erscheint das Fenster zum Start der Installation.
Bevor man damit beginnt sind noch einige Einstellungen vorzunehmen.
Der Reihe nach wären das wie auf den nachfolgenden Bildern gezeigt:
Die Firmware von BIOS auf UEFI... umzustellen:
Die CPU und den Arbeitsspeicher (RAM) zu konfigurieren:
Die Bootreihenfolge festlegen, dazu einen Haken bei SATA CDROM1 setzen..
[Generell empfiehlt es sich, ebenfalls einen Haken bei „Startmenü aktivieren“ zu setzen.]
Anschließend erfolgt das Hinzufügen der durchzureichenden Grafikkarte und deren Audiochip über
den Button „Gerät hinzufügen“ und dann die Auswahl der Geräte unter PCI Host-Gerät.
[Hinweis: Das Hinzufügen von Grafikkarte und Audiochip kann auch nachträglich, nach der Installa-
tion des Betriebssystem, erfolgen.]
Hinweis: An dieser Stelle noch nicht „Anzeige Spice“ und „Video QXL“ aus der Geräteliste entfernen, sonst
bleibt ansonsten der Installationsbildschirm dunkel!
Soll Windows 11 installiert werden, dann ist noch das TPM Modul hinzuzufügen, weil ohne dieses
Modul der Installationsvorgang vom Windowsinstaller abgebrochen wird.
Jetzt kann die Installation der VM gestartet werden indem man auf das Feld „Installation beginnen“
klickt. Die Installation beginnt und die VM will von dem virtuellen CDROM Laufwerk booten.
Jetzt muss man schnell sein und eine Taste auf der Tastatur betätigen damit die Installation per
CDROM in der VM erfolgen kann.
Verpasst man den Zeitpunkt des Tastendrucks, dann landet man im BIOS der VM. Diese verläßt man
wieder durch Anwahl von „Continue“ und die Abfrage des Tastendrucks erfolgt von neuem.
[Hinweis: Hier besteht dann auch eine gute Möglichkeit, Secure Boot im BIOS der VM auszu-
schalten, das erspart einem dann später eventueller Mehraufwand falls virtio Treiber installiert
werden sollen.]
Nach Betätigen des Tastendrucks beginnt eine normale Windows Installation.
Nach erfolgreicher Installation wird man in der Konsole vom Windows Desktop begrüßt.
Zum jetzigen Zeitpunkt läuft Windows nur in der Konsole. Um das zu ändern muss der Treiber der
dedizierten Grafikkarte installiert werden. D.h. den Treiber (hier AMD Radeon) der durchgereichten
Grafikkarte in der VM von der Herstellerseite downloaden und dort installieren. Nach Installation des
Treibers wird jetzt auch die dedizierte Grafikkarte angesteuert und auf dem zweiten Bildschirm er-
scheint jetzt der Windows Desktop (wenn die Grafikkarte zuvor in die VM durchgereicht wurde).
In dieser Konfigutation muss man immer zuerst auf den Desktop in der Konsole klicken, damit ein
Arbeiten in der VM auf dem zweiten Bildschirm überhaupt möglich ist. Dieser Zustand ändert sich,
wenn die Einträge für die emulierte Grafikkarte aus der Maschinenkonfiguration der VM entfernt
werden („Konsole“, „Anzeige Spice“, „Video QXL“). Beim nachfolgenden Neustart der VM wird
diese jetzt nur noch auf der dedizitieren Grafikkarte gestartet.
Jetzt wäre es allerdings auch notwendig eine zweite Maus / Tastatur in die VM durchzureichen, damit
sowohl Host als auch VM gleichzeitig bedient werden können. Das läßt sich z.B. mit einem KVM Switch
(mit zusätzlichen Kosten) umgehen.
Oder man löst das Problem per Software, z.B. mittels Evdev. Um was es sich bei Evdev handelt wird auf
der Seite passthroughpo.st unter dem nachfolgenden Link erklärt.
Quellen:
Link: https://rufus.ie/en/
Link: https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Ensuring_that_the_groups_are_valid
Link: https://www.microsoft.com/de-de/software-download/
Link: https://passthroughpo.st/using-evdev-passthrough-seamless-vm-input/
ISO-Abbild benötigt. Falls das nicht schon vorhanden ist, dann sollte jetzt ein ISO-Abbild von
Windows 10 oder 11 von der Microsoft Homepage herunter geladen werden (Link).
Um eine virtuelle Maschine aufzusetzen ist jetzt die virtuelle Maschinenverwaltung zu starten.
Nach dem Start der Maschinenverwaltung unter dem Menüpunkt
Bearbeiten -> Einstellungen
den Haken an „Enable XML editing“ setzen. Somit ist es später möglich den XML Code der
VM zwecks Anpassungen zu bearbeiten.
Die eigentliche Erstellung einer VM gestaltet sich wie folgt:
a) Unter Datei den Menüpunkt „Neue virtuelle Maschine“ anwählen.
Die Vorauswahl „Lokales Installationsmedium (ISO-Abbild oder CDROM“ stehen lassen und auf
den Button „Vor“ klicken.
b) Das Installationsmedium auswählen.
Dazu auf „Durchsuchen“ klicken und das vorher geladene ISO-Abbild von Windows 10 auswäh-
len. Anschließend wieder die Taste „Vor“ anklicken.
c) Speicher (RAM) und CPU Settings.
Die Voreinstellungen für Speicher und CPU stehen lassen, diese können noch im späteren Verlauf
angepasst werden. Daher wieder die Taste „Vor“ anklicken.
d) Speicherplatz für die virtuelle Maschine einrichten
Für erste Versuche die Voreinstellungen stehen lassen, eventuell den Speicherplatz für den Daten-
träger auf 60 oder mehr GB erhöhen (sofern genügend Platz auf dem System zur Verfügung
steht). Anschließend wieder die Taste „Vor“ anklicken.
e) Installation beginnen
Hier einen Haken bei „Konfiguration bearbeiten vor der Installation“ setzen und danach die Taste
„Fertig“ anklicken.
Jetzt erscheint das Fenster zum Start der Installation.
Bevor man damit beginnt sind noch einige Einstellungen vorzunehmen.
Der Reihe nach wären das wie auf den nachfolgenden Bildern gezeigt:
Die Firmware von BIOS auf UEFI... umzustellen:
Die CPU und den Arbeitsspeicher (RAM) zu konfigurieren:
Die Bootreihenfolge festlegen, dazu einen Haken bei SATA CDROM1 setzen..
[Generell empfiehlt es sich, ebenfalls einen Haken bei „Startmenü aktivieren“ zu setzen.]
Anschließend erfolgt das Hinzufügen der durchzureichenden Grafikkarte und deren Audiochip über
den Button „Gerät hinzufügen“ und dann die Auswahl der Geräte unter PCI Host-Gerät.
[Hinweis: Das Hinzufügen von Grafikkarte und Audiochip kann auch nachträglich, nach der Installa-
tion des Betriebssystem, erfolgen.]
Hinweis: An dieser Stelle noch nicht „Anzeige Spice“ und „Video QXL“ aus der Geräteliste entfernen, sonst
bleibt ansonsten der Installationsbildschirm dunkel!
Soll Windows 11 installiert werden, dann ist noch das TPM Modul hinzuzufügen, weil ohne dieses
Modul der Installationsvorgang vom Windowsinstaller abgebrochen wird.
Jetzt kann die Installation der VM gestartet werden indem man auf das Feld „Installation beginnen“
klickt. Die Installation beginnt und die VM will von dem virtuellen CDROM Laufwerk booten.
Jetzt muss man schnell sein und eine Taste auf der Tastatur betätigen damit die Installation per
CDROM in der VM erfolgen kann.
Verpasst man den Zeitpunkt des Tastendrucks, dann landet man im BIOS der VM. Diese verläßt man
wieder durch Anwahl von „Continue“ und die Abfrage des Tastendrucks erfolgt von neuem.
[Hinweis: Hier besteht dann auch eine gute Möglichkeit, Secure Boot im BIOS der VM auszu-
schalten, das erspart einem dann später eventueller Mehraufwand falls virtio Treiber installiert
werden sollen.]
Nach Betätigen des Tastendrucks beginnt eine normale Windows Installation.
Nach erfolgreicher Installation wird man in der Konsole vom Windows Desktop begrüßt.
Zum jetzigen Zeitpunkt läuft Windows nur in der Konsole. Um das zu ändern muss der Treiber der
dedizierten Grafikkarte installiert werden. D.h. den Treiber (hier AMD Radeon) der durchgereichten
Grafikkarte in der VM von der Herstellerseite downloaden und dort installieren. Nach Installation des
Treibers wird jetzt auch die dedizierte Grafikkarte angesteuert und auf dem zweiten Bildschirm er-
scheint jetzt der Windows Desktop (wenn die Grafikkarte zuvor in die VM durchgereicht wurde).
In dieser Konfigutation muss man immer zuerst auf den Desktop in der Konsole klicken, damit ein
Arbeiten in der VM auf dem zweiten Bildschirm überhaupt möglich ist. Dieser Zustand ändert sich,
wenn die Einträge für die emulierte Grafikkarte aus der Maschinenkonfiguration der VM entfernt
werden („Konsole“, „Anzeige Spice“, „Video QXL“). Beim nachfolgenden Neustart der VM wird
diese jetzt nur noch auf der dedizitieren Grafikkarte gestartet.
Jetzt wäre es allerdings auch notwendig eine zweite Maus / Tastatur in die VM durchzureichen, damit
sowohl Host als auch VM gleichzeitig bedient werden können. Das läßt sich z.B. mit einem KVM Switch
(mit zusätzlichen Kosten) umgehen.
Oder man löst das Problem per Software, z.B. mittels Evdev. Um was es sich bei Evdev handelt wird auf
der Seite passthroughpo.st unter dem nachfolgenden Link erklärt.
Quellen:
Link: https://rufus.ie/en/
Link: https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Ensuring_that_the_groups_are_valid
Link: https://www.microsoft.com/de-de/software-download/
Link: https://passthroughpo.st/using-evdev-passthrough-seamless-vm-input/
a) Die Geräte-ID der angeschlossenen Maus und Tastatur feststellen.
Dazu im einem Terminal folgendes eingeben:
Daraufhin erscheint (bei dem System hier) folgende Ausgabe:
usb-_ADXMK0419_WKNUB-KG240-event-if01
usb-_ADXMK0419_WKNUB-KG240-event-kbd
usb-_ADXMK0419_WKNUB-KG240-if01-event-mouse
usb-_ADXMK0419_WKNUB-KG240-if01-mouse
usb-Logitech_USB_Optical_Mouse-event-mouse
usb-Logitech_USB_Optical_Mouse-mouse
usb-SEMICCHIP_Usb_Mouse-event-mouse
usb-SEMICCHIP_Usb_Mouse-mouse
Benötigt werden die Angaben die "event" im Namen enthalten. Ignoriert werden Geräte-ID ́s
die If01 oder If02 usw. enthalten.
b) Jetzt per Terminal die Datei
mit dem Editor der Wahl (als Root)
öffnen und die nachfolgende Passage
cgroup_device_acl = [
"/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
"/dev/rtc","/dev/hpet",
"/dev/input/by-id/usb-_ADXMK0419_WKNUB-KG240-event-kbd",
"/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-event-mouse",
]
user = "evdev"
group = "evdev"
clear_emulator_capabilities = 0
security_default_confined = 0
am Ende einfügen und speichern.
Jetzt noch einen neuen Nutzer/Gruppe anlegen der „evdev“ heißt. In einem Terminal Fenster also
folgendes eingeben:
Damit hat man einen Nutzer angelegt, der kein Homeverzeichnis hat und sich nicht über eine
Login Shell anmelden kann. Zusätzlich wurde dieser Nutzer „evdev“ zur input Gruppe hinzugefügt.
Anschliesend im Terminal (als root) mit
libvirtd neu starten.
c) Jetzt in der virtuelen Maschinenverwaltung, in der XML Ansicht, die erste Zeile
durch
ersetzen.
Anschließend, ganz am Ende, vor </domain> folgendes einfügen
und mit dem Anklicken von „Anwenden“ übernehmen.
Wird die virtuelle Maschine jetzt gestartet geht die Kontrolle von Maus und Tastatur sofort
an die VM über. D.h. jetzt ist es möglich in der Windows VM mit Maus und Tastatur zu ar-
beiten.
Werden Maus und Tastatur wieder auf dem Host System benötigt, dann kann mit dem gleich-
zeitigen Betätigen der beiden Steuerungstasten [Strg] auf der Tastatur von der VM auf das Host
System umgeschaltet werden.Das ganze funktioniert wechselseitig, damit wird das bequeme
Umschalten von Maus und Tastatur zwischen VM und Host einfach möglich.
Quelle: https://passthroughpo.st/using-evdev-passthrough-seamless-vm-input/
Nachrag:
Mit dem Aktivieren der Funktion ist ein Fehler der Art
„Could not access KVM kernel module: Permission denied“ aufgetreten.
Als Workaround hat dann im Terminal
funktioniert. Um das nicht nach jedem Neustart eingeben zu müssen, kann eine Datei
lib/udev/rules.d/99-kvm.rules
mit folgendem Inhalt angelegt werden:
KERNEL=="kvm", GROUP="kvm", MODE="0666"
In einem Terminal also
aufrufen und die nachfolgende Zeile
einfügen und die Datei dann abspeichern. Anschließend den Rechner neu starten (rebooten).
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1479558
Dazu im einem Terminal folgendes eingeben:
$ ls /dev/input/by-id
Daraufhin erscheint (bei dem System hier) folgende Ausgabe:
usb-_ADXMK0419_WKNUB-KG240-event-if01
usb-_ADXMK0419_WKNUB-KG240-event-kbd
usb-_ADXMK0419_WKNUB-KG240-if01-event-mouse
usb-_ADXMK0419_WKNUB-KG240-if01-mouse
usb-Logitech_USB_Optical_Mouse-event-mouse
usb-Logitech_USB_Optical_Mouse-mouse
usb-SEMICCHIP_Usb_Mouse-event-mouse
usb-SEMICCHIP_Usb_Mouse-mouse
Benötigt werden die Angaben die "event" im Namen enthalten. Ignoriert werden Geräte-ID ́s
die If01 oder If02 usw. enthalten.
b) Jetzt per Terminal die Datei
/etc/libvirt/qemu.conf
mit dem Editor der Wahl (als Root)
$ su --login
$ nano /etc/libvirt/qemu.conf
öffnen und die nachfolgende Passage
cgroup_device_acl = [
"/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
"/dev/rtc","/dev/hpet",
"/dev/input/by-id/usb-_ADXMK0419_WKNUB-KG240-event-kbd",
"/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-event-mouse",
]
user = "evdev"
group = "evdev"
clear_emulator_capabilities = 0
security_default_confined = 0
am Ende einfügen und speichern.
Jetzt noch einen neuen Nutzer/Gruppe anlegen der „evdev“ heißt. In einem Terminal Fenster also
folgendes eingeben:
$ su --login
$ useradd -s /usr/sbin/nologin -r -M -d /dev/null evdev
$ groupadd evdev
$ usermod -a -G input evdev
Damit hat man einen Nutzer angelegt, der kein Homeverzeichnis hat und sich nicht über eine
Login Shell anmelden kann. Zusätzlich wurde dieser Nutzer „evdev“ zur input Gruppe hinzugefügt.
Anschliesend im Terminal (als root) mit
$ systemctl restart libvirtd
libvirtd neu starten.
c) Jetzt in der virtuelen Maschinenverwaltung, in der XML Ansicht, die erste Zeile
<domain type="kvm">#
durch
<domain type='kvm' id='1' xmlns:qemu='[URL]http://libvirt.org/schemas/domain/qemu/1.0[/URL]'>
ersetzen.
Anschließend, ganz am Ende, vor </domain> folgendes einfügen
<qemu:commandline>
<qemu:arg value="-object"/>
<qemu:arg value="input-linux,id=kbd1,evdev=/dev/input/by-id/usb-_ADXMK0419_WKNUB-KG240-event-kbd,grab_all=on,repeat=on"/>
<qemu:arg value="-object"/>
<qemu:arg value="input-linux,id=mouse1,evdev=/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-event-mouse"/>
</qemu:commandline>
und mit dem Anklicken von „Anwenden“ übernehmen.
Wird die virtuelle Maschine jetzt gestartet geht die Kontrolle von Maus und Tastatur sofort
an die VM über. D.h. jetzt ist es möglich in der Windows VM mit Maus und Tastatur zu ar-
beiten.
Werden Maus und Tastatur wieder auf dem Host System benötigt, dann kann mit dem gleich-
zeitigen Betätigen der beiden Steuerungstasten [Strg] auf der Tastatur von der VM auf das Host
System umgeschaltet werden.Das ganze funktioniert wechselseitig, damit wird das bequeme
Umschalten von Maus und Tastatur zwischen VM und Host einfach möglich.
Quelle: https://passthroughpo.st/using-evdev-passthrough-seamless-vm-input/
Nachrag:
Mit dem Aktivieren der Funktion ist ein Fehler der Art
„Could not access KVM kernel module: Permission denied“ aufgetreten.
Als Workaround hat dann im Terminal
$ su --login
$ chmod 666 /dev/kvm
funktioniert. Um das nicht nach jedem Neustart eingeben zu müssen, kann eine Datei
lib/udev/rules.d/99-kvm.rules
mit folgendem Inhalt angelegt werden:
KERNEL=="kvm", GROUP="kvm", MODE="0666"
In einem Terminal also
$ su
$ cd /
$ nano lib/udev/rules.d/99-kvm.rules
aufrufen und die nachfolgende Zeile
KERNEL=="kvm", GROUP="kvm", MODE="0666"
einfügen und die Datei dann abspeichern. Anschließend den Rechner neu starten (rebooten).
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1479558
Mit dem Debian eignen Treiber für die NVIDIA Host Grafikkarte hatte ich auf dem Desktop ab und zu kurze "Ruckler". Z.B. beim Verschieben von Fenstern auf dem Desktop. Deshalb habe habe ich es mit dem
proprietären NVIDIA Treiber probiert. Danach waren die "Ruckler" verschwunden.
Um den Treiber zu installieren wurden folgende Schritte ausgeführt:
a) Über die Softwareverwaltung die Nicht-DFSG-kompatible Software bzw. die Non-DFSG-
kompatible Firmware freigeben.
b) Die NVIDIA Treiber Pakete per Terminal (mit Root-Rechten) installieren
Die Befehle installieren zunächst das Paket „nvidia-detect“ und führen dann den Befehl aus, um
die verbaute GPU zu identifizieren und das empfohlene Treiberpaket zur Installation auszugeben.
Das empfohlene Treiberpaket ist normalerweise „nvidia-driver“.
c) Um das Treiberpaket zu installieren, die folgenden Terminal-Befehle ausführen:
Mit OK bestätigen (ENTER Taste). Dadurch wird die Installation fertiggestellt.
d) Dann das System neu starten (reboot).
Quelle: https://fostips.com/install-nvidia-driver-debian-12/
proprietären NVIDIA Treiber probiert. Danach waren die "Ruckler" verschwunden.
Um den Treiber zu installieren wurden folgende Schritte ausgeführt:
a) Über die Softwareverwaltung die Nicht-DFSG-kompatible Software bzw. die Non-DFSG-
kompatible Firmware freigeben.
b) Die NVIDIA Treiber Pakete per Terminal (mit Root-Rechten) installieren
$ su --login
$ apt update && sudo apt install nvidia-detect
$ nvidia-detect
Die Befehle installieren zunächst das Paket „nvidia-detect“ und führen dann den Befehl aus, um
die verbaute GPU zu identifizieren und das empfohlene Treiberpaket zur Installation auszugeben.
Das empfohlene Treiberpaket ist normalerweise „nvidia-driver“.
c) Um das Treiberpaket zu installieren, die folgenden Terminal-Befehle ausführen:
$ su --login
$ apt install nvidia-driver
Nach der Installation erscheint das nachfolgende Fenster
Mit OK bestätigen (ENTER Taste). Dadurch wird die Installation fertiggestellt.
d) Dann das System neu starten (reboot).
Quelle: https://fostips.com/install-nvidia-driver-debian-12/
Hinweis : Klont man eine VM und diese lässt sich anschließend nicht booten, bzw. man kann nur ins BIOS der VM wechseln, dann dort Secure Boot ausschalten. Anscheinend wird beim klonen einer VM Secure Boot per default eingeschaltet.
Anhänge
Zuletzt bearbeitet: