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)那就转到系统的引导。
再次声明:上述结论全是猜测,我没有实际测试,只是从现象来做出的推论。
win10系统功能性更新后丢失Linux引导
猜测:很可能是efi\boot\bootx64.efi 文件被修改成直接引导到efi\microsoft\boot\bootmgfw.efi,导致系统不去加载grub。
猜测修复办法1:想要修复就可以再系统更新之前备份efi\boot目录,系统更新完后替换到该目录。
猜测修复办法2:如果你是Ubuntu,找到boot目录下的grubx64.efi(或者shimx64.efi)复制到efi\boot目录下,并重命名为bootx64.efi。如果你是Manjaro系统就去镜像中复制BOOTX64.efi文件丢到efi\boot中。
那么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
