Ich hatte mal wieder etwas Zeit: ich habe also nicht nur gefühlt den halben Keller umgeräumt, 4 Rechner umgezogen/umkonfiguriert, sondern auch noch einmal mit NVME-Boot auf alten Systemen (nicht erfolgreich) und NVIDIA Consumer-GPU-Passthrough (erfolgreich) herumgespielt.
Hardware: Intel S1200BTLR mit Xeon E3-1225v1
Graka: NVIDIA Geforce GT 610
USB-Controller:
Sedna – PCI Express 4 Port (4E) USB 3.0 Adapter
Hypervisor: ESXi-6.5.0-20170702001-standard
HOWTO: ESXi 6.5U1 NVIDIA CONSUMER GPU PASSTHROUGH
0. Vorbereitung:
a) BIOS-Settings (Mainboard-abhängig!): vt-x/vt-d sind Pflicht. Ich habe bei mir außerdem im BIOS "Dual Monitor" auf "enabled" gesetzt. Hat den kleinen Vorteil, dass der Host noch einen Bildschirm hat und zusätzlich die onboard-Grafik für die ESXi-Browserkonsole funktioniert. Macht die Fehlersuche ggf. etwas einfacher, man sieht z.B. den Purple-Screen-of-Death sofort.
Darüber hinaus habe ich UEFI-Boot eingestellt, allerdings auch Legacy BIOS von Adapterkarten (HBA, Graka & Co.) zugelassen.
Hinweis: ESXi habe ich dann auch von einem UEFI-Bootlaufwerk installiert.
b) In ESXi Passthrough für die gewünschten Geräte aktivieren (USB-Controller für Keyboard/Maus, Graka für...na was wohl).
1. Host: VM erstellen
Hinweis 1: ich habe als Startoption nichts verändert, d.h. die VM hat ein "legacy BIOS".
Hinweis 2: ich habe VMXNET3 als NIC ausgewählt.
2. Host: VM anpassen (Teil 1)
a) CPU-Einstellungen
b) RAM-Einstellungen
c) Erweiterte Einstellungen
d) USB-Controller durchreichen
3. VM: OS Installieren
Hinweis: bei mir Windows 10 64Bit Fall Creators Update (1709)
4. VM: VMware Tools installieren (ich mach immer "vollständig")
5. VM: Herunterfahren
(Vorsichtshalber, um den Ruhemodus zu vermeiden: cmd-->shutdown /s /t 0)
6. Host: VM anpassen (Teil 2)
a) Grafikkarte als PCI-Passthrough-Gerät hinzufügen
7. VM: starten / Windows konfigurieren
a) NVIDIA-Treiber installieren (ich hab den aus dem Windows-Update genommen)
b) reboot
c) VMware-GPU (VMware SVGA 3D) deaktivieren
d) reboot
EXKURS/OPTIONAL (falls VM-reboot den Host in einen ESXi-Purple-Screen-Of-Death schickt)
Hinweis: Ohne die Schritte 7.1 und 7.2 verabschiedet sich ESXi bisweilen in einen PSOD (purple screen of death), wenn man die VM über die Funktion im Windows-Startmenü (oder über shutdown-cmd) herunter fährt und dann wieder über den Webclient startet. Nach einem harten RESET des Hosts geht's dann aber wieder. Man muss also den Host auch jedes Mal restarten, wenn Windows einen Reboot will.
Bisserl Doof. Bei mir lässt sich die VM mit den Schritten in 7.1 und 7.2 sauber aus der VM heraus herunter fahren und über den ESXi Webclient dann auch wieder starten.
7.1. Host: VM anpassen (Teil 3)
Ich habe entsprechend diesem
Nvidia-Hinweis auch noch einen weiteren Parameter manuell eingefügt, nämlich
Code:
pciPassthru0.msiEnabled = FALSE
Ich hab das vorsichtshalber für alle meine durchgereichten Geräte gemacht (USB, GPU + GPU-Audio), würde wahrscheinlich reichen, das nur für die GPU zu machen:
7.2. Host: passthru.map editieren
Mit SSH auf den Host verbinden, Datei
/etc/vmware/passthru.map editieren und den Eintrag unter "# NVIDIA" von "bridge" auf "link" bzw.
d3d0 setzen. Sieht dann bei mir z.B. so aus:
Code:
# passthrough attributes for devices
# file format: vendor-id device-id resetMethod fptShareable
# vendor/device id: xxxx (in hex) (ffff can be used for wildchar match)
# reset methods: flr, d3d0, link, bridge, default
# fptShareable: true/default, false
(...)
# NVIDIA
#10de ffff bridge false
10de ffff link false
passthru.map (END)
8. Success!
"Old-school-Screenshot"
Exkurs/Bemerkungen: Mit dieser asbach-uralt Grafikkarte ging das alles erstaunlich einfach. Auch ein Reboot, sowohl der VM als auch des Hosts, führt zu keinen Problemen (im Netz liest man ab und an, dass dann Einstellungen verloren gehen). Auch musste ich keine besonderen manuellen Hardcore-Anpassungen vornehmen. Ging alles mit dem VMware Webclient.
Witzig: trotz der deaktivierten VMware-GPU funktioniert die Browser-Konsole! Windows in der VM erkennt (trotzdem) zwei Monitore und erweitert den Desktop. Auch Maus und Keyboard funktionieren in der Browser-Konsole, allerdings manchmal mit einem üblen Versatz des Mauszeigers auf dem Bildschirm zur "echten" Position. Dann hilft es, die Browser-Konsole zu schließen und neu zu öffnen. Damit ich nicht meinen Mauszeiger verliere und wahrscheinlich auch um sonstige weitere Fehler auszuschließen, habe ich in den Windows-Grafikeinstellungen eingestellt, dass Windows nur den "echten" Bildschirm verwendet ("Nur auf Bildschirm 2 anzeigen.") - Nachteil: dann funktioniert die Browserkonsole nicht mehr, sobald Windows gestartet ist. Nutzt man nur "Bildschirm 2", empfehle ich auch die VM ohne Broswerkonsole starten (statt Klick auf die Vorschau z.B. mit Rechtsklick auf die VM), sonst landet man ggf. in Windows bei 640x480 und muss das dann wieder manuell ändern...
Ich habe aber das Gefühl, dass Erfolg und Misserfolg sehr von der verwendeten Graka abhängen. Also: "Your mileage may vary."
Ich benutz' das Ding nur als "Surfbox" - 3D-Funktionalitäten werde ich daher nicht testen (können). Werde jetzt noch bisserl mit dem HDMI-Audio (theoretisch auch "passhthrough-bar") und Filmchen schauen experimentieren.
NACHTRAG zu ESXi 6.7:
Seit 6.7(U1?) reichen die oben beschriebenen Einstellungen teilweise nicht mehr, dass eine VM problemlos rebootet. Häufig funktioniert nach einem VM-Reboot die Nvidia passthrough-GPU nicht mehr und meldet "Error 43". Habe dazu einen
Workaround herausgeknobelt, der jedenfalls mit einer 2080Ti, ESXi 6.7U3 und einem AMD X399-Chipsatz / Threadripper funktioniert.