How to update grub on SIlverblue?

Hi, my friend has a new SSD with Windows 11 installed, when he tried to upgrade the grub to have the Windows entry it gaves this error:

sudo grub2-mkconfig -o /etc/grub2-efi.cfg
[sudo] password for Maria:
/usr/bin/grub2-probe: error: failed to get canonical path of `composefs’.

Any ideas?

Thanks.

Update, doing

sudo rpm-ostree kargs --append=ostree.prepare-root.composefs=0

Then rebooting


maria@customer:~/Downloads/HuionTablet_LinuxDriver_v15.0.0.162.x86_64$ sudo grub2-mkconfig -o /etc/grub2-efi.cfg
[sudo] password for maria: 
Generating grub configuration file ...
Found Windows Boot Manager on /dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
done

Windows still doesn’t show up on the grub list

Please do not use grub2-mkconfig on Atomic Desktops. The recommended path is to not add it to the GRUB menu. Instead, select the Windows boot entry from your computer’s EFI/BIOS firmware.

Thanks for the response, there is no way on atomic desktops to do this?

As far as I know, there is no recommended or supported way.

Booting Windows from GRUB will generally not work anymore now that most Windows installation use TPMs and Bitlocker disk encryption. Thus you need to use the EFI firmware to switch OS.

Should your friend set Silverblue as default in the UEFI boot menu, then the below GNOME Shell extension might come in handy when wanting to reboot into Windows.

I will test it later today, as one of my laptops also dual boots Silverblue and Windows, and the key combination to press the start button and invoke the UEFI boot menu at the same time often becomes a finger muscle exercise.

EDIT: The extension boots into UEFI Setup, not into UEFI Boot List.

looks like systemctl reboot --firmware-setup

this should reboot into the uefi boot menu, but seems not work on my system when I tried it a few months ago.
systemctl reboot --boot-loader-menu=timeout

seems not to be supported on my system:

$ systemctl  --boot-loader-entry help
No boot loader entries discovered.

$ sudo efibootmgr 
BootCurrent: 0003
BootOrder: 0002,0003
Boot0002* Windows Boot Manager	HD(.....
Boot0003* Fedora	HD(.....

1 Like

Thanks for the responses, It seems weird to me that dual boot It’s not recommended on Silverblue but it can be used on normal Fedora. I imagine this has something to do with the last errors on Windows with dual booting.

Have not used Silberblue, but in general, you cannot boot Windows from grub by chainloading the windows boot loader. This does not work anymore with encrypted volumes protected by TPM and systems with secure boot enabled.
You can still boot any OS using the UEFI boot menu (F10 on my system).

I misunderstood the linked extension a bit: it actually boots into UEFI Setup, not into UEFI Boot List. I’ve edited the original post as well.

A simple workaround that I’ve set up for my dual-boot system is that I chose Silverblue as the default boot entry in the UEFI Boot Manager, and for the rare situations that I need to reboot into Windows, I’ve created a bash alias:

alias winboot='sudo efibootmgr -n <bootnum> && systemctl reboot'

where <bootnum> is the boot number of the Windows boot entry. Whenever I need to reboot into Windows, instead of reboot, I run winboot.