Are there any workarounds for this? I guess because Pop!OS doesn’t boot with GRUB/2 but uses SystemD, the os_prober fails to add an entry in boot/grub.cfg? Or perhaps it is because the file system is btrfs? I have another installation of OpenSuSE Tumbleweed where the Pop!OS root partition is ext4, and that seems to boot OK from the SuSE grub menu.
Is there any documentation on how to do that? GRUB2 installs every boot entry grub2-mkconfig -o /boot/grub/grub.cfg detects, but for some reason doesn’t write an OS that is installed to btrfs.
os-prober does not “write an OS”. os-prober imports supported bootloaders’ configuration from another OS and os-prober does not support parsing systemd-boot configuration. Someone would need to contribute the code.
Given space requirements for snapshot support it is not the best idea, especially for non-experienced users.
But that may work with blscfg GRUB command to import systemd-boot configuration into GRUB menu. It will need some extra code to detect ESP device as GRUB defaults to looking on the $root device which at this point likely points to the btrfs filesystem.
I believe I misspoke … what I meant is: os_prober claims to have found my systemd-boot partition (Pop!OS on btrfs-formatted partition) and claims to be writing that entry to /boot/grub2/grub.cfg, but for whatever reason the boot entry for Pop!OS doesn’t get written into that file.
I’m not sure I want to go with any alternate boot loader to launch Pop!OS, blscfg is not something I’m familiar with. It seems to me a bit odd that other OSes (Mint, Debian) are correctly identified by os_prober and written out to the grub.cfg. The difference with Pop!OS is that it doesn’t have a /boot/grub or /boot/grub2 in the root OS partition, so perhaps os_prober refuses to write an entry in my Tumbleweed grub.cfg for it?
However that too is a bit strange when the above-mentioned Linux Mint 22.1, running update-grub, finds and creates a grub entry for Pop!OS, which seems to work, mostly, as a launcher for Pop!OS, when Mint is chosen in the NVRAM menu .
I hope this adds a bit of clarity; again, if any logs would be helpful, let me know.
TIA!
Simply adding the below to /etc/grub.d/40_custom (generated by Linux Mint 22.1 update-grub) caused OpenSUSE to add it to the grub menu:
localhost:/etc/grub.d # cat 40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
#
menuentry 'Pop!_OS 24.04 LTS (24.04) (on /dev/nvme0n1p5)' --class pop --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-31e672fd-0dfa-4517-9453-b1c7325feed8' {
savedefault
insmod part_gpt
insmod btrfs
search --no-floppy --fs-uuid --set=root 31e672fd-0dfa-4517-9453-b1c7325feed8
linux /boot/vmlinuz root=/dev/nvme0n1p5
initrd /boot/initrd.img
}
Pasted output [os_prober] although it seems there are many issues booting a mixture of btrfs/ext4 partitions with GRUB2. Probably not really an OpenSUSE issue, all the same, just intrinsic shortcoming of grub2 and @/subvolumes. I have had no issues booting both with rEFInd, so evidently I will have to use this boot loader in preference to GRB2 ("U"nified intentionally omitted).
But at this point I am entirely confused. Earlier you said that your missing OS is
but here it is on /dev/nvme0n1p11 and there is no UUID 31e672fd-0dfa-4517-9453-b1c7325feed8 anywhere in the provided logs. And another pasted snipped refers to /dev/sda, not to /dev/nvme.
three different laptops, explaining the confusion. And yes, missing from grub.cfg, unless Pop!os is installed on ext4 partition. Heuristic, somewhat arbitrary experimentation with three different hardware/BIOS configs. Strange to me that adding via 40_custom seems to work.