darwin-vm:在 QEMU 中运行 iOS/macOS 的开源虚拟机方案,支持虚拟 iPhone 17 至 12 及 M 系列 Mac
> darwin-vm:基于 QEMU 的 Darwin 系统虚拟机,让 iPhone 和 Apple Silicon Mac 在 PC 上运行成为可能。
## 项目简介
darwin-vm 是一个用 Python 编写的开源工具,它封装并优化了 QEMU 对 Apple Darwin 内核(包括 iOS 和 macOS)的模拟能力。该项目目前支持虚拟 iPhone 17/16/15/14/13/12 以及搭载 M5-M1 芯片的 Apple Silicon Mac。通过它,你可以在 x86_64 或 ARM64 的 Linux/Windows 主机上启动这些系统,无需真实的苹果硬件。
项目地址:https://github.com/jprx/darwin-vm
## 解决的痛点
苹果生态的封闭性使得 iOS 和 macOS 无法在非苹果硬件上原生运行。传统的 Hackintosh 方案仅适用于 Intel Mac 的 macOS,且对硬件要求苛刻,更无法运行 iOS。而 QEMU 虽然理论上可以模拟 ARM 架构,但直接配置 Apple Silicon 的启动流程(包括 BootROM、iBoot、DeviceTree、ramdisk 等)极其复杂,普通用户几乎不可能手动完成。darwin-vm 正是为了解决这一痛点而生:它自动化了 QEMU 的配置、固件加载、内核引导和磁盘镜像制作,让普通开发者也能在几行命令内启动一个虚拟 iPhone 或 Mac。
## 快速上手
### 安装
确保你的系统已安装 Python 3.9+ 和 QEMU(建议 8.0 以上版本)。然后克隆仓库并安装依赖:
bash
git clone https://github.com/jprx/darwin-vm.git
cd darwin-vm
pip install -r requirements.txt
### 创建虚拟 iPhone 17 镜像
bash
python darwin-vm.py create-ipsw --model iPhone17,1 --output ipsw/
该命令会从苹果官方服务器下载对应的 IPSW 固件,并自动提取所需的根文件系统。首次运行需要联网,后续可离线使用。
### 启动虚拟 iPhone 17
bash
python darwin-vm.py run --ipsw ipsw/iPhone17.1.ipsw --ram 4G --display gtk
启动后,QEMU 窗口会显示 iOS 的引导界面,你可以在其中进行基础操作(由于缺少 GPU 加速,实际体验会有些卡顿,但系统能正常运行)。
### 启动虚拟 macOS(M 系列)
bash
python darwin-vm.py create-mac --model Mac15,1 --output macos/
python darwin-vm.py run --macos macos/ --display cocoa
## 核心亮点
1. **一键自动化**:无需手动编写 QEMU 命令行参数,所有固件、设备树、内核参数都自动处理。
2. **多设备支持**:覆盖 iPhone 12 至 17 全系列,以及 M1-M5 的 Mac 机型(包括 MacBook Air/Pro、Mac mini 等)。
3. **可定制性**:支持自定义 RAM、CPU 核心数、磁盘大小、显示后端(GTK/Cocoa/无头模式),还可挂载宿主机目录作为共享文件夹。
4. **持续更新**:项目活跃,紧跟苹果新机型发布,例如 iPhone 17 的支持已在第一时间加入。
5. **纯软件方案**:不依赖 KVM/HAXM 等硬件虚拟化,可在任何 QEMU 支持的平台上运行,包括云服务器。
## 适用场景
- **开发者调试**:需要测试 iOS 应用或 macOS 库,但手头没有苹果设备或不想使用实体机。
- **安全研究**:分析 iOS 系统漏洞、逆向工程,或研究 Darwin 内核行为,虚拟环境便于快照和回滚。
- **教育演示**:在课堂或演讲中展示 iOS/macOS 界面,无需携带多台设备。
- **自动化测试**:在 CI/CD 流水线中启动虚拟 iOS 环境进行压力测试或 UI 自动化。
## 同类项目对比
| 项目 | 支持系统 | 易用性 | 硬件要求 | 性能 |
|------|----------|--------|----------|------|
| darwin-vm | iOS + macOS (M系列) | 高(一键脚本) | 无特别要求 | 中(软件模拟) |
| Corellium | iOS 全系列 | 高(商业服务) | 无(云) | 高(硬件加速) |
| QEMU + 手动配置 | 仅 macOS (Intel) | 低(需精通引导流程) | 需 Intel CPU | 低 |
| Hackintosh | 仅 macOS (Intel) | 中(需匹配硬件) | 需特定 Intel 主板/GPU | 高(原生运行) |
相比 Corellium 这类商业服务,darwin-vm 完全免费且开源;相比手动 QEMU 配置,它大幅降低了门槛;相比 Hackintosh,它还能运行 iOS 系统,且不挑硬件。当然,性能上由于是纯软件模拟,无法与原生或半虚拟化方案相比,但胜在通用性和便利性。
## 技术细节与局限
- **启动方式**:项目使用 QEMU 的 `-machine virt` 类型,配合自定义的 BootROM 和 iBoot 镜像,模拟 Apple 的引导链。
- **图形加速**:默认使用 VGA 或 virtio-gpu,不支持 Metal 或 OpenGL 加速,因此 UI 动画会较卡。但可通过 `-display spice` 配合 virt-viewer 获得稍好的体验。
- **网络**:默认使用 usernet 用户模式网络,可访问互联网,但无法从外部访问虚拟机内服务。
- **存储**:支持 raw/qcow2 格式,可动态扩容,但快照功能依赖 QEMU 自身。
- **已知限制**:部分 iOS 版本可能因苹果的安全机制(如 Secure Enclave 模拟不完整)无法完全启动;macOS 的某些系统服务(如 iCloud 登录)无法正常工作。
## 总结
darwin-vm 是当前开源社区中少有的能同时模拟 iOS 和 Apple Silicon Mac 的实用工具。它把复杂的 QEMU 配置封装成简单的 Python 命令,极大降低了体验 Apple 系统的门槛。虽然性能有限,但对于开发、研究和学习来说已经足够。如果你对苹果系统内部机制感兴趣,或需要在不购买苹果设备的情况下运行 iOS/macOS,darwin-vm 是一个非常值得尝试的解决方案。
项目链接:https://github.com/jprx/darwin-vm