OpenSUSE Tumbleweed Enable Secure Boot With Sbctl and Dracut
AI Generate Warning
The Post use MIT LICENSE.
AI generates more than 50% of content
prompts:[ "bios: setup mode", "sbctl: generate", "sbctl: find db by plocate", "sbctl: /usr/share/secureboot/keys/db", "sbctl: add path to dracut.config.d", "sbctl: manual sign /boot/efi/EFI/opensuse/shim.efi" ]
在这篇文章中,我将展示如何在 OpenSUSE Tumbleweed 中使用 sbctl
和 dracut
启用 Secure Boot。这是一个高级教程,旨在帮助你确保系统的启动过程被完全签名和验证,从而增加安全性。
准备工作
在开始之前,请确保你已经以管理员身份登录,并且你的系统支持 Secure Boot。
1. 设置 BIOS 为 Setup Mode
首先,你需要进入 BIOS 并将其设置为 Setup Mode
。这允许你在 BIOS 中加载和使用自定义的安全引导密钥。
步骤:
- 重新启动系统并进入 BIOS 设置(通常通过按
F2
,F10
或Del
键)。 - 找到 Secure Boot 选项,并将其设置为
Setup Mode
。 - 保存设置并退出。
2. 使用 Sbctl 生成安全引导密钥
sbctl
是一个用于管理安全引导密钥的工具。我们将使用它来生成密钥并将其安装到系统中。
安装 Sbctl
在终端中运行以下命令来安装 sbctl
:
sudo zypper install sbctl
生成并安装密钥
-
生成新的安全引导密钥:
sudo sbctl create-keys
这将生成 PK, KEK 和 DB 密钥,它们可能被存储在
/var/lib/sbctl/keys/
目录中,你可以使用plocate
工具查找db.key
文件尝试找到实际路径。 -
安装密钥到系统:
sudo sbctl enroll-keys
这会将生成的密钥加载到系统固件中。在再次设置
BIOS
中的Setup Mode
之前,你只能设置一次。
3. 配置 Dracut 以支持 Secure Boot
Dracut
是一个用于生成 initramfs 的工具。我们需要配置 Dracut
以包含签名的内核和 initramfs。
添加密钥路径到 Dracut 配置
首先,我们需要找到 DB 密钥并将其路径添加到 Dracut 的配置中。
-
使用
plocate
找到 DB 密钥的路径:plocate db.key
假设你得到了以下路径:
/var/lib/sbctl/keys/db/db.key
-
将密钥路径添加到 Dracut 的配置文件中:
编辑或创建
/etc/dracut.conf.d/10-uefi-secureboot.conf
文件,添加以下内容:uefi_secureboot_cert="/var/lib/sbctl/keys/db/db.pem" uefi_secureboot_key="/var/lib/sbctl/keys/db/db.key"
-
生成新的 initramfs:
sudo dracut --force
这将生成一个新的 initramfs,它会包含签名的内核和 initramfs。
-
验证sbctl签名生效
一切顺利的情况下,运行
sudo sbctl verify
,将会输出Verifying file database and EFI images in /boot/efi... ✗ /boot/efi/EFI/opensuse/shim.efi is signed ✗ /boot/efi/EFI/boot/bootx64.efi is not signed ✗ /boot/efi/EFI/opensuse/MokManager.efi is not signed ✗ /boot/efi/EFI/opensuse/grub.efi is not signed ✓ /boot/efi/EFI/opensuse/grubx64.efi is signed
4. 手动签名 Shim 引导程序
shim.efi
是一个引导加载程序,支持在 UEFI 系统上实现安全引导。你需要手动对它进行签名。
步骤:
-
找到
shim.efi
文件:sudo sbctl verify
输出可能会显示出
shim.efi
文件的位置,例如:/boot/efi/EFI/opensuse/shim.efi
-
手动对
shim.efi
进行签名:sudo sbctl sign -s /boot/efi/EFI/opensuse/shim.efi
确保这个文件已经被正确签名,这样系统就可以使用 Secure Boot 启动。
5. 启用 Secure Boot 并验证
完成上述步骤后,返回 BIOS 并启用 Secure Boot。然后,重新启动系统,并确保它可以正常启动。
如果一切设置正确,你的系统现在应该已经成功启用了 Secure Boot。
总结
通过这些步骤,你已经成功地在 OpenSUSE Tumbleweed 系统上使用 sbctl
和 dracut
配置并启用了 Secure Boot。这将确保系统启动过程的完整性和安全性。