开不了机不要急着重装系统,先试试引导修复

电脑突然开不了机的情况基本人人都遇到过,原因也是千奇百怪,不管什么原因,一般都会选择重装系统。毕竟没有什么是重装系统解决不了的电脑故障,如果有,那就装两遍。实际上粗暴地重装系统是非常小白的解决方法,毕竟耗时耗力,还可能导致文件丢失,而且电脑系统坏掉的几率是很小的。

比起系统故障,引导问题导致开不了机更加常见,但是因为系统引导的概念不为人熟知,所以大家在面临引导问题时往往手手足无措。

其实引导修复非常简单快捷,比重装系统省事太多,而且所有文件设置都不会丢失。只要明白引导的概念和流程,就懂得如何修复引导,这将会让你对操作系统的认知上一个台阶。文本以Windows 10下单系统为案例讲解引导原理和修复方法。

 

01

什么是“引导”

BIOS启动操作系统的过程叫做引导。如果引导故障那系统一定无法启动。
BIOS分为UEFI BIOS(简称UEFI)和Legacy BIOS(简称BIOS)。

 

02

引导文件和工作流程

在BIOS+MBR引导模式中,活动分区内有这些重要的引导文件:

在Windows 10的系统安装盘C:\windows\system32下存在winload.exe启动程序。

如果”Boot\BCD”、”bootmgr”、”C:\windows\system32\winload.exe”丢失或者损坏系统将无法引导开机。

BIOS启动流程:

在BIOS启动时会依次检查磁盘分区,看是否为活动分区,如果是活动分区,就检查分区内有没有引导文件,然后执行。

在BIOS引导模式中,引导文件可以在任意活动分区中,至于启动的是什么系统,BIOS 不管。

在UEFI+GPT引导模式中,GPT分区表上,有一个FAT32格式的EFI系统分区(EFISystem Partition,ESP),所有系统的启动文件都放在EFI文件夹中。


EFI系统分区是各个操作系统共享的系统分区,各家操作系统在EFI系统分区中建立自己的引导文件夹.
Windows的启动文件,在”\EFI\Microsoft”中。

Clover的启动文件,在”\EFI\Clover”中。值得一提的是”\Boot”文件夹中的bootx64.efi引导文件,这是一个通用名,是计算机(非操作系统)的默认引导文件,也就是说不管其他磁盘有没有装系统,计算机都会尝试通过bootx64.efi来启动。

“\Boot”文件夹中的bootx64.efi其实就是从其它操作系统中的引导文件复制过来再改名的,比如在“\EFI\Microsoft”中的bootmgfw.efi。复制哪家的引导文件就默认启动那家的操作系统。

所以在”EFI\Microsoft\Boot\bootmgfw.efi”系统默认引导文件丢失的情况下,计算机也能通过”\Boot\bootx64.efi”启动Windows。反之亦然。

03

排除其他引导错误的可能

引导文件出现问题一定开不了机,开不了机却不一定是引导文件的锅,也可能BIOS设置错误,首先进入BIOS。

检查BIOS中第一启动盘是否为系统盘。


检查启动模式是否为装系统时对应的模式UEFI或Legacy。

04

简单的引导修复

修复引导的方法很多,但原理都大同小异,Windows系统最推荐使用微软提供的bcdboot.exe命令行工具,基本一行命令就能修复引导问题。

bcdboot.exe,是微软编写的引导修复命令行工具,它的工作原理是从已有的 Windows 系统中复制一套启动环境文件到启动分区中。

无法启动系统时有两种方法可以打开BCDboot.exe命令

1、进入PE调用,WIN+R打开运行,输入CMD。

2、进入Windows高级修复模式(方法之一是在开机显示Windows图标的时快速切断电源,连续3次将进入修复模式)

通常引导文件丢失或损坏只需要输入bcdboot C:\windows 即可修复引导

在BIOS引导模式中,bcdboot会在MBR格式磁盘上的活动分区中创建 \Boot 目录,并将所有需要的引导环境文件复制到该目录中。

在UEFI引导模式中,
bcdboot会在GPT格式磁盘上的EFI系统分区(ESP)中创建\EFI\Microsoft\Boot目录,并将所有需要的引导环境文件复制到该目录中。

05

误删引导分区

有时候我们会误删系统引导分区,这种情况下需要先建立合适的引导分区在进行修复。

BIOS模式下:

进入磁盘管理 – 右键被删除的引导分区 – 新建简单卷 – 将刚刚建立的卷转化为活动分区(BIOS引导下bcdboot识别活动分区)。

再次输入命令修复引导。

最后别忘了隐藏引导分区,避免再次误删。

ps:BIOS引导模式下其实引导文件可以和系统放在一个分区中,也就是说不用建立专门的引导分区,将系统所在分区设置为活动分区然后直接输入bcdboot命令即可。

UEFI模式下:
进入磁盘管理 – 确保引导分区是未分配的 – 输入diskpart命令新建EFI分区 – 使用bcdboot命令修复引导。



上面的diskpart命令依次是:

diskpart
—  进入diskpart工具
list disk
—  列出现有磁盘
select disk *
—  选择磁盘*(*代表要创建的EFI分区所在磁盘,我这里是0)
list partition
—  列出磁盘中的现有分区(可跳过)

create partition efi size= *
—  创建大小为*的EFI分区(*代表EFI分区大小,我这里是99MB)
format quick fs = fat32
—  格式化EFI分区为fat32格式
exit
—  退出diskpart工具

以上就是Windows 10 下使用bcdboot引导修复的方法。

所以以后电脑开不了机不要再急着重装系统,先试试引导修复。

 

06

bcdboot其他命令

在面对更复杂的情况时bcdboot还提供其他命令格式:

bcdboot <源位置>[ /l <区域设置> ][ /s <卷号>[ /f < 固件类型> ]] [ /v ][ /m [{OS 加载程序 GUID}] ] [ /addlast或 /p ][ /d ][ /c]

源位置    指定作为源的 Windows 根目录的位置,将从该目录中复制启动环境文件

输入示例:bcdboot C:\Windows

/l    可选,指定初始化 BCD 存储时可选区域设置,默认值为英语(美国)

输入示例:bcdboot C:\Windows /lzh-CN

/s    可选,指定复制引导文件目标系统分区的卷号,默认值是固件所标识的系统分区

输入示例:bcdboot C:\Windows /s S:

/f    与 /s 一起使用,指定目标系统分区的固件类型,选项有UEFI、BIOS 或ALL

输入示例:bcdboot C:\Windows /s S: /f ALL

/v    可选,启用详细模式

输入示例:bcdboot C:\Windows /v

/m    可选,如果指定了 OS Loader GUID,则合并给定的加载程序对象和系统模板,以生成可启动项,默认情况下,只合并全局对象

输入示例:bcdboot c:\Windows /m {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

/addlast    可选,指定应将上次添加的 Windows 启动管理器固件项。默认行为是将其添加第一次。不能与 /p 选项一起使用。

输入示例:bcdboot C:\Windows /addlast

/p    可选,指定 Windows 引导管理器固件项应保留位置。如果条目不存在,新条目将添加到第一个位置

输入示例:bcdboot C:\Windows /p

/c    可选,指定由模板描述的任何现有对象不应迁移

输入示例:bcdboot C:\Windows /c

 

案例:bcdbootC:\Windows /s H: /f uefi /l zh-cn

意思为:将ESP分区装载为H盘,从系统盘C:\Windows目录中复制UEFI格式的启动文件到ESP分区中。