出於好奇,我正在我的筆記型電腦上嘗試 systemd-boot,該筆記型電腦具有 UEFI 和安全啟動功能。預設的 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
(重命名)。systemd-bootx64.efi
這會載入vmlinuz
其哈希值也已註冊的核心。因此,安全鏈似乎沒問題,但啟動仍然失敗。看起來 Canonical 對核心的簽名在這裡不起作用。
如何讓它發揮作用以及我是否正確理解了安全方面?
答案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。