初步准备工作如下:
- Linux 4.2.3-gentoo
- GRUB2
- UEFI、安全启动关闭
现在,我想搞乱安全启动,这样我就可以打开它。或多或少的关注本指南, 我有:
从 MS 备份默认密钥:
#efi-readvar -v PK -o old_PK.esl #efi-readvar -v KEK -o old_KEK.esl #efi-readvar -v db -o old_db.esl #efi-readvar -v dbx -o old_dbx.esl
生成我自己的密钥:
#openssl req -new -x509 -newkey rsa:2048 -subj "/CN=my platform key/" -keyout PK.key -out PK.crt -days 3650 -nodes -sha256 #openssl req -new -x509 -newkey rsa:2048 -subj "/CN=my key exchange key/" -keyout KEK.key -out KEK.crt -days 3650 -nodes -sha256 #openssl req -new -x509 -newkey rsa:2048 -subj "/CN=my kernel signing key/" -keyout db.key -out db.crt -days 3650 -nodes -sha256 #cert-to-efi-sig-list -g "$(uuidgen)" PK.crt PK.esl #sign-efi-sig-list -k PK.key -c PK.crt PK PK.esl PK.auth
清除 BIOS 中的按键,因此
efi-readvar
重新启动时不输出任何按键将备份的密钥设置回来并附加我的:
#efi-updatevar -e -f old_KEK.esl KEK #efi-updatevar -e -f old_db.esl db #efi-updatevar -e -f old_dbx.esl dbx #efi-updatevar -a -c KEK.crt KEK #efi-updatevar -a -c db.crt db #efi-updatevar -f PK.auth PK
签署引导加载程序:
#cp /boot/EFI/grub/grubx64.efi /boot/EFI/grub/grubx64.efi.old #sbsign --key db.key --cert db.crt --output /boot/EFI/grub/grubx64.efi /boot/EFI/grub/grubx64.efi
验证过程如下:
#sbverify --cert db.crt /boot/EFI/grub/grubx64.efi
Signature verification OK.
尽管如此,当我在 BIOS 中打开安全启动并重新启动时,会显示通常的错误消息,并且不会调用 GRUB,就好像它未签名一样。我想念什么?