What does Grub error "no such device: /.disk/info" mean, and how to fix it?

Sadi

I have installed Debian Testing with KDE Plasma DE, and I think this happened after a while, when I had a Grub problem which I fixed using a live USB, chrooting and re-installing grub.

There's no booting problem other than these two error messages that appear on black screen immediately before the grub menu:

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

I wonder if this indicates a problem that should be taken care of, and how to fix it.

telcoM

In Debian 12 (and newer, apparently), when installed on a Secure Boot-enabled UEFI system, the /boot/grub/grubx64.efi includes a memdisk image (approximately 2.4M in size) which contains an Unicode font and a mini grub.cfg file, with the following contents:

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

It also includes an embedded configuration file which says simply:

normal (memdisk)/grub.cfg

The built-in default value for $prefix is set to /EFI/debian.

So, when grubx64.efi begins executing, it will first use the configuration file within the memdisk image.

First, that configuration file checks if $prefix is undefined or there is no matching file or directory on the ESP partition. If so, it will set GRUB's initial $root to whatever partition/filesystem that contains either /.disk/info or /.disk/mini-info, and sets $prefix to point to /boot/grub on that filesystem.

I guess these files would exist on Debian installation media, and this is how Debian can have just one signed reproducible binary build cover all their needs for Secure Boot-compliant bootloader.

It seems to me that with a permanently installed OS, it should work like this:

  1. The built-in default $prefix is /EFI/debian, which is a directory which should exist on the ESP.
  2. The embedded configuration tells GRUB to follow the memdisk-based configuration first. The default root filesystem for GRUB will be the ESP.
  3. Since $prefix is set and the directory exists on the ESP, the first if ... then condition will not be true, and the search commands should be skipped.
  4. /EFI/debian/x86_64-efi/grub.cfg does not exist on the ESP (it would exist on the Debian installation media), so the second if ... then condition will not be true either.
  5. There should be a /EFI/debian/grub.cfg on the ESP (/boot/efi/EFI/debian/grub.cfg when the OS is running normally) telling where the real GRUB configuration is located. So the elif condition will be true and GRUB will read the file. If you have a dedicated /boot partition, it could contain something like this:
search.fs_uuid 12345678-90ab-cdef-0123-456789abcdef root 
set prefix=($root)'/grub'
configfile $prefix/grub.cfg

This would select your /boot filesystem by UUID for GRUB's root filesystem (= the filesystem all subsequent paths accessed by GRUB refer to), and then use it to read the actual GRUB configuration in /boot/grub/grub.cfg.

If your /boot is in a different location, like on an encrypted volume, or just a regular directory on your root filesystem, then the contents of your /boot/efi/EFI/debian/grub.cfg would be different to suit your circumstances.

In your case, something goes wrong in the first if ... then condition within the memdisk configuration: maybe your active grubx64.efi is not located in the ESP's /EFI/debian directory (/boot/efi/EFI/debian/ when accessing it from a booted-up OS)? Or maybe your firmware interprets pathnames case-sensitively and the actual character case of the directory names is different?

Anyway, it ends up searching for /.disk/info and /.disk/mini-info which should exist on installation media only, and those failing searches cause the error messages you're seeing.

Since GRUB is working otherwise, the messages could most likely be harmless and only a minor cosmetic annoyance. But if you wish to get rid of them, you should use efibootmgr -v to review the boot paths in the UEFI boot variables and all the pathnames referenced by GRUB on the way to your real GRUB configuration file (as explained above), and correct any discrepancies as you find them.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

what does this error mean, and how to fix it?

What does Bus error: 10 mean? And how to fix this error

What does "error: '.class' expected" mean and how do I fix it

What does MissingManifestResourceException mean and how to fix it?

What does the error "ACCESS_TAG_MEMORY_OVERRUN_ERROR" in Zebra Android SDK mean, and how to fix it?

"local variable 'e' referenced before assignment" what does this error mean? How do I fix this error?

What does this Vagrant error mean and how do you fix it? For 'public_network' and 'private_network' together

Error: No value given for one or more required parameters. What does this mean? How do I fix?

'No module named 'deploy' : What does this error mean and how do I fix it?

What does this error mean Unsupported class file major version 56 and how do I fix it?

What does the error "list indices must be integers or slices, not str" mean and how can I fix it?

What does this mean and how should I fix this for big files? (malloc_error_break)

In R, what does the error "need at least one panel" mean and how to fix it?

C++ - What does "Incomplete type not allowed" error mean, and how can I fix it?

What does 'index 0 is out of bounds for axis 0 with size 0' mean and how can I fix this error?

In MySQL what does "Overhead" mean, what is bad about it, and how to fix it?

How to fix a syntax error in Grub?

What does Error:(13) Error: The <receiver> element must be a direct child of the <application> element [WrongManifestParent] mean and how do i fix it?

What does the "declare a static final serialVersionUID" warning mean and how to fix?

What does nvprof output: "No kernels were profiled" mean, and how to fix it

What does "Overflow evaluating the requirement" mean and how can I fix it?

What does this mean? How do I fix it? Fatal Exception:main

What does errors like "!=<" mean in agda and how to fix

What exactly does my logcat mean, and how can I fix it?

What does this program mean by Unknown Source and how do I fix it?

What does this error mean?

Android gradle build Error "finished with non-zero exit value 42" , what does it mean and how do i fix it?

What does the rust-analyzer error "could not resolve macro `$crate::format_args`" mean and how do I fix it?

Error 57 - what does it mean?