记一次 Windows 系统更新导致双系统无法启动的修复过程
Published in:2023-11-17 | category: 技术

记一次 Windows 系统更新导致双系统引导错误,无法启动的修复过程

背景

这台电脑是其他办公室淘汰下来,给到了我们办公室 —— 这不是重点。给我们的时候,他们的描述是“配置实在是太低了,你们看看能不能用”。我们看了一下,AMD PRO A8870 R7,8G 内存,256G SSD,加装了 1T HDD,用 CPU-Z 跑了个分,性能堪比 i7-2700K。

这个配置的机型,居然他们还安装了 Adobe CC 2020 的几乎全部组件——甚至包括了这么吃配置的 After Effects;打开看了一眼,他们上次还处理着一个十几个图层的视频。高呼一声 AMD YES!

由于配置还是有点低了,我们最后决定安装 Kali Purple 作为主要操作系统,Windows 10 作为备用系统。本来没什么问题,但是办公室的有线网炸了一段时间,老板捐的无线网卡驱动只能安装在 Windows 上。考虑到这个电脑平时也没什么用,就把网卡插上去,连接无线网,再同时接入有线网——做网关用,让办公室其他电脑能联网。(参考:记办公室网从完全炸掉到勉强能用的修复过程

本来这还没什么问题的,但是我们当时忘记关闭 Windows 的自动更新了,夜里面下载了更新包,然后自动重启了。结果就是,第二天早上一到办公室,我发现这台电脑卡在了 GRUB rescue 里面……

问题详细描述

首先我不知道发生什么了,战战兢兢,直接反手一个强制关机,再启动还是卡在了 GRUB rescue 里面。

(想象一下那会我迷惑而惊讶的表情)

再强制重启,狂按 F12 ,选中了 Windows Boot Manager 按 Enter ,然后就进入了 Windows 10 的更新页面。

我一下子明白了发生了啥,等呗。

更新没完,大概是到了 90% 多的时候重启了,我也没管,听见了特别响的风扇声音——开机自检,过去狂按 F12 ,再进入 Windows Boot Manager,然后就,继续更新。

接下来进入了 Windows 10 22H2 的欢迎页面。哦,大版本更新是吧。看了一眼,固定在任务栏上面的 Edge Legacy 没了。

本来应该没什么问题的对吧,但是我想着现在的情况是,GRUB 炸了,是不是应该修一下……

修理 GRUB

重启,默认引导是 Kali 但是无法正常读取引导区,然后就卡在了 GRUB rescue 里面。

1
ls

一看我嘞个去一大堆盘。我哪记得哪个分区哪个盘对应哪个盘啊。还好,我们能用ls看盘的信息。

1
2
3
ls (hd2,gpt1)
ls (hd2,gpt2)
ls (hd2,gpt3)

就像这种样子,每个分区都试一下,最后只有一个分区是ext2而能被认识,别的都打不开。

1
2
ls (hd2,gpt6)/
ls (hd2,gpt6)/boot

那就没问题了。再看一眼set,发现rootprefix的分区都不是这个分区。难怪不认识文件系统,当然就打不开了嘛。

那就改呗:

1
2
3
4
set root=(hd2,gpt6)
set prefix=(hd2,gpt6)/boot/grub
insmod normal
normal

进入了熟悉的 GRUB 选择界面,选了 Kali,进入了 Kali。

正常启动了。

完结撒花~

正要庆祝修理完工……

然后我重启了电脑,还是回到了 GRUB rescue 里面。

我又重复了一遍上面的操作,进入了 GRUB 选择界面。我那会还没想着怎么处理默认的set,就准备选 Windows Boot Manager,结果发现,卡启动转圈页面了!

修理 Windows Boot Manager

感觉到接下来会发生不得了的事情了,强制重启,狂按 F12 ,选中了 Windows Boot Manager 按 Enter ……进入了 Windows 10 的恢复界面。

既然之前 Windows 10 能正常启动,我就没管直接退出,试图正常启动,然后,卡在了启动转圈页面,过了一会一个蓝屏 DPC_WATCHDOG_VIOLATION。接着重启进入了 Windows 10 恢复界面。

大事不妙,我想着是不是 Windows 10 的引导区坏了。但是我既没有 PE 也没有安装盘!硬着头皮用恢复界面里面的修复引导工具,果然还是没用。

先进 Kali,看了一眼硬盘文件还在,引导区/boot/efi/Microsoft/Boot也还在,什么都还在。

松了一口气,问题应该不大~

重启,进入 Windows 10 恢复界面,然后进入了命令提示符。

1
2
3
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd

然后,重启,还是进入了 Windows 10 恢复界面——没修好。再进入了命令提示符。

1
2
cd /d C:
dir

发现这边根本就没有Windows文件夹!仔细一想,这不是那个 HDD 里面的内容嘛?系统我记得是装在 SSD 里面的啊!

1
2
cd /d D:
dir

这下对了。原来是因为这次更新导致分区表给改了,找不到分区了,导致不论是 GRUB 还是 Windows Boot Manager 都无法正常启动。

1
bcdboot D:\Windows /l zh-cn

重启,无法启动。安全模式,启动成功。

当我看到熟悉的 Windows 10 桌面的时候,我感觉我已经快要成功了。

再重启,普通模式,启动失败,卡在了启动转圈页面。

啥情况?我又进入了安全模式,看了一眼C:\Windows,为什么这个时候 SSD 又变成 C 盘了呐?再一看,没有 D 盘了,HDD 是 E 盘。

1
bcdboot C:\Windows /l zh-cn

重启。

Windows 10 正常启动成功。

过两天修一下 GRUB 吧,理论上就所有问题都解决了~不过现在情况是,一方面办公室的有线网还没修好,另一方面我也怕再修一下又出问题了,所以就先这样凑合着用吧。

总结

更新大版本之前务必记得备份引导,并准备好 PE 或者安装盘。在更新之前,最好先将引导区备份到其他地方,然后再更新。在安装双系统之前,更改分区表的时候不要把不认识的分区给直接删了,不然可能新生成备份分区而不是使用之前预留的分区,导致引导区找不到分区而无法启动。

Prev:
概率论与数理统计
Next:
记办公室网从完全炸掉到勉强能用的修复过程