GN⁺: Docker에서 QEMU로 실행되는 macOS
(github.com/sickcodes)Docker-OSX
Docker-OSX 소개
- Docker-OSX는 Docker 컨테이너에서 macOS를 실행할 수 있게 해주는 프로젝트임.
- X11 포워딩, iMessage 보안 연구, iPhone USB 작동 등 다양한 기능을 제공함.
- Linux와 Windows에서 macOS 보안 연구를 수행할 수 있음.
커뮤니티 및 지원
- Docker-OSX는 Discord와 Telegram 서버를 운영 중임.
- 질문이나 아이디어를 공유할 수 있는 활발한 커뮤니티가 있음.
- 개인적인 문의는 LinkedIn이나 Sick.Codes 웹사이트를 통해 가능함.
저자 및 기여자
- 이 프로젝트는 Sick.Codes가 유지 관리함.
- 추가 기여자 목록은 GitHub에서 확인 가능함.
- OSX-KVM과 KVM-OpenCore 프로젝트에 감사의 인사를 전함.
빠른 시작 가이드
- 비디오 설치 튜토리얼 제공.
- Windows 사용자는 추가 노트를 확인할 것.
- Catalina, Big Sur, Monterey, Ventura, Sonoma 등 다양한 macOS 버전을 지원함.
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 사전 설치
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
구형 시스템
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
이미지 수동 다운로드 및 사용
- Docker의 CDN이 느릴 경우 수동으로 이미지를 다운로드하여 사용할 수 있음.
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 패스스루
- iPhone USB 패스스루를 위한 다양한 방법 제공.
- 데스크탑 PC에서는 @Silfalion의 지침을 따를 수 있음.
- 노트북에서는 usbfluxd를 사용하여 네트워크 스타일 패스스루 가능.
성능 최적화
- osx-optimizer를 사용하여 성능을 향상시킬 수 있음.
- GUI 로그인 화면 건너뛰기, Spotlight 인덱싱 비활성화 등 다양한 최적화 옵션 제공.
디스크 공간 증가
- /var/lib/docker를 외부 드라이브로 이동하여 디스크 공간을 확보할 수 있음.
- 자세한 튜토리얼은 Sick.Codes 웹사이트에서 확인 가능.
기술적 세부사항
- 다양한 macOS 버전 지원: High Sierra, Mojave, Catalina, Big Sur, Monterey, Ventura, Sonoma.
- iPhone OSX KVM, 폴더 공유, USB 패스스루, SSH 및 VNC 지원.
- X11 포워딩 및 QEMU + KVM 기반 실행.
요구사항
- 최소 20GB 이상의 디스크 공간 필요.
- BIOS 설정에서 가상화 활성화 필요.
- x86_64 KVM 호스트 필요.
TODO
- 보안 연구를 위한 문서화.
- GPU 가속 지원.
- virt-manager 지원.
Docker 이미지
- Docker Hub에서 Docker-OSX 이미지를 다운로드할 수 있음.
Kubernetes 지원
- Docker-OSX는 Kubernetes를 지원함.
- Kubernetes Helm Chart 및 문서는 helm 디렉토리에서 확인 가능.
지원
- 작은 질문이나 이슈는 GitHub 이슈를 통해 문의 가능.
- 전문적인 지원 서비스도 제공함.
라이선스 및 기여
- Docker-OSX는 GPL v3+ 라이선스를 따름.
- 기여를 환영하며, 기여자 목록은 GitHub에서 확인 가능.
유사 프로젝트
- Dock Droid: Docker 컨테이너에서 Android 실행.
- Docker-eyeOS: Docker 컨테이너에서 iOS 12 실행.
- Bluebubbles.app: Docker에서 iMessage 리레이어 실행.
면책 조항
- Apple 보안 연구에 관심이 있다면 이 프로젝트가 유용할 것임.
- Hackintosh, OSX-KVM, Docker-OSX의 법적 문제는 각자의 책임임.
GN⁺의 정리
- Docker-OSX는 Docker 컨테이너에서 macOS를 실행할 수 있게 해주는 유용한 도구임.
- 다양한 macOS 버전을 지원하며, 보안 연구 및 개발에 유용함.
- 커뮤니티 지원이 활발하며, 다양한 설치 및 최적화 옵션을 제공함.
- 비슷한 기능을 가진 프로젝트로는 Dock Droid와 Docker-eyeOS가 있음.
Hacker News 의견
-
GPU 가속을 위해서는 PCI 패스스루를 통해 지원되는 dGPU(AMD RX 6xxx 이상)를 사용해야 함
- Intel iGPU는 Comet Lake와 일부 Ice Lake까지 작동하지만, 최신 버전은 작동하지 않음
- Apple Silicon 빌드의 MacOS는 당분간 에뮬레이션이 불가능할 것으로 보임
- Intel VT-x가 AMD에 없기 때문에 AMD 호스트에서 가상화가 불가능함
- 오래된 VirtualBox 버전으로 Docker를 에뮬레이션을 통해 작동시키는 방법이 있음
-
관련 프로젝트:
- Docker-OSX: Docker에서 macOS VM 실행
- macOS in QEMU in Docker: QEMU에서 macOS 실행
-
Sick Codes와의 인터뷰에서 이 제품에 대한 접근 방식을 논의함
- OSX-PROXMOX: Proxmox 홈 서버에서 유사한 기능을 제공하는 프로젝트
- HP Z420 Xeon에서 사용 중이며, GPU 패스스루와 함께 매우 안정적임
-
홈 서버에서 iCloud 동기화를 실행하는 것이 멋질 것 같음
- 현재 iCloud를 홈 서버/NAS에 물리적으로 백업할 좋은 방법이 없음
-
이 프로젝트는 현재 x86-64 Docker 이미지만 제공하며, aarch64는 제공하지 않음
-
iOS 빌드를 시도해보고 싶음
- Unity, React Native 등을 사용하여 빌드 가능성을 탐색하고 싶음
- 빌드 시간이 5배 더 걸리더라도 자유로움 측면에서 멋질 것 같음
-
QEMU가 컨테이너에서 실행되고, 그 안에서 macOS가 실행됨
- 설치가 매우 간편하며 수동 설정 단계가 없음
- macOS EULA를 명백히 위반할 가능성이 있음
- Apple 소프트웨어는 Apple 브랜드 컴퓨터에서만 실행할 수 있음
- 프로젝트를 다운로드하여 보관할 것을 권장하며, 법적 경고를 받을 수 있음
-
MacOS 이미지를 재배포하는 것이 라이선스에 의해 허용되는지 궁금함
- 이 프로젝트가 Docker Hub에서 불법 복사본을 배포하는지 의문임
-
Intel 지원이 없는 최신 MacOS 버전이 출시되면 진행이 중단될지 궁금함
- 이 컨테이너 안에서 Docker를 실행하여 MacOS를 MacOS 안에서 실행할 수 있는지 궁금함
-
"USB 패스스루"라는 용어가 잘못 사용되는 것을 싫어함
- 실제로는 "USB over ethernet proxy"가 사용됨
- 이는 일반적인 패스스루가 가지지 않는 여러 단점을 초래함