主要观点:在 Gentoo 上使 Secure Boot 工作传统上较棘手,因自定义内核广泛使用及缺少主流二进制 Linux 发行版使用的预签名引导加载程序,作者决定写易遵循教程使其信息更易获取,有多种使 Secure Boot 工作的方法,此教程使用shim 引导加载程序启动独立的GRUB安装。
关键信息和重要细节:
- 系统准备:需挂载 EFI 启动分区,假设其在
/boot/efi
,若未挂载则执行mount /boot/efi
。 - 设置签名密钥:生成用于签名 GRUB 的 RSA-2048 证书(PEM 格式),并转换为二进制 DER 格式,修改
make.conf
启用secureboot
USE 标志及设置相关签名密钥变量。 - 配置和安装所需包:安装
sys-boot/efibootmgr
、sys-boot/mokutil
(先解掩码)、sys-boot/shim
,推荐重建sys-apps/kmod
包并添加pkcs7
USE 标志。 安装内核:
- Gentoo 二进制发行版内核:安装
sys-kernel/gentoo-kernel-bin
,导入内核签名密钥(mokutil --import
)。 - Gentoo 从源代码构建的内核:设置
modules-sign
USE 标志,安装sys-kernel/gentoo-kernel
。 - 自定义内核:在.config 文件中指定模块签名密钥并强制签名检查,构建并安装内核,手动签名内核镜像。
- Gentoo 二进制发行版内核:安装
- 安装 shim 和 GRUB 引导加载程序:添加引导加载程序文件夹,移动 shim 引导加载程序,安装 GRUB 并调整配置,生成 GRUB 配置和独立引导加载程序,签名 GRUB 引导加载程序。
- 导入密钥到 MOK 列表:导入用于签名 GRUB(及可能的内核)的密钥到 MOK 列表,分两步,第一次导入,第二次在下次重启时通过 shim 完成实际注册。
- 创建新 EFI 启动项:使用
efibootmgr
创建新的 EFI 启动项,将 shim 引导加载程序添加到启动项列表,可设置为默认启动项。 - 重启并在 MOK 列表中注册密钥:重启后,shim 引导加载程序会启动密钥管理菜单,按步骤完成密钥注册。
更新和故障排除:
- 内核更新:自定义内核需重新生成
grub.cfg
等,分布内核可使用sys-kernel/installkernel
包的插件脚本自动更新。 - GRUB 更新:更新
sys-boot/grub
包时重新创建配置和签名。 - shim 引导加载程序更新和故障排除:更新
sys-boot/shim
包,若更新后出现启动失败可临时禁用 Secure Boot 或使用其他引导加载程序修复,更新 shim 可解决问题。 - 主板 UEFI 固件更新和故障排除:更新主板 UEFI 固件有时会清除 MOK 列表,需重新注册密钥,也可能清除 UEFI 启动列表,需重新创建 shim 启动项。
- 内核更新:自定义内核需重新生成
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。