电脑突然开不了机的情况基本人人都遇到过,原因也是千奇百怪,不管什么原因,一般都会选择重装系统。毕竟没有什么是重装系统解决不了的电脑故障,如果有,那就装两遍。
实际上粗暴地重装系统是非常小白的解决方法,毕竟耗时耗力,还可能导致文件丢失,而且电脑系统坏掉的几率是很小的。
比起系统故障,引导问题导致开不了机更加常见,但是因为系统引导的概念不为人熟知,所以大家在面临引导问题时往往手手足无措。
其实引导修复非常简单快捷,比重装系统省事太多,而且所有文件设置都不会丢失。
只要明白引导的概念和流程,就懂得如何修复引导,这将会让你对操作系统的认知上一个台阶。
本文以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分区中。