- 作者:
- 分类:知识&开发->OS->Linux基本
- 阅读:3686
- 点赞:8
- 版权:CC BY-SA 4.0
- 创建:2019-10-13
- 更新:2019-10-19
原文链接(持续更新):https://neucrack.com/p/121
UEFI启动时分为两种情况
- 启动时只能选择从那个磁盘启动,如下最后两项为两个磁盘:
在用户选择了启动磁盘后,UEFI会在这个磁盘中寻找EFI分区,然后找这个分区下的/EFI/Boot/bootx64.efi(UEFI可以执行的二进制文件),由这个文件进行下一步操作(引导操作系统),这个文件通常由操作系统给出,在光盘/EFI/BOOT目录下 - UEFI中已经创建了启动项如图前两个:
这个启动项记录了引导文件(*.efi)所在的磁盘和分区以及文件名,直接执行这个efi文件即可开始进行下一步操作(引导操作系统)
以下进行验证:
磁盘基本信息
可见磁盘第二个分区(EFI分区)挂在在/boot/efi
中,查看:
开机启动项直接选择磁盘方式
注意到bootx64.efi文件,电脑启动,如果选择启动项是磁盘(比如ATA HDD0:
),BIOS(应该说是UEFI)会在整个磁盘寻找EFI分区,即这里的/dev/sda2(EFI System),然后在Boot目录下寻找bootx64.efi并执行,这个文件会找到需要执行的开机引导程序,比如Windows Boot Manager或Grub,然后后面的引导都交给它们处理
所以在系统安装包里的/EFI/BOOT/
目录下会有这个文件(windows的是文件名是bootmgfw.efi
),系统安装时会将这个文件拷贝到EFI分区的Boot
目录下并改名为bootx64.efi
Ubuntu安装时不会将bootx64.efi
复制到EFI分区的/EFI/Boot/
中,那个依然是Windows的文件,所以开机按F12选择从磁盘启动后,会进入windows boot manage
r,Ubuntu的做法是在BIOS添加一个启动项,即方法2,这个选项会调用EFI分区/EFI/Ubuntu
文件夹下面的文件(如果EFI分区里没有这个文件夹则引导失败,选择这个启动项会看起来无任何反应)。
grub.cfg指定了启动的磁盘(磁盘0分区7的uuid
、(hd0,gpt7)
挂载在root(根文件目录)),以及configuration file为/boot/grub/grub.cfg,然后根据这个配置文件grub进行系统引导,接下来就交接给grub啦~~
添加UEFI启动项
在开机进入BIOS后,在BOOT项可能会有添加启动项的选项(电脑没有这个功能,没试╮(╯_╰)╭
),如果没有,可以使用工具efibootmgr来添加
! 这里-d
指定磁盘,-p
指定分区号(EFI分区),-c
表示创建,-L
表示名称,-l
指定有效的启动efi文件(EFI分区中的有效efi文件)
再来一个,改成普通分区
再来一个,改成使用EFI分区的一个名称错误的efi文件
重启,每个启动项试一次,发现只有Test可以正确进入,原因是Test2的efi文件使用的是非EFI分区,Test3使用的grub.efi文件不能正确引导
应用
- 制作多系统引导
- 引导坏了可以手动进行修复