You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 24.04与Debian 12下UKIs及systemd-boot配置方法,以及Ubuntu 24.04默认MOK私钥与证书获取方式

Ubuntu 24.04与Debian 12下UKIs及systemd-boot配置方法,以及Ubuntu 24.04默认MOK私钥与证书获取方式

嘿,刚好在Ubuntu 24.04和Debian 12上折腾过UKI和Secure Boot相关的配置,我来帮你理清楚这些问题:

Ubuntu 24.04默认MOK私钥与证书的获取说明

首先得明确一点:Ubuntu 24.04默认安装时生成的MOK(Machine Owner Key)私钥不会被系统留存。安装过程中生成的密钥只是临时用来信任预装的内核和引导文件,安装完成后私钥就被删除了,所以你没法直接找到它。

如果你想用自己的密钥签名UKI,正确的做法是重新生成一套MOK密钥对,然后把新的证书 enroll 到Secure Boot的MOK列表里,步骤如下:

  • 先安装MOK管理工具:sudo apt install mokutil
  • 生成密钥对和证书(这里的/CN=Your MOK Name/可以换成你自己的标识,比如机器名或用户名):
    openssl req -new -x509 -newkey rsa:2048 -keyout mok.priv -outform DER -out mok.der -nodes -days 3650 -subj "/CN=Your MOK Name/"
    
  • 将证书导入MOK待 enroll 列表,设置一个临时密码(重启时要用):sudo mokutil --import mok.der
  • 重启系统,此时会进入MOK管理界面,按照提示选择「Enroll MOK」,输入刚才设置的临时密码,确认 enroll 新证书,完成后再次重启即可。

Ubuntu 24.04下配置UKI与systemd-boot

Ubuntu 24.04默认用GRUB引导,我们可以切换到systemd-boot并生成UKI:

  1. 安装systemd-boot:sudo bootctl install
  2. 生成UKI镜像:Ubuntu 24.04的systemd包已经自带ukify工具,直接用下面的命令打包内核、initramfs、命令行参数并签名:
    sudo ukify build \
      --linux /boot/vmlinuz-$(uname -r) \
      --initrd /boot/initrd.img-$(uname -r) \
      --cmdline @/etc/kernel/cmdline \
      --mok mok.der \
      --private-key mok.priv \
      --output /boot/efi/EFI/Linux/ubuntu-uki.efi
    
    其中@/etc/kernel/cmdline会读取系统默认的内核命令行参数,你也可以手动指定参数。
  3. 更新systemd-boot的启动菜单:sudo bootctl update
  4. (可选)设置UKI为默认启动项:sudo bootctl set-default ubuntu-uki.efi

Debian 12下配置UKI与systemd-boot

Debian 12的流程和Ubuntu类似,只是细节上略有差异:

  1. 准备MOK密钥对:和Ubuntu完全一样,安装mokutil,生成密钥对并 enroll 证书,这里就不重复了。
  2. 安装systemd-boot:Debian 12默认也是GRUB,执行sudo bootctl install即可切换(注意:必须是UEFI引导模式,systemd-boot不支持BIOS)。
  3. 生成UKI镜像:Debian 12的systemd也包含ukify,执行命令:
    sudo ukify build \
      --linux /boot/vmlinuz-$(uname -r) \
      --initrd /boot/initrd.img-$(uname -r) \
      --cmdline @/etc/kernel/cmdline \
      --mok mok.der \
      --private-key mok.priv \
      --output /boot/efi/EFI/Linux/debian-uki.efi
    
  4. 更新启动菜单:sudo bootctl update
  5. (可选)设置默认启动项:sudo bootctl set-default debian-uki.efi

额外注意事项

  • 确保你的系统是UEFI引导模式,systemd-boot和UKI都依赖UEFI环境。
  • 每次更新内核后,都需要重新生成UKI镜像。你可以写一个简单的脚本放在/etc/kernel/postinst.d/目录下,实现内核更新后自动生成UKI。
  • 如果你需要验证UKI的签名,可以用sbverify --cert mok.der /boot/efi/EFI/Linux/ubuntu-uki.efi命令(需要安装efitools包)。

备注:内容来源于stack exchange,提问作者rafiki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:28:18