跳至内容

Jixun's Blog 填坑还是开坑,这是个好问题。

尝试在树莓派 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.wimsources/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”:

第 2 步:选择设备

点击下一步,选择之前提取的系统镜像:

第 3 步:选择系统镜像

点击下一步,若是提示驱动授权协议,接受即可。

最后:选择“安装”进行写出

取决于你的储存设备的读写速度,等待数分钟后即可结束。之后使用系统的“安全移除硬件功能”将设备弹出即可。

准备 UEFI 引导

之前的步骤写出了一个适用于树莓派 3 的 UEFI 引导,但是树莓派 5 需要将 UEFI 引导单独将写出到 MicroSD 储存卡中。

该储存卡需要提前格式化为 FAT32 格式。如果不熟悉其它工具,可以使用树莓派的官方工具 Raspberry Pi Imager v1.8.5 来格式化:

  • 点选 Operating System 选项,选择“Erase”选项:

    在 Operating System 选项中,选择 Erase 项目。

  • 点选 Storage 下方的“Choose Storage”按钮
  • 点选“Next”按钮
  • 选择确认

接下来拜访 WoR 树莓派 5 固件地址,下载附件的 RPi5_UEFI_Release_v0.3.zip

※ 如果有更新版,文件名的 v0.3 可能会是其他版本号。

将压缩包内的所有文件解压到刚格式化后的 MicroSD 卡根目录,然后使用系统的“安全移除硬件功能”将设备弹出即可。

开始安装

确保使用系统的“安全移除硬件功能”将硬盘和内存卡弹出,并接入树莓派 5。

启动树莓派 5,等待引导。引导时可以看到下述图像:

树莓派的 UEFI 引导

取决于储存设备的速度,初次设定可能会需要一段时间。建议放置不动半小时,避免打断初次系统初始化。

之后就是标准的 Windows 11 初始化设置了,根据提示操作即可。

※ 如果不希望登陆微软账号,使用账号 [email protected] 并随便输入一些字符作为密码即可跳过。

进入系统后也可以正常打上最新的 Windows 系统更新,非常流畅。

安装的第三方工具 StartAllBack(x64 配置程序 + 注入到 explorer.exe 的 arm64 DLL)也能正常运作。

最终成果

配置起来比我想象中的要简单一些,基本上跟着其他人的教程过一遍(当然也踩了些坑)就可以了。

最后来个合影:

合影,无负载时 CPU 占用不高,有部分设备缺少驱动

参考内容

知识共享许可协议 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

评论区