How could I boot into openSUSE Tumbleweed (BtrFs) from Ubuntu Mate 18.10 (Ext4)

hi guys,

I’m not able to boot into a fresh installation of openSUSE Tumbleweed (20190219, 64-bit ISO), thru GRUB2 which was installed earlier by Ubuntu Mate 18.10

I’m getting following error with quite a few options I’ve tried so far. I’ve installed Grub Customizer too in Ubuntu Mate.

Error: File `/boot/vmlinuz-4.20.7-1-default' not found.
Error: You need to load the kernel first.

While installing Tumbleweed from 64-bit DVD ISO, I’ve selected to (attaching a picture of this screen):

Install boot code into a partition with /boot
Boot Loader Type: GRUB2
Status location: /dev/sdb3 (/boot)

Few options I’ve tried so far by editing sudo pluma “/etc/grub.d/40_custom” in Ubuntu Mate:

menuentry 'openSUSE Tumbleweed' {
insmod gzio
insmod part_msdos
insmod btrfs
set root=(hd0,msdos3)
linux    /boot/vmlinuz-4.20.7-1-default root=UUID=c5e369e1-d46a-48ad-b08e-6dd2a9b4d248  ${extra_cmdline} splash=silent resume=/dev/disk/by-uuid/e9e79445-7a21-46a9-a77f-61efcecc7e2d quiet
initrd    /boot/initrd-4.20.7-1-default
}
menuentry 'openSUSE Tumbleweed' {
insmod gzio
insmod part_msdos
insmod btrfs
set root=(hd0,msdos3)
configfile /boot/grub/grub.conf

** I can boot into Ubuntu Mate 18.10 (or Windows 10) just fine**. PC setup:


First SSD:  /dev/sda1  Windows 10
Second SSD: /dev/sdb1  Ubuntu Mate 18.10
            /dev/sdb3  openSUSE Tumbleweed

Thanks alot in advance.

https://i.imgur.com/k2G1z8G.jpg

AFAIK the GRUB version installed with Ubuntu cannot read the disk layout of the btrfs partition formatted by openSUSE.
You may try to boot your fresh Tumbleweed one way or another, for instance using the Tumbleweed install media and choosing “Boot Linux System” instead of “Install” etc.
Then, once logged in Tumbleweed, run YaST2-Bootloader (just type “boot…” in the application menu and choose “Bootloader”), make sure that the “probe foreign OS” flag is ticked so that you will be able to boot Ubuntu (and others if installed), save and reboot.
The openSUSE GRUB should be able to recognize whatever you have installed on your disk. If not so, ask again here, we are glad to help.

Updated to Ubuntu 18.04.2 LTS (Bionic Beaver) a few minutes ago. The following entry was created for Tumbleweed:


menuentry 'openSUSE Tumbleweed (auf /dev/sda3)' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-dbc33c75-0fbb-4619-add6-d204ecf63a43' {
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if  x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  dbc33c75-0fbb-4619-add6-d204ecf63a43
        else
          search --no-floppy --fs-uuid --set=root dbc33c75-0fbb-4619-add6-d204ecf63a43
        fi
        linux /boot/vmlinuz-4.14.5-1-default root=UUID=dbc33c75-0fbb-4619-add6-d204ecf63a43 resume=/dev/nvme0n1p1 splash=silent quiet showopts
        initrd /boot/initrd-4.14.5-1-default
}

Booted from Ubuntu into Tumbleweed successfully. When installing multiple OSs EFI is highly recommended. For minimum hassle use ext4 for Tumbleweed. As an alternative you may use chain loading:

erlangen:~ # cat /etc/grub.d/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 'Tumbleweed /dev/sdb3' {
    search --fs-uuid --no-floppy --set=root 4A24-B10D 
    chainloader /EFI/opensuse/grubx64.efi
}

menuentry 'Xubuntu 18.04 /dev/sdb2' {
    search --fs-uuid --no-floppy --set=root 6DEC-64F9
    chainloader /EFI/ubuntu/grubx64.efi
}

menuentry 'Fedora 29 /dev/nvme0n1p1' {
    search --fs-uuid --no-floppy --set=root 6DEC-64F9
    chainloader /EFI/fedora/grubx64.efi
}
erlangen:~ # 

I think your grub entry for opensuse should be “set root=(hd2,msdos3)” on the 5th line.

edit: too late. Your post just beat mine.

Just some comments. Feel free to ignore if they are not helpful.

That tells me that you are using legacy BIOS booting, and not UEFI booting.

Few options I’ve tried so far by editing sudo pluma “/etc/grub.d/40_custom” in Ubuntu Mate:

menuentry 'openSUSE Tumbleweed' {
insmod gzio
insmod part_msdos
insmod btrfs
set root=(hd0,msdos3)
linux    /boot/vmlinuz-4.20.7-1-default root=UUID=c5e369e1-d46a-48ad-b08e-6dd2a9b4d248  ${extra_cmdline} splash=silent resume=/dev/disk/by-uuid/e9e79445-7a21-46a9-a77f-61efcecc7e2d quiet
initrd    /boot/initrd-4.20.7-1-default
}

How do you know that this is disk “hd0” rather than “hd1”? Have you tried with “hd1”?

It might be a better idea to use the UUID to identify the disk that you are trying to boot. For that, replace the “set root=” line with


search --fs-uuid --set=root the-uuid-of-your-sdb3-partition-file-system-goes-here

menuentry 'openSUSE Tumbleweed' {
insmod gzio
insmod part_msdos
insmod btrfs
set root=(hd0,msdos3)
configfile /boot/grub/grub.conf

When trying this, you would need “/boot/grub2/grub.cfg” rather than “/boot/grub/grub.conf”

@OrsoBruno @karlmistelberger @peteh100 and @nrickert

Thanks alot for the replies.

(1) First I tried “Boot Linux System” from openSUSE Tumbleweed live USB flash drive. As you can see in the pictures attached below, it was coming to a stop at:

Started Locale Service\CODE]

Left it there for 20 minutes, two times, same results.

https://i.imgur.com/f6M8DZn.jpg





https://i.imgur.com/dUYrVY6.jpg

https://i.imgur.com/FHodAKI.jpg

(2) If I understand correctly, your openSUSE installation is on EXT4, right?

And yes, this HP PC is little old with legacy BIOS, and do not have UEFI.

Also yes, (in "/etc/grub.d/40_custom") I have tried setting root=UUID; HD0, HD1 with all possible combination of partition numbers too.

Now I have not tried this yet: "/boot/grub2/grub.cfg". So gonna try it and will report back.

Thanks again all of you :)

Alright I tried: “configfile /boot/grub/grub.conf” but the same results.

Also the way I quickly try all combinations of (hd0,msdos3) or (hd1,msdos3) and so on… on the GRUB2 (Ubuntu Mate) screen, I select my custom entry of “openSUSE Tumbleweed”, hit “e” to edit.

Then change hd or partition numbers and hit F10, and most of the times that screens just refreshes, I do not even get any error, if i use

configfile /boot/grub/grub.conf

I get error only if i use:

linux    /boot/vmlinuz-4.20.7-1-default root=UUID=c5e369e1-d46a-48ad-b08e-6dd2a9b4d248  ${extra_cmdline} splash=silent resume=/dev/disk/by-uuid/e9e79445-7a21-46a9-a77f-61efcecc7e2d quiet
 initrd    /boot/initrd-4.20.7-1-default

Boot from a Tumbleweed live iso and do:


mount /dev/sdb3 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
mount -a
yast


then go System > Bootloader. Make sure “Probe for foreign OS” is checked, OK, OK, OK and reboot.

Actually, I think the line I picked out in my earlier post should be “set root=(hd1,msdos3)”.

Thanks alot for the reply. So I followed this to the letter (screens are attached). After the reboot it was still GRUB2 from Ubuntu Mate 18.10.

So I downloaded new Tumbleweed ISO, 20190226. Prepared the flash drive again via Etcher in Ubuntu Mate. Formatted Tumbleweed partition again to BtrFs.
And this time I selected to install boot code into MBR.

But installation settings screen was still showing that it’s gonna install MBR into /dev/sdb. So I changed the “Disk Order Settings” and made /dev/sda first entry.

Installation went thru just fine but after the reboot, guess what… it was GRUB2 from Ubuntu Mate.

Though I was able to boot into openSUSE Tumbleweed by changing boot order of SSDs from BIOS.

So is there any way (for my next installation), I could install GRUB2 from openSUSE onto MBR of hd0 ? I know this would overwrite GRUB2 from Ubuntu Mate.

Thank you so much everyone :slight_smile:

I think I can’t insert more than five images, so here are the Imgur links for few more screens.

https://i.imgur.com/vPag5qg.jpg

https://i.imgur.com/PNNgceC.jpg

https://i.imgur.com/ATqwPsq.jpg

https://i.imgur.com/S3nZLph.jpg

You have check the box for “Custom Boot Partition”. And then you have to enter the device (such as “/dev/sda”). Note that this will be the device names as known to the installer.

During an install, when the summary page is showing click on “Booting” to get to the detailed settings.

Never to my knowledge has openSUSE provided a /boot/grub/grub.conf file. With Grub Legacy it’s always been /boot/grub/menu.lst, same as upstream Grub (because of the FAT 8.3 filename limitation involving Grub4DOS), and which Debian and its derivatives (including *ubuntu) used before they switched to Grub “v2” a decade ago. Grub2 for MBR booting openSUSE (or any other distro) I’ve never used, but since with UEFI booting it uses /boot/grub2/grub.cfg, and *ubuntu uses /boot/grub/grub.cfg, I’d expect /boot/grub2/grub.cfg to be used by Grub2 in openSUSE, and what your Ubuntu configfile line for TW would need.

Please use something other than i.imgur.com, which is unavailable here, for uploads, such as one of the following:

http://susepaste.org/
http://paste.opensuse.org/
http://paste.ubuntu.com/
http://paste.debian.net/
http://paste.fedoraproject.org

https://gist.github.com/

Uploads while booted to *buntu can be made without using a web browser, directly using cmdline utility “pastebinit”. Booted to openSUSE substitute the “susepaste” command.

Thank you so much, I’ll go for custom boot partition next time.

Thank you but apart from configfile, the bigger issue I had was, GRUB2 being written in hd1 instead of hd0. And thanks to @nrickert, I now know, to use custom boot partition option at the beginning of installation.

There was only one option to login with OpenID, which I even spent 5+ min on how to get one, only to find out that it’s paid service.

So I’ve uploaded all the screens from this thread onto OneDrive:

https://1drv.ms/f/s!AjCVSeXejCHoiQMQp3cXyhM3gnN2

Login is not needed to create a paste at paste.opensuse.org and it is the preferred way to attach stuff to an openSUSE forum post; with a login you may be able to edit or erase your paste, but this is not needed generally, just set a low expiration term if you prefer so.