天天看点

UEFI启动-GPT分区,Windows 7+ 系统引导修复

问题描述

由于工作需要或者出于兴趣爱好装了多系统的同学,很可能装上了window+linux。有些情况下,不如比如先装上了linxu然后装行了Windows,重启后发现liux启动菜单不见了。找了个中工具,比如拿了个EASYBCD来修复启动菜单,结果一不小心把Widow启动项也删了,这时候真是浑身疼啊。怎么修复启动项呢,方法很多,这个主要说明下修复的大致原理以及一种可行的方法,供大家参考。

适用情景

如题,固件接口为UEFI(另参考BIOS),磁盘分区为GPT格式(另参考MBR)。操作系统 Windwos 7 及以上。此外本文所述,都是原理示意,点到为止,只帮助理解用途。

如何简易确认下环境

使用PE工具进入系统,用DiskGenius磁盘分区工具看的话,会看到一个系统保留分区ESP(不是磁盘的第一个分区),GUID类型为C12A7328-F81F-11D2-BA4B-00A0C93EC93B,这样大致可以确认磁盘是GPT分区格式的,并使用UEFI附件接口。如果所有分区的GUID为一串0,那就不是GPT分区了,不在本文讨论范围。

正常启动原理

UEFI启动-GPT分区,Windows 7+ 系统引导修复

启动原理示意图

如图所示PC是按照以下步骤启动的:

1. 打来电源开关,开始加电

2 UEFI找到磁盘上的ESP分区,去执行efi应用

ESP存放了操作系统启动相关的信息,如操作系统所在的磁盘位置等,以及其他可以使用UEFI的efi应用
           

3 执行ESP中的bootmgr,bootmgr会读取BCD数据

BCD(Boot Configuration Data)启动配置数据,记录了启动菜单中操作系统位置信息
           

4 确认Windows系统,到 C:\ 去引导启动Windows

系统引导失败可能性分析

一般使用EASYBCD误操作,或装多系统引起的引导失败,多是在步骤 3 出现了问题。即,BCD文件或其他系统相关的文件出现了问题。

系统修复原理分析

Window系统文件中(本例C:\ 中)包含了系统相关的环境和信息。ESP中 Widnows 操作系统的相关信心也是在安装系统或其他时间,从 C:\ 拷贝过来的。因而,如果ESP中的信息被损坏,可以从 C:\ 中恢复出来。

一种可行的方法

使用BCDboot.exe(本例中在C:\Windows\System32路径下)。该程序需要在cmd模式下运行。切换到该程序路径,直接输入bcdboot.exe查看详细参数使用说明。

本文只给出实例:

1. 进入PE系统(当然其他一些工具也可以)

2. Win+R 在运行对话框中输入cmd回车

3. cd C:\Windows\System32 (注意,正常启动Window系统盘符是C,使用PE进入的不一定是C)

4. 确定ESP分区的盘符,我的是G

5. bcdboot C:\windows /s G: /f uefi /l zh-cn

紧跟在bcdboot后边的参数是没有损坏的系统文件所在位置,我的是C:\windows
跟在 /s 选项后边是时ESP分区所在的位置,我的是G:
/f 参数规定使用的启动方式,这里选UEFI
/l 参数规定了启动菜单的语言,外国话不好的就选zh-cn,这是咱的母语
           

Contact: [email protected]