根据 Arch Wiki 中所述,可以使用 efibootmgr 创建 UEFI 启动项,如下所示:
efibootmgr -d /dev/sdX -p Y -c -L "Arch Linux" -l /vmlinuz-linux -u "root=/dev/sda2 rw initrd=/initramfs-linux.img"
使用efibootmgr --verbose
efibootmgr,我可以显示有关现有启动项的信息。但是,一些详细信息(例如第一个命令中传递的内核参数)并未显示。我该如何显示这些信息(不一定使用 efibootmgr)?
答案1
内核参数是(或者应该) 显示;只是当您创建条目时,它们会被转换为 UTF-16,然后以双字符形式显示,条目之间有“。”字符,当您使用时efibootmgr -v
。例如:
$ sudo efibootmgr -d /dev/sda -p 1 -c -L "Arch Linux" -l /vmlinuz-linux -u "root=/dev/sda2 rw initrd=/initramfs-linux.img"
BootCurrent: 0001
BootOrder: 0003,0000,0001,0002
Boot0000* EFI DVD/CDROM
Boot0001* EFI Hard Drive
Boot0002* EFI Internal Shell
Boot0003* Arch Linux
$ sudo efibootmgr -v
BootCurrent: 0001
BootOrder: 0003,0000,0001,0002
Boot0000* EFI DVD/CDROM PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)
Boot0001* EFI Hard Drive PciRoot(0x0)/Pci(0xd,0x0)/Sata(0,0,0)
Boot0002* EFI Internal Shell MemoryMapped(11,0x6584f000,0x65bbefff)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
Boot0003* Arch Linux HD(1,GPT,e0e491c1-116a-433e-9d74-71ca4b6fbac6,0x800,0x100000)/File(\vmlinuz-linux)r.o.o.t.=./.d.e.v./.s.d.a.2. .r.w. .i.n.i.t.r.d.=./.i.n.i.t.r.a.m.f.s.-.l.i.n.u.x...i.m.g.
分区标识符(-d
和-p
)转换为 EFI ID,但除此之外所有内容仍应显示。
如果您看到明显不同的内容,那么这可能是您的特定版本中的错误efibootmgr
(我使用 Ubuntu 16.04 及其efibootmgr
0.12 进行此测试)或者是您的固件中的错误导致数据丢失或无法传回efibootmgr
。