OpenSuse 42.2 doesn't see Tumbleweed properly

I multiboot my PC. All software is on disk 1 (sda) with Windows MBR on that disk. (So if I set BIOS to boot from disk 1 it goes straight to Windows 10 - fine).

If I boot from disk 2 I get GRUB2 from Leap 42.2.

At the moment GRUB sees Leap 42.2, Window 10, OpenSuse 13.2 and Tumbleweed but doing some tests in Leap 42.2 the GRUB2 tools don’t properly see Tumbleweed.

david:/home/richard/Downloads # os-prober
/dev/sda1:Windows 10 (loader):Windows:chain
/dev/sda7:openSUSE 13.2 (x86_64):SUSE:linux:btrfs:UUID=54247e2a-402f-4372-b1cd-21204f7ab6fc:subvol=
/dev/sda9:openSUSE Tumbleweed :openSUSE Tumbleweed:linux:btrfs:UUID=45cdc207-f7ec-4110-959b-218ebb2c6fc8:subvol=

So it sees the partition which is mounted to /tumbleweed. /tumbleweed/boot shows the kernels for that version.

But grub2-mkconfig doesn’t pick up the kernels

<snip>
Found openSUSE Tumbleweed on /dev/sda9

END /etc/grub.d/30_os-prober

I want to update 13.2 to 42.3 but there are issues with the install of boot loader where the installer will not offer to install to MBR of the second disk (sdb) that earlier version did so would need to keep the loader from 42.2 for the moment but not if it can’t find all the other O/S’s.

PC is an older i7 with traditional BIOS.

Reinstall the bootloader through YaST - System - Bootloader, You can force it by setting it to wait for 7 seconds f.e.

Further to this, I’ve replaced my old 13.2 with 42.3 but didn’t use the boot loader from that as it doesn’t want to install into the MBR of disk 2.

Booting into 42.2 which I use to control the booting I run grub2-mkconfig, the prober now shows


### BEGIN /etc/grub.d/30_os-prober ###
Found Windows 10 (loader) on /dev/sda1
menuentry 'Windows 10 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-64244A53244A27FE' {
        insmod part_msdos
        insmod ntfs
        set root='hd1,msdos1'
        if  x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd1,msdos1'  64244A53244A27FE
        else
          search --no-floppy --fs-uuid --set=root 64244A53244A27FE
        fi
        parttool ${root} hidden-
        drivemap -s (hd0) ${root}
        chainloader +1
}
Found openSUSE 42.3 (x86_64) on /dev/sda7

Found openSUSE Tumbleweed  on /dev/sda9

### END /etc/grub.d/30_os-prober ###


So if I run that into the config I won’t be able to boot Tumbleweed nor the new 42.3. And as above if I install the boot loader for 42.3 I don’t know where it will go. (MBR on disk 1 will boot straight to Windows 10 and I want to keep that). OpenSuse in the past has been so easy as it always puts it’s boot loader into the first disk in BIOS boot order which is sdb so booting from disk 2 will give GRUB, booting from disk 1 gives Windows.


david:/boot/grub2 # os-prober 
/dev/sda1:Windows 10 (loader):Windows:chain
/dev/sda7:openSUSE 42.3 (x86_64):SUSE:linux:btrfs:UUID=5d0598ee-2e9a-4bed-99ea-2fc2b7961b41:subvol=@/.snapshots/1/snapshot
/dev/sda9:openSUSE Tumbleweed :openSUSE Tumbleweed:linux:btrfs:UUID=45cdc207-f7ec-4110-959b-218ebb2c6fc8:subvol=

The current grub.cfg for the other O/S sections (13.2 is in sda7 with boot in sda6)


### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 10 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-64244A53244A27FE' {
        insmod part_msdos
        insmod ntfs
        set root='hd1,msdos1'
        if  x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd1,msdos1'  64244A53244A27FE
        else
          search --no-floppy --fs-uuid --set=root 64244A53244A27FE
        fi
        parttool ${root} hidden-
        drivemap -s (hd0) ${root}
        chainloader +1
}
menuentry 'openSUSE 13.2 (x86_64) (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-54247e2a-402f-4372-b1cd-21204f7ab6fc' {
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos6'
        if  x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos6 --hint-efi=hd0,msdos6 --hint-baremetal=ahci0,msdos6 --hint='hd1,msdos6'  70f46891-feb4-4148-82c0-deeae6913f17
        else
          search --no-floppy --fs-uuid --set=root 70f46891-feb4-4148-82c0-deeae6913f17
        fi
        linux /vmlinuz-3.16.7-53-desktop root=UUID=54247e2a-402f-4372-b1cd-21204f7ab6fc noquiet nosplash
        initrd /initrd-3.16.7-53-desktop
}
submenu 'Advanced options for openSUSE 13.2 (x86_64) (on /dev/sda7)' $menuentry_id_option 'osprober-gnulinux-advanced-54247e2a-402f-4372-b1cd-21204f7ab6fc' {
        menuentry 'openSUSE 13.2 (Harlequin) (x86_64) (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/vmlinuz-3.16.7-53-desktop--54247e2a-402f-4372-b1cd-21204f7ab6fc' {
                insmod part_msdos
                insmod ext2
                set root='hd1,msdos6'
                if  x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos6 --hint-efi=hd0,msdos6 --hint-baremetal=ahci0,msdos6 --hint='hd1,msdos6'  70f46891-feb4-4148-82c0-deeae6913f17
                else
                  search --no-floppy --fs-uuid --set=root 70f46891-feb4-4148-82c0-deeae6913f17
                fi
                linux /vmlinuz-3.16.7-53-desktop root=UUID=54247e2a-402f-4372-b1cd-21204f7ab6fc noquiet nosplash
                initrd /initrd-3.16.7-53-desktop
        }
<snip - lots of old kernels>
}

menuentry 'openSUSE Tumbleweed  (on /dev/sda9)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-45cdc207-f7ec-4110-959b-218ebb2c6fc8' {
        insmod part_msdos
        insmod btrfs
        set root='hd1,msdos9'
        if  x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos9 --hint-efi=hd0,msdos9 --hint-baremetal=ahci0,msdos9 --hint='hd1,msdos9'  45cdc207-f7ec-4110-959b-218ebb2c6fc8
        else
          search --no-floppy --fs-uuid --set=root 45cdc207-f7ec-4110-959b-218ebb2c6fc8
        fi
        linux /boot/vmlinuz root=UUID=45cdc207-f7ec-4110-959b-218ebb2c6fc8 ${extra_cmdline} resume=/dev/disk/by-uuid/99ea169b-2d09-4d48-ae61-29dd954e388d splash=silent quiet showopts
        initrd /boot/initrd
}
submenu 'Advanced options for openSUSE Tumbleweed  (on /dev/sda9)' $menuentry_id_option 'osprober-gnulinux-advanced-45cdc207-f7ec-4110-959b-218ebb2c6fc8' {
        menuentry 'openSUSE Tumbleweed (on /dev/sda9)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-4.14.9-1-default--45cdc207-f7ec-4110-959b-218ebb2c6fc8' {
                insmod part_msdos
                insmod btrfs
                set root='hd1,msdos9'
                if  x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos9 --hint-efi=hd0,msdos9 --hint-baremetal=ahci0,msdos9 --hint='hd1,msdos9'  45cdc207-f7ec-4110-959b-218ebb2c6fc8
                else
                  search --no-floppy --fs-uuid --set=root 45cdc207-f7ec-4110-959b-218ebb2c6fc8
                fi
                linux /boot/vmlinuz-4.14.9-1-default root=UUID=45cdc207-f7ec-4110-959b-218ebb2c6fc8 ${extra_cmdline} resume=/dev/disk/by-uuid/99ea169b-2d09-4d48-ae61-29dd954e388d splash=silent quiet showopts
                initrd /boot/initrd-4.14.9-1-default
       }
<snip - lots of old kernels>

}


Interesting is that using df -h on OpenSuse 42.2 now shows second disk as sdc not sdb. But the boot loader tool disk order still has sda and sdb.

Altering title because I’ve now replaced 13.2 with Leap 15. Because of issues with installing GRUB to MBR I need to keep 42.2 as my boot platform but grub2-mkconfig doesn’t see either Tumbleweed nor Leap 15.

As in earlier posts osprober sees that both these exists but then doesn’t create menu options. Wondering if it’s because both these have higher kernel versions than “expected”. If I boot to Leap 15, then grub2-mkconfig sees 42.2, 15 but not Tumbleweed. I’ve not tried running in Tumbleweed at this point.

I have updated osprober

david:~ # os-prober
/dev/sda1:Windows 10:Windows:chain
/dev/sda7:openSUSE Leap 15.0:openSUSE:linux:btrfs:UUID=0f5d4f79-96fb-49d6-bf50-3ad610ad43dd:subvol=@
/dev/sda9:openSUSE Tumbleweed:openSUSE1:linux:btrfs:UUID=45cdc207-f7ec-4110-959b-218ebb2c6fc8:subvol=

My previous experience is that “btrfs” on another linux system sometimes confuses “grub2-mkconfig”. I don’t know whether that is still a problem. But if it is, that is probably why it is not generating boot commands for Tumbleweed.

But it didn’t see 42.3 when that was installed with /boot on ext2 (or ext4) as a separate partition. And at some point it must have seen Tumbleweed to create the menu entries. To boot I removed the specific kernel version and used the links eg initrd instead of initrd.version.details.

This is still an issue
os-prober can see the systems are there but grub2-mkconfig
42.2 - doesn’t build for Leap15 or Tumbleweed
15 - doesn’t build for Tumbleweed but does see 42.2 but I’m nervous about using this because of getting GRUB into MBR of data disk (another thread for that).

I have 42.2 GRUB and have “manual” entries to get to 15 and TW (just point to /boot/vmlinuz symlink to latest kernel).