Hello,

GRUB documentation says:

‘GRUB_OS_PROBER_SKIP_LIST’
    List of space-separated FS UUIDs of filesystems to be ignored from
    os-prober output. For efi chainloaders it’s <UUID>@<EFI FILE>

But the behaviour I observe does not match this description:

GRUB_OS_PROBER_SKIP_LIST="<UUID>"

does not ignore non-EFI bootloaders in filesystem with UUID <UUID>.
In order to ignore a non-EFI bootloader, you must set

GRUB_OS_PROBER_SKIP_LIST="<UUID>@<DEVICE>"

which is both absurd (<UUID> and <DEVICE> are redundant) and wrong (<DEVICE> such as /dev/sd* may not be persistent across boots).

Is this really intended behaviour and the documentation is wrong ?
Or is the documentation correct and the behaviour is wrong ?

In the latter case, the culprit is in /etc/grub.d/30_os_prober (source: util/grub.d/30_os-prober.in), the condition:

    [ x"${DEVICE#*@}" != x ]

and the fix is simple: replace it with

    [ x"${DEVICE%@*}" != x"${DEVICE}" ]

Reply via email to