Proxmox MacOS virtualisieren (KVM)

Aus Laub-Home Wiki

Vorbereitung

  • In einem Debian/ Ubuntu ein MacOS Recovery Installations-Medium erstellen, hierzu mittels fetch-macOS.py zuerst das passende Apple Recovery DMG laden (Catalina, Big Sur ist noch etwas buggy):
# use easy to use apple media fetcher python script
wget https://raw.githubusercontent.com/thenickdude/OSX-KVM/master/fetch-macOS.py

# run it
python ./fetch-macOS.py
  • Das daraus resultierende ~500MB “BaseSystem.dmg” in ein ISO umwandeln
# Install the dmg2img package and...
dmg2img BaseSystem.dmg Catalina-installer.iso

# Or use qemu-img from the qemu-utils package to do it instead:
qemu-img convert BaseSystem.dmg -O raw Catalina-installer.iso
  • Das ~ 2GB große Catalina-installer.iso über die Proxmox Admin Web UI in den ISO-Store hochladen
  • Für die spätere Installation wird der Apple OSK Authentication Key benötigt, welcher nur von einem echten Mac ausgelesen werden kann - glücklicherweise ist dieser OSK AuthKey auf allen Macs identisch und lässt sich über eine einfache Google Suche schnell finden :)

VM konfigurieren

Über den "create VM" Wizard folgende Basis anlegen, hier nur die auszufüllenden/ zu ändernden Einstellungen:

  • VM-ID: beliebige ID, wird später nochmals benötigt
  • Name: beliebiger Hostname
  • CD/DVD: hier das OpenCore ISO auswählen
  • Guest OS: Other / Version "-"
  • Graphic Card: VMware compatible
  • SCSI Controller: VirtIO SCSO
  • BIOS: OVMF (UEFI), "Add EFI Disk" aktivieren
  • Machine: q35
    -cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc
    
  • Hard Disk: SATA 0, 64GB, "Discard" + "SSD Emulation" aktiviert
  • CPU: Cores anpassen je nach Verfügbarkeit der echten CPU, Type: Penryn
  • Memory: anpassen nach Verfügbarkeit, "Ballooning" deaktivieren
  • Network: Model: VMware vmxnet3


Die VM noch NICHT starten!


Weitere Anpassungen:

  • In den VM Optionen muss "use tablet for pointer" aktiviert sein
  • In den VM Boot Optionen die Reihenfolge ändern und das OpenCore ISo als erstes starten lassen
  • In den VM Hardware Optionen ein weiteres CD/DVD Laufwerk als IDE0 und dem Catalina-installer.iso hinzufügen
  • Auf dem Proxmox Server via Console oder Shell folgende Kernel Option setzen:
echo 1 > /sys/module/kvm/parameters/ignore_msrs

... und falls gewünscht reboot-resistant amchen:

echo "options kvm ignore_msrs=Y" >> /etc/modprobe.d/kvm.conf && update-initramfs -k all -u
  • Auf dem Proxmox Server via Console oder Shell die VM Konfigurationsdatei /etc/pve/qemu-server/VM-ID.conf manuell anpassen:


Folgendes als eine Zeile hinzufügen: (Apple OSK Authentication Key und USB Keyboard)

args: -device isa-applesmc,osk="THE-SPECIAL-OSK-KEY" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2


Nun muss in die gleiche Zeile am Ende noch ein CPU Argument, je nach Intel oder AMD CPU:

# Intel 
-cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc

# AMD/ more compatible
-cpu Penryn,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc,+pcid,+ssse3,+sse4.2,+popcnt,+avx,+avx2,+aes,+fma,+fma4,+bmi1,+bmi2,+xsave,+xsaveopt,check


Als letztes noch die ISO Zeilen finden (ide0, ide2) und den Part media=cdrom durch cache=unsafe ersetzen (die ISOs werden dann statt als CD/DVD Laufwerk als Festplatte behandelt)

MacOS Installieren

  • die VM nun starten
  • wenn alles funktioniert erscheint nun das OpenCore boot Menü; hier dann macOS Base System auswählen
  • die HDD muss zuerst formatiert werden, dazu über das Disk Utility die HDD löschen und mit APFS formatieren (encrypted nicht verwenden)
  • danach mit Reinstall macOS die Installation beginnen
  • nach der ersten Installationsrunde rebootet die VM, hier diesmal dann macOS Installer auswählen
  • nach Abschluss erfolgt nochmals ein reboot, hier dann die zu bootende HDD auswählen (Name wurde während des Formatierens zuvor festgelegt)
  • die Installationsfragen beantworten und iCloud Login nicht verwenden

OpenCore Installation permanent machen

Bisher starten wir jedesmal von der OpenCore ISO, welche sich wie folgt auf die HDD installieren lässt:

  • In einem Terminal mit diskutil list die beiden EFI Disks ermitteln
  • sudo dd if=<source> of=<dest> ausführen, wobei <source> die OpenCore EFI Disk ist (~157MB) und <dest> die eigentliche EFI Disk der HDD (welche zuvor mit AFPS formatiert wurde).

Beispiel: sudo dd if=/dev/disk1s1 of=/dev/disk2s1

  • nun die VM herunterfahren und die beiden ISOs (OpenCore sowie Catalina-Installer) entfernen; entweder via unmount oder löschen des Laufwerks.
  • abschließend noch die VM Bootreihenfolge wieder ändern um als erstes von der HDD zu starten

Anpassungen in den OpenCore/ EFI Einstellungen

EFI Partition zum Bearbeiten mounten

sudo mkdir /Volumes/EFI
sudo mount -t msdos /dev/disk0s1 /Volumes/EFI

Nun kann die Datei /Volumes/EFI/OC/config.plist entsprechend in einem Text-Editor bearbeitet werden.

Bildschirmauflösung ändern

In der Datei /Volumes/EFI/OC/config.plist im Abschnitt UEFI/Output/Resolution kann die Auflösung angepasst werden - es muss eine von der VM Hardware unterstütze Auflösung sein (kann beim starten der VM im Boot Screen über das OVMF Menü geprüft werden)