Windows重新生成UEFI引导,解决Windows蓝屏\BCD 0xc0000098

文章目录

  • 1. 快速通道
  • 2. 问题背景
  • 3. 引导相关知识
    • 3.1 引导类型分类
    • 3.2 EFI引导Windows大概流程
    • 3.3 Bcdboot命令
  • 4. 具体操作
  • 5. 总结
  • 参考

1. 快速通道

  备份EFI分区里面的文件,原来的要删除,如图1.1所示,使用Bcdboot命令重新生成

bcdboot C:\Windows /s S: /f ALL 

C:和S:按照实际情况更改,C:是你要引导的Windows系统,S:是你的EFI分区

Windows重新生成UEFI引导,解决Windows蓝屏\BCD 0xc0000098_第1张图片

图1.1 将EFI文件夹重命名成EFI_back,EFI是执行命令后生成的

2. 问题背景

  把移动硬盘插到安卓设备上,安卓上显示格式化,然后我用termux手动挂载,第一次没指定utf8挂载,中文名文件和文件夹直接不存在了(看不到),然后指定utf8挂载,好像没什么问题,但是,第二天插回电脑上就开不了机了。

3. 引导相关知识

很多知识仅限凭认知编写,若有谬误欢迎评论区指正,若错误过多,我可以把文章删掉或者隐藏掉

3.1 引导类型分类

  引导分为EFI/GPT引导和BIOS/MBR引导,老电脑用BIOS引导比较多,现在的电脑一般都是用EFI引导,网上应该会有一些引导类型判断,我对此也不是特别了解,我一般通过分区表类型来判断,GPT则为EFI,MBR一般为BIOS,应该是这样。
  MBR位于物理磁盘的开头(不是分区,而是磁盘),占固定446个字节[1]。这也导致了一个磁盘只能有一个BIOS引导。
  UEFI引导是通过文件引导的,一般有一个EFI分区,用于存放EFI文件,我的EFI分区如图3.1所示,EFI分区里面的文件结构如图3.2所示
Windows重新生成UEFI引导,解决Windows蓝屏\BCD 0xc0000098_第2张图片

图3.1 我的EFI分区

Windows重新生成UEFI引导,解决Windows蓝屏\BCD 0xc0000098_第3张图片

图3.2 只有Windows引导的EFI分区
  EFI分区里面会有一些EFI文件如图3.3、图3.4所示

Windows重新生成UEFI引导,解决Windows蓝屏\BCD 0xc0000098_第4张图片

图3.3 efi文件

Windows重新生成UEFI引导,解决Windows蓝屏\BCD 0xc0000098_第5张图片

图3.4 默认efi文件(?)

3.2 EFI引导Windows大概流程

  如果只有一个Windows,那大概流程估计是这样的[2](我发现这里这篇博客好像已经写的很不错了):

UEFIBIOS→EFI系统分区(FAT格式的分区)→\efi\Microsoft\boot\bootmgfw.efi→efi\Microsoft\BCD→\Windows\system32\winload.efi

  我认为,一般引导文件出问题都是出在EFI分区上的,看上面的流程除了\Windows\system32\winload.efi之外包括BCD文件全都是在EFI上的。而Bcdboot命令可以重新生成整个EFI。

3.3 Bcdboot命令

  要学习一个命令当然是要去看官方文档,有时候自己看文档研究可比到处乱翻博客快多了(当然博客还是有用的)。

  使用以下命令可以在指定的EFI分区重新生成整个EFI引导文件夹

bcdboot C:\Windows /s S: /f UEFI

  其中C:\Windows是Windows系统的安装路径,/s后面接EFI分区的盘符,盘符可以使用diskpartlist volume命令查看[3].

4. 具体操作

  使用diskpartlist volume命令查看系统盘盘符和EFI盘盘符,如果没有还没有分配盘符的话在diskpart里面select分区之后使用ASSIGN letter = 盘符 即可分配盘符[4]
  查询好盘符之后执行以下命令之后重启即可

bcdboot C:\Windows /s S: /f UEFI

  Bcdboot官方文档

5. 总结

  这个命令按理来说应该是有效的,但是不知道有时候就没那么好用,这次遇到的也有点玄学,我用这个命令重新生成几次引导之后,开机还是报那个错,但是不止怎么地,我重启多几次他就好了,介于我在这个过程中没有做过其他操作,所以我就把引导修复归功于这个命令了。
  网上还有很多修复引导的教程,比如说这个

BOOTREC /SCANOS
BOOTREC /FIXMBR
BOOTREC /FIXBOOT
BOOTREC /REBUILDBCD

  我觉得他是有问题的,看到FIXMBR,而且并没有涉及到EFI盘符,所以我觉得他应该是修复BIOS引导的,如果是UEFI引导应该没有什么用。
  还有一些是使用bcdedit命令来修复,我不觉得他不行,但是我感觉手动编辑引导还是麻烦了点,Bcdboot可以自动生成。关于bcdedit也可以去官方文档学习学习。

参考

[1] MBR分区表详解
[2] BIOS与UEFI之间的区别
[3] Windows命令行查看盘符 三种方法
[4]CMD(命令提示符)修改盘符

你可能感兴趣的:(windows)