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}" ]