GRUB 设置安全启动
未完待续
-
创建 MOK:
sudo pacman -S sbsigntools sudo mkdir /boot/MOK && cd /boot/MOK sudo openssl req -newkey rsa:2048 -nodes -keyout MOK.key -new -x509 -sha256 -days 3650 -subj "/CN=my Machine Owner Key/" -out MOK.crt sudo openssl x509 -outform DER -in MOK.crt -out MOK.cer -
使用 SBAT 重新安装 GRUB:
sudo grub-install --target=x86_64-efi --efi-directory=/boot --modules='tpm' --sbat /usr/share/grub/sbat.csv --bootloader-id=GRUB -
使用 MOK 对内核和引导加载程序签名:
sudo sbsign --key MOK.key --cert MOK.crt --output /boot/vmlinuz-linux /boot/vmlinuz-linux sudo sbsign --key MOK.key --cert MOK.crt --output /boot/EFI/GRUB/grubx64.efi /boot/EFI/GRUB/grubx64.efi sudo cp /boot/EFI/GRUB/grubx64.efi /boot/EFI/BOOT/grubx64.efi -
使用 mkinitcpio 后钩自动化内核签名:
sudoedit /etc/initcpio/post/kernel-sbsign#!/usr/bin/env bash kernel="$1" [[ -n "$kernel" ]] || exit 0 # use already installed kernel if it exists [[ ! -f "$KERNELDESTINATION" ]] || kernel="$KERNELDESTINATION" keypairs=(/boot/MOK/MOK.key /boot/MOK/MOK.crt) for (( i=0; i<${#keypairs[@]}; i+=2 )); do key="${keypairs[$i]}" cert="${keypairs[(( i + 1 ))]}" if ! sbverify --cert "$cert" "$kernel" &>/dev/null; then sbsign --key "$key" --cert "$cert" --output "$kernel" "$kernel" fi done -
安装 Shim 和 MokManager:
yay -S shim-signed sudo cp /usr/share/shim-signed/shimx64.efi /boot/EFI/BOOT/BOOTx64.EFI sudo cp /usr/share/shim-signed/mmx64.efi /boot/EFI/BOOT/ -
在 NVRAM 创建引导条目:
sudo efibootmgr -cu -d /dev/sdX -p 1 -L 'Shim' -l '/EFI/BOOT/BOOTx64.EFI' -
重启计算机。
参考:

浙公网安备 33010602011771号