开发者让 iOS 26 原生运行在微软 Surface Duo 2 上 开发者 SmuOS(也称 None24)已让苹果 iOS 26 原生运行在微软已停产的 Surface Duo 2 上。这款双屏 Android 手机搭载骁龙 888 芯片。现在,两块屏幕和触控都能正常工作,电话和设置应用可以横跨两块屏幕显示,而 iOS 还将这台设备识别为“iPhone 17 Pro Max”。这并非模拟运行。该移植版通过自定义 UEFI 加载器启动苹果开源的 XNU 内核;开发者还向 Windows Latest 分享了独家照片和详情。
微软于 2024 年 10 月停止为 Surface Duo 2 提供支持,而苹果的双屏 iPhone Duo 上周刚刚开售。此前,苹果使用 Duo 这个名字在我看来还是个笑话,但如今,这个笑话有了好几层意味。所以,苹果以 1,999 美元出售自己对微软创意的演绎之际,一位才华横溢的爱好者却把微软弃置的手机改造成了某种 iPhone Duo。
iOS 26 原生运行在微软 Surface Duo 2 上。图片来源:Windows LatestSmuOS 向 Windows Latest 提供了测试设备运行 iOS 26 的照片,设置应用的“关于本机”页面更是提供了确凿证据。页面显示系统版本为 iOS 26.5.2,机型名称为“iPhone 17 Pro Max”,容量为 5GB,序列号、Wi-Fi 地址和蓝牙信息则均显示为“不适用”。
Surface Duo 2 上的 iOS 26.5.2 在设置中将设备识别为 iPhone 17 Pro Max。图片来源:Windows LatestiOS 将两块屏幕视为一张大画布。设置应用的侧边栏显示在左侧屏幕,选中的页面则显示在右侧屏幕,Liquid Glass 效果也一应俱全,看起来就像在 iPad 上一样。
带有 Liquid Glass 效果的 iOS 26 设置界面横跨 Surface Duo 2 的两块屏幕。图片来源:Windows Latest电话应用的双屏布局就显得有些尴尬,也挺有趣。拨号键盘居中显示在整张画布上,于是 1、4、7 和 * 键落在左侧屏幕,3、6、9 和 # 键则在右侧;中间一列连同绿色通话按钮的一半都消失在转轴处。话虽如此,竟然能让 iOS 电话应用在一台搭载 Android 的 Surface Duo 上运行,着实令人惊叹。
Surface Duo 2 的转轴让 iOS 26 电话应用的拨号键盘中间一列消失。图片来源:Windows Latest照片里那些异常的彩色条纹,以及右侧屏幕严重开裂的问题,大家就先别在意了。SmuOS 在 X 上写道:“我用的这台设备是测试机,所以才会有裂痕。我倒想知道,要是拿没摔坏的那台去拍卖,能卖多少钱(大概只是开玩笑)。”
过去几天的进展令人目不暇接。10 月 24 日,他发帖称 iOS 26 已能原生启动,不过“目前只有一块屏幕能用”。几小时后,他就进入了 iOS 设置界面,那条帖子的浏览量超过了 5.4 万。这个阶段的照片显示,两块屏幕上都出现了语言选择器,上面还叠加着启动日志。
Surface Duo 2 上的 iOS 通话界面。图片来源:Windows Latest
Surface Duo 2 上的 iOS 26 联系人界面仍存在图形异常。图片来源:Windows Latest已经很难再期待更多了,但没想到,到了 10 月 25 日,开发者写道:“两块屏幕现在都能以 37 帧运行——之前只有 3 到 10 帧。”随后又发帖说“触控能用啦!”,这成绩着实惊人。
SmuOS 于 10 月 24 日在 Surface Duo 2 上进入 iOS 26 设置界面。图片来源:SmuOS 在 X 上发布
Surface Duo 2 两块屏幕上的 iOS 26 语言选择器,上面叠加着启动日志。图片来源:smuOS苹果在 GitHub 上公开了 XNU 的源代码。XNU 是 iOS 和 macOS 使用的内核。由于 iPhone 和大多数 Android 手机都采用 ARM 芯片,开发者可以为高通处理器编译这个内核。听起来似乎很简单,但当然没那么容易,需要付出大量工作。
SmuOS 告诉 Windows Latest:“基本上,你要从源代码构建 XNU 内核,让它在对应设备的 ARM 芯片上运行。iPhone 仍使用基于 ARM 的芯片,因此才有了这种可能。关键在于,你能让多少部分与 iOS 兼容。”
另一个关键部分是 UniXNU。这是一个开源项目,旨在“通过 UEFI 在非苹果 ARM64 硬件上运行 iOS 和 macOS”,类似于黑苹果使用的 OpenCore。他解释道:“你可以像使用 OpenCore 那样启动自定义加载器,只要技术知识足够,就能把 iOS 或 macOS 移植到自己的设备上。”UniXNU 的社区移植项目中已经包含代号为 zeta 的 Surface Duo 2,维护者正是 SmuOS。
根据他的 GitHub 仓库,该移植版使用了适用于 iOS 26.5.2(版本号 23F84)的官方 iPhone 17 Pro Max 恢复映像,并搭配基于苹果 iOS 26.5 版 XNU 源码构建的内核。固件和苹果文件并未重新分发,所以即便你正打算尝试,也不能直接下载后刷入。
iOS 在 Android 手机上启动。图片来源:SmuOS不过,让苹果内核成功启动仅仅是个开始。他说:“你要么移植驱动程序,要么从头编写驱动程序。Surface Duo 2 搭载骁龙 888 SoC,所以我既要从头编写驱动程序和 Metal 转译层,还得想办法让屏幕兼容 iOS 26;毕竟在 iPhone Duo 之前,苹果从未推出过双屏设备。”
之所以需要“Metal 转译层”,是因为 iOS 使用苹果的 Metal 图形 API 绘制所有内容,而 Surface Duo 2 的 Adreno 660 GPU 并不支持 Metal。UniXNU 的文档介绍了它的解决方案:将 Metal 转译为 Vulkan,再通过 Turnip 运行。Turnip 是面向 Adreno GPU 的开源 Vulkan 驱动程序。
苹果芯片还使用一种名为指针认证的安全功能,iOS 代码也会针对这项功能进行编译,采用的格式称为 arm64e。骁龙 888 不支持该功能,他的仓库指出,iOS 共享缓存中有 2960 万个此类指针签名被剥离。SmuOS 说:“构建中的某些部分默认使用 ARM64e,为了提升性能,我把它们改写成了 arm64。”
有意思的是,他表示内核并不是最难的部分。“你可能会以为构建中最难的是内核,但其实是图形栈。有很多细枝末节都可能导致 SpringBoard、backboardd 等组件出问题。对 IPSW 进行反编译(这是我自己做的),能更深入地理解 iOS 的底层工作原理。”
如果你还没注意到,本月 Android 上运行 iOS 成了热门话题。HackiOS 在 Poco X5 Pro 上运行 iOS 16.5,ios-sweet 在 Redmi Note 10 Pro 上运行 iOS 16.7.16,而 UniXNU 的主力设备小米 Pad 6S Pro 则运行 iPadOS 17。当然,我觉得 SmuOS 的移植版最令人印象深刻,因为它让 iOS 26(包括 Liquid Glass)在 Surface Duo 的两块屏幕上运行。讽刺意味恐怕再也浓不过了。
他还说自己是第一个做到这一点的人。“在任何 Android 移植 iOS 的新闻出现之前,我就已经让 iOS 26 在 Surface Duo 2 和 Pixel 10 Pro Fold 上无头运行了(没有图形界面)。起初我想先保密,等图形功能完全正常后再展示;这样我就能成为第一个在折叠屏设备上做到这件事的人。哈哈。”
他一边为 Duo 开发 Android 16 移植版,一边完成了这项工作。他说:“我花了两个月调查、头疼和反复试错,才做到这一点。”他也坦率地谈到了 AI 的帮助:“一部分是我自己做的,另一部分是 ChatGPT 帮我理解了一些我以前不了解的 XNU 内核知识。”
Surface Duo 2。图片来源:微软这个项目最初是为了让 Surface Duo 延续生命。SmuOS 一开始计划为 Surface Duo 和 Surface Duo 2 移植 Linux Mobile 以及 Android 16 和 17,因为他觉得这款手机“这些年来没得到多少关注”。在此过程中,几位曾参与微软 Duo 开发团队的人帮助他了解了“Duo 框架的内部运作机制”。
从照片中应该已经能看出来,Surface Duo 2 上的 iOS 仍是研究版本。壁纸显示为黑色,设置中 Wi-Fi 和蓝牙信息显示为“不适用”,开发者的仓库也记录了仍在进行中的图形修复工作。
Surface Duo 2 上运行的 iOS 26 壁纸设置。图片来源:Windows Latest正如 SmuOS 在 X 上收到的一条回复所说,“让定制操作系统在原本并非为其设计的硬件上运行”确实很有意思。
SmuOS 还没结束在 Surface 上运行 iOS 的工作……
SmuOS 告诉 Windows Latest,接下来将实现两件事:“让 Surface Pen 伪装成 Apple Pencil,以及开发 iPhone Duo 的 iOS 27 版本。”
配有触控笔的 Surface Duo 2。图片来源:微软升级到 iOS 27 可不是件容易事。他解释道:“我正在把项目迁移到 iOS 27,但这项工作难度更大,因为目前还没有公开的内核标签可用。”他还在设法把 iPhone 的操作按钮功能带到没有该按钮的手机上。
Surface Duo 也不是他唯一的微软相关实验。他正在把 Windows Andromeda 移植到 Google Pixel 10 Pro Fold 上。Windows Andromeda 是微软于 2018 年取消的双屏版 Windows,而 Surface Duo 的固件线索表明,这款手机最初就是为它设计的。他还在用 ARM64 重写任天堂 GameCube 的启动菜单,为 Ayn Odin 2 打造操作系统。
开发者 SmuOS 在 Pixel 10 Pro Fold 上运行 Windows Andromeda。图片来源:SmuOS 在 X 上发布他说:“我做这些只是为了好玩。”这也是这个故事最棒的地方。一个周末里,SmuOS 的关注者从 50 人涨到了 300 多人,我们希望他能得到更多支持。他也建议其他移植开发者不要轻言放弃:“如果你移植了别人已经做过的东西,就要确保自己做得更好,或者和对方合作。”
“改机社区很棒,因为它们能激发灵感。我认为整个世界都应该更鼓励这样的社区。”
微软放弃了 Surface Duo,但社区显然没有。你会对搭载 iOS 的 Surface Duo 感兴趣吗?毕竟,最初那款 Duo 不用面对“裂屏门”的烦恼。