小白必看:Windows系统引导和启动详细介绍与运维实操全面讲解

小白必看:Windows系统引导和启动详细介绍与运维实操全面讲解


引言


在Windows系统启动的过程中,有一个关键的文件起到了引导启动Windows的指导性作用,这个文件就是BCD文件,全名boot configration data(启动配置数据).

一旦这个BCD文件稍有配置错误,我们就无法正常启动Windows系统.随之而来的是一个报错的蓝屏或者黑屏界面.

所以,懂得如何修复BCD文件是一个很重要的技术,这不仅可以加深我们对Windows系统启动的理解,还能在关键的时候解决我们的电脑问题.

有人说,我们可以直接使用引导修复工具修复引导,修复BCD,并没有必要学习如何手动编辑修复它.

事实上,任何引导修复工具都不是万能的.我并不是说他会修复失败,我是想说,BCD引导需要合理的结合软件和硬件的配置,综合多方面考虑.

给大家举一个例子.

在一个UEFI的固件上,我想修复一个MBR分区表磁盘上的Windows系统引导(BCD).如果我们使用普通的引导修复工具(如Dism++),那么他大概率会修复一个适合BIOS固件的引导.

然而,我们的固件是UEFI的,并不是BIOS的.

因为Dism++只知道一般的引导修复模式,只知道MBR分区表磁盘配合BIOS固件,不知道UEFI固件也可以使用MBR分区表.

这只是一个小小的例子,我们要想让计算机的启动模式更符合我们的使用习惯,就需要详细的配置BCD启动菜单,详细配置的前提就是学习.

在本文的最后部分,我会讲解修复各种固件的引导的一般方法.

研究原理是一切学习的目的,是一切正确操作的源头.


目录


  • 何为固件?固件的分类
  • UEFI 固件启动 Windows 系统 (EFI分区介绍,efi程序介绍,Windows启动管理器介绍,
  • BCD文件介绍(使用bootice编辑BCD)
  • 有关UEFI固件启动Windows系统的两个问题解答
  • BIOS固件引导启动Windows系统(MBR与PBR的介绍)
  • BOOTMGR(是什么,做什么)
  • 两张BIOS和UEFI固件引导启动操作系统的流程图

正文


我们从按下电源按钮说起.

主板加电

按下电源按钮的那一刻,电脑里面有一块叫”主板”的电路板就开始通电了.

主板通电后,进行的下一步便是加载固件.


何为固件?

“固件”一词,乍一看起来好像是一个物理实体,一个固体一样.

※然而,事实上,固件是一个微型系统,一个软件,一段存储在主板NVRAM里的代码.

NVRAM是非易失性随机存储介质的英文简写.

通俗的说,NVRAM是在主板上一个可以存储数据的一个小小的模块.即使在没有电的情况下,NVRAM里面的数据也不会丢失,类似U盘一样.

而RAM是易失性随机存储介质,也就是我们常说的内存.

内存的特点就是没有电的情况下,无法保存任何数据.

所以我们关机重启后,电脑在上次开机运行时的状态都不会被保留下来.

固件的分类

目前,固件分两种:BIOS和UEFI.

  • BIOS
    • 老式的计算机使用的固件.一般来说,在2015年以前的计算机使用BIOS,或BIOS和UEFI两种固件都具备.
  • UEFI
    • 现在绝大多数计算机使用的固件,一般都兼容BIOS,也就是向后兼容.

有关BIOS和UEFI固件之间的优势和劣势我不在这里详细讲解.大家可以自行搜索.

我只在必要时介绍他们的区别和优劣.

计算机使用的固件不同,他们的启动模式就不同.引导方式自然也不同.


固件自检

主板加电之后加载固件,固件被加载到内存里后,便开始运行.主板把整个计算机的控制权交给了固件.

两个固件都要先审视一下自己所在的硬件环境是否可以运行,这叫做自检.

这是一个很快的过程,如果这个过程失败,那么电脑启动就会卡在第一步:电脑的硬件有故障.

一般都是重要的硬件故障,比如CPU,风扇,内存,显示器等发生故障.我们在这里不讨论这些硬件故障.继续启动电脑.

从这之后,UEFI和BIOS的启动方式就分道扬镳了.

我们首先介绍UEFI的启动方式,然后介绍BIOS的启动方式.


UEFI 固件启动 Windows 系统

一般情况下,我们的Windows系统都安装在电脑里面的磁盘中.所以,想要启动Windows系统,UEFI固件首先就要识别到电脑里面的磁盘.

正常情况下,UEFI固件识别磁盘是一个很简单的事情,不需要我们做什么.

**UEFI固件可以识别MBR,GPT两种类型的磁盘分区表.**我们只需要保证磁盘正确连接在电脑里面(主板或USB接口上)就可以了.

识别完磁盘之后,UEFI固件就要对磁盘”下功夫”.他进行的下一步便是扫描磁盘和分区.

我们知道,磁盘上的空间可以被划分为很多分区.例如,C盘,D盘就可以是同一块磁盘的不同分区.

分区的基本参数是文件系统,Windows系统只能安装在NTFS文件系统的分区里面.当我们右键一个分区查看属性的时候,就可以看见他的文件系统了.

然而,UEFI固件是一个”傻子”.UEFI固件只能识别一些比较老式的文件系统类型,比如**:FAT32,FAT16.**

也就是说,纵使我们的磁盘上有好多分区,UEFI固件也只能识别出FAT32和FAT16文件系统的分区.

识别到这些分区之后,UEFI固件就可以读取这个分区里面的文件了.

※在Windows系统的计算机中,磁盘上面有一个十分重要的分区,名字叫做EFI分区.(或者ESP分区)


EFI分区

从名字可以看出,这个分区就是专门给UEFI分区用的.UEFI固件正是通过读取EFI分区里的文件并运行里面的程序来启动Windows的.

所以,理所当然的,EFI分区的文件系统类型是FAT32**(或FAT16,本文为了方便,都使用FAT32为标准EFI分区文件系统)**.

EFI分区的本质就是一个文件系统为FAT32的分区.

所以,任何以FAT32为文件系统的分区都可以被视为EFI分区,被UEFI固件识别读取.

那么,EFI分区里面都有什么?他为什么要作为一个专门的分区供UEFI固件使用?他为什么在Windows系统启动的过程中如此重要?

因为EFI分区里面有Windows系统的引导文件.

笔者给出自己电脑的EFI分区的文件结构目录(不在讲解范围内的文件省略):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
EFI
├─Boot
│ bootx64.efi
│
└─Microsoft
├─Boot
│ │ BCD
│ │ bootmgfw.efi
│ │ memtest.efi
│ │ ...........一堆文件............
│ │
│ ├─zh-CN
│ │ bootmgfw.efi.mui
│ │ bootmgr.efi.mui
│ │.......一堆国家的语言文件.........
│ │
│ ├─Fonts
│ │ chs_boot.ttf
│ │ cht_boot.ttf
│ │..........一堆字体文件...........
│ │
└─Recovery
BCD

下面,我将介绍一种”应用程序”:efi程序.


*.efi程序

和Windows系统里的exe软件一样,**efi程序就是在UEFI固件这个小型系统里的运行程序软件.**在上面的EFI分区文件目录里面,我们可以看见很多以efi为后缀名的文件,他们都是efi程序,只能在UEFI固件中运行.

例如: **bootx64.efi,bootmgfw.efi,memtest.efi **等等都是efi程序,可以在UEFI环境下运行.UEFI固件通过运行它们,进一步启动Windows系统,或者进行其他操作.

对于Windows系统来说,bootx64.efi,bootmgfw.efi这两个程序都是启动Windows的关键.(每一个都可以独立启动Windows)

那么至于为什么有两个启动Windows的efi程序,我们一会再说明.


UEFI固件怎么知道自己要干什么?

问题来了:UEFI固件读取扫描到了EFI分区,也能访问EFI分区里的文件,但是,UEFI固件怎么知道要自己运行bootmgfw.efi或者bootx64.efi的?

这还是NVRAM的功劳.

NVRAM里面除了有UEFI固件整体代码,还记录了UEFI固件应该运行的efi程序所在的EFI分区是哪一个分区,以及efi程序所在位置的详细信息.

UEFI固件正是读取了这个记录,才能运行相应的efi程序,进行下一步操作.

不同分区都有自己独一无二的”身份证号”,即使两个分区的各个特征都一样(比如大小,文件系统类型…)它们的身份证号也不同.

这个身份证号的名字在计算机中叫做GUID.GUID是一长串**数字和字母的组合,**是随机生成的,也是唯一的.

事实上,NVRAM里记录的就是这个EFI分区的GUID,UEFI也是通过这个GUID找到正确的EFI分区.

我们也可以给身边的任何一个事物一个GUID号,比如,一盆向日葵.

一般来说,NVRAM里面不只记录了一个启动项目,而是记录很多的指向efi程序的启动项目.

但是通常情况下,这些项目并不是都有效的.UEFI固件会按照顺序从上到下依次尝试启动项目,并运行第一个尝试成功的efi程序.

93uefi

例如,上图就是一个UEFI的启动菜单选择界面(截图自VMWare虚拟机).我们可以通过开机的时候按下键盘上的开机热键的方式把开机过程”截住”,然后进入这个菜单页面.(不同品牌电脑开机热键不同,可以百度搜索)

我们可以看到,从Windows boot manager开始,到EFI VMWare Virtual NVME Namespace (NSID 2), 这些都是UEFI的启动项目.它们都记录在主板的NVRAM里面.

UEFI从上到下依次尝试启动,寻找并运行它们所指向的efi程序.


bootx64.efi,bootmgfw.efi都做了些什么?

了解并且运行了efi程序之后,我们将介绍bootx64.efi和bootmgfw.efi这两个efi程序究竟做了什么操作,才能启动Windows系统.

首先,大家可以放心的是: bootx64.efi,bootmgfw.efi这两个程序只是名字不同而已,他们的文件本质是一样的,是两个一模一样的程序.所以,它们的运行原理是一致的.

至于为什么会有两个一样的efi程序,但名字还不一样,我会在之后讲解.

bootmgfw.efi是Windows启动管理器.

你可能见过这两个界面:

93老式

93metro

这两个界面都是Windows启动管理器的界面,也就是说,他们都是bootmgfw.efi的界面.

为什么是两种界面?

因为微软自Windows 8 开始引入了磁贴风格扁平化设计,便于触摸设备使用.

黑色的便是老式的Windows启动管理器界面,蓝色的是Windows 8 之后引入的metro界面,比较现代.

它们的本质是相同的,只不过蓝色的界面更美观一些.然而,新式的界面在有多系统的电脑上可能会拖延启动时间.

我们可以手动配置BCD文件,来选择使用这两种界面的任意一种.

关于如何配置BCD文件,我将在之后讲解.

bootmgfw.efi这个Windows启动管理器列出了操作系统的启动菜单供我们选择.

比如,上图中就有win1,win2,win3,PE1,PE2这些系统可以启动.

那么,下一个问题就是:这些可以启动的系统的列表是从哪里来的?


BCD文件

BCD文件里面记录了这个系统列表.

BCD文件是什么?

BCD文件(boot configuration data),启动配置数据.

BCD文件里记录了操作系统的启动信息,包括系统位置,启动模式,启动程序,系统菜单名称等等.可以说是Windows系统启动的字典索引.

BCD文件只适用于Windows系统.

BCD文件内容就像是NVRAM里面的启动顺序记录一样,都是记录菜单.只不过NVRAM启动顺序是给UEFI用的,BCD是给bootmgfw.efi用的.

BCD文件位于和bootmgfw.efi相同的文件夹里.一般情况下,EFI分区里的文件的位置都不可以改变,如果改变就可能发生UEFI固件和efi程序找不到文件的情况,导致启动失败.

具体详细内容可以阅读《对UEFI引导的深入探究:efi引导程序的位置一定是死的吗?》

93bcd位置

**学会如何编辑BCD,是系统运维迈向高阶的关键一步.**下面我将进行详细的讲解.


编辑BCD

我们无法使用普通的文本编辑器编辑BCD,因为里面的数据是加密的.

因此,我们使用第三方图形界面工具编辑BCD,也可以使用微软提供的命令行工具bcdedit编辑BCD.

由于命令行工具使用不方便,不适合入门,笔者介绍使用第三方优秀小工具**BOOTICE**这款软件编辑BCD菜单.有兴趣的同学可以学习一下命令行工具的编辑方法.

BOOTICE软件可以在各大平台下载.笔者提供一个下载链接

打开BOOTICE,我们点击上方"BCD编辑"->选择当前系统BCD->智能编辑模式即可编辑我们自己电脑的BCD.

BCD是重要的启动配置数据,请谨慎操作,错误操作可导致无法启动系统.

建议在虚拟机中编辑BCD练习.

93bootice

这个界面大体分两部分:左半栏,右半栏.

左半栏的上部显示的是在Windows启动管理器(bootmgfw.efi)界面显示的操作系统启动菜单的样子.其余部分都是BCD的编辑选项.

我将进行详细介绍.

  • “上移,下移,默认,添加,删除”:对某一个启动项目在菜单中的位置上移,下移,设置为默认启动项目,添加新的启动项目,删除某一个启动项目.
  • 全局设置
    • 超时时间:在有多个启动项目时,设置等待时间,到了这个时间之后自动启动被设置为默认的启动项目.
    • 启动界面语言:选择Windows启动管理器界面的语言.是否生效还需要搭配EFI分区中语言文件夹中的语言文件.
    • 显示菜单:若勾选,无论是否有多个启动项目,都在启动的时候显示Windows启动管理器菜单.
    • 禁用数字签名验证:禁用启动程序的数字签名验证.
  • 启动设备
    • 设备类型:启动的系统的启动类型.正常的Windows系统是以**分区**方式启动的.(也就是Windows系统安装在分区里面).Ramdisk和VHD分别为另外两种启动类型,会在未来介绍.
    • 启动磁盘:安装的Windows系统所在的磁盘.
    • 启动分区:Windows系统所在的分区.(也就是我们常常说的C盘)
    • 设备文件,SDI文件是Ramdisk和VHD需要的依赖文件,不是正常Windows系统启动所需,将在未来介绍.
  • 设置
    • GUID:该启动项的”身份证”(全局唯一标识符)不可更改.
    • 菜单标题:显示在Windows启动管理器的菜单名字,作用是让我们分辨哪个菜单对应哪个系统.我们可以随意对其进行命名.(不建议使用中文)
    • 启动文件:用于启动Windows系统运行的第一个程序.对于UEFI固件的计算机,这个程序都是位于系统盘的\Windows\system32\winload.efi.
    • 系统路径:\Windows这个也是不变的.
    • 系统语言:系统语言.
  • safeboot:安全启动,一般是normal mode,正常模式
  • PAE:开启这个功能可以使32位的CPU访问超过4GB大小的内存.
  • NX:阻止恶意代码加载的技术.
  • 检测硬件抽象层:检测操作系统与硬件之间的抽象层面是否正常.
  • 启动到winPE:如果这个启动项启动PE系统,则需要勾选他.
  • 启用 win 8 metro 界面:勾选后,bootmgfw.efi将显示蓝色磁贴风格的Windows启动管理器界面.不勾选则使用黑色背景界面.
  • 测试模式:启动系统到测试模式.
  • 保存当前系统设置:保存某一个启动项的设置.
  • 保存全局设置:保存整个BCD文件.

以上是bootice编辑BCD界面所有按钮功能的介绍.

介绍完功能,如何编辑BCD就显而易见了.我在此强调几点经验.

  • 新建BCD菜单,对于Windows 7/8/8.1/10/11系统,点击添加->新建win7/8/8.1启动项
  • 常规安装的Windows系统,设备类型是分区
  • 启动磁盘选择Windows系统所在的磁盘
  • 启动分区选择Windows系统所在的分区
  • 菜单标题自拟,最好用英文
  • 启动文件:如果是UEFI固件,那就是winload.efi.(如果是BIOS固件,那就是winload.exe.)
  • 系统路径,系统语言不用改
  • 所有的路径前面别忘了加一个反斜杠!(\)
  • safeboot,PAE,NX保持默认设置
  • 不启用win 8 metro界面.(除了美观,没别的作用,拖慢启动菜单选择速度)
  • 启动到winPE不勾选或者半勾选.
  • 每次编辑完成后,先点击保存当前系统设置,再点击保存全局设置
  • 超时时间按照自己的习惯设置(能反应过来就行)
  • 其余的选项保持默认.

你可能有一个疑惑:为什么有的选项的勾选状态有三种,分别是勾选,不勾选和半勾选?

半勾选的状态代表这个功能对于当前启动项,**能开启就开启,不能开启就不开启,属于中间模棱两可的状态,**是否开启取决于启动时的启动环境条件.

至此,BCD编辑讲解结束.

BCD编辑结束后,操作系统的启动也就接近了尾声.


UEFI启动Windows的最后阶段

bootmgfw.efi通过读取BCD文件,把操作系统启动菜单列出在Windows启动管理器界面,供用户选择启动.

用户选择一个项目启动之后,bootmgfw.efi根据BCD文件里面记录的启动项目的启动文件(也就是

\Windows\system32\winload.efi),加载运行这个winload.efi

然后bootmgfw.efi就把计算机的控制权交给了winload.efi这个程序.

winload.efi程序负责加载Windows系统的内核,启动Windows.

UEFI固件模式下的Windows系统至此启动完毕.


问题解答

  • EFI分区为什么在文件资源管理器里面看不见?
    • EFI分区的重要性不言而喻.一旦用户错误更改了里面的文件,就可能导致Windows系统关机后无法再次启动.对于如此重要的分区,操作系统把他隐藏了起来,不让用户触及.
    • 我们可以使用系统自带的磁盘管理工具看见EFI分区.或使用第三方软件diskgenius浏览编辑里面的文件.
  • 为什么存在两个相同的文件bootx64.efi,bootmgfw.efi?
    • 事实上,UEFI规范中,把bootx64.efi这个程序作为UEFI固件寻找的默认efi程序.也就是当NVRAM里面没有任何记录的时候,UEFI固件默认加载bootx64.efi
    • bootx64.efi的位置是固定的,位于EFI分区的\EFI\boot\bootx64.efi
    • 微软把bootx64.efi当做一个启动的备用选项.一旦bootmgfw.efi损坏丢失,UEFI固件可以启动bootx64.efi,同样启动Windows系统.
    • 更详细的内容,请阅读本文


BIOS固件引导启动Windows系统

有了UEFI固件的基础,理解BIOS固件启动Windows能够更加轻松.

BIOS固件作为老式的固件,正在被淘汰.但是现在有一定量的电脑使用这种固件,所以还是有必要学习研究.


BIOS固件启动Windows系统对磁盘的要求

和UEFI不同,BIOS固件对安装有Windows的磁盘有特殊的要求.具体表现为:

  • 磁盘分区表必须是MBR
  • 必须要有一个激活主分区(活动分区)

BIOS固件对Windows系统版本没有要求.


BIOS固件引导Windows系统启动的方式

与UEFI依赖文件启动的模式不同,BIOS固件通过运行代码启动系统,因此可操作性更低.

分区表:

磁盘的分区表有两种类型:MBR和GPT(又叫GUID).

MBR是一种年代久远的分区表类型,GPT是一种新型的分区表类型.

BIOS固件只能识别MBR分区表,UEFI固件两种都能识别.

这两种分区表类型可以互相转换,并不会影响硬盘里的原有数据(无损转换).

  • 采用MBR分区表的磁盘最多支持分出4个主分区,只能识别不超过2TB的磁盘.然而,可以通过创建逻辑分区的方法来分出更多的分区.

  • 采用GPT分区表的磁盘最多支持128个分区,能识别不超过9.4ZB的硬盘.

可见,GPT是一种更加先进的分区表类型,管理起来更加灵活.

只要磁盘是MBR分区表,且磁盘完好,它就可以被BIOS识别.

BIOS引导启动的第一步,就是读取磁盘的主引导记录MBR.


主引导记录(MBR)

MBR存储在磁盘最前端,也就是0柱面、0磁头、1扇区的二进制代码,总大小为512字节.也就是说MBR是在磁盘的最开头存储的二进制数据.

它不是文件,而是0101010110101………

MBR看似乱成一锅粥.但是我们要清醒地意识到,MBR被明明确确的分成三个组成部分.

  • 主引导代码.大小:占据MBR的前446字节
    • 作用:引导操作系统启动.
  • 磁盘分区表.大小:占据64字节
    • 作用:记录整个磁盘上的分区情况,并记录哪一个分区是活动分区.一个分区记录占用16字节,总共能记录四个分区(16x4=64).也就是说MBR磁盘最多能有四个主分区.
  • 结束标志.大小:第1扇区的最后2字节
    • 作用:他永远是16进制数据的55 AA.如果这一部分不是55 AA,那么这个硬盘就会被认为是一个无效的硬盘.

简单来说,MBR是一段代码.它位于一个磁盘的第一个扇区.

在按下开机键后,BIOS固件会找到磁盘第1个扇区的前512字节,然后把这512字节的数据加载到内存中.接着,BIOS会校验这512字节的最后两个字节是否是55 AA.校验通过后,BIOS给CPU发送一个指令,CPU就会去执行前446字节的MBR引导代码.

“执行引导代码”这句话看着高深,实际上,这一步CPU只做了两件事:

  1. 找到活动主分区.
  2. 执行活动主分区的PBR代码.

CPU怎么找到的活动主分区?靠的是读取MBR分区表.也就是读取那64字节的磁盘分区表.

PBR又是什么东西?和MBR很像,我们马上介绍.


分区引导记录(PBR)

整个磁盘的第一个扇区有MBR,那么相应的,整个分区的第一个扇区就有”该分区的MBR”,也就是PBR.

分区引导记录(PBR),全称Partition boot record.与MBR类似,它也是一段二进制代码.

它与MBR的工作接续,负责启动系统的下一步.

如果说MBR管理的是整个磁盘,那么PBR管理的就是它所在的分区.

  • 普通分区的PBR记载的内容就是有关这个分区的各种参数,比如分区的文件系统类型,分区大小等等.
  • ※※活动分区的PBR还记载BOOTMGR的位置.

BOOTMGR是什么?

BOOTMGR是一个文件,是Windows启动管理器,是一个在BIOS内运行的程序.他对标的就是bootmgfw.efi.

也就是说,BOOTMGR就相当于UEFI固件里面的bootmgfw.efi.它们的功能类似,都是Windows启动管理器.

※※它的位置是固定不变的,只能位于活动分区的根目录里.因为PBR是死的.PBR认为它只能在活动分区的根目录里.


活动分区的PBR的作用之一就是找到BOOTMGR并运行它.

BOOTMGR运行后,接下来的启动流程就与Windows系统在UEFI电脑上的启动流程大体相似了.


BOOTMGR的工作

BOOTMGR一般位于活动分区的根目录里,而且活动分区一般是C盘.所以他一般位于C盘根目录.

BOOTMGR属于受操作系统保护的文件.如果不在文件资源管理器里勾掉”隐藏受操作系统保护的文件“这一项,即使显示隐藏的项目,文件资源管理器也不会显示它.

因为他对于Windows启动实在是太重要了.

BOOTMGR的作用与UEFI里的bootmgfw.efi是一样的:读取BCD文件并加载列出里面的操作系统菜单.

BIOS模式启动的BCD文件的位置在活动分区的boot文件夹里.一般情况下,位于 C:\boot\BCD

也就是说,BOOTMGR和BCD文件必须要在同一个分区里.而且这个分区一定是活动主分区.


编辑BIOS的BCD文件

和UEFI下的BCD文件相比,只有一点不同之处:

  • 启动文件变为\Windows\system32\winload.exe

其他配置与UEFI一致.

这很好理解.UEFI下一定运行efi程序,所以是winload.efi.BIOS下运行的程序就只能是winload.exe了.


BOOTMGR列出BCD文件里面的菜单后,用户任意选择一个有效的系统回车进入.

然后,BOOTMGR根据BCD文件里的信息,运行位于 \Windows\System32 文件夹里的 winload.exe.

之后,winload.exe加载Windows操作系统内核.

BIOS引导启动到此结束.



UEFI引导流程图

uefi

BIOS引导流程图

bios


修复Windows系统引导的一般方法

当我们拿到了一个引导出现故障的Windows系统的时候,我们一般应该使用何种方法快速的修复他的引导呢?

笔者推荐使用Dism++这个软件修复引导.


使用Dism++修复Windows系统引导

Dism++几乎内置于所有主流的PE系统里面.当然,他也可以在Windows系统里面使用.

打开Dism++.

  • 点击需要修复引导的系统.
  • 点击恢复功能->引导修复
  • 点击确定
  • 引导修复完成

[注意事项]

Dism++判断应该修复UEFI模式的引导还是BIOS模式的引导是通过检测磁盘分区表的类型.

Dism++认为,只能**UEFI固件+GPT分区表磁盘,BIOS固件+MBR分区表磁盘.**但事实上,UEFI固件同样支持MBR分区表磁盘.

所以,如果你在UEFI主板上使用了一块MBR分区表的磁盘安装Windows系统,Dism++会默认修复BIOS引导.(也就是重建MBR,修复BOOTMGR,以及适合于BIOS的BCD文件).这时,由于UEFI固件在运行时会去寻找bootx64.efi,却找不到.所以仍然无法启动系统.

如果你遇到了上述情况,并且由于某些原因必须使用UEFI固件+MBR分区表磁盘这种搭配,那么Dism++的引导修复功能就是无效的修复.

这时,有两种方案可供你选择,修复UEFI固件+MBR分区表磁盘的Windows系统启动引导:

方案一:

首先使用DiskGenius软件,将磁盘分区表转换为GPT分区表类型.然后,再使用Dism++软件修复引导.

接着,在DiskGenius软件里面打开EFI分区,将其中的\EFI\Microsoft\Boot\BCD这个BCD文件复制到其他任意位置.(注意:不可以复制到这个磁盘里面了,可以复制到PE系统的系统盘里面,比如,PE系统的桌面.)

然后,再次使用DiskGenius软件把这个磁盘的分区表转换回MBR分区表.

最后,把复制出来的BCD文件替换回原来的位置.

为什么要复制出来并且替换BCD?因为BCD文件会在他所在的磁盘的分区表类型变化的时候丢失引导信息.

方案二:

  • 在PE系统中按win+R组合键,然后输入cmd,回车运行.

  • 在cmd窗口中,输入以下代码:

    1
    bcdboot C:\windows /s G: /f UEFI
  • C: 代表PE系统中Windows的系统盘是C盘.你需要自己查看PE系统中哪个盘是Windows系统的系统盘,并将C更改为相应字母.(PE系统的系统盘是X盘)

  • G: 是EFI分区的盘符.在大多数情况下,EFI分区没有盘符.所以需要先给他分配一个盘符,然后再运行这个命令.

分配盘符的方法:

  • 打开DiskGenius软件.
  • 右键EFI分区,点击指派新的驱动器号(盘符)
  • 随意选择一个字母即可.

Windows系统启动流程原理介绍+实操讲解到此结束.

感谢您的阅读,希望对您有所帮助.

如有问题,可以关注公众号吕社交流探讨.


小白必看:Windows系统引导和启动详细介绍与运维实操全面讲解
https://lvlele.top/1000小白必看Windows系统引导启动详细介绍与实操全面讲解/
作者
吕了了
发布于
2026年11月2日
许可协议