Linux 作業系統如何啟用 secure boot(不限發行版)(簡單的方法)

KZ25T發表於2024-11-05

Linux 作業系統如何啟用 secure boot(不限發行版)(簡單的方法)

很多方法比較複雜,而且容易出現各種不相容問題,這裡我記錄我的一種比較簡單的方法。

該方法在我的 kali linux(基於 debian)已測試成功。

參考文獻:archwiki

安裝 sbctl

archlinux: sudo pacman -S sbctl

gentoo: sudo emerge --ask app-crypt/sbctl

其他發行版請使用通用方法:

  • 下載倉庫 https://github.com/Foxboron/sbctl,進入倉庫目錄。
  • 安裝軟體包,Debian 可用 sudo apt install asciidoc asciidoc-base
  • 編譯:make
  • 安裝:sudo cp ./sbctl /usr/local/bin
  • 之前安裝的軟體包可選擇解除安裝:sudo apt autoremove asciidoc asciidoc-base,也可以不解除安裝,根據你的情況來看。

安裝 grub 模組

這樣一定能完成:

sudo grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB --modules="tpm" --disable-shim-lock

本人使用簡單一點的命令也能完成:

sudo grub-install --modules="tpm" --disable-shim-lock

調整 boot 為 setup mode

重啟,開機的時候進入主機板的 bios 的 secure boot 的設定,記得把 setup mode 開啟(和電腦品牌或主機板廠商有關,一般自己都能找得到)

使用 sbctl 簽名

登記金鑰

使用 sbctl 檢測狀態:sbctl status,理論上來講,installed 是 not,setup mode 是 Enabled(必須),secure boot 是 disabled,除了中間那一項,別的也許有些不同也是可接受的。

建立金鑰:sudo sbctl create-keys

登記 UEFI:sudo sbctl enroll-keys -m

這一步可能提示 you need to chattr -i files in efivars,此時把上面列出的每個檔案都依次執行 sudo chattr -i <檔名> 之後再重複執行這一步。

接下再檢測狀態:sbctl status,這時候輸出應該有 Installed: ✓ sbctl is installed,否則請檢查前幾步是否出錯。

簽署

檢查驗證情況:sudo sbctl verify,會列出來一大對叉號,

找到你的作業系統正在使用的核心,一般是 /boot/vmlinuz 開頭的某個檔案,簽名:sudo sbctl sign -s <檔名>

備份一下啟動檔案,我的作業系統是 /boot/efi/EFI/Boot/bootx64.efi,各種發行版裡應該都是在 ESP 分割槽下,名稱類似的路徑。

找到你的 grub 啟動檔案,我的作業系統是 /boot/efi/EFI/kali/grubx64.efi,複製到上面的啟動檔案位置,並簽名:sudo sbctl sign -s <檔名>

相關文章