3 puntos por GN⁺ 2024-08-01 | 1 comentarios | Compartir por WhatsApp

Docker-OSX

Introducción a Docker-OSX

  • Docker-OSX es un proyecto que permite ejecutar macOS dentro de un contenedor Docker.
  • Ofrece varias funciones, como reenvío X11, investigación de seguridad de iMessage y funcionamiento de USB para iPhone.
  • Permite realizar investigación de seguridad de macOS en Linux y Windows.

Comunidad y soporte

  • Docker-OSX opera servidores de Discord y Telegram.
  • Hay una comunidad activa donde se pueden compartir preguntas e ideas.
  • Las consultas personales se pueden hacer a través de LinkedIn o del sitio web de Sick.Codes.

Autor y contribuidores

  • Este proyecto es mantenido por Sick.Codes.
  • La lista de contribuidores adicionales se puede consultar en GitHub.
  • Se agradece a los proyectos OSX-KVM y KVM-OpenCore.

Guía de inicio rápido

  • Se ofrece un video tutorial de instalación.
  • Los usuarios de Windows deben revisar las notas adicionales.
  • Soporta varias versiones de macOS, como Catalina, Big Sur, Monterey, Ventura y 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 preinstalado

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

Sistemas antiguos

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

Descarga manual y uso de la imagen

  • Si el CDN de Docker es lento, se puede descargar la imagen manualmente y usarla.
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 de USB para iPhone

  • Se ofrecen varios métodos para el passthrough de USB para iPhone.
  • En PCs de escritorio se pueden seguir las instrucciones de @Silfalion.
  • En laptops se puede usar usbfluxd para un passthrough estilo red.

Optimización de rendimiento

  • Se puede mejorar el rendimiento usando osx-optimizer.
  • Ofrece varias opciones de optimización, como omitir la pantalla de inicio de sesión GUI y desactivar la indexación de Spotlight.

Aumento del espacio en disco

  • Se puede mover /var/lib/docker a una unidad externa para liberar espacio en disco.
  • El tutorial detallado se puede consultar en el sitio web de Sick.Codes.

Detalles técnicos

  • Soporta varias versiones de macOS: High Sierra, Mojave, Catalina, Big Sur, Monterey, Ventura y Sonoma.
  • Soporta iPhone OSX KVM, compartición de carpetas, passthrough USB, SSH y VNC.
  • Ejecución basada en reenvío X11 y QEMU + KVM.

Requisitos

  • Se requieren al menos 20 GB de espacio en disco.
  • Es necesario habilitar la virtualización en la configuración del BIOS.
  • Se requiere un host x86_64 KVM.

TODO

  • Documentación para investigación de seguridad.
  • Soporte para aceleración por GPU.
  • Soporte para virt-manager.

Imágenes Docker

  • La imagen de Docker-OSX se puede descargar desde Docker Hub.

Soporte para Kubernetes

  • Docker-OSX soporta Kubernetes.
  • El Helm Chart de Kubernetes y la documentación se pueden consultar en el directorio helm.

Soporte

  • Las preguntas pequeñas o incidencias se pueden consultar mediante GitHub Issues.
  • También se ofrece soporte profesional.

Licencia y contribuciones

  • Docker-OSX se distribuye bajo la licencia GPL v3+.
  • Las contribuciones son bienvenidas y la lista de contribuidores se puede consultar en GitHub.

Proyectos similares

  • Dock Droid: ejecutar Android en un contenedor Docker.
  • Docker-eyeOS: ejecutar iOS 12 en un contenedor Docker.
  • Bluebubbles.app: ejecutar un relé de iMessage en Docker.

Descargo de responsabilidad

  • Si te interesa la investigación de seguridad de Apple, este proyecto te será útil.
  • Los temas legales de Hackintosh, OSX-KVM y Docker-OSX son responsabilidad de cada quien.

Resumen de GN⁺

  • Docker-OSX es una herramienta útil que permite ejecutar macOS dentro de un contenedor Docker.
  • Soporta varias versiones de macOS y es útil para investigación de seguridad y desarrollo.
  • Tiene una comunidad activa y ofrece varias opciones de instalación y optimización.
  • Proyectos con funciones similares incluyen Dock Droid y Docker-eyeOS.

1 comentarios

 
GN⁺ 2024-08-01
Comentarios en Hacker News
  • Para la aceleración por GPU, se debe usar una dGPU compatible (AMD RX 6xxx o superior) mediante PCI passthrough

    • La iGPU de Intel funciona hasta Comet Lake y algunos Ice Lake, pero las versiones más recientes no funcionan
    • Parece que la compilación de macOS para Apple Silicon no podrá emularse por el momento
    • La virtualización no es posible en hosts AMD porque Intel VT-x no existe en AMD
    • Hay una forma de hacer funcionar Docker mediante emulación con versiones antiguas de VirtualBox
  • Proyectos relacionados:

    • Docker-OSX: ejecutar una VM de macOS en Docker
    • macOS in QEMU in Docker: ejecutar macOS en QEMU dentro de Docker
  • En una entrevista con Sick Codes se habla del enfoque hacia este producto

    • OSX-PROXMOX: un proyecto que ofrece una función similar en un home server con Proxmox
    • Se usa en un HP Z420 Xeon y es muy estable junto con GPU passthrough
  • Estaría genial ejecutar la sincronización de iCloud en un home server

    • Actualmente no hay una buena forma de respaldar físicamente iCloud en un home server/NAS
  • Este proyecto actualmente solo ofrece imágenes Docker x86-64, no aarch64

  • Me gustaría intentar hacer builds de iOS

    • Quisiera explorar la posibilidad de compilar con Unity, React Native, etc.
    • Aunque el tiempo de compilación tardara 5 veces más, sonaría genial en términos de libertad
  • QEMU se ejecuta dentro de un contenedor, y macOS se ejecuta dentro de él

    • La instalación es muy sencilla y no hay pasos de configuración manual
    • Es muy probable que viole claramente la EULA de macOS
    • El software de Apple solo puede ejecutarse en computadoras de marca Apple
    • Recomiendan descargar el proyecto y guardarlo, ya que podría recibir una advertencia legal
  • Me pregunto si la licencia permite redistribuir imágenes de macOS

    • Dudo si este proyecto está distribuyendo copias ilegales en Docker Hub
  • Me pregunto si el avance se detendrá cuando salga una versión reciente de macOS sin soporte para Intel

    • También me pregunto si se puede ejecutar Docker dentro de este contenedor para correr macOS dentro de macOS
  • No me gusta que se use incorrectamente el término "USB passthrough"

    • En realidad se usa un "proxy USB over ethernet"
    • Esto provoca varias desventajas que el passthrough normal no tiene