Dank des Wettbewerbs und der Entwicklung des wissenschaftlichen und technischen Fortschritts können Sie mit modernen PCs viele einfache und komplexe Aufgaben gleichzeitig ausführen, z. B. Videos im Fernsehen abspielen und abspielen, Grafiken rendern und Nachrichten im Internet lesen, Torrents parallel verteilen usw. usw. Viele gehen noch weiter und nutzen mehrere PCs für Arbeit und Unterhaltung. Mit Hilfe von Virtualisierungstechnologien können Sie jedoch einerseits die Funktionen Ihres PCs erweitern und andererseits Geld sparen, weil Tatsächlich können Sie mehrere Betriebssysteme gleichzeitig auf derselben Hardware ausführen.
Dieser Artikel wird Host-Einstellungen speziell für die Verwendung in der "Home" gehostet, dh Sprechen Sie über
GPU PASSTHROUGH .
Einführung
Zunächst einige Worte zur Virtualisierung im Allgemeinen. Laut
Wikipedia :
Virtualisierung ist die Bereitstellung einer Reihe von Computerressourcen oder ihrer logischen Kombination, die von der Hardwareimplementierung abstrahiert sind und gleichzeitig eine logische Isolierung von Computerprozessen bieten, die auf derselben physischen Ressource ausgeführt werden.
Dies wird sowohl mithilfe von Anwendungen (z. B. VirtualBox, VMware) als auch auf der Ebene von Systemen erreicht, die die Hardwarevirtualisierung unterstützen (z. B. KVM, ESXi, Hyper-V). Im letzteren Fall ist der Leistungsverlust im Vergleich zu nativen Systemen
minimal .
Im Folgenden werden in diesem Artikel die Einstellungen des Open Source-Virtualisierungssystems
Proxmox beschrieben, da es mäßig benutzerfreundlich ist, über ein Webformular leicht auf die Konsole zugegriffen werden kann und auf einer Reihe von Debian + kvm basiert, die zahlreiche Anleitungen und Beschreibungen im Netzwerk enthalten d.h. Dokumentation einschließlich und auf Russisch.
Hardwareanforderungen
Wir werden brauchen:
- Prozessor und Motherboard mit Unterstützung für VT-x, VT-d von
Intel oder AMD-Vi, IOMMU von AMD. Seien Sie nicht faul und geben Sie an, ob Ihre Kopie diese Anforderungen unterstützt.
Wie für Motherboards. Ich empfehle grundsätzlich nicht, Eisen mit mittelmäßiger Verkabelung auf der Stromversorgungsplatine anzutreiben. Mit
Z270 und
Z390 ignorieren Sie die orange Zone oder lassen Sie auf Lager arbeiten.
- 2 Grafikkarten, ein Spiel (im Netzwerk für weniger Probleme bei der Weiterleitung an die virtuelle Maschine loben sie die roten, aber persönlich hat alles mit der Grafikkarte von den grünen geklappt), die zweite für den Host. In meinem Fall ist es in den Prozessor integriert.
- 1-2 Monitore und Kabel zu ihnen, um
- Ein Paar Tastatur- und Maussets erleichtert das Arbeiten und Konfigurieren von Systemen
- Ein zweiter PC oder Tablet, der mit dem lokalen Netzwerk verbunden ist, um Einstellungen über ein Webformular vorzunehmen.
Installation und Einstellungen
Ich habe die folgende Spielkonfiguration verwendet:
- Der PC für die Host-Konfiguration wurde auf einem weit vom besten Motherboard entfernten Modell erstellt, aber in englischen Foren wird er von dieser Firma sehr oft gelobt, da seine Hardware am häufigsten für solche Dinge geeignet ist:
Prozessor - i7 8700k
Mutter - ASRock Z390M Pro4
Grafikkarte - INNO3D GeForce GTX 1070 iChill X4
- zweiter PC (Morefine-M1s Mini-PC),
- 2 Mäuse,
- 1 Tastatur auf dem Host, auf anderen Geräten, auf denen ich Software verwendet habe,
- 3 Verbindungen zum Dell U2713HM-Monitor (VGA - für die integrierte Grafikkarte, HDMI - für die GTX1070, auf dem DVI befindet sich ein Mini-PC. Das Umschalten zwischen den Videosignalen erfolgte über das Monitormenü)
Stufe 0 - Aktivieren Sie auf dem Motherboard VT-d: Aktivieren, Intel Vitrualization Technology: Aktivieren, Primärer Graphx-Adapter: VGA, Über 4G Decodierung: Aktivieren. Stellen Sie nach Möglichkeit sicher, dass Sie den auswählen, auf dem der Host arbeiten soll, d. H. schwächere Grafikkarte und wechseln Sie dazu.
1. Stufe - Installieren Sie Proxmox auf dem Host. Dafür:
1.1. Laden Sie das Disk-
Image von der offiziellen Website herunter
1.2. Wir schreiben das Bild mit
speziellen Programmen auf das Flash-Laufwerk
1.3. Wir booten vom USB-Flash-Laufwerk
und führen die Installation durch, wobei angegeben wird , welche Festplatte installiert werden soll, geben das Kennwort für den zukünftigen Root-Benutzer ein und legen die Netzwerkeinstellungen explizit fest.
2. Stufe - Verbindung über ein Netzwerk über eine Webschnittstelle mit einem zweiten PC oder
Tablet (in meinem Fall war es ein Mini-PC) an den Host und konfigurieren Sie Proxmox für dieses
Handbuch über eine Textkonsole.

Es gibt eine kleine Nuance, die Software kosten kann, aber ich entschied, dass das Ändern des vorherigen Motherboards einfacher wäre, weil Das Gigabyte-Board erfüllte diese Anforderung nicht:
1) Führen Sie "dmesg |" aus Befehl grep ecap ».
2) In den IOMMU-Zeilen gibt der Hexadezimalwert nach "ecap" an, ob die Interrupt-Neuzuordnung unterstützt wird. Wenn das letzte Zeichen dieses Werts 8, 9, a, b, c, d, e oder f ist, wird die Interrupt-Neuzuordnung unterstützt. Beispielsweise gibt "ecap 1000" an, dass keine Interrupt-Remapping-Unterstützung vorhanden ist. "Ecap 10207f" zeigt die Unterstützung der Interrupt-Neuzuordnung an, da das letzte Zeichen ein "f" ist.
Die Interrupt-Neuzuordnung wird nur aktiviert, wenn jede IOMMU dies unterstützt.
Wenn die Bedingung erfüllt ist, fahren Sie fort.
Die Einstellungen sind also:
Wir öffnen die Datei mit einem Befehl von der Konsole aus (Sie müssen das Doppelgittersymbol nicht eingeben, daher werde ich im Text des Befehls von dem trennen, was in die Datei eingegeben werden muss).
## nano /etc/default/grub
Ersatz machen
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
für Intel-Prozessoren
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
für AMD-Prozessoren
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
Als nächstes geben wir den Befehl
## update-grub
Dann starten wir den Host über die Weboberfläche neu
PC-Grub-Datei im Artikel # If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="Proxmox Virtual Environment" GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on" GRUB_CMDLINE_LINUX="" # Disable os-prober, it might add menu entries for each guest GRUB_DISABLE_OS_PROBER=true # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Disable generation of recovery mode menu entries GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1"
Fügen Sie der Konfigurationsdatei die erforderlichen Treiber hinzu
## nano /etc/modules
# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. vfio vfio_iommu_type1 vfio_pci vfio_virqfd
Wir schreiben in die Konsole
## lspci
Eine Liste der für die Weiterleitung verfügbaren Geräte wird auf dem Bildschirm angezeigt. Wir finden das Gerät mit der Grafikkarte, die uns interessiert. In meinem Fall sind dies 2 Geräte in der Grafikkartengruppe und Ton unter den Adressen 01: 00.0 und 01: 00.1. Daher registriere ich die Gruppe sofort.
## nano /etc/pve/qemu-server/vmid.conf
hostpci0: 01:00
Wir schreiben einen Befehl in die Konsole, um das Modell und seine ID zu bestimmen
## lspci -n -s 01:00
01: 00.0 0300: 10de: 1b81 (rev a2)
01: 00.1 0403: 10de: 10f0 (rev a1)
Bearbeiten Sie nun die Datei für unsere Grafikkarte (in Ihrem Fall ist die ID anders).
## nano /etc/modprobe.d/vfio.conf
options vfio-pci ids=10de:1b81,10de:10f0
Wir legen das schwarze Blatt des Fahrers ein
## nano /etc/modprobe.d/blacklist.conf
blacklist radeon blacklist nouveau blacklist nvidia
Jetzt erstellen wir über die Weboberfläche und bearbeiten die Einstellungsdatei der virtuellen Maschine über die Konsole. Hier löst sich die Zeile "args:", weil Ohne diese Funktion erkennt der Grafikkartentreiber die Virtualisierung. Durch Ersetzen des Gerätenamens, genauer gesagt hv_vendor_id = willitwork, wird das Problem mit dem
Fehler 43 behoben, den der Videotreiber des Geräts generieren kann. In proxmox gibt es eine virtuelle Maschinennummer, die als Name verwendet wird.
## nano /etc/pve/qemu-server/<vmid>.conf
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=willitwork,kvm=off' ..... bios: ovmf ..... hostpci0: 01:00.0,pcie=1 ..... machine: q35
Einstellungsdatei für die virtuelle PC-Maschine im Artikel args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=willitwork,kvm=off' bios: ovmf boot: dcn bootdisk: sata0 cores: 8 cpu: host hostpci0: 01:00.0,pcie=1 ide2: local:iso/ru-en_windows_10_1803_x86-x64.iso,media$ machine: q35 memory: 16384 net0: e1000=EA:20:FA:6A:D6:A0,bridge=vmbr0 numa: 0 ostype: win10 sata0: local-lvm:vm-100-disk-0,size=120G scsihw: virtio-scsi-pci smbios1: uuid=751edeca-d249-4c0d-9ded-b59d929df0f1 sockets: 1 usb0: host=1-8.4 usb1: host=1-8.3 vmgenid: b75aeb27-3102-458d-8e23-18cd27796dc1
Starten Sie nun den Host neu und starten Sie die virtuelle Maschine.
3. Stufe -
Installieren Sie über die Remote-Videokonsole
Windows und Treiber. In meinem Fall erkannte Windows zuerst den Proxmox-Videotreiber für die Arbeit über die Videokonsole, fand dann den Treiber für die GTX1070 und lud nach der Aktualisierung über das Internet (erzwungene Suche nach Treibern im Netzwerk) den Treiber herunter und installierte ihn, den ich für die Spielvideokarte benötigte.
4. Stufe - Starten Sie die virtuelle Maschine neu, schalten Sie die Anzeige des Videostreams auf dem Monitor auf den Grafikkartenanschluss und ... in meinem Fall hat alles sofort funktioniert, keine Fehler 43 ... Gleichzeitig ist der Desktop als Nr. 2 definiert.
Ich habe versucht, das Blue-ray-Video zu starten - kein Problem, es gab keine Verzögerungen und Friese bei der Videosequenz, ich habe Warhammer online gestartet - es wurde gestartet und es war angenehm, im PvP zu spielen, ich habe GTA5 gestartet, die Geschichte ist aufgetaucht, ich habe ganz bequem gedreht. Optisch gibt es keine Leistungsverluste.
Wenn wir die gesamte Festplatte weiterleiten müssen, müssen wir in der Einstellungsdatei der virtuellen Maschine die folgende Zeile hinzufügen:
ide0: volume = / dev / sda
oder
sata0: volume = / dev / sda
Insbesondere welche sda / sdb / sdc / usw. kann in der Weboberfläche angegeben werden.

PS
Zu einem Fass Honig gibt es eine Fliege in der Salbe. Der integrierte Sound kann nicht separat geworfen werden, da In seiner Gruppe befinden sich andere Geräte, die nach dem Weiterleiten der Soundkarte an die virtuelle Maschine für den Host bis zur nächsten Hostüberlastung verschwinden. In meinem Fall ist es
00: 1f.0 ISA-Brücke: Intel Corporation-Gerät a305 (Version 10)
00: 1f. 3 Audiogerät: Intel Corporation Gerät a348 (Version 10)
00: 1f.4 SMBus: Intel Corporation Gerät a323 (Version 10)
00: 1f.5 Serieller Buscontroller [0c80]: Intel Corporation Device a324 (Version 10)
00: 1f.6 Ethernet-Controller: Intel Corporation-Gerät 15bc (Version 10)
Das heißt, Ton oder über ein Videokabel zu einem Monitor oder einer externen Soundkarte. USB-Anschlüsse werden problemlos geroutet. Leider ist es derzeit ungelöst. Es besteht die Möglichkeit, über RDP oder
SPICE eine Remoteverbindung von einem anderen PC zum Spiel
herzustellen . In diesem Fall ist alles in Ordnung
Die Weiterleitung der Grafikkarte läuft nicht immer einwandfrei wie in meinem Fall, entweder Fehler 43 oder etwas anderes stört. Andere Einstellungen, die helfen können,
werden hier beschrieben. Idealerweise müssen Sie das Netzwerk nach erfolgreichen Setups durchsuchen und sich auf diese konzentrieren, da dies für mich angezeigt wurde. Außerdem gibt es eine
Liste von Hardware , mit der ich das Gleiche wie ich erreichen kann, die jedoch nicht vollständig ist.
UPDATE1:
Ein paar Anmerkungen zur Peripherie:
1. So bringen Sie die Tastatur vom PS / 2-Port zur VM:
Geben Sie zuerst den Befehl in die Konsole ein
## dmesg | grep Eingabe
Wir suchen einen Text im Text
...
Eingabe: AT Translated Set 2 Tastatur als / Geräte / Plattform / i8042 / serio0 / Eingabe / Eingabe
2...
Denken Sie an die Nummer
2 am Ende, es kann anders sein. Fügen Sie dann in der VM-Einstellungsdatei der Zeile Folgendes hinzu:
args: -object 'input-linux, id = kbd, evdev = / dev / input / event
2 , grab_all = on, repeat = on'
Einfügen von
2 am Ende von evdev = / dev / input / event
2Für eine Maus - ähnlich.
2. Über USB:
Bei USB-Geräten ist dort alles einfacher, Geräte werden direkt aus dem Webformular nach ID gescrollt oder Sie können den Port vollständig portieren. Es gibt jedoch eine Nuance - wenn Sie aus irgendeinem Grund nicht wie ich ein Audiogerät in die VM werfen können, weil Es ist in einer Gruppe mit Schlüsselcontrollern enthalten, ohne die der Host nicht vollständig arbeiten kann. Die Weiterleitung des Anschlusses / Geräts über USB löst dieses Problem, aber der Ton kann nach einiger Zeit abfallen, zischen / summen und andere ... usw. gleichzeitig auf dem nativen Gerät Alles wird großartig für das System. In diesem Fall muss nicht der Port / das Gerät, sondern der USB-Controller selbst als PCIe-Gerät gemäß der im Artikel angegebenen Methode weitergeleitet werden. Und alles wird sich dramatisch verbessern. Gleichzeitig ist es nach dem Starten der VM mit solchen Einstellungen nicht mehr möglich, andere Geräte von diesem Controller über den Host weiterzuleiten.
3. Festplatten können über eine Controller-Weiterleitung als PCIe-Gerät gemäß der im Artikel angegebenen Methode weitergeleitet werden (ich empfehle nicht, den im Motherboard integrierten Controller weiterzuleiten, der nur an PCIe angeschlossen ist) oder direkt:
geh zu
## cd / dev / disk / by-id
durch dir schauen wir auflistung ...
Wir kopieren Zeilen des Formulars ata-WDC_WD40EFRX-68WT0N6_WD-WCC4E1AC9SX9, in denen die Verbindungsschnittstelle, die Marke und die Seriennummer der Festplatte registriert sind. Öffnen Sie dann die VM-Konfigurationsdatei und schreiben Sie:
sata1: volume = / dev / disk / by-id / ata-WDC_WD40EFRX-68WT0N6_WD-WCC4E1AC9SX9
und alles funktioniert, wobei zu beachten ist, dass sata0-sata5, d.h. Für eine VM darf die Anzahl der so verbundenen Festplatten, einschließlich der virtuellen, 6 Stück nicht überschreiten.