Proxmox MacOS virtualisieren (KVM)
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
- Aus dem Repo https://github.com/thenickdude/KVM-Opencore/releases/ das passende/ aktuellste OpenCore Paket laden (zum Zeitpunkt der Anleitung v10), entpacken und das ISO ebenfalls über die Proxmux 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)