Commit 12c4bd
2026-04-10 22:33:27 OtterWiki: Add VM 201 macOS Sequoia – setup, OpenCore config, iCloud, full rollback instructions| container-und-vms.md .. | |
| @@ 16,6 16,7 @@ | |
| | CT | 112 | claude-code | läuft | `192.168.178.82` / `terminal.ls-cloud.biz` | | |
| | CT | 114 | games | läuft | `192.168.178.84` / `games.ls-cloud.biz` | | |
| | VM | 200 | Windows11Pro | gestoppt | Proxmox-Konsole / [[vm-200-windows11pro]] | | |
| + | | VM | 201 | macos-sequoia | läuft | Proxmox-Konsole / [[vm-201-macos-sequoia]] | |
| {{DataTable}} | |
| /dev/null .. vm-201-macos-sequoia.md | |
| @@ 0,0 1,189 @@ | |
| + | # VM 201 – macOS Sequoia (Hackintosh) |
| + | |
| + | Stand: April 2026 |
| + | |
| + | > [!NOTE] |
| + | > macOS Sequoia als KVM-VM auf Proxmox. Läuft über OpenCore-Bootloader mit SMBIOS-Spoofing – kein nativer Apple-Support, aber vollständig funktionsfähig inkl. iCloud. |
| + | |
| + | ## Basisdaten |
| + | |
| + | | Parameter | Wert | |
| + | |---|---| |
| + | | **VM-ID** | `201` | |
| + | | **Name** | `macos-sequoia` | |
| + | | **OS** | macOS Sequoia 15.6.1 (24G90) | |
| + | | **CPU** | `host` passthrough, 4 Cores | |
| + | | **RAM** | 8.192 MB | |
| + | | **Firmware** | OVMF (UEFI), kein Secure Boot | |
| + | | **Machine** | q35 | |
| + | | **Display** | VMware SVGA | |
| + | | **Netzwerk** | vmxnet3, DHCP | |
| + | |
| + | ## Disk-Übersicht |
| + | |
| + | | Slot | LVM-Volume | Inhalt | Größe | |
| + | |---|---|---|---| |
| + | | `efidisk0` | `vm-201-disk-0` | OVMF UEFI NVRAM | 4 MB | |
| + | | `sata0` | `vm-201-disk-1` | macOS BaseSystem (Recovery-Image) | 1,3 GB | |
| + | | `sata2` | `vm-201-disk-3` | Macintosh HD (macOS-Installation) | 100 GB | |
| + | | `sata3` | `vm-201-disk-2` | OpenCore v21 Bootloader (GPT-Disk) | 152 MB | |
| + | |
| + | **Boot-Reihenfolge:** `sata3` (OpenCore) → `sata0` (BaseSystem) → `sata2` (Macintosh HD) |
| + | |
| + | ## Bootloader – OpenCore |
| + | |
| + | - **Projekt:** [KVM-Opencore v21](https://github.com/thenickdude/KVM-Opencore) (REL-100, März 2024) |
| + | - **SMBIOS:** `iMacPro1,1` |
| + | - **SecureBootModel:** `j137` (T1-Chip-Simulation – für iCloud zwingend erforderlich) |
| + | - **ScanPolicy:** `0x0` (alle Disk-Typen) |
| + | |
| + | > [!WARNING] |
| + | > Das OpenCore-„ISO" ist kein echtes ISO 9660, sondern ein **raw GPT-Disk-Image**. Es muss als **SATA-Disk** (nicht als CD-ROM) eingebunden werden – sonst findet OVMF keinen Bootloader. |
| + | |
| + | ## SMBIOS-Seriennummern (iCloud-fähig) |
| + | |
| + | | Feld | Wert | |
| + | |---|---| |
| + | | SystemSerialNumber | `C02YJRZXHX87` | |
| + | | MLB | `C02914310QXJG361M` | |
| + | | SystemUUID | `6B7D3ACC-FA73-4437-94ED-3CEF31EF773C` | |
| + | | ROM | `BC2411E13CD2` (= VM-MAC ohne Doppelpunkte) | |
| + | |
| + | ## OpenCore config.plist bearbeiten |
| + | |
| + | > [!IMPORTANT] |
| + | > Nur bei **gestoppter VM** durchführen. |
| + | |
| + | ```bash |
| + | qm stop 201 |
| + | mkdir -p /mnt/oc_efi |
| + | losetup -f --show -o $((40*512)) /dev/pve/vm-201-disk-2 # gibt /dev/loopX aus |
| + | mount /dev/loopX /mnt/oc_efi |
| + | nano /mnt/oc_efi/EFI/OC/config.plist |
| + | umount /mnt/oc_efi && losetup -d /dev/loopX |
| + | qm start 201 |
| + | ``` |
| + | |
| + | ## iCloud & Apple-Dienste |
| + | |
| + | | Dienst | Status | |
| + | |---|---| |
| + | | iCloud Drive, Fotos, Keychain | ✅ funktioniert | |
| + | | App Store | ✅ funktioniert | |
| + | | iMessage / FaceTime | ⚠️ manchmal blockiert – 24h warten, dann nochmal | |
| + | | Handoff, AirDrop, Sidecar | ❌ kein Bluetooth/WLAN in VM | |
| + | | GPU-Beschleunigung | ❌ kein Passthrough | |
| + | | Sleep / Standby | ❌ in macOS deaktivieren | |
| + | |
| + | **Troubleshooting „Prüfung fehlgeschlagen":** |
| + | 1. SecureBootModel muss `j137` sein (nicht `Disabled`) |
| + | 2. iPhone/iPad: Einstellungen → Apple-ID → Passwort & Sicherheit → Bestätigungsdialog? |
| + | 3. Nochmal versuchen oder kurz über anderen IP-Bereich (Hotspot) |
| + | |
| + | ## Neue SMBIOS-Seriennummern generieren |
| + | |
| + | ```bash |
| + | # macserial herunterladen (einmalig) |
| + | curl -L https://github.com/acidanthera/OpenCorePkg/releases/download/1.0.7/OpenCore-1.0.7-RELEASE.zip -o /tmp/oc.zip |
| + | unzip /tmp/oc.zip 'Utilities/macserial/macserial.linux' -d /tmp/oc/ |
| + | chmod +x /tmp/oc/Utilities/macserial/macserial.linux |
| + | |
| + | # 3 Seriennummern generieren, einen Satz auswählen |
| + | /tmp/oc/Utilities/macserial/macserial.linux -m iMacPro1,1 -n 3 |
| + | |
| + | # EFI mounten und patchen |
| + | qm stop 201 |
| + | losetup -f --show -o $((40*512)) /dev/pve/vm-201-disk-2 |
| + | mount /dev/loopX /mnt/oc_efi |
| + | |
| + | python3 << 'PYEOF' |
| + | import plistlib, uuid |
| + | with open('/mnt/oc_efi/EFI/OC/config.plist', 'rb') as f: |
| + | p = plistlib.load(f) |
| + | pi = p['PlatformInfo']['Generic'] |
| + | pi['SystemSerialNumber'] = 'NEUE_SERIAL' # ← anpassen |
| + | pi['MLB'] = 'NEUE_MLB' # ← anpassen |
| + | pi['SystemUUID'] = str(uuid.uuid4()).upper() |
| + | pi['ROM'] = bytes.fromhex('BC2411E13CD2') |
| + | with open('/mnt/oc_efi/EFI/OC/config.plist', 'wb') as f: |
| + | plistlib.dump(p, f) |
| + | print('Fertig:', pi['SystemSerialNumber']) |
| + | PYEOF |
| + | |
| + | umount /mnt/oc_efi && losetup -d /dev/loopX |
| + | qm start 201 |
| + | ``` |
| + | |
| + | --- |
| + | |
| + | ## VM vollständig entfernen (Rollback) |
| + | |
| + | > [!WARNING] |
| + | > Diese Schritte löschen die VM und **alle zugehörigen Daten unwiderruflich**. Kein Backup nötig, aber sicher sein. |
| + | |
| + | ### Schritt 1 – VM stoppen und vollständig löschen |
| + | |
| + | ```bash |
| + | qm stop 201 |
| + | qm destroy 201 --purge |
| + | ``` |
| + | |
| + | `--purge` entfernt automatisch alle LVM-Volumes: |
| + | - `vm-201-disk-0` (EFI NVRAM, 4 MB) |
| + | - `vm-201-disk-1` (BaseSystem, 1,3 GB) |
| + | - `vm-201-disk-2` (OpenCore, 152 MB) |
| + | - `vm-201-disk-3` (Macintosh HD, 100 GB) |
| + | - `/etc/pve/qemu-server/201.conf` |
| + | |
| + | ### Schritt 2 – Heruntergeladene Dateien entfernen |
| + | |
| + | ```bash |
| + | # OpenCore ISO aus local-Storage |
| + | rm -f /var/lib/vz/template/iso/OpenCore-v21.iso |
| + | |
| + | # BaseSystem-Dateien auf HDD (hdd5tb) |
| + | rm -f /mnt/storage/pve-data/iso/BaseSystem.dmg |
| + | rm -f /mnt/storage/pve-data/iso/BaseSystem.img |
| + | rm -f /mnt/storage/pve-data/iso/BaseSystem.chunklist |
| + | |
| + | # OSX-KVM Projektverzeichnis |
| + | rm -rf /opt/OSX-KVM |
| + | |
| + | # macserial / OpenCorePkg (falls vorhanden) |
| + | rm -rf /tmp/oc/ /tmp/oc.zip /tmp/oc107* /tmp/oc107.zip |
| + | ``` |
| + | |
| + | ### Schritt 3 – Optionale Aufräumarbeiten |
| + | |
| + | ```bash |
| + | # Mount-Verzeichnisse entfernen |
| + | rmdir /mnt/oc_efi /mnt/macos_installer 2>/dev/null || true |
| + | |
| + | # Tools deinstallieren (nur wenn nicht anderweitig genutzt) |
| + | apt remove -y dmg2img p7zip-full |
| + | ``` |
| + | |
| + | ### Verifikation – alles weg? |
| + | |
| + | ```bash |
| + | qm list # VM 201 darf nicht erscheinen |
| + | lvs | grep vm-201 # darf keine Ausgabe liefern |
| + | ls /var/lib/vz/template/iso/ | grep -i opencore |
| + | ls /mnt/storage/pve-data/iso/ | grep -iE 'base|opencore' |
| + | ls /opt/OSX-KVM 2>/dev/null && echo 'NOCH DA' # nichts ausgeben = OK |
| + | ``` |
| + | |
| + | --- |
| + | |
| + | ## Prüfung / Status |
| + | |
| + | ```bash |
| + | qm status 201 |
| + | qm config 201 |
| + | ``` |
| + | |
| + | ## Verwandte Seiten |
| + | |
| + | - [[container-und-vms]] |
| + | - [[vm-200-windows11pro]] |
| + | - [[infrastruktur-uebersicht]] |
