3 Punkte von GN⁺ 2024-08-01 | 1 Kommentare | Auf WhatsApp teilen

Docker-OSX

Einführung in Docker-OSX

  • Docker-OSX ist ein Projekt, mit dem sich macOS in einem Docker-Container ausführen lässt.
  • Es bietet verschiedene Funktionen wie X11-Forwarding, Sicherheitsforschung zu iMessage und iPhone-USB-Betrieb.
  • Damit lässt sich macOS-Sicherheitsforschung unter Linux und Windows durchführen.

Community und Support

  • Docker-OSX betreibt einen Discord- und einen Telegram-Server.
  • Es gibt eine aktive Community, in der Fragen und Ideen geteilt werden können.
  • Persönliche Anfragen sind über LinkedIn oder die Sick.Codes-Website möglich.

Autor und Mitwirkende

  • Dieses Projekt wird von Sick.Codes gepflegt.
  • Eine Liste weiterer Mitwirkender ist auf GitHub zu finden.
  • Den Projekten OSX-KVM und KVM-OpenCore wird gedankt.

Schnellstart-Anleitung

  • Ein Video-Installations-Tutorial wird bereitgestellt.
  • Windows-Nutzer sollten die zusätzlichen Hinweise prüfen.
  • Unterstützt werden verschiedene macOS-Versionen wie Catalina, Big Sur, Monterey, Ventura und Sonoma.

Catalina

docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  sickcodes/docker-osx:latest

Big Sur

docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  sickcodes/docker-osx:big-sur

Monterey

docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  -e GENERATE_UNIQUE=true \
  -e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/…' \
  sickcodes/docker-osx:monterey

Ventura

docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  -e GENERATE_UNIQUE=true \
  -e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/…' \
  sickcodes/docker-osx:ventura

Sonoma

docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  -e GENERATE_UNIQUE=true \
  -e CPU='Haswell-noTSX' \
  -e CPUID_FLAGS='kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on' \
  -e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/…' \
  sickcodes/docker-osx:sonoma

Catalina vorinstalliert

docker pull sickcodes/docker-osx:auto
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  -e GENERATE_UNIQUE=true \
  sickcodes/docker-osx:auto

Ältere Systeme

High Sierra

docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  sickcodes/docker-osx:high-sierra

Mojave

docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  sickcodes/docker-osx:mojave

Image manuell herunterladen und verwenden

  • Wenn das CDN von Docker langsam ist, kann das Image manuell heruntergeladen und verwendet werden.
wget https://images2.sick.codes/mac_hdd_ng_auto.img
docker run -it \
  --device /dev/kvm \
  -p 50922:10022 \
  -v "${PWD}/mac_hdd_ng_auto.img:/image" \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e "DISPLAY=${DISPLAY:-:0.0}" \
  -e GENERATE_UNIQUE=true \
  -e MASTER_PLIST_URL=https://raw.githubusercontent.com/sickcodes/Docker-OSX/… \
  sickcodes/docker-osx:naked

iPhone-USB-Passthrough

  • Es werden verschiedene Methoden für iPhone-USB-Passthrough bereitgestellt.
  • Auf Desktop-PCs kann den Anleitungen von @Silfalion gefolgt werden.
  • Auf Laptops ist netzwerkartiges Passthrough mit usbfluxd möglich.

Performance-Optimierung

  • Mit osx-optimizer lässt sich die Performance verbessern.
  • Es werden verschiedene Optimierungsoptionen bereitgestellt, darunter das Überspringen des GUI-Login-Bildschirms und das Deaktivieren der Spotlight-Indizierung.

Speicherplatz erweitern

  • Durch das Verschieben von /var/lib/docker auf ein externes Laufwerk kann Speicherplatz freigemacht werden.
  • Ein ausführliches Tutorial ist auf der Sick.Codes-Website zu finden.

Technische Details

  • Unterstützt verschiedene macOS-Versionen: High Sierra, Mojave, Catalina, Big Sur, Monterey, Ventura, Sonoma.
  • Unterstützung für iPhone OSX KVM, Ordnerfreigabe, USB-Passthrough, SSH und VNC.
  • Ausführung auf Basis von X11-Forwarding sowie QEMU + KVM.

Anforderungen

  • Mindestens 20 GB Speicherplatz erforderlich.
  • Virtualisierung muss in den BIOS-Einstellungen aktiviert sein.
  • Ein x86_64-KVM-Host ist erforderlich.

TODO

  • Dokumentation für Sicherheitsforschung.
  • Unterstützung für GPU-Beschleunigung.
  • Unterstützung für virt-manager.

Docker-Image

  • Das Docker-OSX-Image kann von Docker Hub heruntergeladen werden.

Kubernetes-Unterstützung

  • Docker-OSX unterstützt Kubernetes.
  • Kubernetes-Helm-Chart und Dokumentation sind im Verzeichnis helm zu finden.

Support

  • Kleine Fragen oder Probleme können über GitHub-Issues gemeldet werden.
  • Es werden auch professionelle Support-Services angeboten.

Lizenz und Beiträge

  • Docker-OSX steht unter der GPL-v3+-Lizenz.
  • Beiträge sind willkommen, und die Liste der Mitwirkenden ist auf GitHub zu finden.

Ähnliche Projekte

  • Dock Droid: Android in einem Docker-Container ausführen.
  • Docker-eyeOS: iOS 12 in einem Docker-Container ausführen.
  • Bluebubbles.app: iMessage-Relayer in Docker ausführen.

Haftungsausschluss

  • Wer sich für Apple-Sicherheitsforschung interessiert, wird dieses Projekt nützlich finden.
  • Rechtliche Fragen zu Hackintosh, OSX-KVM und Docker-OSX liegen in der eigenen Verantwortung.

Zusammenfassung von GN⁺

  • Docker-OSX ist ein nützliches Tool, mit dem sich macOS in einem Docker-Container ausführen lässt.
  • Es unterstützt verschiedene macOS-Versionen und ist für Sicherheitsforschung und Entwicklung nützlich.
  • Die Community-Unterstützung ist aktiv, und es werden verschiedene Installations- und Optimierungsoptionen geboten.
  • Projekte mit ähnlicher Funktionalität sind Dock Droid und Docker-eyeOS.

1 Kommentare

 
GN⁺ 2024-08-01
Hacker-News-Kommentare
  • Für GPU-Beschleunigung muss eine per PCI-Passthrough unterstützte dGPU (AMD RX 6xxx oder höher) verwendet werden

    • Intel-iGPUs funktionieren bis Comet Lake und teilweise Ice Lake, neuere Versionen jedoch nicht
    • macOS für Apple-Silicon-Builds scheint vorerst nicht emulierbar zu sein
    • Virtualisierung auf AMD-Hosts ist nicht möglich, da Intel VT-x auf AMD nicht vorhanden ist
    • Es gibt eine Möglichkeit, Docker mit älteren VirtualBox-Versionen per Emulation zum Laufen zu bringen
  • Verwandte Projekte:

    • Docker-OSX: macOS-VM in Docker ausführen
    • macOS in QEMU in Docker: macOS in QEMU ausführen
  • In einem Interview mit Sick Codes wird der Ansatz hinter diesem Produkt diskutiert

    • OSX-PROXMOX: ein Projekt mit ähnlicher Funktionalität auf einem Proxmox-Home-Server
    • Läuft auf einem HP Z420 Xeon und ist mit GPU-Passthrough sehr stabil
  • Es wäre cool, die iCloud-Synchronisierung auf einem Home-Server laufen zu lassen

    • Derzeit gibt es keine gute Möglichkeit, iCloud physisch auf einen Home-Server/NAS zu sichern
  • Dieses Projekt bietet derzeit nur x86-64-Docker-Images, nicht aber aarch64

  • Würde gern iOS-Builds ausprobieren

    • Möchte die Build-Möglichkeiten mit Unity, React Native usw. erkunden
    • Selbst wenn die Build-Zeit fünfmal länger wäre, wäre es im Hinblick auf die Freiheit ziemlich cool
  • QEMU läuft im Container, und darin läuft macOS

    • Die Einrichtung ist sehr einfach und erfordert keine manuellen Konfigurationsschritte
    • Verstößt möglicherweise eindeutig gegen die macOS-EULA
    • Apple-Software darf nur auf Computern mit Apple-Branding ausgeführt werden
    • Es wird empfohlen, das Projekt herunterzuladen und zu archivieren, da rechtliche Abmahnungen drohen könnten
  • Ich frage mich, ob die Weiterverbreitung von macOS-Images durch die Lizenz erlaubt ist

    • Fraglich ist, ob dieses Projekt illegale Kopien über Docker Hub verteilt
  • Ich frage mich, ob es zum Stillstand kommt, sobald eine neue macOS-Version ohne Intel-Unterstützung erscheint

    • Ich frage mich, ob man Docker in diesem Container ausführen kann, um macOS innerhalb von macOS auszuführen
  • Ich hasse es, wenn der Begriff „USB-Passthrough“ falsch verwendet wird

    • Tatsächlich wird ein „USB-over-Ethernet-Proxy“ verwendet
    • Das bringt mehrere Nachteile mit sich, die normales Passthrough nicht hat