出于好奇,我在具有 UEFI 和安全启动功能的笔记本电脑上尝试了 systemd-boot。默认 GRUB 安装运行正常。
对于 systemd-boot,大多数搜索都指向这一页。这涉及使用 安装 systemd-boot bootctl
、创建loader.conf
创建内核 postinstzz-update-systemd-boot
脚本。到目前为止一切看起来都很好,但我不明白为什么 systemd-boot 没有 ext4 fs 驱动程序来访问内核。无论如何,正如预期的那样,由于安全启动,这无法启动。
本页的安全启动部分有PreLoader.efi
&HashTool.efi
设置。按照这些步骤操作后,系统启动时会显示 systemd-boot 菜单,但在选择 Ubuntu 后会抛出此错误:
EFI stub: UEFI Secure Boot is enabled.
据我所知,PreLoader
是 UEFI 接受的签名二进制文件。然后,它将加载已注册哈希值的loader.efi
(重命名的)。这将加载也已注册哈希值的内核。因此,安全链似乎没问题,但启动仍然失败。看来 Canonical 对内核的签名在这里不起作用。systemd-bootx64.efi
vmlinuz
如何使其工作并且我是否正确理解了安全方面?
答案1
我按照您所参考的页面的变体进行操作,但没有安全启动选项。
不幸的是,一旦做出更改,Ubuntu 的 linux-generic、linux-headers-generic 和 linux-image-generic 就会坚持安装 GRUB此外systemd-boot 安装,并在每次 apt 更新内核时将 GRUB 设置为默认启动选项。
因此,下次重启时,该框不再使用 systemd-boot 进行引导。因此,似乎需要运行 efibootmgr 的最终命令来重新设置引导顺序以再次使用“ubuntu”。
为了避免这种麻烦,我认为应该将 Ubuntu 的 linux-generic、linux-headers-generic 和 linux-image-generic DEB 包配置为接受 GRUB或者systemd-boot 作为可接受的引导加载程序,而不是强制安装 GRUB。