苹果的内核跑上了安卓手机:2,631 Star 的 HakiOS 让 XNU 在 Adreno GPU 上画出 118 帧

数据说明:本文 Star/Fork 数字取自 2026 年 11 月 9 日 GitHub API 实测快照;技术机制、性能数据与法律条款均以 HakiOS 仓库 README 及其文档原文为准,未作虚构。

手机操作系统看似两大阵营分明:苹果的 Darwin(XNU 内核)、安卓的 Linux 内核。但有一群开发者偏偏要问:iOS 的内核能不能像"安卓是 Linux 之于手机"那样,直接跑在安卓手机的硬件上? oosexgang/hakios-xnu-kernel(HakiOS)就是这个问题的工作答案:把苹果开源的 XNU 内核(xnu-8796.121.2)搬上 Android 手机,配上自研的引导器、驱动和配置系统。项目 10 月 22 日创建,18 天 Star 达 2,631(Fork 418),C 语言编写,11 月 8 日凌晨仍在提交;11 月 4 日它刚迈过一个里程碑------窗口服务器通过 Metal 在高通 Adreno GPU 上渲染,页面滑动跑到 110--118 帧。

一、项目概览:这是"研究台",不是 ROM

先看一组关键数据:

指标 数值(2026-11-09 快照)
Star / Fork 2,631 / 418
创建日期 2026-10-22(18 天)
内核版本 XNU xnu-8796.121.2(苹果开源的 Darwin 内核)
已移植设备 POCO X5 Pro 5G(高通 SC7280 系)、Infinix Hot 20(联发科 Helio G85,实验性)
协议 XNU 补丁部分 APSL 2.0,其余 MIT
运行方式 默认从 RAM 启动,重启即恢复 Android

README 里有一句自我定位值得反复咀嚼:"A research bench, not a ROM" 。它默认从内存启动,不碰手机的存储分区------重启一次,手机就完完整整还给 Android。这个设计让刷机新手也敢上手试:不拆系统分区、不变砖风险最小化,这与上个月电视去广告项目"可一键还原"的工程哲学异曲同工------给普通用户的实验,先把退路铺好。

背景值得再交代一句:XNU 不是小众内核,它是 macOS 和 iOS 共同的内核------进程调度、虚拟内存、Mach 微内核部分、BSD 层,你在 iPhone 上每天用的系统底座就是它。苹果在 APSL 2.0 下开源了它,这正是这类移植在法律上可行的前提。把"苹果生态最封闭的整机体验"和"苹果自己开源的内核"分开看,是理解这个项目的关键:封闭的是生态,开源的是内核------HakiOS 用到的只有后者。

二、架构拆解:让 XNU 认识一部安卓手机

XNU 本来只认识苹果自己的硬件,把它跑在骁龙/联发科平台上,缺的东西 README 说得很清楚------引导器、驱动、配置系统,全部自建。整个工程由一组仓库组成,各管一层:

仓库 职责
hakios-xnu-kernel 主仓库:内核移植、通用驱动、引导器、用户空间与工具、QEMU 设备配置
hakios-uefi 固件层:基于 Mu-Silicium 定制启动路径,配 HakiOS 的 U-Boot
hakios-sm7325 POCO X5 Pro 5G 的 defconfig、UEFI 平台与高通 SC7280 系 SoC 层
hakios-mt6768 Infinix Hot 20(Helio G85)的实验性移植,带自己的引导器
hakios-metal 在 Adreno 上实现 Metal 的命令模型

分层清晰是它作为研究项目最值得学的地方:SoC 相关的(时钟、电源、面板)留在 per-device 仓库,内核补丁和通用驱动沉淀在主仓库------想移植一台新手机,照着 docs/porting/ 的路径加一层就行。它还承诺不依赖苹果的任何东西也能跑:README 里给出的这条命令,可以在 QEMU 里启动同一个内核,不需要苹果固件、也不需要任何手机的固件:

bash 复制代码
make qemu-open

这条纯软件路径给没有适配设备的开发者留了参与入口------先在模拟器里看清 XNU 的启动日志和用户空间布局,再考虑要不要碰真机。

三、里程碑:Metal 在 Adreno 上画出 118 帧

这是本项目最硬核的部分。11 月 4 日的 README 新闻记录了在 POCO X5 Pro 5G(Adreno 642L GPU、120 Hz 面板)上的实测:窗口服务器可以通过 Metal 绘制,而且有两条实现路线在竞争:

路线 页面滑动 设置滚动 Home 键
hakios-metal(内核 GPU 驱动上实现 Metal 命令模型) 110--115 fps 118 fps 106 fps
UniXNU 的 Metal-on-Vulkan 50--57 fps 41 fps ≈90 fps

以上是 828x1792 分辨率拉伸到面板的数据;跑满 1125x2436 原生分辨率时约为 101/90/90 fps。README 坦率注明:120 帧尚未达到 。这个成绩单有意思的不只是数字,还有方法论:同一目标(在非苹果 GPU 上提供 Metal)做了两套实现直接对比------直接在内核 GPU 驱动上实现 Metal 命令模型,性能约为走 Vulkan 转译层的两倍。测量的原始数据也全部公开在 docs/reference/metal-measurements.md,这种"两条路线 + 可复现测量"的工程记录方式,本身就是一份很好的系统优化教材。

值得注意的还有推进速度:18 天里,项目从"内核能启动"走到了"窗口服务器能用两条不同路线跑 Metal"------11 月 4 日那条 README 新闻就是分水岭。团队很小(README 列了四人),提交却几乎每天有,说明 SoC 层一旦打通,剩下的工作是可以逐设备复制的:这既是移植类项目的典型曲线,也解释了为什么 Fork 数(418)相对 Star 数(2,631)的比例这么高------大量 Fork 是想往里加自己设备的开发者。

四、法律边界:仓库里没有苹果的任何东西

这类项目能活下去,姿态必须端正。HakiOS 的 README 用了一整节说清楚:仓库里不含苹果的任何代码产物,也不含任何厂商固件。XNU 内核本体来自苹果的开源发布(APSL 2.0 允许这样做),补丁部分同样按 APSL 2.0 开放;其余自研部分是 MIT。想跑 Darwin 用户空间,你得自己从自己获取的 IPSW 里铺出来;固件从你自己的手机上取;激活、Apple ID、iCloud、App Store 这些苹果服务明确"不支持、也不是目标"。项目声明与苹果无关联、无背书,并设有侵权文件举报即删的通道。

对照来看,它与两年前被任天堂诉讼关停的模拟器生态走的是不同的路:XNU 是苹果主动开源的内核,APSL 2.0 就是为此类研究准备的许可证;"研究台而非 ROM"的定位也把使用场景约束在实验范畴。从苹果开源代码出发、不碰苹果服务、不碰闭源固件------这条边界线画得干净,值得所有逆向/移植类项目参考。

五、给开发者的可操作建议

  1. 从 QEMU 起步,别急着碰真机 。没有适配设备的开发者用 make qemu-open 就能在模拟器里跑同一个内核,先把 XNU 的启动流程、用户空间布局看明白;真机实验目前集中在 POCO X5 Pro 5G 和 Infinix Hot 20,其他设备请按 docs/porting/ 逐层移植,不要硬套。
  2. 遵守它的"自带一切"原则。Darwin 用户空间自己从自己获取的 IPSW 铺设、固件从自己的手机提取,不从任何渠道下载别人提供的镜像或密钥------这是项目维持法律清白的底线,也是参与者自己的安全边界。
  3. 想学 GPU 驱动,读 Metal 文档与测量记录 。docs/reference/metal.md 和 metal-measurements.md 完整记录了在 Adreno 上实现 Metal 命令模型的两种方案及帧率数据,这是公开资料里少见的"移动 GPU 用户态驱动"实战记录,做图形或性能优化的工程师都值得读。
  4. 借鉴"研究台"的发布模式。不刷分区、RAM 内运行、重启即还原,加上 QEMU 全软件路径------把高风险实验包装成"零承诺、可退出"的形态,是任何系统级实验项目扩大受众的正确姿势。

六、结语

HakiOS 只用了 18 天就证明了这件事在工程上成立:苹果的内核、高通的芯片、自研的驱动和引导器,能拼出一台能画 118 帧的"安卓苹果机"。它的意义不在替代谁------2,631 Star 的研究项目离实用还远,120 帧还没跑满,适配机型屈指可数------而在于又一次拓宽了"内核与硬件可以自由组合"的想象空间。当年大家以为 Mac 之于黑苹果、Linux 之于手机已是极限,如今 XNU 也在高通平台上滑动了。操作系统研究正在变得平民化,这是这份 README 最让人兴奋的信号。本文数据为 2026-11-09 快照,项目处于早期高速迭代阶段,一切以仓库最新文档为准。

相关推荐
恋猫de小郭21 分钟前
Flutter THLC 的 WebView 滚动终于从 70 FPS 提升到 120 FPS
android·前端·flutter
好的佩奇11 小时前
Dart 之扩展类型
android·flutter·dart
alexhilton13 小时前
2027 Android 开发者路线图:学习、面试与 AI
android·kotlin·android jetpack
灿飞屋15 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
疯华整猫16 小时前
我用 Trae 把 Android 内存账重算了一遍
android·性能优化·源码
TimeFine18 小时前
AI 编程工作流的设计:从人工判断到 AI裁判
android·ai编程
阿杰m18 小时前
Android源码第四章:Android 系统启动——App 的第一行代码从哪来?
android
独隅21 小时前
WebStorm macOS 安装调优与实战效果全景
ide·macos·webstorm
疯华整猫1 天前
混淆起初根本不是为了防破解:我用 Trae 把 Android 混淆这二十来年重跑了一遍
android·人工智能·计算机视觉