Leviidev/Henge
效率与系统工具在支持 JIT 的 iPhone 和 iPad 上模拟运行完整 macOS。
项目介绍
Henge 让 macOS 运行在 iOS 和 iPadOS 设备上。iOS 不向应用开放 hypervisor,项目因此自己实现了 arm64 JIT、内存管理单元和虚拟设备,没有使用 QEMU 或 Virtualization.framework。它从 Apple 下载恢复镜像,并按 Mac 的方式在设备上恢复,不解密也不修改镜像。
macOS 通过虚拟 GPU 绘制,Henge 用 Metal 重放其命令。触屏充当触控板;在 iPad 上可以用妙控键盘或蓝牙键鼠直接操作 Mac。剪贴板在 macOS 与设备之间共享,共享文件夹同时出现在「文件」App 和 Mac 的主目录中。iPad 上新启动的 Mac 会采用与 iPad 相同形状的屏幕。
它面向希望在 iPhone 或 iPad 上使用桌面级 macOS、并且熟悉侧载和 JIT 配置的用户。
安装与启动 macOS
- 从 Releases 下载
Henge.ipa或Henge.tipa,并查看安装说明。 - 用 SideStore 或 AltStore 侧载
Henge.ipa,或用 TrollStore、TrollStore Lite 安装Henge.tipa。 - 确保 JIT 可用:StikDebug、TrollStore、越狱,或 iOS 26 及以上使用 Henge 内置的 StikJIT helper。
- 打开 Install 标签页,选择 macOS Sequoia 15.6.1,保持 Henge 在前台并连接设备。Tahoe 26.6.2 和 macOS 27.2 虽已列出但尚未测试。
- 等待 macOS 安装并启动;首次登录后 macOS 会在后台忙几分钟,应用打开较慢。
要使用共享文件夹,先在 Mac 上打开终端,在 Henge 的 Details 页面点 Type the Set Up Command,在 Mac 上按回车,并在 macOS 询问 henge-agent 和本地网络时选择允许。每台 Mac 只需设置一次,且其键盘布局必须是 U.S.。
使用约束
- 需要 iOS 或 iPadOS 17 及以上,设备搭载 A14 或 M1 及更新芯片。
- macOS Sequoia 大约需要 43 GB 可用空间:17 GB 为下载文件(安装后可删除),26 GB 为 Mac 本身。
- Mac 内存可选 4、6 或 8 GB;更大内存需要证书带有提高内存上限的 entitlement。
- 必须具有 JIT 权限,否则无法运行客户机。
- 目前在 macOS 内登录 Apple 账户会报验证错误。
- 图形只测试过 macOS 自带应用、Chrome、Firefox、VS Code 和 Discord,其他应用可能出现绘制错误。
- 每次启动 Henge 只能启动一台 Mac;关机或重启 Mac 后需要退出并重开 Henge 才能再次启动。
- iPadOS 会保留部分快捷键,例如 Command-Tab。
- iPad 支持是新增的,尚未在真机 iPad 上测试;目前只在 iPhone 17 Pro 上测试过。
- 本质是模拟,运行速度慢于真实 Mac。
从源码构建
构建需要装有 Xcode 和 xcodegen 的 Mac,并在 ~/Documents/Coding/Husk 放一份构建好的 Husk(可通过 HUSK 指定其他路径)。在仓库中执行:
ios/scripts/fetch_deps.sh
tools/build_ios_restore.sh
make ios-lib
ios/scripts/package_ipa.sh
产物为 ~/Desktop/Henge.ipa;加上 --trollstore 还会生成 Henge.tipa。make 构建 Mac 端引擎 build/hengevm,make test 运行测试。
项目采用 GPL-2.0-or-later,并编译了来自 usbmuxd 和 Husk 的 GPL 代码,因此无法上架 App Store,具体见 docs/licensing.md。macOS 和 Mac 的 boot ROM 属于 Apple,不在项目中,安装时从 Apple 下载。
HotRepo 点评
Henge 在 2026-11-06 进入 HotRepo 新项目榜,统计窗口内新增 40 star,达到 149 star、12 fork,没有记录到 GitHub 全语言日榜名次。README 对技术路线和自身测试缺口写得比较具体,但项目仍处早期:iPad 支持未在真机验证,唯一测试设备是 iPhone 17 Pro。尝试前需要权衡较大的存储开销,以及对 JIT 和侧载工具的依赖。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。