Ich kann vermelden, dass ich die Monterey VM in ESXi 7.0U3g-20328353 nun vollkommen lauffähig eingerichtet bekommen habe. (Siehe Bilder 1, 5, 10, 10.5, 11, 12, 13, 14)
- RX480 passthrough via HDMI wird nativ erkannt und ist voll Metal unterstützt. Es hängt mit nativer Auflösung und 60Hz an einem 34" 21:9 Monitor.
- VMware default VGA device habe ich im VMKernel lahm gelegt, die dann zwar die herkömmliche Bedienung der DCUI deaktiviert. Das ist aber nach initialer Einrichtung eh hinfällig, und wenn absolut notwendig schnell wieder Rückgängig zu machen.
- Zwei RX480 passthrough configuration flags, insb. das für den path des VBIOS dumps habe ich der vmx hinzugefügt.
- RX480 HDMI sound passthrough funktioniert auch problemlos.
- Apple Keyboard (USB) und MX Master 3 Maus (USB Receiver) habe ich ebenso via passthrough über die vendor und device ID quirks in der boot.cfg, vmware config file und in der vmx eingetragen und der VM Konfiguration lauffähig hinzugefügt (btw. beide input devices hängen gar an einem manuellen USB Hub).
- USB 3.1 passthrough funktioniert auch anstandslos.
- Snapshots funktionieren entgegen so mancher Hinweise mit Passthrough VMs einwandfrei
Das Ganze ohne irgendwelche OC, extra kext oder sonstige OSX verarztungen. Vorhin habe ich auch das letzt aktuelle Overlay auf 12.6.2 drüber gebügelt. Die VM habe ich mir so eingerichtet dass ich sie direkt am Monitor über die Infrastruktur nutzen kann, oder via ARD. ESXi steuere ich via WebUI, oder zentralisiert über das vCenter.
Jetzt könnte man noch darüber nachdenken den Hypervisor anzuweisen die OSX VM nach Systemstart -> Hypervisor wird initialisiert -> VM wird initialisiert -> passthrough ist aktiv - automagisch starten zu lassen, um dem Nutzer den Eindruck einer physischen Workstation mit single major release zu vermitteln.
Was in den layern drum herum läuft, bekäme derjenige nicht mit. Im Prinzip wäre dass das wie es der Hackintosh klassisch vermittelte. Das ist ist alles in der ESXi bzw. VM Verwaltung einfach einzurichten.
Man müsse sich nur die administrative Umsetzung durch den Kopf gehen lassen wie der Hypervisor reagiert, würde der Nutzer die OSX VM ausschalten und erwarten, dass die Workstation (eigentlich Host) sich ebenso wie ein fat-client verhält und sich ebenso ausschaltet.
Da der Host vor dem Herunterfahren in den Wartungsmodus geschaltet werden sollte, müsste das per script geregelt werden (wenn man das will).
Im Prinzip sind die Schritte schnell und einfach zu erledigen.
(wer kein Passthrough anwenden will ist schon nach Punkt 7 fertig)
- ESXi installieren und grundlegend einrichten (getestet habe ich dies mit 7.0U3g-20328353 und 8.0-20513097. Bilder zeigen 7.0U3g).
- Passenden ESXi unlocker für die ESXi Version besorgen und anwenden (frei Verfügbar in David Parsons GitHub repository https://github.com/DrDonk/esxi-unlocker).
- Gezogenes OSX Major release in ISO konvertieren (hier eine nette Anleitung für Monterey, gilt aber auch modeliert für Ventura https://nishtahir.com/how-to-create-a-macos-iso).
- VMware Storage einrichten.
- VM erstellen und grundlegend einrichten. Nicht vergessen den NIC der VM als Adaptertyp mit VMXNET 3 zu versehen.
- OSX Image ausrollen und grundlegend einrichten, und aktuelle VMware Tools für OSX manuell ziehen, und unter OSX installieren.
- ARD übers LAN auf der VM aktivieren.
- Ich empfehle präventiv über Verwalten -> System -> Erweiterte Einstellungen über die Suche pcie zu bemühen und den Schlüssel VMkernel.Boot.disableACSCheck auf true zu setzen um die PCIe Funktionsprüfung bei Systemstart außer Kraft zu setzen. (siehe Bild 2).
- VMKernel VGA Treiber via ESXCLI command lahmlegen, damit die passthrough GPU devices nicht nach jedem Neustart wieder manuell aktiviert werden müssen. Via SSH auf dem Host folgende Syntax: esxcli system settings kernel set -s vga -v FALSE (Vorsicht, ab dem Punkt quittiert die DCUI mit einem black screen s.o.) -> Neustart.
- Überprüfen ob in der Hypervisor Geräte Verwaltung die gewünschten passthrough Geräte aktiv sind, falls nicht manuell setzen -> Neustart (siehe Bild 3).
- In der VM Konfiguration die PCIe passthrough GPU als PCIe device hinzufügen. Nicht die dynamische PCIe Variante nutzen. Dies hat zumindest direkt über den Hypervisor nicht funktioniert. (siehe Bild 4).
- **ANMERKUNG: SIEHE UNTEN** svga.present in der vmx auf FALSE setzen (Vorsicht, ab hier funktioniert die VM Webkonsole nicht mehr. Ist aber auch nicht wichtig da ARD aktiv ist, und zusätzlich passthrough eingerichtet wird).
- Passenden VBIOS dump besorgen oder eigenen auslesen (hier gibts passende, aber genau auf die Spezifikation achten. Beispiel hier: https://www.techpowerup.com/vg…ercolor-rx480-8192-160923).
- VBIOS dump am besten direkt ohne großartige Verzeichnis Verschachtelungen auf dem VM Storage ablegen.
- Neuen Parameter pciPassthru0.opromEnabled in der vmx auf TRUE setzen (siehe Bild 9)
- Neuen Parameter pciPassthru0.filename in der vmx mit dem richtigen Pfad zum VBIOS dump auf dem VM Storage setzen. Beispiel: ../Powercolor.RX480.8192.160923.rom (siehe Bild 9).
- VM Starten, PCIe passthrough sollte nun funktionieren nachdem der Monitor auf den richtigen Port gesetzt wurde. Ich will es nur erwähnen, ich habe gelesen dass PCIe GPU passthrough angeblich nur via HDMI und nicht via DP möglich ist. Ich kann das aktuell nicht überprüfen. HDMI funktioniert bei mir mit einem 7m Kabel.
- Ggf. weitere PCIe passthrough Geräte wie beispeilsweise HDMI sound oder USB 3.1 (falls vorhanden) in der VM Konfiguration als PCIe device hinzufügen. Welche Geräte vom Gesamtsystem überhaupt passthrough fähig und unterstützt sind, sieht man in der ESXi Geräte Verwaltung. (siehe Bild 3).
Das wärs eigentlich. Wer jetzt noch gewisse HID USB Geräte wie Maus und Tastatur (bei mir Apple USB Kabel und Logitech MX Master 3 USB Receiver) via passthrough durschleifen will macht hier weiter....
- Via SSH auf den Hypervisor einloggen und mittels lsusb -v | grep -E '(^Bus|HID)' die vendor und device ID für die gewünschten HID passthrough USB Geräte ermitteln. Bei der Lesart sind die Werte nach der ID entscheidend (vendorID:deviceID). (siehe Bild 6).
Beispiel:
Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
- Wichtig: im folgenden bekommen die Werte ein 0x vorgeschoben. Z.B. 0xXXXX = vendorId und 0xYYYY = deviceId.
- /etc/vmware/config mit vi konfigurieren und die eigenen ermittelte Werte nach folgenden Schema eintragen und speichern... (siehe Bild 8).
Beispiel:
usb.quirks.device0 = "0x05ac:0x0250 allow"
usb.quirks.device1 = "0x046d:0xc52b allow"
- Nun muss dem VMKernel mitgeteilt werden nicht ständig die USB Eingabegeräte für sich zu proklamieren. Dazu wird ein vi auf /bootbank/boot.cfg gemacht und die kernelopt Zeile anvisiert. (siehe Bild 7).
Beispiel:
kernelopt=autoPartition=FALSE
Dort wird direkt dahinter mit einem space mit der eigenen ermittelten vendor und device ID folgende Lesart hinterlegt vendorID:deviceID:minRevision:maxRevision:quirkName
Beispiel für ein Gerät:
CONFIG./USB/quirks=0x05ac:0x0250:0x0000:0xffff:UQ_KBD_IGNORE
Beispiel für zwei Geräte:
CONFIG./USB/quirks=0x05ac:0x0250:0x0000:0xffff:UQ_KBD_IGNORE:0x046d:0xc52b:0x0000:0xffff:UQ_KBD_IGNORE
Beispiel der ganzen kernelopt Zeile anhand zwei Geräte:
kernelopt=autoPartition=FALSE CONFIG./USB/quirks=0x05ac:0x0250:0x0000:0xffff:UQ_KBD_IGNORE:0x046d:0xc52b:0x0000:0xffff:UQ_KBD_IGNORE
- Der VM muss das passthrough der USB HID Geräte ebenso anhand der vendor und device ID mitgeteilt werden. Dies kann via ESXi WebUI in der erweiterten Konfiguration der VM, oder shell gemacht werden. Hier können die Werte wie zuvor in der /etc/vmware/config eingetragen übernommen werden. Die vmx findet man in der shell unter /vmfs/volumes/VM Storage (share)/..... (siehe Bild 9 und **ANMERKUNG** unten).
Beispiel Auszug der vmx mit den neu eingetragenen Werte in der shell:
usb.generic.allowHID = "TRUE"
usb.quirks.device0 = "0x05ac:0x0250 allow"
usb.quirks.device1 = "0x046d:0xc52b allow"
- Hypervisor Neustart
- Zuletzt muss der VM Konfiguration noch die neuen USB HID Geräte in der ESXi WebUI hinzugefügt werden. (siehe Bild 4).
Danach ist alles erledigt und sollte den ganz oben genannten Stand mit allen PCIe + USB HID passthrough Geräte entsprechen.
**ANMERKUNG**
Ab Punkt 11 erwähne ich stets die vmx. Damit ist u.a. die Konfiguration der VM gemeint. Es gibt prinzipiell zwei Vorgehensweisen diese zu editieren. Über die ESXi WebUI in der GUI -> VM -> bearbeiten -> VM Optionen -> Erweitert -> Konfigurationsparameter -> Konfiguration bearbeiten.
Oder in der shell im Verzeichnis der VM selber /vmfs/volumes/VM Storage (share)/...../ .... .vmx
Wichtig hierbei sind zwei Dinge. Egal ob in der GUI oder in der shell -> es sollte penibel auf die Syntax geachtet werden. Ein space zu viel, ein Schreibfehler ist schnell gemacht, man sieht den Wald vor lauter Bäumen nicht - es funktioniert nicht, oder die VM startet nicht oder verhält sich komisch. Auch sollte klar sein, dass wie die Parameter eingetragen werden sich von der GUI zur shell und anders herum, unterscheiden. Dass obwohl sie beide in der vmx landen.
Es gibt hier nicht "den richtigen Weg". Je nach situation ist mal der Eine, oder der Andere Weg besser.
Beispiel mit selben Parameter...
über die WebUI:
pciPassthru0.opromEnabled TRUE
pciPassthru0.filename ../Powercolor.RX480.8192.160923.rom
über die shell in der .vmx:
pciPassthru0.opromEnabled = "TRUE"
pciPassthru0.filename = "../Powercolor.RX480.8192.160923.rom"
Ich hoffe das hilft jemanden weiter. Und immer schön den Hypervisor in den Wartungsmodus setzen bevor Neu gestartet oder heruntergefahren wird!
Bilder zum HowTo hängen anbei.