megrxu

Windows 启动修复

Apr 18, 2022  「DevOps」  

为了体验新 WSL2 的 GUI ,后来一直是慢圈Slow Ring用户,所以更新 Windows 的时候它把自己更死了,我也怪不得别人。只记得一觉醒来的时候,就发现自己的电脑启动不了了。

首先尝试了自带的启动修复,真的是毫无用处,即便是去网络上检索相应的错误代码,也没找到什么有用的信息。同时,由于我开启了 BitLocker,每次修复还需要输入一大串密钥才可以使用这个功能,因此试了两次都无效之后就放弃了。

初步怀疑是现在 Windows 的启动修复已经找不到对应的文件造成的修复失败,遂跟同学要了 Windows 10 的启动盘,发现依然如故:启动盘里的启动修复仍然是无法正常工作的(可见自动程序的不可靠性)。

接着通过大量的网络检索,看到有些帖子使用了 Windows 命令行中的 bcdboot 命令进行修复。于是开始尝试使用这个方法来手动修复。步骤大概如下:

  1. 进入到启动界面的命令行部分。这个步骤如果磁盘是 BitLocker 加密的话,需要去找到密钥手动输入一下,然后才能正常使用。一般来说解锁 Windows 系统所在的磁盘(C:/)就可以了。
  2. 使用 diskpart 来挂载 ESP 分区,并分配磁盘符。
    1. list disk 并且 select disk ? 选择所选的磁盘。
    2. list partition 并且 select partition 选择 ESP 恢复分区。
    3. assign letter=F 分配磁盘符。
  3. 然后使用如下命令:
    1
    2
    
    bcdboot C:\Windows /s F: /f uefi /l zh-cn
    # /s F: 表示 ESP 分区挂载的地方
    
  4. 显示成功重建了启动文件。

按照以上步骤操作后,重新启动,就看到熟悉的 Windows 界面了。 十分惊讶的是就这么一条简单的命令就解决了这个问题,而所谓的「自动修复」工具甚至给不到任何有用的信息。 去看了 bcdboot 的使用说明:「bcdboot.exe 命令行工具用于将关键启动文件复制到系统分区以及创建新的系统 BCD 存储」。所以实际上差不多只是拷贝了一点文件咯?


后续其实还有点小插曲,我决定再给 Windows 更新一次机会,然后它仍然把自己的启动弄坏了。接着,我猜想即使不用启动盘,刚刚的方法也是有效的,进入命令行试了下果然如此