打造一款“一统天下”的
操作系统,很多科技巨头们都曾梦想过: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 就盯上了
Lumia 950 XL
——这是微软 Windows Mobile 时代的“绝唱”,也是最后一款官方搭载 Windows 10 Mobile 的手机。按理来说,它的时代早已结束,但在他的手里,这台老设备竟然成功运行了 Windows 11!
这还不够,他随后又
折腾起了微软的双屏手机
Surface Duo
,让它完美运行 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 Pixe
l 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 Mo
nce 先
从原始 UEFI 里一点点提取 EFI 启动文件
,适配到 UEFI 环境里。这个过程并不简单,但最终,他成功进入了
UEFI 界面
。
在经历了
数小时的补丁修复和加载顺序调整
(原本的顺序完全乱套了),
Gustave Monce 终于看到熟悉的
UEFI Shell
没想到的是,新的问题随之出现——
手表屏幕的分辨率太低,竟然不符合 UEFI 规范!
这意味着他还得手动调整 U
EFI 代码,让它能正确适配手表的显示屏。
接下来,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 Monc
e 尝试了各种方法,甚至改了设备自带的内核镜像,最终发现
新的 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
好啦,今天的内容分享就到这,感觉不错的同学记得分享点赞哦!
PS:
程序员好物馆
持续分享程序员学习、面试相关干货,不见不散!