跳转至

为 Arch Linux 配置安全启动

我们要为 Arch Linux 配置安全启动,使用 systemd-boot 作为引导管理器。

安装工具

sudo pacman -S sbsigntools mokutil

创建一个保存证书的目录(请妥善保管该目录),并安装由 Fedora 签名的 shim

mkdir Security_Boot

cd Security_Boot
git clone https://aur.archlinux.org/shim-signed.git

cd shim-signed
makepkg -sir

替换引导管理器

cp "/usr/share/shim-signed/shimx64.efi" "/boot/EFI/BOOT/BOOTX64.EFI"
cp "/usr/share/shim-signed/mmx64.efi" "/boot/EFI/BOOT/MMX64.EFI"

生成自己的证书

openssl req \
    -new \
    -x509 \
    -newkey rsa:4096 \
    -keyout MOK.key \
    -out MOK.crt \
    -nodes \
    -days 3650 \
    -subj "/CN=Custom/"
此处的 Custom 可被替换为任意内容。

转化证书

openssl x509 \
    -outform DER \
    -in MOK.crt \
    -out MOK.cer

导入证书并设置临时密码

sudo mokutil --import MOK.cer

重启电脑并输入刚才的临时密码

reboot

签名 systemd-boot 和 Linux Image

sbsign \
    --key MOK.key \
    --cert MOK.crt \
    --output systemd-bootx64.efi \
    /boot/EFI/systemd/systemd-bootx64.efi

sbsign \
    --key MOK.key \
    --cert MOK.crt \
    --output vmlinuz-linux-zen \
    /boot/vmlinuz-linux-zen
如果是其他内核请替换 vmlinuz-linux-zen。

复制 systemd-boot 和 Linux Linux Image

sudo cp systemd-bootx64.efi /boot/EFI/BOOT/GRUBX64.EFI
sudo cp vmlinuz-linux-zen /boot/vmlinuz-linux-zen

检查命令

  • 检查证书是否导入

    sbverify --list XX.der
    

  • 检查启动状态

    bootctl status
    

  • 检查证书

    sudo mokutil --list-enrolled
    

清除处于 BIOS 的 NVRAM 中的 MOK 证书

设置临时修改密码

sudo mokutil --reset

重启电脑

reboot
之后再Shim的界面输入密码移除所有密钥。