我正在尝试调试我对 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/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。
答案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]看到。
参考: