我已经使用 KDE Plasma DE 安装了 Debian 测试,我认为这是在一段时间之后发生的,当时我遇到了 Grub 问题,我使用实时 USB、chroot 和重新安装 grub 修复了该问题。
除了黑屏上紧接着 grub 菜单之前出现的两条错误消息外,没有任何启动问题:
error: no such device: /.disk/info
error: no such device: /.disk/mini-info
我想知道这是否表明存在应该解决的问题以及如何解决它。
我已经使用 KDE Plasma DE 安装了 Debian 测试,我认为这是在一段时间之后发生的,当时我遇到了 Grub 问题,我使用实时 USB、chroot 和重新安装 grub 修复了该问题。
除了黑屏上紧接着 grub 菜单之前出现的两条错误消息外,没有任何启动问题:
error: no such device: /.disk/info
error: no such device: /.disk/mini-info
我想知道这是否表明存在应该解决的问题以及如何解决它。
在 Debian 12(显然是更新版本)中,当安装在启用安全启动的 UEFI 系统上时,包含
/boot/grub/grubx64.efi
一个memdisk 映像(大小约为 2.4M),其中包含 Unicode 字体和迷你grub.cfg
文件,其内容如下:它还包括一个嵌入的配置文件,其中简单地说:
的内置默认值
$prefix
设置为/EFI/debian
。因此,当
grubx64.efi
开始执行时,它将首先使用memdisk映像中的配置文件。首先,该配置文件检查是否
$prefix
未定义或 ESP 分区上没有匹配的文件或目录。如果是这样,它将把 GRUB 的初始值设置$root
为包含 或 的任何分区/文件系统/.disk/info
,/.disk/mini-info
并设置$prefix
为指向/boot/grub
该文件系统。我猜想这些文件将存在于 Debian 安装介质上,这就是 Debian 可以通过一个签名的可复制二进制构建来满足其对安全启动兼容的引导加载程序的所有需求。
在我看来,对于永久安装的操作系统,它应该像这样工作:
$prefix
是/EFI/debian
,它是 ESP 上应该存在的目录。$prefix
已设置且目录存在于 ESP 上,因此第一个if
...then
条件将不成立,并且search
应跳过命令。/EFI/debian/x86_64-efi/grub.cfg
ESP 上不存在(它将存在于 Debian 安装介质上),因此第二个if
...then
条件也不会成立。/EFI/debian/grub.cfg
ESP 上应该有一个(/boot/efi/EFI/debian/grub.cfg
当操作系统正常运行时)告诉真正的 GRUB 配置位于何处。因此elif
条件为真,GRUB 将读取该文件。如果您有专用/boot
分区,它可能包含如下内容:这将通过 UUID 选择您的
/boot
文件系统作为 GRUB 的根文件系统(= GRUB 访问的所有后续路径所引用的文件系统),然后使用它来读取/boot/grub/grub.cfg
.如果您
/boot
位于不同的位置,例如在加密卷上,或者只是根文件系统上的常规目录,那么您的内容/boot/efi/EFI/debian/grub.cfg
将有所不同,以适合您的情况。在您的情况下, memdisk 配置中的第一个
if
...条件出现问题:也许您的活动不在 ESP 的目录中(当从启动的操作系统访问它时)?或者您的固件可能区分大小写解释路径名,而目录名的实际字符大小写不同?then
grubx64.efi
/EFI/debian
/boot/efi/EFI/debian/
无论如何,它最终会搜索
/.disk/info
和/.disk/mini-info
应该仅存在于安装介质上,而那些失败的搜索会导致您看到错误消息。由于 GRUB 的工作方式不同,因此这些消息很可能是无害的,只是造成了轻微的外观干扰。但如果您希望摆脱它们,您应该
efibootmgr -v
检查 UEFI 引导变量中的引导路径以及 GRUB 在通往真实 GRUB 配置文件的过程中引用的所有路径名(如上所述),并更正任何差异,如下所示你找到他们。显然,这个问题是由于手动编辑几个系统文件将发行版名称从Debian更改为Kdebian的“半成品”工作造成的。而且,由于上面接受的答案,我可以通过创建一个名为
debian
under的子目录EFI
(除了kdebian
子目录之外)来修复它,其中包含grub.cfg
仅包含以下内容的文件:(数值
6d4c4d33-240f-4577-9282-c3862db81a30
可能hd0,gpt3
会根据每个系统而变化)