电脑突然开不了机的情况基本人人都遇到过,原因也是千奇百怪,不管什么原因,一般都会选择重装系统。
毕竟没有什么是重装系统解决不了的电脑故障,如果有,那就装两遍。
实际上粗暴地重装系统是非常小白的解决方法,毕竟耗时耗力,还可能导致文件丢失,而且电脑系统坏掉的几率是很小的。
比起系统故障,引导问题导致开不了机更加常见,但是因为系统引导的概念不为人熟知,所以大家在面临引导问题时往往手手足无措。
其实引导修复非常简单快捷,比重装系统省事太多,而且所有文件设置都不会丢失。
只要明白引导的概念和流程,就懂得如何修复引导,这将会让你对操作系统的认知上一个台阶。
文本以Windows10下单系统为案例讲解引导原理和修复方法。
什么是“引导”
BIOS启动操作系统的过程叫做引导。如果引导故障那系统一定无法启动。
在BIOS+MBR引导模式中,活动分区内有这些重要的引导文件:
在Windows10的系统安装盘C:\windows\system32下存在winload.exe启动程序。
如果"Boot\BCD"、"bootmgr"、"C:\windows\system32\winload.exe"丢失或者损坏系统将无法引导开机。
BIOS启动流程:
在BIOS启动时会依次检查磁盘分区,看是否为活动分区,如果是活动分区,就检查分区内有没有引导文件,然后执行。
在BIOS引导模式中,引导文件可以在任意活动分区中,至于启动的是什么系统,BIOS不管。
在UEFI+GPT引导模式中,GPT分区表上,有一个FAT32格式的EFI系统分区(EFISystemPartition,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。反之亦然。
排除其他引导错误的可能
引导文件出现问题一定开不了机,开不了机却不一定是引导文件的锅,也可能BIOS设置错误,首先进入BIOS。
检查BIOS中第一启动盘是否为系统盘。
检查启动模式是否为装系统时对应的模式UEFI或Legacy。
简单的引导修复
修复引导的方法很多,但原理都大同小异,Windows系统最推荐使用微软提供的bcdboot.exe命令行工具,基本一行命令就能修复引导问题。
bcdboot.exe,是微软编写的引导修复命令行工具,它的工作原理是从已有的Windows系统中复制一套启动环境文件到启动分区中。
无法启动系统时有两种方法可以打开BCDboot.exe命令
1、进入PE调用,WIN+R打开运行,输入CMD。
2、进入Windows高级修复模式(方法之一是在开机显示Windows图标的时快速切断电源,连续3次将进入修复模式)
通常引导文件丢失或损坏只需要输入bcdbootC:\windows即可修复引导
在BIOS引导模式中,bcdboot会在MBR格式磁盘上的活动分区中创建\Boot目录,并将所有需要的引导环境文件复制到该目录中。
在UEFI引导模式中,bcdboot会在GPT格式磁盘上的EFI系统分区(ESP)中创建\EFI\Microsoft\Boot目录,并将所有需要的引导环境文件复制到该目录中。
误删引导分区
有时候我们会误删系统引导分区,这种情况下需要先建立合适的引导分区再进行修复。
BIOS模式下:
进入磁盘管理-右键被删除的引导分区-新建简单卷-将刚刚建立的卷转化为活动分区(BIOS引导下bcdboot识别活动分区)。
左右滑动查看更多(点击图片放大)
再次输入命令修复引导。
左右滑动查看更多(点击图片放大)
最后别忘了隐藏引导分区,避免再次误删。
ps:BIOS引导模式下其实引导文件可以和系统放在一个分区中,也就是说不用建立专门的引导分区,将系统所在分区设置为活动分区然后直接输入bcdboot命令即可。
UEFI模式下:
进入磁盘管理-确保引导分区是未分配的-输入diskpart命令新建EFI分区-使用bcdboot命令修复引导。
左右滑动查看更多(点击图片放大)
上面的diskpart命令依次是:
diskpart—进入diskpart工具
listdisk—列出现有磁盘
selectdisk*—选择磁盘*(*代表要创建的EFI分区所在磁盘,我这里是0)
listpartition—列出磁盘中的现有分区(可跳过)
createpartitionefisize=*—创建大小为*的EFI分区(*代表EFI分区大小,我这里是99MB)
formatquickfs=fat32—格式化EFI分区为fat32格式
exit—退出diskpart工具
以上就是Windows10下使用bcdboot引导修复的方法。
所以以后电脑开不了机不要再急着重装系统,先试试引导修复。
bcdboot其他命令
在面对更复杂的情况时bcdboot还提供其他命令格式:
bcdboot<源位置>[/l<区域设置>][/s<卷号>[/f<固件类型>]][/v][/m[{OS加载程序GUID}]][/addlast或/p][/d][/c]
源位置指定作为源的Windows根目录的位置,将从该目录中复制启动环境文件
输入示例:bcdbootC:\Windows
/l可选,指定初始化BCD存储时可选区域设置,默认值为英语(美国)
输入示例:bcdbootC:\Windows/lzh-CN
/s可选,指定复制引导文件目标系统分区的卷号,默认值是固件所标识的系统分区
输入示例:bcdbootC:\Windows/sS:
/f与/s一起使用,指定目标系统分区的固件类型,选项有UEFI、BIOS或ALL
输入示例:bcdbootC:\Windows/sS:/fALL
/v可选,启用详细模式
输入示例:bcdbootC:\Windows/v
/m可选,如果指定了OSLoaderGUID,则合并给定的加载程序对象和系统模板,以生成可启动项,默认情况下,只合并全局对象
输入示例:bcdbootc:\Windows/m{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
/addlast可选,指定应将上次添加的Windows启动管理器固件项。默认行为是将其添加第一次。不能与/p选项一起使用。
输入示例:bcdbootC:\Windows/addlast
/p可选,指定Windows引导管理器固件项应保留位置。如果条目不存在,新条目将添加到第一个位置
输入示例:bcdbootC:\Windows/p
/c可选,指定由模板描述的任何现有对象不应迁移
输入示例:bcdbootC:\Windows/c
案例:bcdbootC:\Windows/sH:/fuefi/lzh-cn
意思为:将ESP分区装载为H盘,从系统盘C:\Windows目录中复制UEFI格式的启动文件到ESP分区中。