EFI系统引导的一些零碎知识点
EFI目录
下图只有Boot和Microsoft,如果你还装其他系统可能还会有其他的文件夹,比如你还装了Ubuntu(或者manjaro),那么会有个叫Ubuntu(manjaro)的文件夹与Boot、Microsoft并存。
Boot是计算机默认引导文件所在的目录,Microsoft是微软Windows系统引导所在的目录。
Boot目录:
Microsoft目录:
Microsoft\Boot目录:
上图中红框内的bootmgfw.efi就是windows默认的系统引导文件。
几个引导文件的说明
引用:https://blog.csdn.net/lindexi_gd/article/details/50392343
计算机默认引导 -----------就是不管你的计算机有没有操作系统,定义了UEFI启动后将通过Bootx64.efi 引导你的计算机,并进入各种模式,维护、安装、计算机或者系统这里是 Bootx64.efi ,它只是一个通用名,权限丰富且大于Windows 默认,就是说如果你的Windows 默认的启动文件不在了,启动计算机默认的引导文件Bootx64.efi 也是可以启动计算机的。使用计算机默认文件随时可以在各种环境下启动计算机,EFI SHELL、ISO、Windows、Linux...都可以,通吃型.
Windows默认引导 -------就是你为计算机安装了操作系统,或者修复了UEFI引导后,启动菜单会有 Windows Boot Manager 选项,该选项默认从bootmgfw.efi 启动系统bootmgfw.efi 该位置的该文件只能用于启动Windows,不是通用名,权限单一
详细解释看原作者文章,总结来说就是一块干净的硬盘,装上win后,此时的Bootx64.efi 很可能就是bootmgfw.efi ,我没有经过验证,但是从表面看起来是这样的,所有我说很可能是,不敢保证。如果这时候装Linux与win并存,Bootx64.efi很可能会被修改,然后Bootx64.efi会指向grub,grub再去遍历一遍整个硬盘上的所有系统引导,做一个列表供你选择是用Linux(比如Ubuntu)还是用win。如果你选择是win那就再次转到bootmgfw.efi 去启动win,如果你选择的是Linux(比如Ubuntu)那就转到系统的引导。
再次声明:上述结论全是猜测,我没有实际测试,只是从现象来做出的推论。
验证猜测
我安装win之后又安装了Manjaro,EFI目录内容如图比起之前多了一个Manjaro的文件夹,该文件夹下只有一个grubx64.efi文件
。而且安装完manjaro之后,EFI\Boot目录下的bootx64.efi文件大小也发生了变化,且此时我开机进入的是jrub,然后在jrub中选择要开机的系统。用hash校验了一下EFI\Boot\bootx64.efi 与 EFI\Manjaro\grubx64.efi文件,结果如图
很明显这是同一个文件。再校验下安装manjaro之前的EFI\Boot\bootx64.efi文件,明显是与安装完manjaro之后不一样的,如下图
这样就验证了上一小节的猜想,安装完manjaro之后,修改了系统默认(从硬盘启动)的引导,指向GRUB来管理系统引导。
为了更有说服力,我又做了下面的测试。
1、开机进入系统boot,修改boot顺序,默认(第一个)为硬盘启动,此时我的EFI\Boot\bootx64.efi文件实际上安装完manjaro之后的grubx64.efi。开机后进入的是grub。
2、开机进入系统boot,修改boot顺序,默认为Window boot management,开机,进入的是Windows。
3、开机进入系统boot,修改boot顺序,默认为从manjaro启动,开机后进入的是grub。
4、设置boot默认从硬盘启动,删除EFI\Boot目录下所有文件,把EFI\Manjaro\grubx64.efi 复制到EFI\Boot 重命名为bootx64.efi,开机进入的是grub
5、设置boot默认从硬盘启动,删除EFI\Boot目录下所有文件,把EFI\Microsoft\Boot\bootmgfw.efi 复制到EFI\Boot 重命名为bootx64.efi,开机进入的是windows
由以上可以得到结论:
1、在BIOS设置界面种设置boot为从硬盘启动,走的是EFI\Boot\bootx64.efi
2、在BIOS设置界面种设置boot为Window boot management,走的是EFI\Microsoft\Boot\bootmgfw.efi
3、从硬盘启动,走的是EFI\Boot\bootx64.efi,EFI\Boot\bootx64.efi指向哪个系统就走哪个系统(win或者Linux)。
win10系统功能性更新后丢失Linux引导
猜测:很可能是efi\boot\bootx64.efi 文件被修改成直接引导到efi\microsoft\boot\bootmgfw.efi,导致系统不去加载grub。
猜测修复办法1:想要修复就可以再系统更新之前备份efi\boot目录,系统更新完后替换到该目录。(下面一句话适用于manjaro)但是我们一般很少有备份系统的习惯,这时候可以就去把EFI\Manjaro\grubx64.efi文件复制并重命名成EFI\Boot\bootx64.efi。
猜测修复办法2:如果你是Ubuntu,找到boot目录下的grubx64.efi(或者shimx64.efi)复制到efi\boot目录下,并重命名为bootx64.efi。如果你是Manjaro系统就去镜像中复制BOOTX64.efi文件丢到efi\boot中。
上述猜测应该是错误的,我对比了下manjaro镜像中的BOOTX64.efi与实际安装完efi目录下的bootx64.efi文件,这两个文件并不一样,再次猜测,镜像中的可能是引导U盘的。目前来看修复方法1是比较靠谱的。
猜测修复办法3:使用easyUEFI添加Liunx引导,然后调整新添加的为默认项(如下图,排在最顶上)。
那么Ubuntu系统下grubx64.efi和shimx64.efi有什么区别呢?
仅仅针对Ubuntu,在安全启动(serureboot)关闭的情况下,你可以使用grubx64.efi。如果安全启动打开则需要选择shimx64.efi。
一些很好的贴子
https://zhuanlan.zhihu.com/p/31365115
https://linux.cn/article-4667-1.html
https://wiki.deepin.org/wiki/Windows%E5%92%8Cdeepin%E5%8F%8C%E5%90%AF%E5%8A%A8%E7%AE%80%E5%8D%95%E5%AE%9E%E7%94%A8%E7%9A%84%E6%96%B9%E6%B3%95
https://linux.cn/article-8481-1.html
EFI系统引导的一些零碎知识点的更多相关文章
- 删除EFI系统分区(ESP)后Windows无法启动,重建引导分区并修复启动的过程
@ 目录 一.开机故障描述 二.工具: 三.什么是EFI系统分区 四.如何查看EFI系统分区 五.删除后如何重建系统分区 1.建立未分配空间 2.建立ESP分区 3.按下图,ESP分区的大小200M即 ...
- IBM X3850 Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘
以前安装的是window2003 32位, 改装为2012 64位的时候.出现 Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows 只能安装到 GPT ...
- 教程 打造OS X Mavericks原版 EFI Clover 引导安装
自从 Mavericks 10.9 发布DP版到现在的GM版以来,以前Clover引导原版InstallESD.dmg方式安装原版的方法已经不能使用,而且已经不能引导安装了,所以从GM版发布以前,终于 ...
- 9.Linux系统引导流程
一.Linux系统引导流程 当我们按下主机电源键的那时候开始,主板上的CMOS/BIOS模块将进行固件自检,以此检查各个硬件是否正确连接. 在Linux引导流程中,一般可以分为以下几个主要过程: 1. ...
- 安装grub到U盘分区,实现多系统引导
目录 1.分区工具及分区类型 1.1 显示分区表和分区信息 1.1.1 fdisk -l 1.1.2 gdisk -l 1.1.3 parted -l 1.2 常见分区类型 1.3 分区样例 1.3. ...
- 使用 boot-repair 对 Windows + Ubuntu 双系统引导修复
问题描述: 由于在windows上进行更新/重装/修改了引导设置以后,windows会“自私”地重写引导,导致Ubuntu系统引导消失而无法选择Ubuntu启动.
- 001_关于选中的磁盘具有MBR分区表。在 EFI 系统上,Windows 只能安装到 GPT 磁盘。问题解决
问题: 今天我的diy电脑重装系统时,遇到了一个棘手的问题.在选择安装分区的时候,提示有这样的错误. Windows 无法安装到这个磁盘.选中的磁盘具有MBR分区表.在 EFI 系统上,Windows ...
- EFI系统分区如何删除
U盘或者硬盘被做了系统安装盘. 结果在格式化都是失败,分区也不行. 有了新招 EFI分区是您的系统启动引导的分区,存放引导启动的文件的,因此它是一个操作系统独立的分区,实际上它是UEFI加载的固件和应 ...
- Win7&Ubuntu12.04 双系统引导问题
周末的时候手贱,重装系统,导致原来的ubuntu12.04和win7双系统的引导不见了,所以在此进行一下说明,如何修复. 1. win7和ubuntu12.04双系统引导修复 问题描述: 在重装 ...
随机推荐
- Oracle 12C 密码文件问题 ORA-01017: invalid username/password; logon denied
新安装的Oracle 12.1.0.2.0,NBU在测试备份的时候报ORA-01017 --alter user sys identified by "Wwjd!23";sqlpl ...
- IO多路复用之select,poll,epoll个人理解
在看这三个东西之前,先从宏观的角度去看一下,他们的上一个范畴(阻塞IO和非阻塞IO和IO多路复用) 阻塞IO:套接口阻塞(connect的过程是阻塞的).套接口都是阻塞的. 应用程序进程-----re ...
- python处理Excel - xlrd xlwr openpyxl
python处理Excel - xlrd xlwr openpyxl 1 xlrd和xlwt Todo: 使用xlrd和xlwt读写Excel文件的方法和示例代码,待续... 参考链接: Creati ...
- JavaScript 判断是PC端还是移动端
function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android" ...
- mybatis增强
MyBatis SQL参数传递(掌握) SQL映射器Mapper接口(掌握)Myb atis批量操作(理解掌握) (多对一)关联映射(掌握) (一对多,多对多)集合映射 MyBatis原理回顾(Obj ...
- feifeicms后台任意文件读取
前台大略看了下,本身内容比较简单,经过“洗礼”后以及没什么问题了,基本上输入都过滤了. 这次审计找到了一个后台的任意文件读取,可以读取数据库配置文件. 在DataAction.class.php文件中 ...
- Git知识
git最小化配置: 配置user.name 和 user.email git config --global user.name 'your_name' git config --global use ...
- U面经Prepare: Web Address
题目是给你一堆域名,其中一些是另一些的parent,比如.com是.youku.com的parent,然后.youku.com是.service.youku.com的parent这样,然后再给你一个网 ...
- python [[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]
#1)利用推导式运行过程:for i in a ,每个i是[1,2],[3,4],[5,6],for j in i,每个j就是1,2,3,4,5,6,合并后就是结果 a=[[1,2],[3,4],[5 ...
- 201901<<叶武滨时间管理100讲>>
2019年1月份读物整理: 1月份,在喜马拉雅上听的这个课程叶武滨时间管理100讲,每天利用上下班时间听完的,对其中的一些讲的点很有感触.今年的读书计划,希望自己能把读的每本书都用思维导图的方式整理出 ...