As Fedora 32 uses Boot Loader Specification
(https://fedoraproject.org/wiki/Changes/BootLoaderSpecByDefault),
linux-boot-prober on Ubuntu 20.04 finds Fedora 32 kernels via the
90fallback script (/usr/lib/linux-boot-probes/mounted/90fallback),
which just looks for kernel files on the filesystem:

$ sudo linux-boot-prober /dev/sde5
/dev/sde5:/dev/sde2::/boot/vmlinuz-0-rescue-7e584188f72b459891f83e6cd7f7b49b:/boot/initramfs-0-rescue-7e584188f72b459891f83e6cd7f7b49b.img:root=/dev/sde5
/dev/sde5:/dev/sde2::/boot/vmlinuz-5.6.11-300.fc32.x86_64:/boot/initramfs-5.6.11-300.fc32.x86_64.img:root=/dev/sde5
/dev/sde5:/dev/sde2::/boot/vmlinuz-5.6.6-300.fc32.x86_64:/boot/initramfs-5.6.6-300.fc32.x86_64.img:root=/dev/sde5

As these are found in alphabetical order, the rescue kernel comes
first, and is used for the main "Fedora 32 (Workstation Edition)"
entry. Then each of the three kernels found by 90fallback gets its own
menu entry in the "Advanced options for Fedora 32" submenu.

The Fedora entries in Fedora's own grub menu are created by the
`blscfg` command. The blscfg module
(https://src.fedoraproject.org/rpms/grub2/blob/master/f/0027-blscfg-add-blscfg-module-to-parse-Boot-Loader-Specif.patch)
reads files in /boot/loader/entries, and sorts the kernels properly by
version.

As Ubuntu 20.04 doesn't use BLS, it creates a menu entry for each
Ubuntu kernel in the Ubuntu grub config, which Fedora can find (via
the 40grub2 script) when it updates its own Fedora grub config.

Presumably neither grub nor os-prober on Debian/Ubuntu have BLS
support, so they don't handle the Fedora BLS files either (a) when
grub runs, or (b) when update-grub updates the Ubuntu grub config. So
the only way Fedora kernels will appear in the Ubuntu grub menu is via
that 90fallback script, which puts them in alphabetical order.

--
Richard Fearn
richardfe...@gmail.com

Reply via email to