双系统下 Linux 系统无法启动及其引导丢失之解决

背景介绍:

很久很久以前, 我在 NewSurfacePro(SP5) 里插了一张 128G 内存卡, 费力九牛二虎之力在上面装了 Deepin, 后来在某次不知道是 Windows 还是 Deepin 更新后, Deepin 启动时总要发生一个极具 Linux 特色的启动错误, witch 似乎在我树莓派上出现过, 折腾了很久也没好, 就放弃了, 又由于 Deepin for Surface 电源管理太弱了, 我还是改过内核的, Windows 下 8h 左右的电只能在 Deepin 下坚持 3h 不到, 之后 NSP 就被我当成能用远程的平板了, 只用于写写笔记和远程到大电脑上.

由于 Deepin 引导的存在, 每次开机都得下移两个选项选 Win, 特别是无键盘开机, 要眼疾手快点出来虚拟键盘, 端午节得了点空, 终于盯上了这个问题, 崩溃就此开始.

我最初尝试了在 BIOS 里换换引导顺序, 无效. 直接拔掉内存卡, 会掉入 grub, 怎么 set 都无法引导到 Windows, 但是网上却有很多文章说可以直接删除相关分区然后在 msconfig 修改, 我连 Windows 都进不去啊. 我的 ESP 分区目录树大概这个样子:

1
2
3
4
5
6
7
ESP
|-EFI
| -Boot
| -deepin
| -Microsoft
| | #下面还有, 略
| -ubuntu # 的确曾经装过Ubuntu

我尝试了可能的cmdpathprefix 的组合, 都不可以.

在 Win 下使用 EasyUEFI 查看也只有 Windows Boot Manager一个, 根本无所谓删谁的问题, 反正删了就没了. 于是在万分抱歉的心情下, 我在 BIOS 误删了 Windows Boot Manager, Internal Storage, 误删两个我也不知道我怎么做到的, 我发誓是误删的! 好了, 彻底崩了, 插上内存卡也没法用 Deepin 了.

又听闻一些 PE 盘下有一些工具, 可以一键修复 EFI, 于是我就刻录了相关的盘, 但是根本无法引导到 U盘上, 又看到微软官方表示开机要按照音量下键, 但是我试了, 仍然不行, 我以为是该 PE 不行, 又换了一个, 还是不行, 于是排除 PE 问题, 后来注意到微软提供了修复包, 经过观察发现格式和普通的 Windows 镜像差不多, 遂换上, 成功从 U盘引导.

之前已经做好了丢失所有文件准备, 如今重置就在我眼前, 我却下不了手了, 我记起来我装完系统有段时间经常需要用 bcdedit 改一下 .efi 文件, 于是开始了 bcdedit 修改配置的过程, 毫无作用, 该不行还不行.

后注意到有个 bcdboot, 各种文章里都用了/s /f参数的搭配, 但是我这里甚至会报错, 最后看着帮助发觉后面两个参数估计可以不需要, 去掉后直接bcdboot c:\windows完事, 重启完事.😥

这个折磨我超过半年的问题就此解决, 简单来说, 卸载 Windows 以外的双系统的确可以直接删分区, 然后引导 U盘直接bcdboot c:\windows, 但是 Surface 好像不能轻易引导非官方工具制作的 U盘, 我在这里卡了很久.


现在是 2019/06/09, 我三台处于 1809 的 Windows 电脑, 都没有收到 1903 更新推送, 即使天天点检查更新. 睡醒后还没有推的话, 我就要对 Surface 拿易升试试了.

我要 Windows Terminal, 我要 WSL2!