Is this by design? I wanted to set GRUB_TIMEOUT to 10.
Thanks!
Added atomic-desktops, f41, grub
Yes, the GRUB config is now a static config in Atomic Desktops starting with Fedora 41. See: Silverblue 41 installation is missing `/boot/grub2/grubenv` and `/etc/default/grub` files · Issue #746 · coreos/bootupd · GitHub
If you want to edit GRUB specific values, you should now add your config as a distinct configuration file:
$ sudo cat /boot/grub2/user.cfg
set timeout=10
If you edit the main config file /boot/grub2/grub.cfg
, it may be overridden when weâll start automatically updating the static config as well.
If you want to change kernel arguments, you should use rpm-ostree kargs
.
Yes, this works fine for setting the timeout value; however, it does not work for setting the menu screen resolution for high resolution screens. This was possible via /etc/default/grub on Silverblue 40 but how can I get a readable menu on Silverblue 41. I have attempted to use user.cfg and console.cfg but nothing works.
Can you detail here what you attempted exactly?
This was my most recent attempt.
set terminal_output=âgfxtermâ
set terminal=gfxterm
set gfxmode=â640x400,1280x1024,1920x1080,autoâ
set gfxpayload=keep
I always try adding my changes to user.cfg and if that doesnât work I try console.cfg since I noticed that grub.cfg also sources console.cfg. I have attempted many variations of the above but have not found a combination that works. The following is what worked in Silverblue 40.
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=â$(sed âs, release .*$,gâ /etc/system-release)â
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=âconsoleâ
GRUB_CMDLINE_LINUX=ârhgb quietâ
GRUB_DISABLE_RECOVERY=âtrueâ
GRUB_TERMINAL=gfxterm
GRUB_GFXMODE=1280x800,1024x768,1280x1024
GRUB_GFXPAYLOAD=keep
GRUB_ENABLE_BLSCFG=true
GRUB_DISABLE_OS_PROBER=âtrueâ
I believe the following 3 lines were necessary to make it work.
GRUB_TERMINAL=gfxterm
GRUB_GFXMODE=1280x800,1024x768,1280x1024
GRUB_GFXPAYLOAD=keep
I have been trying different combinations that other people have had success with, simply removing the âGRUB_â and adding âsetâ. It would be nice if Silverblue could automatically adjust the resolution so users would not have to. I have tested Tumbleweed and it works on high and low resolution screens as does Aeon although Aeon does not use grub. I really like Silverblue and hope there is a resolution to setting the menu screen resolution.
I appreciate any help or guidance you can provide.
If you add that directly to the main GRUB config, does that work? Itâs not super future proof as we might start updating the config in the future but that would do for now.
This did not work but I found a clonezilla image from when I was on Silverblue 40 and I was able to mount the boot partition as a loop device and examine the grub.cfg file. From that I extracted part of the script and inserted into the Silverblue 41 grub.cfg file and that worked. I do not think users with high resolution screens should have to do this and the grub.cfg file needs to be appropriately modified by the development team. I am attaching what I added to make it work. I am going to try to simplify it if possible. I really do not understand why there are insmod commands necessary to make it work as the kernel is not involved in displaying the grub menu. This is what I added.
set gfxmode=1920x1080,1280x800,1024x768,1280x1024
load_video
insmod gfxterm
** set locale_dir=$prefix/locale
** set lang=en_US
insmod gettext
insmod gfxterm
insmod gfxmenu
set gfxpayload=keep
terminal_input gfxterm
terminal_output gfxterm
** if [ x$feature_timeout_style = xy ] ; then
** set timeout_style=menu
** set timeout=5
** Fallback normal timeout code in case the timeout_style feature is
** unavailable.
** else
** set timeout=5
** fi
I have commented out some lines that I didnât think I needed. As I said I think this needs to be fixed to work properly with high resolution screens. It is apparently not possible to take âGRUB_â commands and directly convert them to "set " commands without makeconfig. I have also moved these changes to user.cfg and that works so there is no need to modify grub.cfg. Adding auto to set gfxmode does not work since it sets the resolution to 3840x2400. In my case 1920x1080 gives the best result.
Please note that the lines with ** are commented out lines. I replaced pound sign with ** because pound sign caused large bold text on this website.
Are you trying to resize grub menu, display manager or desktop display manager?
Fractal scaling broke on my labtops on 41. It now defaults to auto which made my GDM and desktop horribly big on a 1920x1080 (16:9) resolution. It auto scaled it to 1.5 which equals 150% scale rate. I reverted it back to 100% scale rate which returned it back to how it previously was in fedora 40.
I am using this the resize the grub menu to the way it was in Silverblue 40.
This is my current /boot/grub2/user.cfg file which gives me a readable grub menu on my workstation with 3840x2400 screen resolutioin.
set timeout=10
set gfxmode=1920x1080,1280x800,1024x768,1280x1024
load_video
set lang=en_US
insmod gettext
insmod gfxterm
insmod gfxmenu
set gfxpayload=keep
terminal_input gfxterm
terminal_output gfxterm
set timeout_style=menu
You can use ``` to surround text that will not be formatted in your replies.
Those are GRUB modules. When booting using BIOS, those are distinct files in the /boot partition. When booting via EFI, those are included in the GRUB EFI binary directly but not loaded automatically and still have to be manually mentioned in the config.
I was not able to use cat. The error said there was no such file. Instead I used nano and created the file and it worked on the next boot.
Thanks for this.
Since my earlier post I have removed some of the lines which were not necessary. Here is what I am currently running in user.cfg
set timeout=10
set gfxmode=1920x1080,1280x800,1024x768,1280x1024
load_video
insmod gfxterm
set gfxpayload=keep
terminal_input gfxterm
terminal_output gfxterm
I want to change GRUB timeout in a Fedora Atomic Desktop too. It is Kinoite 41.
The file user.cfg does not yet exist in the directory â/boot/grub2/â. Is it fine to create an empty user.cfg and to use it for the configuration?
Yes, that is exactly what you should do.
The following steps worked for me.
- Check whether the file âuser.cfgâ does exist in the directory.
sudo ls /boot/grub2/
- If the file does not exist, then create it.
sudo touch /boot/grub2/user.cfg
- Edit the file âuser.cfgâ.
sudoedit /boot/grub2/user.cfg
Into the file I wrote one line:
set timeout=3
Though I first configured 5 seconds and later changed it to 3 seconds, because that is still long enough for me.
For the keys in the config you donât understand:
Copy a working /etc/default/grub
file, edit it as per your requirements, but removing the irrelevant parts.
Then grub2-mkconfig -o ~/mygrubconf.cfg
. [If that script too has been ommited from f41-kinoite, try in toolbox.]
Again, examine the âstatic configâ of ostree in /boot
and cut out irrelevant and repeated lines, and lines you think are not what you need.
Write/Copy the finalized config into /boot/grub2/user.cfg
.
Alternatively, if you want, you can examine the $(which grub2-mkconfig)
bash script.