UEFI unable to find boot device, root filesystem isn't btrfs?

Hi, I’m having an issue with my boot drive being detectable since installing Manjaro. My device never seems to appear in the boot menu and the only way I can reliably boot into my device is if I physically disconnect and reconnect my SSD drives to the machine. I’ve spent a lot of time messing around with basically everything I can think of in UEFI and none of it worked.

I’ve been stumped but recently when updating I got this error message:

Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Adding boot menu entry for UEFI Firmware Settings ...
Root filesystem isn't btrfs

This can be reliably reproduced with the following command which I found online when attempting to troubleshoot the issue.

sudo grub-mkconfig -o /boot/grub/grub.cfg

with the full output appearing as

sudo grub-mkconfig -o /boot/grub/grub.cfg                                                                                                                                                                                                                          ✔  4s  
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-6.9-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-6.9-x86_64.img
Found initrd fallback image: /boot/initramfs-6.9-x86_64-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Adding boot menu entry for UEFI Firmware Settings ...
Root filesystem isn't btrfs
If you think an error has occurred, please file a bug report at "https://github.com/Antynea/grub-btrfs"
Found memtest86+ image: /boot/memtest86+/memtest.bin
Found memtest86+ EFI image: /boot/memtest86+/memtest.efi
done

I’m hoping the issue is related to this? This device only has Manjaro on it (no dual boot), although it previous had Windows on it.

Outside of booting my device works normally and I can see/use the device.

df -h                                                                                                                                                                                                                                                                     ✔ 
Filesystem      Size  Used Avail Use% Mounted on
dev              16G     0   16G   0% /dev
run              16G  2.1M   16G   1% /run
efivarfs        128K   30K   94K  25% /sys/firmware/efi/efivars
/dev/sda2       916G  425G  445G  49% /
tmpfs            16G  6.1G  9.7G  39% /dev/shm
tmpfs            16G   48M   16G   1% /tmp
/dev/sda1       300M  296K  300M   1% /boot/efi
/dev/sdb1       916G  432G  439G  50% /mnt/data
tmpfs           3.2G  116K  3.2G   1% /run/user/1000
sudo fdisk -l                                                                                                                                                                                                                                                             ✔ 
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 860 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 57263673-B85E-49B0-99D4-CB84FA5D65EB

Device      Start        End    Sectors   Size Type
/dev/sda1    4096     618495     614400   300M EFI System
/dev/sda2  618496 1953520064 1952901569 931.2G Linux filesystem


Disk /dev/sdb: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 860 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: BD18F589-ABA0-4559-9C1E-7122B9DB43A4

Device     Start        End    Sectors   Size Type
/dev/sdb1   2048 1953523711 1953521664 931.5G Linux filesystem
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=6340-8AA6                            /boot/efi      vfat    umask=0077 0 2
UUID=f64e81dd-e0e1-4335-acfc-38dbe022a099 /              ext4    defaults,noatime 0 1
UUID=81d6f128-42fe-4f4a-9384-d07f7d0a624f /mnt/data      ext4    defaults,noatime 0 1
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

os-prober seems to be enabled as far as I can tell.

cat /etc/default/grub | grep -i 'OS_PROBER'                                                                                                                                                                                                                               ✔ 
GRUB_DISABLE_OS_PROBER=false

Update / Some steps taken so far:

I’ve removed a btrfs snapshot file from /etc/grub.d/, along with uninstalling grub-btrfs and btrfs-prog.

sudo grub-mkconfig -o /boot/grub/grub.cfg                                                                                                                                                                                                                                 ✔ 
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-6.9-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-6.9-x86_64.img
Found initrd fallback image: /boot/initramfs-6.9-x86_64-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Adding boot menu entry for UEFI Firmware Settings ...
Found memtest86+ image: /boot/memtest86+/memtest.bin
Found memtest86+ EFI image: /boot/memtest86+/memtest.efi
done

Which at least there are no btrfs references any more.

However, I’ve tried restarting and I still am not able to find a bootable device (without unplugging and re-plugging the SSDs).

I’ve also tried grub-install both as sudo grub-install /dev/sda and sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck

I’ve also reinstalled grub and efi bootmanager through pacman.

You probably need to re-install the efi boot manager then reconfigure grub :
https://wiki.archlinux.org/title/GRUB

For what concerns os_prober, as you have only one OS, you can change the parameter to true.

Your / is an EXT4 partition.
For some reason, the GRUB is expecting btrfs partition.

Looks like I have a /etc/grub.d/41_snapshots-btrfs for some reason. Is this safe to delete? Or at least rename? I haven’t seen any btrfs references in /etc/default/grub

Yes. You obviously had grub-btrfs installed at some point instead of the regular GRUB.

You’re right. It looks like grub-btrfs and btrfs-progs was installed. I removed both and now the grub-mkconfig looks like this:

sudo grub-mkconfig -o /boot/grub/grub.cfg                                                                                                                                                                                                                                 ✔ 

Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-6.9-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-6.9-x86_64.img
Found initrd fallback image: /boot/initramfs-6.9-x86_64-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Adding boot menu entry for UEFI Firmware Settings ...
btrfs-progs isn't installed
If you think an error has occurred, please file a bug report at "https://github.com/Antynea/grub-btrfs"
Found memtest86+ image: /boot/memtest86+/memtest.bin
Found memtest86+ EFI image: /boot/memtest86+/memtest.efi
done

Looks like I’m not done yet there are still btrfs references somewhere.

It was installed by default on my system.
It is still installed in my system - the whole package, alongside with the “regular” grub.
So, not only that one file can go - uninstall the package.

sudo pacman -Rns grub-btrfs

(I just did - this was the only package that this command removed)

3 Likes

I hadn’t fully removed that btrfs snapshot file previously, only renamed it to a .bak which I guess was still being read. I’ve removed it from the directory, along with uninstalling grub-btrfs and btrfs-prog.

sudo grub-mkconfig -o /boot/grub/grub.cfg                                                                                                                                                                                                                                 ✔ 
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-6.9-x86_64
Found initrd image: /boot/amd-ucode.img /boot/initramfs-6.9-x86_64.img
Found initrd fallback image: /boot/initramfs-6.9-x86_64-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Adding boot menu entry for UEFI Firmware Settings ...
Found memtest86+ image: /boot/memtest86+/memtest.bin
Found memtest86+ EFI image: /boot/memtest86+/memtest.efi
done

Which at least there are no btrfs references any more.

However, I’ve tried restarting and I still am not able to find a bootable device (without unplugging and re-plugging the SSDs).

I’ve also tried grub-install both as sudo grub-install /dev/sda and sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck

I’ve also reinstalled grub and efi bootmanager through pacman.

You should go into the bios, check whether your disks are detected, whether the bios looks for efi or mbr, on which disk it wants to boot, as well as other parameters (secure boot off among them).

1 Like

You figured out by yourself the btrfs mystery - it is just intalled by default for no reason, the warning was harmless. You can also disable the osprober, it will not do anything if you have no other os. Those have nothing to do with your actual problem.

The only thing that occur to me right now, it that maybe you have some especially stupid EFI, that always looks at efi/BOOT instead of in the proper folder. OR you have csm enabled and you trying to install on /dev/sda confuses it.

  1. see in your efi that bios compatibility or csm is disabled
  2. if that does not do the trick you can try
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck --removable

(not quite sure if recheck can stay before that --removable, you can also try to omit the id part when you have removable, just try all the variants starting with the longest)

This is an informational message confirming that your filesystem is not BTRFS; there is no WARNING or ERROR associated with this; it can be safely ignored.

This is a warning. It only exists because os-prober is usually disabled by default. As you are multibooting, you need os-prober enabled, so the warning can simply be treated as a reminder; again, nothing to be concerned about.

All is right with the Universe.

Cheers.

2 Likes