AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 753732
Accepted
Sadi
Sadi
Asked: 2023-08-10 23:01:28 +0800 CST2023-08-10 23:01:28 +0800 CST 2023-08-10 23:01:28 +0800 CST

Grub 错误“没有这样的设备:/.disk/info”是什么意思,以及如何修复它?

  • 772

我已经使用 KDE Plasma DE 安装了 Debian 测试,我认为这是在一段时间之后发生的,当时我遇到了 Grub 问题,我使用实时 USB、chroot 和重新安装 grub 修复了该问题。

除了黑屏上紧接着 grub 菜单之前出现的两条错误消息外,没有任何启动问题:

error: no such device: /.disk/info
error: no such device: /.disk/mini-info

我想知道这是否表明存在应该解决的问题以及如何解决它。

grub2
  • 2 2 个回答
  • 17 Views

2 个回答

  • Voted
  1. Best Answer
    telcoM
    2023-08-11T15:36:57+08:002023-08-11T15:36:57+08:00

    在 Debian 12(显然是更新版本)中,当安装在启用安全启动的 UEFI 系统上时,包含/boot/grub/grubx64.efi一个memdisk 映像(大小约为 2.4M),其中包含 Unicode 字体和迷你grub.cfg文件,其内容如下:

    if [ -z "$prefix" -o ! -e "$prefix" ]; then
            if ! search --file --set=root /.disk/info; then
                    search --file --set=root /.disk/mini-info
            set prefix=($root)/boot/grub
    if [ -e $prefix/x86_64-efi/grub.cfg ]; then
            source $prefix/x86_64-efi/grub.cfg
    elif [ -e $prefix/grub.cfg ]; then
            source $prefix/grub.cfg
    else
            source $cmdpath/grub.cfg
    

    它还包括一个嵌入的配置文件,其中简单地说:

    normal (memdisk)/grub.cfg
    

    的内置默认值$prefix设置为/EFI/debian。

    因此,当grubx64.efi开始执行时,它将首先使用memdisk映像中的配置文件。

    首先,该配置文件检查是否$prefix未定义或 ESP 分区上没有匹配的文件或目录。如果是这样,它将把 GRUB 的初始值设置$root为包含 或 的任何分区/文件系统/.disk/info,/.disk/mini-info并设置$prefix为指向/boot/grub该文件系统。

    我猜想这些文件将存在于 Debian 安装介质上,这就是 Debian 可以通过一个签名的可复制二进制构建来满足其对安全启动兼容的引导加载程序的所有需求。

    在我看来,对于永久安装的操作系统,它应该像这样工作:

    1. 内置默认值$prefix是/EFI/debian,它是 ESP 上应该存在的目录。
    2. 嵌入式配置告诉 GRUB 首先遵循基于内存磁盘的配置。GRUB 的默认根文件系统是 ESP。
    3. 由于$prefix已设置且目录存在于 ESP 上,因此第一个if...then条件将不成立,并且search应跳过命令。
    4. /EFI/debian/x86_64-efi/grub.cfgESP 上不存在(它将存在于 Debian 安装介质上),因此第二个if...then条件也不会成立。
    5. /EFI/debian/grub.cfgESP 上应该有一个(/boot/efi/EFI/debian/grub.cfg当操作系统正常运行时)告诉真正的 GRUB 配置位于何处。因此elif条件为真,GRUB 将读取该文件。如果您有专用/boot分区,它可能包含如下内容:
    search.fs_uuid 12345678-90ab-cdef-0123-456789abcdef root 
    set prefix=($root)'/grub'
    configfile $prefix/grub.cfg
    

    这将通过 UUID 选择您的/boot文件系统作为 GRUB 的根文件系统(= GRUB 访问的所有后续路径所引用的文件系统),然后使用它来读取/boot/grub/grub.cfg.

    如果您/boot位于不同的位置,例如在加密卷上,或者只是根文件系统上的常规目录,那么您的内容/boot/efi/EFI/debian/grub.cfg将有所不同,以适合您的情况。

    在您的情况下, memdisk 配置中的第一个if...条件出现问题:也许您的活动不在 ESP 的目录中(当从启动的操作系统访问它时)?或者您的固件可能区分大小写解释路径名,而目录名的实际字符大小写不同?thengrubx64.efi/EFI/debian/boot/efi/EFI/debian/

    无论如何,它最终会搜索/.disk/info和/.disk/mini-info应该仅存在于安装介质上,而那些失败的搜索会导致您看到错误消息。

    由于 GRUB 的工作方式不同,因此这些消息很可能是无害的,只是造成了轻微的外观干扰。但如果您希望摆脱它们,您应该efibootmgr -v检查 UEFI 引导变量中的引导路径以及 GRUB 在通往真实 GRUB 配置文件的过程中引用的所有路径名(如上所述),并更正任何差异,如下所示你找到他们。

    • 1
  2. Sadi
    2023-08-11T18:16:46+08:002023-08-11T18:16:46+08:00

    显然,这个问题是由于手动编辑几个系统文件将发行版名称从Debian更改为Kdebian的“半成品”工作造成的。而且,由于上面接受的答案,我可以通过创建一个名为debianunder的子目录EFI(除了kdebian子目录之外)来修复它,其中包含grub.cfg仅包含以下内容的文件:

    search.fs_uuid 6d4c4d33-240f-4577-9282-c3862db81a30 root hd0,gpt3 
    set prefix=($root)'/boot/grub'
    configfile $prefix/grub.cfg
    

    (数值6d4c4d33-240f-4577-9282-c3862db81a30可能hd0,gpt3会根据每个系统而变化)

    • 0

相关问题

  • 无法在 UEFI 中启动实时 Linux 多重引导 USB

  • grub2-mkconfig 没有生成正确的挂载路径(以及如何摆脱不再使用的额外内核?)

  • 如何在 debian 上找到内核崩溃日志

  • Ctrl + C 在 Linux 上的单用户模式下不起作用

  • GRUB 配置以识别同一 Linux 发行版的不同桌面环境(安装)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve