wuruxu:
背景:
以前一直想把 Debian 系统中 Secure Boot 开启,苦于网上没有找到成功 0-1 案例,没成功过
最近刚好大龄失业闲置在家,沉下心来花了一天时间终于搞好了,很有成就感
虽然 80 后,但热情不减当年,哈哈
A. 创建用于内核模块验证的证书
openssl req -newkey rsa:4096 -nodes -keyout debian-xyz.pem -new -x509 -sha256 -days 3650 -subj "/CN=debian.xyz" -outform PEM -out debian-xyz.pem
并在 BIOS 设置的 Secure Boot 中 enroll 你的 der 格式的证书
B. 配置你的 kernel .config
CONFIG_MODULE_SIG_KEY="/home/kernel/debian-xyz.pem"
CONFIG_MODULE_SIG_KEY_TYPE_RSA=y
CONFIG_SYSTEM_TRUSTED_KEYRING=y
CONFIG_SYSTEM_TRUSTED_KEYS="/home/kernel/debian-xyz.pem"
CONFIG_EFI=y
CONFIG_EFI_STUB=y
假如后面 UEFI 启动内核有问题,把 EXT4 这个文件系统模块编译进内核
C, 编译及安装 linux 内核
make CC=clang-20 LD=ld.lld-20 -j12 bindeb-pkg
D. 签名你的 vmlinuz
sbsign --key debian-xyz.key --cert debian-xyz-cert.pem /boot/vmlinuz-6.14.6 --output /boot/efi/EFI/debian/vmlinuz
E, BIOS 设置里开启 Secure Boot, 然后重启电脑, 没有问题,UEFI 就可以成功加载你的 kernel
F. 确认 Secure Boot 是否成功开启
使用 mokutil 以及 dmesg
root@debian:/home # mokutil --sb-state
SecureBoot enabled
root@debian:/home #
and
root@debian:/home # dmesg|grep -ni secure
71:[ 0.004032] Secure boot enabled