3 points par GN⁺ 2024-08-01 | 1 commentaires | Partager sur WhatsApp

Docker-OSX

Présentation de Docker-OSX

  • Docker-OSX est un projet qui permet d’exécuter macOS dans un conteneur Docker.
  • Il propose diverses fonctionnalités comme le transfert X11, la recherche en sécurité sur iMessage et la prise en charge USB de l’iPhone.
  • Il permet de mener des recherches en sécurité sur macOS depuis Linux et Windows.

Communauté et support

  • Docker-OSX dispose de serveurs Discord et Telegram.
  • Il existe une communauté active où partager des questions ou des idées.
  • Pour les demandes personnelles, il est possible de passer par LinkedIn ou le site web de Sick.Codes.

Auteur et contributeurs

  • Ce projet est maintenu par Sick.Codes.
  • La liste des contributeurs supplémentaires est disponible sur GitHub.
  • Des remerciements sont adressés aux projets OSX-KVM et KVM-OpenCore.

Guide de démarrage rapide

  • Un tutoriel vidéo d’installation est proposé.
  • Les utilisateurs de Windows doivent consulter les notes supplémentaires.
  • Plusieurs versions de macOS sont prises en charge, notamment Catalina, Big Sur, Monterey, Ventura et 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 préinstallé

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

Systèmes plus anciens

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

Télécharger et utiliser manuellement l’image

  • Si le CDN de Docker est lent, il est possible de télécharger l’image manuellement et de l’utiliser.
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

Passthrough USB pour iPhone

  • Plusieurs méthodes sont proposées pour le passthrough USB de l’iPhone.
  • Sur un PC de bureau, il est possible de suivre les instructions de @Silfalion.
  • Sur un ordinateur portable, on peut utiliser usbfluxd pour un passthrough de type réseau.

Optimisation des performances

  • Il est possible d’améliorer les performances avec osx-optimizer.
  • Diverses options d’optimisation sont proposées, comme ignorer l’écran de connexion GUI ou désactiver l’indexation Spotlight.

Augmenter l’espace disque

  • Il est possible de déplacer /var/lib/docker vers un disque externe afin de libérer de l’espace.
  • Un tutoriel détaillé est disponible sur le site web de Sick.Codes.

Détails techniques

  • Prise en charge de plusieurs versions de macOS : High Sierra, Mojave, Catalina, Big Sur, Monterey, Ventura et Sonoma.
  • Prise en charge de l’iPhone OSX KVM, du partage de dossiers, du passthrough USB, de SSH et de VNC.
  • Exécution basée sur le transfert X11 et sur QEMU + KVM.

Prérequis

  • Au moins 20 Go d’espace disque sont nécessaires.
  • La virtualisation doit être activée dans les paramètres du BIOS.
  • Un hôte KVM x86_64 est requis.

TODO

  • Documentation pour la recherche en sécurité.
  • Support de l’accélération GPU.
  • Support de virt-manager.

Images Docker

  • Les images Docker-OSX peuvent être téléchargées depuis Docker Hub.

Support Kubernetes

  • Docker-OSX prend en charge Kubernetes.
  • Le Helm Chart Kubernetes et la documentation sont disponibles dans le répertoire helm.

Support

  • Pour les petites questions ou les problèmes mineurs, il est possible d’utiliser les issues GitHub.
  • Un service de support professionnel est également proposé.

Licence et contribution

  • Docker-OSX est distribué sous licence GPL v3+.
  • Les contributions sont les bienvenues, et la liste des contributeurs est disponible sur GitHub.

Projets similaires

  • Dock Droid : exécuter Android dans un conteneur Docker.
  • Docker-eyeOS : exécuter iOS 12 dans un conteneur Docker.
  • Bluebubbles.app : exécuter un relayeur iMessage dans Docker.

Clause de non-responsabilité

  • Si vous vous intéressez à la recherche en sécurité autour d’Apple, ce projet peut être utile.
  • Les questions juridiques liées à Hackintosh, OSX-KVM et Docker-OSX relèvent de la responsabilité de chacun.

Résumé de GN⁺

  • Docker-OSX est un outil utile qui permet d’exécuter macOS dans un conteneur Docker.
  • Il prend en charge plusieurs versions de macOS et se révèle pratique pour la recherche en sécurité et le développement.
  • Le support communautaire est actif, avec diverses options d’installation et d’optimisation.
  • Parmi les projets offrant des fonctions similaires figurent Dock Droid et Docker-eyeOS.

1 commentaires

 
GN⁺ 2024-08-01
Avis Hacker News
  • Pour l’accélération GPU, il faut utiliser un dGPU pris en charge (AMD RX 6xxx ou plus récent) via le passthrough PCI

    • Les iGPU Intel fonctionnent jusqu’à Comet Lake et certains Ice Lake, mais pas les versions récentes
    • Les builds macOS pour Apple Silicon semblent impossibles à émuler pour le moment
    • La virtualisation est impossible sur un hôte AMD, car Intel VT-x n’existe pas chez AMD
    • Il existe une méthode pour faire fonctionner Docker par émulation avec d’anciennes versions de VirtualBox
  • Projets liés :

    • Docker-OSX : exécuter une VM macOS dans Docker
    • macOS in QEMU in Docker : exécuter macOS dans QEMU
  • Une interview avec Sick Codes discute de l’approche de ce produit

    • OSX-PROXMOX : projet offrant une fonctionnalité similaire sur un home server Proxmox
    • Utilisé sur un HP Z420 Xeon, avec une très grande stabilité et le passthrough GPU
  • Exécuter la synchronisation iCloud sur un home server serait très intéressant

    • Il n’existe actuellement pas de bonne méthode pour sauvegarder physiquement iCloud sur un home server/NAS
  • Ce projet ne fournit actuellement que des images Docker x86-64, pas de version aarch64

  • J’aimerais essayer des builds iOS

    • Je veux explorer la possibilité de compiler avec Unity, React Native, etc.
    • Même si le temps de build était 5 fois plus long, ce serait intéressant du point de vue de la liberté
  • QEMU s’exécute dans un conteneur, et macOS s’exécute à l’intérieur

    • L’installation est très simple et ne comporte aucune étape de configuration manuelle
    • Cela enfreint très probablement de façon évidente l’EULA de macOS
    • Les logiciels Apple ne peuvent être exécutés que sur des ordinateurs de marque Apple
    • Il est recommandé de télécharger le projet et de le conserver, car il pourrait recevoir un avertissement juridique
  • Je me demande si la redistribution d’images macOS est autorisée par la licence

    • Je me demande si ce projet distribue des copies illégales sur Docker Hub
  • Je me demande si le projet s’arrêtera lorsqu’une version récente de macOS sans prise en charge Intel sortira

    • Je me demande s’il est possible d’exécuter Docker dans ce conteneur afin de lancer macOS dans macOS à l’intérieur de macOS
  • Je déteste l’usage incorrect du terme « USB passthrough »

    • En réalité, c’est un « USB over ethernet proxy » qui est utilisé
    • Cela entraîne plusieurs inconvénients qu’un passthrough classique n’a pas