我正在尝试调试我遇到的 fwupd 问题,但首先我想了解当我尝试启动我的 Ubuntu 20.10 时我的 ThinkPad T470 上的 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/BOOT
和EFI/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。
新硬件基于 UEFI,然后应在 UEFI 引导模式下安装 Ubuntu(和 Windows,如果未预装)。Microsoft 要求供应商对 UEFI 安装进行 gpt 分区,但 Ubuntu 将允许 UEFI 安装到 MBR(msdos) 分区驱动器,但可能不应该。
你可以看到这些分区:
UEFI 从 UEFI 启动条目启动,但要查看使用了哪些分区/文件的详细信息,您可以运行它,它显示 ESP - efi 系统分区的 GUID/partUUID:
然后在 ESP 中有一个 3 行 /EFI/ubuntu/grub.cfg 作为配置文件,用于在安装的 /(根)分区(或 /boot 如果单独的分区)中加载完整的 grub.cfg。
ESP 至少应该有两个文件夹,/EFI/Boot 和 /EFI/ubuntu。Windows 添加 /EFI/Microsoft。这些文件夹包含引导文件。/EFI/Boot 是一个备用或驱动器引导条目,它是来自 grub 的 shimx64.efi 的副本,或者如果是 Windows,它是其 bootmgfw.efi 引导文件的副本。
所以boot是UEFI,到ESP,来安装。
https://en.wikipedia.org/wiki/EFI_system_partition
https://superuser.com/questions/496026/what-is-the-difference-in-boot-with-bios-and-boot-with-uefi
示例 /EFI/ubuntu/grub.cfg
双启动 14.04 / 17.04 丢失 grub 菜单