了解我的 /boot/efi/ 树

了解我的 /boot/efi/ 树

我正在尝试调试我对 fwupd 有以下问题,但首先我想了解当我尝试启动 Ubuntu 20.10 时,我的 ThinkPad T470s 上的 UEFI 正在做什么。

这就是我的/boot/efi内容:

/boot/efi/
└── EFI
    ├── BOOT
    │   ├── BOOTX64.EFI
    │   ├── fbx64.efi
    │   └── mmx64.efi
    └── ubuntu
        ├── BOOTX64.CSV
        ├── fw
        │   ├── fwupd-3b8c8162-188c-46a4-aec9-be43f1d65697.cap
        │   ├── fwupd-7a176688-0960-47ba-931b-7829849e8347.cap
        │   └── fwupd-d95d3ada-eef1-464f-8a2a-a11232b8556b.cap
        ├── fwupdx64.efi
        ├── grub.cfg
        ├── grubx64.efi
        ├── mmx64.efi
        └── shimx64.efi

我目前还安装了较旧的 Ubuntu 16.04,并且正在使用 NVMe 驱动器。我的启动顺序是首先是“ubuntu”,然后是 NVMe 驱动器。当我启动系统时,我收到警告System bootloader not found, initializing defaults.。然后我的系统从 nvme 设备启动,GRUB 允许我在 Ubuntu 20.10 和 Ubuntu 16.04 中启动。

看起来我的固件启动选项“Ubuntu”和“Linux-Firmware-Updater”无法加载(它返回到启动菜单而不显示任何错误),所以我试图了解我的/EFI/树是否正常或者我搞砸了某些东西。

这棵树的结构正常吗?我应该同时拥有EFI/BOOTEFI/ubuntu吗?我做错了什么吗?


编辑:要求的详细信息:

$ sudo efibootmgr -v
BootCurrent: 0019
Timeout: 0 seconds
BootOrder: 0000,0017,0010,0011,0012,0013,0018,001A,001B,001C,001D,001E,0001,0019
Boot0000* ubuntu    HD(3,MBR,0xff767ef,0x64bb800,0x100800)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* Linux-Firmware-Updater    HD(3,MBR,0xff767ef,0x64bb800,0x100800)/File(\EFI\ubuntu\fwupdx64.efi)
Boot0010  Setup FvFile(721c8b66-426c-4e86-8e99-3457c46ab0b9)
Boot0011  Boot Menu FvFile(126a762d-5758-4fca-8531-201a7f57f850)
Boot0012  Diagnostic Splash Screen  FvFile(a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380)
Boot0013  Lenovo Diagnostics    FvFile(3f7e615b-0d45-4f80-88dc-26b234958560)
Boot0014  Startup Interrupt Menu    FvFile(f46ee6f4-4785-43a3-923d-7f786c3c8479)
Boot0015  Rescue and Recovery   FvFile(665d3f60-ad3e-4cad-8e26-db46eee9f1b5)
Boot0016  MEBx Hot Key  FvFile(ac6fd56a-3d41-4efd-a1b9-870293811a28)
Boot0019* NVMe0 VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,001c199932d94c4eae9aa0b6e98eb8a400)
# (removed a few non-important entries)

的 UUIDEFI/ubuntu/grub.cfg似乎与efibootmgr列表中的任何内容都不对应:

$ sudo less /boot/efi/EFI/ubuntu/grub.cfg
search.fs_uuid 4be2c650-c96c-4823-a833-28d345042788 root 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

BOOT/bootx64.efi看起来EFI/ubuntu/shimx64.efi是一样的:

$ sudo md5sum /boot/efi/EFI/BOOT/bootx64.efi
78415fb8fb9b909f8029858113f1335f  /boot/efi/EFI/BOOT/bootx64.efi
$ sudo md5sum /boot/efi/EFI/ubuntu/shimx64.efi
78415fb8fb9b909f8029858113f1335f  /boot/efi/EFI/ubuntu/shimx64.efi

看起来我正在使用 MBR,而不是 GPT。

答案1

新硬件基于 UEFI,因此应在 UEFI 启动模式下安装 Ubuntu(如果未预装 Windows 也应如此)。Microsoft 要求供应商对 UEFI 安装进行 gpt 分区,但 Ubuntu 允许 UEFI 安装到 MBR(msdos)分区驱动器,但可能不应该这样做。

您可以看到分区lsblk

lsblk -o name,mountpoint,label,size,fstype,uuid,partuuid | grep -E -v "^loop"
sudo parted -l

UEFI 从 UEFI 启动项启动,但要查看使用哪些分区/文件的详细信息,您可以运行启动管理器显示 ESP (EFI 系统分区) 的 GUID/partUUID:

sudo efibootmgr -v

然后在 ESP 中有 3 行/EFI/ubuntu/grub.cfg配置文件用于在安装/(根)分区(或/boot单独的分区)中加载完整的 grub.cfg。

ESP 至少应有两个文件夹,/EFI/Boot& /EFI/ubuntu。Windows 添加/EFI/Microsoft。这些文件夹包含启动文件。/EFI/Boot是备用或驱动器启动项,它是 grub 的副本,或者如果是 Windows,则是其启动文件shimx64.efi的副本。bootmgfw.efi

因此启动是 UEFI,到 ESP,进行安装。

一个例子/EFI/ubuntu/grub.cfg可以在[这里][2]看到。

参考:

相关内容