Surface Go2 退回 Win10

一台 2020 年的 Surface Go 2(8GB 内存 / 128GB NVMe),装的是 Win11。用起来越来越吃力,我想把它退回 Win10。

结果第一步就卡死:这台机器的 USB-C 口只能充电、不能传数据,做 U 盘启动盘这条路从一开始就堵死了。

最后的解法不是「重装」,而是在运行中的系统里做一次并存式降级------用 DISM 把 Win10 释放到硬盘上的另一个分区,克隆引导项,重启进新系统,确认好用之后再把旧系统删掉、空间还回来。全程没拆机、没 U 盘、没 PE。

下面是把这件事做成的完整路径,以及踩到的五个真坑。

一、先排除掉四种「常识做法」

动手前我先把能想到的路都堵了一遍,省下大量时间:

做法 为什么不行
设置 → 系统 → 恢复 → 返回上一版本 只在升级后 10 天内可用,这台机器早就超期,入口已消失
直接运行 Win10 的 setup.exe Windows 不允许降级安装。Win11 里双击 Win10 安装程序会被判定「不满足升级条件」,尝试保留文件重装也会在中途失败
做 U 盘启动盘 USB-C 口只能供电,插 U 盘系统认不到,BIOS 里也不出现该设备
从 microSD 卡启动 Surface 系列 UEFI 不认 SD 卡启动,EFI 引导分区必须在内置盘上(社区多年结论一致,我也实测确认)

还有两条备选我放弃得更早:换 USB-C 口要微焊,Go 2 这个价位不值;买 Surface Dock(磁吸口带 USB 数据,可以从坞上的 U 盘启动)要额外花钱,而手头已经有可行的软件方案。

剩下的路只有一条:让 Windows 自己去装 Windows。

二、这个方案的本质:把不可逆决策拆成两步

「降级」这件事最坑的地方在于它不可逆------旧系统删掉就回不去了,而你还不知道新系统在这台机器上跑得好不好。

所以我没有覆盖安装,而是并存:

  1. 从 C: 收缩出 26GB 空闲空间,新建一个分区
  2. 把 Win10 镜像释放到这个新分区
  3. 给新分区加一个引导项,默认进 Win10
  4. 重启进 Win10,跑完 OOBE,实际用两三天
  5. 确认没问题后,才回头删掉 Win11 分区、把空间扩回 C:

前四步每一步都可以退:驱动不对、性能更差、某个软件不兼容------从启动菜单切回 Win11 就行,旧系统一个字节都没动。第 5 步才是真正的「一击不可逆」,而那时候你已经有真实使用证据了。

决策的代价对比:整个过程占用了约 40 分钟机器时间(其中 DISM 释放 17 分钟、OOBE 和驱动 10 分钟),物理风险为零------没有动 ESP 以外任何引导文件,没有碰 BitLocker 保护器,也没有拆机。

三、七步实操

第 1 步:确认能缩多少

管理员 PowerShell:

powershell 复制代码
$sup = Get-PartitionSupportedSize -DiskNumber 0 -PartitionNumber 3
"$([math]::Round($sup.SizeMin/1GB,1)) .. $([math]::Round($sup.SizeMax/1GB,1)) GB"

SizeMax 就是这个分区最多能缩到多小。我这台原来的 C: 是 117.7GB,SizeMax 报 91.1GB,即最多能缩出 26.6GB------刚好够。

坑先记一笔 :新建分区绝对不要用 New-Partition -UseMaximumSize。磁盘上存在多段空闲区间时,它可能挑中一段莫名其妙的(我这边抓到了末尾 1MB 的空隙,建出来一个 1MB 的分区)。显式传 -Size,并且每一步都用 Get-Partition 回读确认,这是磁盘操作唯一安全的写法。

第 2 步:DISM 释放镜像

powershell 复制代码
$d = Mount-DiskImage -ImagePath D:\win10.iso -PassThru | Get-Volume
dism /Get-WimInfo /WimFile:"$($d.DriveLetter):\sources\install.wim"
dism /Apply-Image /ImageFile:"$($d.DriveLetter):\sources\install.wim" /Index:1 /ApplyDir:E:\

Index:1 是家庭版,装专业版换成对应索引号即可。12.6GB 数据释放用了 17 分钟。

注意:这一步不会帮你清空目标分区,它只是把文件树铺上去。目标分区必须是新的空分区,否则新旧文件混在一起,装出来是个缝合怪。

第 3 步:写引导------bcdboot 会失败,改用 bcdedit

标准做法是 bcdboot E:\Windows /s S: /f UEFI(S: 是挂载出来的 EFI 分区),但我这边直接报:

复制代码
Failure when attempting to copy boot files.

失败发生在往 EFI 分区复制文件那一步。我没有去排查 ESP 空间或文件版本,而是直接换了思路:不新写引导,克隆现有引导项,只改它指向的分区。

powershell 复制代码
bcdedit /copy {current} /d "Windows 10"
# 命令会返回一个新 GUID,下面用 {新GUID} 代替
bcdedit /set {新GUID} device partition=E:
bcdedit /set {新GUID} osdevice partition=E:
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 15
bcdedit /set {bootmgr} default {新GUID}

这个办法成立的前提很关键:两个系统共用同一个 bootmgfw.efi,只是分区不同 。bootmgr 的版本与 Windows 版本无关,所以克隆出来的项天然可用------省掉了「引导文件版本不匹配」这个最大的不确定性。

顺手把菜单超时设成 15 秒,默认项设成 Win10。别设 0 秒:万一新系统有问题,你连切回去的机会都没有。

第 4 步:重启,进 OOBE

重启后会出现 Win11 的启动管理器(蓝底列表),选「Windows 10」,然后就是全新的 OOBE 流程。

这一步强烈建议用本地账户,不要登录微软账户。理由很实际:这台机器一旦用微软账户,下次重装又得联网、又得走一次验证;本地账户的密码重置、账户增删都在本机完成,我后来给家人建账户时省了很大功夫。

第 5 步:旧系统数据搬家,BitLocker 是拦路虎

新系统里看到旧系统的分区,点进去提示「无法访问」------因为旧盘是 BitLocker 加密卷:XTS-AES 128,保护器是 TPM + 数字密码双份。

这时候不要格式化 ,先去 aka.ms/myrecoverykey 用微软账户取 48 位恢复密钥,然后:

powershell 复制代码
manage-bde -unlock D: -RecoveryPassword 123456-123456-...

解锁之后文件正常读,但每次重启会重新锁上(BitLocker 是按启动会话解锁的,不是一次性关掉)。要拷的数据一次性拷完,中间别关机。

顺便记一个极具迷惑性的细节:账户名是 ange,但用户目录是 C:\Users\chen_------OOBE 阶段账户类型转换过,目录名没有跟着改。搬家时按目录列,不要按账户名猜路径,我第一批脚本因此全打空。

第 6 步:删旧系统、扩容

确认新系统稳定(我用了三天),回来做最后一击:

powershell 复制代码
# 删掉旧系统分区和 Recovery 分区
Remove-Partition -DiskNumber 0 -PartitionNumber 3 -Confirm:$false
Remove-Partition -DiskNumber 0 -PartitionNumber 4 -Confirm:$false

# 把空间并回 C:
$sup = Get-PartitionSupportedSize -DiskNumber 0 -PartitionNumber 2
Resize-Partition -DiskNumber 0 -PartitionNumber 2 -Size $sup.SizeMax

结果:C: 从 86.97GB 扩到 118.97GB,可用 88GB。

注意删除顺序------Recovery 分区必须一起删,它通常紧贴在 C: 后面,不删它就没有连续空闲空间,扩容会失败。

第 7 步:把「设备加密」关掉(如果还要装 Linux)

这一步不在降级流程里,但如果以后想在这台机器上装 Linux,必须做:Surface 出厂默认开启「设备加密」(BitLocker 的简化版),Linux 的 NTFS 驱动读不了它。我第一次装 Ubuntu 失败,根因就在这里(下一篇完整写了这个过程)。

powershell 复制代码
manage-bde -off C:
manage-bde -status C:   # 看 Conversion Status 走到 Fully Decrypted

已用空间加密过的卷,解密大约七八分钟,数据无损。

四、五个真坑

现象 真正的原因 修法
远程操作几分钟就断,Tailscale 显示离线 Win10 默认睡眠策略,无人操作 15 分钟就断电 设置 → 电源和睡眠,全部改成「从不」
计划任务显示 Queued,日志一行不写,Last Result=0 计划任务默认「使用电池时不启动」 用 XML 任务模板:DisallowStartIfOnBatteries=false + WakeToRun=true,再 schtasks /Create /XML
远程开 SMB 共享,netsh 报组名不存在 中文系统的防火墙组名是本地化的,group="File and Printer Sharing" 匹配不上 用与语言无关的规则名:Set-NetFirewallRule -Name FPS-SMB-In-TCP -Enabled True
往新系统搬数据,速度只有 200--300KB/s 海量小文件(微信、QQ 的十几万个小文件)走 SMB 是灾难,单个大文件能到 30MB/s 大文件走 HTTP(python3 -m http.server + WebClient/curl.exe);小文件先在源机打 tar 再传
系统盘显示 0 字节可用,什么都装不了 休眠文件 hiberfil.sys 占了 1.5GB 以上 powercfg /h off,立刻释放

最后一条的教训值得单独说:我在格式化旧盘之前,只备份了程序和文档,漏了浏览器的用户配置 。Chrome 的书签、密码、扩展全丢了。技术上讲这不算事故,但重装系统的人 90% 会在这里后悔一次------动手前先跑一遍 %LOCALAPPDATA%\Google\Chrome\User Data、%APPDATA% 的清单,它不是「数据」,但它是你最常用的东西。

五、值不值得做?先说清楚代价

收益:这台 8GB/128GB 的 Go 2 在 Win10 上明显更跟手------启动项少了、后台服务少了、内存占用从常年 85% 降到 55% 左右。对于 2020 年的低压 U 来说,这是实打实的差别。

代价必须写明:

  1. Windows 10 已于 2025 年 10 月 14 日结束支持。之后只有付费 ESU 通道,普通用户等于停止安全更新。把一台还要联网的机器降回 Win10,是把「系统更流畅」换成了「安全补丁不再来」。这在你自己的离线设备上完全合理,在主力办公机上不建议。
  2. 如果你的目的只是「让旧机器还能安全用几年」,更对症的选项是 Windows 10 IoT Enterprise LTSC 2021------同样的内核,精简掉商店和大部分 UWP,支持到 2032 年 1 月。代价是授权不好搞、部分新硬件驱动要手工找。
  3. 降级不会让硬件变新。这台机器真正的短板是 8GB 内存和 eMMC 级别的随机读写(我的是 NVMe,算走运),Win10 只是把软件的税降下来了。

如果你也有一台卡顿的 Surface,先做这个判断再动手:任务管理器里看内存和磁盘的日常占用。内存常年 90% 以上 → 降级有救;磁盘随机读写常年 100% → 换系统也救不了多少,该换机了。

六、一句话总结

Win11 无法原地降级,但可以「并存式降级」:DISM 释放到新分区 + bcdedit /copy 克隆引导 + 验证后删旧分区。这套手法对所有 Windows 版本互转通用,也不限于 Surface------只要你的机器能进系统,就不需要 U 盘。

下一篇写同一台机器上装 Win10 + Ubuntu 双系统的完整过程:在没有 U 口、Secure Boot 打开、BitLocker 加密的机器上,我连续踩了五个坑才进到安装界面。那是本次折腾里技术含量最高的一段。


免责声明:以上仅代表我个人的实践记录,测试环境是 Surface Go 2(8GB/128GB,USB-C 口已损坏)。分区、引导、加密卷相关操作存在数据丢失风险,请务必先备份再动手;不同机型、不同 Windows 版本的行为可能有差异,具体请以你自己的实测结果为准。