1.极客开发者Gustave Monce成功将Windows操作系统运行在智能手表上,挑战了微软在移动端的市场地位。
2.他选择了Google Pixel Watch 3作为硬件平台,对其进行了root操作,并调整了UEFI代码和ACPI表以适应手表屏幕。
3.经过一系列努力,Gustave Monce让Windows PE在智能手表上成功运行,但功能仅为基础。
4.为了解决存储空间有限的问题,他利用A/B分区机制将未使用的A槽中的最大分区覆盖为自己的启动文件。
5.尽管遇到了挑战,Gustave Monce表示这个项目非常有趣,希望对某些人有用。
以上内容由腾讯混元大模型生成,仅供参考
打造一款“一统天下”的操作系统,很多科技巨头们都曾梦想过:Google 在移动端坐拥全球最流行的 Android,桌面端则有 ChromeOS,其还曾尝试推出可跨多个平台运行的 Fuchsia,不过多年过去,这款系统始终没能激起太大水花;与之有着类似经历的微软,在桌面市场凭借 Windows 一骑绝尘,但在移动端却折戟沉沙,Windows Phone 的失败成为挥之不去的遗憾...
随着移动设备形态的不断演变,从手机到平板、从折叠屏到可穿戴设备,越来越多的开发者等不及大厂的“一统天下”了,率先自己动起了手。
这不,最新尝试的是一位名为 Gustave Monce 的硬核极客开发者,他于近日把 Windows 装进了 Arm(手臂)设备里,更准确的说,带到了智能手表上!
开机界面如下:
这还不够,他随后又折腾起了微软的双屏手机 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 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 的这次尝试吸引了不少人的围观,有网友表示:“可以给微软参考了,为 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