编译 | 苏宓

出品 | CSDN(ID:CSDNnews)

打造一款“一统天下”的操作系统,很多科技巨头们都曾梦想过:Google 在移动端坐拥全球最流行的 Android,桌面端则有 ChromeOS,其还曾尝试推出可跨多个平台运行的 Fuchsia,不过多年过去,这款系统始终没能激起太大水花;与之有着类似经历的微软,在桌面市场凭借 Windows 一骑绝尘,但在移动端却折戟沉沙,Windows Phone 的失败成为挥之不去的遗憾...

随着移动设备形态的不断演变,从手机到平板、从折叠屏到可穿戴设备,越来越多的开发者等不及大厂的“一统天下”了,率先自己动起了手。

这不,最新尝试的是一位名为Gustave Monce的硬核极客开发者,他于近日把 Windows 装进了 Arm(手臂)设备里,更准确的说,带到了智能手表上!

开机界面如下:

“折腾 Windows on Arm 这么多年,我腻了”

现实来看, Gustave Monce 是个典型的“折腾狂人”,他不仅是法国波尔多大学(LaBRI)的博士生,研究方向涉及软件工程、嵌入式系统和 SoC 开发,还是一位彻头彻尾的极客。他喜欢研究微软操作系统的演变,收藏稀有的原型硬件,并挑战让 Windows 在各种“不可能”的设备上运行。

如果你翻开他的 GitHub 主页,会发现他的贡献记录密密麻麻。

而他 此前最广为 人知的“神奇操作”,莫过于让 Windows 11 在旧手机上成功运行

早在2021 年 Windows 11 预览版刚发布时,Gustave Monce 就盯上了——这是微软 Windows Mobile 时代的“绝唱”,也是最后一款官方搭载 Windows 10 Mobile 的手机。按理来说,它的时代早已结束,但在他的手里,这台老设备竟然成功运行了 Windows 11!

这还不够,他随后又折腾起了微软的双屏手机,让它完美运行 Windows 11,玩出了新花样。

但这些挑战都已经完成了,接下来还能做点什么?Gustave Monce 一度陷入了沉思,直到某一天,他突然想明白了:“答案一直就在我眼前!让 Windows 跑在手臂设备上!更准确地说,让它跑在——智能手表上!”

为什么要这么折腾?

Gustave Monce 在他的博文中坦言:

“多年来,我花了(或者说浪费了)无数时间,让 Windows on ARM 运行在各种不是电脑的设备上,直到有一天,我突然有点腻了。 下一个项目能是什么呢?我折腾了好几年,甚至玩了折叠屏手机,但总感觉还不够。一定还有更离谱、更有挑战性的东西…… 我在网上乱逛了成千上万小时,甚至和一些年纪大的人聊天,仍然找不到答案。 直到有一天,我终于想明白了。 我要让 Windows 运行在智能手表上!”

于是,他开始了这场让 Windows 运行在智能手表上的挑战

智能手表的选择

Gustave Monce看来,2025 年了,还有谁不爱智能手表呢?毕竟,市场上现有的智能手表的性能其实都不错。在这次尝试中,Gustave Monce 理想中的硬件规格如下:

  • 四核 64 位 ARM Cortex A53 处理器

  • 整整 2GB DDR4X 内存

  • 32GB eMMC 存储

  • Adreno 702 GPU(支持光线追踪!)主频高达 1GHz(便携游戏机?)

  • 456x456 OLED 曲面显示屏,还是圆形的

  • 超高速 LTE 调制解调器(部分型号)

  • USB 充电

  • 音频输出

  • 高端 WiFi 6E + 蓝牙(SDIO 传输,2003 年的 PDA 看到这技术都得泪目)

  • 支持通话和短信

  • 超先进传感器集群(对你的健康有好处,尽管作者自己可能更需要这个)

  • 额外的协处理器,实现低功耗深度睡眠!

  • 续航比你想象的要长(当然,前提是用原生系统)

  • 全球首款圆形触摸屏

  • 小巧,精致,毕竟是块表

  • 它拥有你手机的所有功能

各种约束下,Gustave Monce 将目光对准了自己手里刚好有的一块Google Pixel Watch 3(大号 LTE 版)手表。他表示,“这款手表的硬件配置跟我花了 2000 美元买的手机几乎一样,但价格便宜了 75%。(所以,为什么还要买那么贵的手机呢?)”

让 Windows 在智能手表上运行

拿到手表的第一天,Gustave Monce 像所有极客一样,第一反应就是——开始折腾。

Pixel Watch 3 采用的是高通 Snapdragon W5 Gen 1(SW5100)处理器,配备了2GB DDR4X 内存 + 32GB eMMC 存储

对于智能手表来说,这样的配置已经相当不错。

而对 Gustave Monce 来说,这是一款高通芯片设备,意味着他之前折腾高通设备的经验派上了用场,甚至可以直接复用一些开源代码。

同时,这块手表的启动方式也很关键——它使用的是 UEFI(类似于电脑 BIOS 的启动系统),这意味着它的启动方式和 PC 比较接近,让运行 Windows 变得可能。

它的 SoC 采用了四核 Cortex-A53,虽然是比较老的架构(Cortex-A53 其实是 2011 年设计的),但经过时间验证,依然够用。当然,这颗芯片没法运行那些需要原子操作(atomics)的现代操作系统,但对于这次实验来说,已经足够了。

搞清楚这些基本情况后,Gustave Monce 所做的第一步就是用 root 过的 boot 镜像备份手表系统,并进行解析固件:

然后,Gustave Monce 先从原始 UEFI 里一点点提取 EFI 启动文件,适配到 UEFI 环境里。这个过程并不简单,但最终,他成功进入了UEFI 界面

在经历了数小时的补丁修复和加载顺序调整(原本的顺序完全乱套了),Gustave Monce 终于看到熟悉的UEFI Shell

没想到的是,新的问题随之出现——手表屏幕的分辨率太低,竟然不符合 UEFI 规范!这意味着他还得手动调整 UEFI 代码,让它能正确适配手表的显示屏。

接下来,Gustave Monce 又开始调整ACPI 表(负责管理硬件资源的配置文件),这一步主要是从已知的 8250 设备上复制现成的 ACPI 表,然后补上定时器和中断控制器(GIC)的信息,这些数据可以从原生设备树(Device Tree)里找到。

这项工作并不算特别难,只要知道去哪里找数据,大部分时候就是复制粘贴,加点修改,把关键的表格填好就行了。

为了进行测试,他还准备了一个简化版的 DSDT ACPI 表,只定义了4 个 CPU

终于,Windows 真的启动了!

当然,这只是 Windows PE(Windows 的简化版),功能非常基础,甚至还没完全加载完(Gustave Monce 称自己懒得等)。但它确实能运行,证明了这个疯狂的想法是可行的!

初步验证之后,新的挑战出现了——

首先,手表的存储空间有限,只有 32GB,而系统已经占满了所有可用空间,根本没有地方放 Windows 文件。

然而,由于这是 Google 旗下的产品,它采用了“超级分区”(super partition)以及 A/B 双系统槽机制,并使用了一些较新的分区格式,比如 boot image header v4。

于是,Gustave Monce 利用了 A/B 分区机制,将当前未使用的 A 槽(对他而言)中的最大分区(modem_a)覆盖,替换为自己的启动文件。由于这个分区最多只有 150MB,因此他还对 Windows PE 进行了精简,最终成功解决了存储问题。

升级导致崩溃

在正式发布这个项目前,他决定把手表升级到最新固件,以保证稳定性。

但令Gustave Monce 没想到的是,这一步差点让他的努力白费。

Google 向手表推送了Android 15(此前是 Android 14 系统)。

他更新后,Google 的Web 刷机工具崩溃了两次,每次更新都要 4 个小时。更惨的是,更新完成后,Gustave Monce 发现自己的 UEFI 版本无法启动了!

经过排查,问题出在Google 更新了 ABL(Android Bootloader),导致他的 UEFI 启动文件被认为“太小”,无法通过验证。

Gustave Monce 尝试了各种方法,甚至改了设备自带的内核镜像,最终发现新的 ABL 只接受特定格式的内核头文件。最终,他拿到官方的内核头文件,删除代码,只留下跳转指令,然后把自己的 UEFI 追加到后面,终于让系统再次正常启动!

最后

Gustave Monce 的这次尝试吸引了不少人的围观,有网友表示:“可以给微软参考了,为 Surface Watch 铺路....”,也有人调侃”真正践行Windows on Arm的理念了“。

在昨天发布了这个项目后,Gustave Monce 自评道:“这次的愚人节项目,和我以往的风格一样:又真实又滑稽,而且还没做完。你现在就能尝试,但……你最好别试,哈哈哈。对我来说,这项工作非常有趣...我希望这个实验对这个星球上的某些人来说是有用的。对于其他人,我希望你们会过得很愉快。”

如果你感兴趣的话,更多详细内容可参考 Gustave Monce 个人博客:

https://gus33000.me/fish/

或者查阅 WOA 项目 相关内容:

https://github.com/WOA-Project/mu_seluna_platforms

https://github.com/woa-project/pixelwatch-guides

4 月 2 日 20:00,CSDN《万有引力》栏目特别邀请到OpenManus 项目一作、MetaGPT 开源核心贡献者梁新兵,DeepWisdom 算法研究员、OpenManus 核心作者向劲宇相聚 CSDN 视频号直播间,在CSDN &《新程序员》执行总编、《万有引力》主理人唐小引主持下,一起聊聊 00 后程序员的故事,以及 OpenManus 背后的秘密!