美文网首页
UEFI启动分析 UEFI设置启动项

UEFI启动分析 UEFI设置启动项

作者: Neucrack | 来源:发表于2017-02-28 22:47 被阅读8279次

    UEFI启动时分为两种情况

    1. 启动时只能选择从那个磁盘启动,如下最后两项为两个磁盘:


      启动选项(选择启动磁盘)

      在用户选择了启动磁盘后,UEFI会在这个磁盘中寻找EFI分区,然后找这个分区下的/EFI/Boot/bootx64.efi(UEFI可以执行的二进制文件),由这个文件进行下一步操作(引导操作系统),这个文件通常由操作系统给出,在光盘/EFI/BOOT目录下

    2. UEFI中已经创建了启动项如图前两个:


      启动选项(选择启动磁盘)

      这个启动项记录了引导文件(*.efi)所在的磁盘和分区以及文件名,直接执行这个efi文件即可开始进行下一步操作(引导操作系统)

    以下进行验证:

    磁盘基本信息

    磁盘信息 磁盘信息 block ID

    可见磁盘第二个分区(EFI分区)挂在在/boot/efi中,查看:

    /boot/efi/ /boot/efi/EFI/Microsoft/

    开机启动项直接选择磁盘方式

    注意到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
    Boot下的bootx64.efi就是Windows的bootmgfw.efi文件

    Ubuntu安装时不会将bootx64.efi复制到EFI分区的/EFI/Boot/中,那个依然是Windows的文件,所以开机按F12选择从磁盘启动后,会进入windows boot manager,Ubuntu的做法是在BIOS添加一个启动项,即方法2,这个选项会调用EFI分区/EFI/Ubuntu文件夹下面的文件(如果EFI分区里没有这个文件夹则引导失败,选择这个启动项会看起来无任何反应)。
    grub.cfg指定了启动的磁盘(磁盘0分区7的uuid(hd0,gpt7)挂载在root(根文件目录)),以及configuration file为/boot/grub/grub.cfg,然后根据这个配置文件grub进行系统引导,接下来就交接给grub啦~~

    /boot/grub/
    grub.cfg

    添加UEFI启动项

    UEFI启动项
    在开机进入BIOS后,在BOOT项可能会有添加启动项的选项(电脑没有这个功能,没试╮(╯_╰)╭),如果没有,可以使用工具efibootmgr来添加
    efi添加启动项
    ! 这里-d指定磁盘,-p指定分区号(EFI分区),-c表示创建,-L表示名称,-l指定有效的启动efi文件(EFI分区中的有效efi文件)
    将elf文件放到EFI分区中

    再来一个,改成普通分区


    Paste_Image.png

    再来一个,改成使用EFI分区的一个名称错误的efi文件


    EFI分区elf文件 efi信息

    重启,每个启动项试一次,发现只有Test可以正确进入,原因是Test2的efi文件使用的是非EFI分区,Test3使用的grub.efi文件不能正确引导

    应用

    • 制作多系统引导
    • 引导坏了可以手动进行修复

    参考

    https://www.zhihu.com/question/22502670

    相关文章

      网友评论

          本文标题:UEFI启动分析 UEFI设置启动项

          本文链接:https://www.haomeiwen.com/subject/ywrxgttx.html