尝试在树莓派 5 安装 Windows on Arm
一直想整个树莓派 5 来体验下,但是又感觉有点没这个必要,所以一直拖着。
这次看高通快要放出新的「骁龙 X Elite」系列的笔记本了,就想着体验下 Windows on Arm (WoA) 和它的 x86-64 翻译器,有了这次的折腾。因为树莓派 5 是 2023 年十月公开发布的单片机,并没有“一键式”傻瓜工具来安装,所以有了这篇文章。
目前网上能找到的教程更多是关于如何在树莓派 3 或 4 安装 WoA,而树莓派 5 则缺少驱动;好在基本的 USB 驱动还是有的。
踩坑注意
如果你只是希望安装 Windows on ARM 到树莓派作为日用的操作系统,那么你需要注意下面的这些坑:
- 树莓派性能并不算强大,对卡顿要有一定的期待。
- 缺少图形性能加速,各类涉及图形操作的程序会卡顿或渲染很慢。
- (未尝试) 缺少声卡驱动,因此无音频输出。
- 缺少风扇/温度控制组件,风扇全程满速运转。好处则是不是很担心设备过热了…
WoR 现在已经放弃支持树莓派系列,并建议换用 Rockchip 单片机:
Is Raspberry Pi 5 or newer supported?
The short answer is: no, we don’t offer support for Raspberry Pi boards anymore.
… [省略] …
We also suggest looking into Rockchip boards instead if you’re interested in Windows on Arm development, as we mostly focus on that today and believe they provide better value.
不过如果真的换成香橙派 5 Plus 并将配置拉满(32G 内存 + 256G eMMC 储存),现在价格是大概 $250。这个价位只是为了体验 WoA,不如买个二手的上一代骁龙芯片的笔记本了。至少在不缺设备驱动的前提下的开发体验应该会更好。
如果只是为了和树莓派 5 同等的 8GB 内存配置相比较的话,国内的对应香橙派 5 规格的裸机价格倒是差得不多。
Windows on R
安装 Windows on Arm 到树莓派,离不开 Windows on R (WoR) 这个项目。
目前网上能找到的教程,也是基于这个项目开发的工具(如 UEFI 固件、驱动整合工具)进行的。
部署 Windows 11 on Arm
你需要准备两个储存媒介:
- MicroSD 卡 - 储存 UEFI 引导数据
- SSD 移动硬盘以及 USB 接口转换头(至少 30 GB 储存空间)
- 我使用的是 Sata 转 USB3 接口的转换器。
- 树莓派的使用 PCIe 头连接 NVME 硬盘或许可以,听说部分型号硬盘有兼容性问题。
以及根据需要,准备下列配件:
- 鼠标、键盘
- 进行系统初始化操作时需要填写信息
- 以太网转 USB 接口
- 树莓派自身的无线网络功能缺少驱动。
- 不清楚有没有 USB 的无线驱动。
准备系统镜像
WoR 官方问答有提及 Windows 11 构建 25163 的情况:
Windows 11 build 25163 is the last one than can boot on the Raspberry Pi 4 and older.
Recent insider builds no longer work as they make extensive use of the new atomic instructions introduced in ARMv8.1.
(翻译)树莓派 4 和更旧的版本最大支持 Windows 11 构建 25163 版本。之后的 Windows 11 构建要求 ARMv8.1 指令集,因此不支持。
树莓派 5 支援 ARMv8.2-A 指令集1,因此理论上是可以直接安装最新的 Windows 11 版本。
参考官方的教程下载或构建最新的 Windows 11 (ARM64) ISO 镜像,然后提取 ISO 内的 sources/install.wim
或 sources/install.esd
文件出来备用。
准备 WoR 工具
访问 WoR 的 Windows on Raspberry imager 工具下载地址并下载最新版,解压到硬盘的某个目录下(例如在桌面新建的 WoR
目录)。
因为工具内部将树莓派标记为仅支持 Windows 构建 25163 或更低版本,因此需要补丁 WoR.exe
这个文件:
// Token: 0x02000045 RID: 69
.class public auto ansi beforefieldinit WoR.Setup.Prerequisites.Devices.RPi3_ARM64
extends WoR.Setup.Prerequisites.Device
{
// ... 省略 ...
// Token: 0x06000297 RID: 663 RVA: 0x00012BF6 File Offset: 0x00010DF6
.method public hidebysig specialname virtual
instance int32 get_MaxBuildSupported () cil managed
{
// Header Size: 1 byte
// Code Size: 6 (0x6) bytes
.maxstack 8
/* 0x00010DF7 204B620000 */ IL_0000: ldc.i4 25163 // 将它修改为更大的值
/* 0x00010DFC 2A */ IL_0005: ret
} // end of method RPi3_ARM64::get_MaxBuildSupported
// ... 省略 ...
你可以使用 dnSpy 修改对应的限制,或使用十六进制编辑器修改偏移 0x00010DF8
处的内容(十六进制):
@ 之前与之后的内容
- 20 4B 62 00 00
+ 20 FF FF FF 7F
打开修改后的 WoR.exe
,并允许管理员权限提权。语言可以从默认的 English 切换到简体中文。
点击下一步,选择你的移动硬盘以及设备为“树莓派 3”:
点击下一步,选择之前提取的系统镜像:
点击下一步,若是提示驱动授权协议,接受即可。
取决于你的储存设备的读写速度,等待数分钟后即可结束。之后使用系统的“安全移除硬件功能”将设备弹出即可。
准备 UEFI 引导
之前的步骤写出了一个适用于树莓派 3 的 UEFI 引导,但是树莓派 5 需要将 UEFI 引导单独将写出到 MicroSD 储存卡中。
该储存卡需要提前格式化为 FAT32 格式。如果不熟悉其它工具,可以使用树莓派的官方工具 Raspberry Pi Imager v1.8.5 来格式化:
- 点选 Operating System 选项,选择“Erase”选项:
- 点选 Storage 下方的“Choose Storage”按钮
- 点选“Next”按钮
- 选择确认
接下来拜访 WoR 树莓派 5 固件地址,下载附件的 RPi5_UEFI_Release_v0.3.zip
。
※ 如果有更新版,文件名的 v0.3
可能会是其他版本号。
将压缩包内的所有文件解压到刚格式化后的 MicroSD 卡根目录,然后使用系统的“安全移除硬件功能”将设备弹出即可。
开始安装
确保使用系统的“安全移除硬件功能”将硬盘和内存卡弹出,并接入树莓派 5。
启动树莓派 5,等待引导。引导时可以看到下述图像:
取决于储存设备的速度,初次设定可能会需要一段时间。建议放置不动半小时,避免打断初次系统初始化。
之后就是标准的 Windows 11 初始化设置了,根据提示操作即可。
※ 如果不希望登陆微软账号,使用账号 [email protected]
并随便输入一些字符作为密码即可跳过。
进入系统后也可以正常打上最新的 Windows 系统更新,非常流畅。
安装的第三方工具 StartAllBack(x64 配置程序 + 注入到 explorer.exe
的 arm64 DLL)也能正常运作。
最终成果
配置起来比我想象中的要简单一些,基本上跟着其他人的教程过一遍(当然也踩了些坑)就可以了。
最后来个合影:
参考内容
- How to install from Windows | Windows on R - 官方教程
- We tried to install Windows 11 on Raspberry Pi 5 - Tom’s Hardware
树莓派 5 使用 BCM2712 芯片,其使用的 A76 核心支持 ARMv8.2-A 指令集。 ↩︎