簽署 systemd-boot 檔案並註冊 PK 以啟用安全啟動

生成金鑰、匯入 PK 並啟用安全啟動的指南

0. 開始之前#

最近我嘗試安裝 Fedora 來取代 Ubuntu,以擺脫 snap 的爛東西。然後我不知道從哪裡冒出一個想法,決定試試 systemd-boot,噩夢就是這樣開始的。

這裡涉及兩個獨立的信任操作:

  1. EFI 簽署:韌體 db 信任 systemd-boot 和你的 UKI。
  2. 內核模組簽署:NVIDIA 模組由內核信任的金鑰簽署。

當直接通過 systemd-boot 啟動時,不需要 MOK,前提是模組憑證存在於韌體 db 中,且 Fedora 將該金鑰匯入到模組驗證接受的 keyring 中。線上的教學主要針對 grub+shim,通常會要求你註冊 MOK 金鑰。

如果你對我的安裝過程以及我如何為安全啟動配置 systemd-boot 不感興趣,請跳過第 0 章。

安裝 Fedora#

systemd-boot 方式只能使用 Everything netinst 映像進行配置(據說離線映像也可以做到,但步驟更複雜)。從 USB 金鑰啟動後,導航到——

建立金鑰:

bash
1sudo sbctl create-keys

註冊 sbctl 金鑰同時保留 Microsoft 憑證:

bash
1sudo sbctl enroll-keys -m

當需要 Microsoft 簽署的 Option ROM、Windows 或其他 Microsoft 簽署的 EFI 組件時,-m 參數很重要。

簽署已註冊的 EFI 檔案:

bash
1sudo sbctl sign-all
2sudo sbctl verify