我尝试在第二个驱动器上安装 Debian 12.4.0,但第一个驱动器上已经安装了 Kubuntu 23.10。我检查过 兼容性使用实时版本,安装运行良好。不幸的是,我无法启动 Debian
error: bad shim signature
error: you need to load the kernel first
这个问题有解决办法吗?
Debian 安装程序不会在第一张磁盘上创建 Kubuntu 安装的 Grub 菜单项,因此需要使用 Kubuntu 中的 update-grub 命令。
答案1
对于安全启动,BIOS 有一组嵌入式证书,用于检查启动过程中的每一项。如果某项未由证书签名,则不会加载,并且启动过程会在此点停止。
截至目前,所有安全启动的根证书均为Microsoft's Microsoft UEFI CA 2011
(将于 2026 年到期,然后被替换Microsoft UEFI CA 2023
),该证书存在于所有在购买时启用了安全启动的 BIOS 中。
对于安全启动,Linux 有一个第一阶段的引导加载程序,称为shim
。该 shim 的代码在所有 Linux 版本中共享,但每个 Linux 发行版都会创建一个 shim 二进制文件,其中嵌入了他们自己的签名密钥证书,并由 Microsoft 使用 对其进行签名(使用Microsoft UEFI CA 2011
),这样就可以让签名的 实例shim
通过安全启动过程进行启动。
由于嵌入了证书,这些签名的shim
二进制文件无法在发行版之间共享。Kubuntu 的 shim 二进制文件(即嵌入了 Ubuntu 证书的 shim)无法将 Debian 签名的内核识别为有效,反之亦然。
为了能够进行双启动,您需要分别拥有两者的 shim、grub 和内核链。这也意味着您不能拥有一个通用的共享 grub 配置。