分享如何在 Debian 12 中开启 Secure Boot

122 天前
 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

2171 次点击
所在节点    Linux
22 条回复
anytk
119 天前
@wuruxu Suspend to RAM 是睡眠,休眠是 Suspend to disk ,可以断电。目前 SB 跟 休眠在 Linux 上无解。
qbqbqbqb
105 天前
@anytk 限制休眠是 linux 的另外一个特性 lockdown (这个特性会禁用几乎所有直接访问内核内存、影响内核内存完整性的特性,比如说休眠,因为硬盘上的内存映像有可能被篡改)。

Secure boot, kernel module signing, lockdown 这些内核安全特性不是必须一起启用的,只是说 ubuntu 这类商业公司维护的发行版魔改了内核让它们联动开启而已。

你用原生不支持 Secureboot 的社区发行版(比如 Arch Linux ),或者自己编译内核的话,不是非要启动所有安全特性。比如我自己的 Linux 工作站就是只启用 Secure boot (给 systemd-boot 和 uki 签名),不开 kernel module signing ( NVIDIA 等第三方驱动无需签名),不开 lockdown (其它功能基本都不受影响)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1131301

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX