UEFI 安全启动

来自 Alpine Linux

有关安全启动之外的信息,请参阅 UEFI 页面。

挂载 ESP

/boot/efi 准备 UEFI 分区 (ESP) 的挂载点

# install -d -m 000 /boot/efi

将以下行添加到 /etc/fstab

/etc/fstab 的内容

... UUID=<first-partition-uuid> /boot/efi vfat rw,noatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2

挂载它

# mount /boot/efi

生成自己的 UEFI 密钥

安装软件包 efi-mkkeys

# apk add efi-mkkeys

在创建新密钥和修改 EFI 变量之前,建议备份当前变量,以便在发生错误时可以恢复

# mkdir -p /etc/uefi-keys/vendor # cd /etc/uefi-keys/vendor # for i in PK KEK db dbx; do efi-readvar -v $i -o $i.esl; done

生成您自签名的 PK、KEK 和 db 密钥,包括 .esl 和 .auth 文件

# efi-mkkeys -s "Your Name" -o /etc/uefi-keys

现在您可以卸载 efi-mkkeys,如果您愿意

# apk del efi-mkkeys

生成统一内核镜像

安装软件包 secureboot-hook, gummiboot-efistub, 和 efibootmgr

# apk add secureboot-hook gummiboot-efistub efibootmgr

调整 /etc/kernel-hooks.d/secureboot.conf 中的参数 cmdline。它不应包含 initrd= 参数!有效 cmdline 的示例

cmdline="root=UUID=<uuid-of-your-root-fs> modules=ext4"

运行内核钩子

# apk fix kernel-hooks

禁用 mkinitfs 触发器

# echo 'disable_trigger=yes' >> /etc/mkinitfs/mkinitfs.conf

添加启动项

# efibootmgr --disk <dev> --part 1 --create --label 'Alpine Linux' --load /Alpine/linux-lts.efi --verbose

注意:此过程只需执行一次;之后,每次内核升级时都会自动生成统一内核镜像。

注册 UEFI 密钥

将所有 *.esl、*.auth 文件从 /etc/uefi-keys 复制到 FAT 格式的文件系统(您可以使用 EFI 系统分区)。

启动固件设置实用程序并注册 db、KEK 和 PK 证书(按此顺序!)。固件有各种不同的界面;以下 ThinkPad T14s 的步骤只是一个示例。

  1. 重启系统并进入 ThinkPad 设置 (F1)。
  2. 转到 安全 > 安全启动
  3. 安全启动 更改为 启用
  4. 重置为设置模式
  5. 转到 密钥管理
  6. 授权签名数据库 (DB)
    • 注册 DB > 选择您的闪存驱动器 > 选择 db.auth
    • 删除 DB > 删除 Microsoft 证书(可选)
  7. 密钥交换密钥 (KEK)
    • 注册 KEK > 选择您的闪存驱动器 > 选择 KEK.auth
    • 删除 KEK > 删除 Microsoft 证书(可选)
  8. 平台密钥 (PK) > 注册 PK > 选择您的闪存驱动器 > 选择 PK.auth(这必须是最后一个!)
  9. 转到顶部,重启 > 退出并保存更改

某些设备,例如 HP Pavilion 笔记本电脑,无法通过界面注册密钥。相反,您必须按照以下步骤操作(步骤 1-5 和 9-12 可能因计算机而异,它们以 HP Pavilion 笔记本电脑为例)

  1. 重启系统并进入 HP Bios 设置实用程序 (F10)。
  2. 转到 系统配置
  3. 安全启动 更改为 禁用
  4. 选择 清除所有安全启动密钥
  5. 按 F10 保存设置
  6. 重启系统并进入 Alpine Linux
  7. 启用 Community 仓库
  8. 运行以下命令

# apk update # apk add sbctl # sbctl create-keys # sbctl sign /boot/efi/Alpine/linux-lts.efi # sbctl enroll-keys -m

  1. 重启系统并进入 HP Bios 设置实用程序 (F10)。
  2. 转到 系统配置
  3. 安全启动 更改为 启用
  4. 按 F10 保存设置

注意:如果您需要使用 sbctl,则每次升级内核时都必须运行 sbctl sign /boot/efi/Alpine/linux-lts.efi。只要您在重新启动之前签署新的统一内核镜像,您就不需要禁用安全启动。

另请参阅

资源