New to Fedora: first experiences and a question about GRUB

Hi all

I am new to Fedora. Have just installed the KDE spin and am quite satisfied so far. I have an Intel+NVIDIA laptop and was having major difficulties getting it to run stable with another distribution. I researched (youtube) for a few days and decided on trying out Fedora :slightly_smiling_face:

With Fedora I have installed the defalt KDE spin, added RPM Fusion sources and installed the NVIDIA drivers. Just works. I did reboot to fast in my first try, but quickly found the solution to rebuild kernel modules and verify the NVIDIA version before reboot. Why does this run in the background - seems quite risky :thinking:

Anyway, I got it working, and so far my experience is stable and the NVIDIA card accelerates both Steam and Ollama :+1:

Now for the question: my laptop has a 3200x2000 LCD and the font used for GRUB/terminal is almost unreadable. I have tried changing the resolution in /etc/default/grub and running sudo grub2-mkconfig -o /boot/grub2/grub.cfg. But it doesn’t change anything. I tried changing the timeout and that works, so I am modifying the right file :wink:

This is my current file:

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveaui"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

…and I have tried adding:

GRUB_GFXMODE=1600x1000
GRUB_GFXPAYLOAD_LINUX=keep

Does anyone have a grub config file with resolution settings that work to share? Would be helpful :slightly_smiling_face:

/Jaybe

A web search for “grub font size” pointed to this article that seems to cover the issue: https://www.baeldung.com/linux/grub-menu-font-size

Others may know a less complex way to fix this issue.

1 Like

Yes I have been there :smile: I am not trying to change the font, just the resolution - end the GRUB_GFXMODE setting mentioned does not seem to have any effect…

/Jaybe

Here’s my config. I had the same issue. Hope it helps!
I have a 1920x1080 display.

$ cat /etc/default/grub 
GRUB_TIMEOUT_style="menu"
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="quiet video=1920x1080"
GRUB_GFXMODE=1920x1080
GRUB_GFXPAYLOAD_LINUX=1920x1080*32
1 Like

Thanks for sharing - unfortunately no, the gfx settings do not have any effect… I’ll keep searching.

/Jaybe

and this?

Sorry, no.

/Jaybe

Maybe needs to be an exact int ratio? Try 1600x1000 that is half.

I have tried that - and a few others without luck. I noticed a strange thing:

When I do sudo grub2-mkconfig -o /boot/grub2/grub.cfg other parameters, e.g. timeout, does change, but I also have a grub.cfg file in /boot/efi/EFI/fedora/grub.cfg…

I tried removing the latter and then grub would not start. I had to restore it from the live iso.

So, seems I have TWO grub.cfg files involved in the boot proces? Again, this is a fresh Fedora 40 KDE spin install.

Strange… :thinking:

/Jaybe

No you are not.!
That file has nothing to do with screen resolution or fonts. That only affects booting configs.
Please stop randomly altering that file as the wrong setting can totally break your system.

I use the Workstation release and not KDE so cannot assist with the details, but there should be a setting in the desktop settings panel to adjust resolution, fonts, scaling, etc.

Yes, by intent, and do not (ever) alter the one at /boot/efi/EFI/fedora/grub.cfg. In fact, since you said you already modified it, please remove it again then run dnf reinstall grub2-common so the system recreates it exactly as it should be for your system.

Thanks, I will restore the second file :+1:

I am not randomly changing files, though. I want to increase the font size of the boot menu, not the KDE desktop. I have done so on many other distributions, and always in the /etc/defaults/grub file. Fedora seems different, and I am trying to figure out how/why.

/Jaybe

NO ! NO ! NO !

This is an invalid location to modify the file! It will break future updates.
See the earlier posts on this or look at the output of ls -ld /etc/grub2* to see the ONLY grub.cfg file that should ever be user modified.

That file is system created and never should be modified, and has been since about the Fedora 34 release.

@computersavvy The files you point to are links to the generated output from grub2-mkconfig which starts with the lines:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

I have reinstalled grub2, but am not closer to a solution to the hidpi resolution issue I am facing. I’ll post here if I figure it out :slightly_smiling_face: I suspect my hardware (NVIDIA) may be causing an issue with GRUB’s ability to set resolution.

/Jaybe

Before writing I suggest you make sure you read and understood OPs question, which was perfectly valid and a feasible way to change resolution of the grub2 boot menu.

We agreed not to scream in this forum.

1 Like

Hi @jaybe , the commands to regenerate grub config are described in Working with the GRUB 2 Boot Loader :: Fedora Docs

It’s missing the part on how to set the resolution but you should read it anyway and see how to add custom grub configs and generate the required grub.cfg file.

Fyi, the /etc/grub2.cfg is just a symbolic link to /boot/grub2/grub.cfg

1 Like

You could try to set

GRUB_TERMINAL_OUTPUT="gfxterm"

in /etc/default/grub and rebuild the /boot/grub2/grub.cfg file. I suspect that is a requirement for the GRUB_GFXMODE setting to work.

1 Like

Try to uncomment line GRUB_TERMINAL_OUTPUT=“console” like #GRUB_TERMINAL_OUTPUT=“console” and add lineGRUB_TERMINAL_OUTPUT=“gfxterm” in /etc/default/grub rebuild sudo grub2-mkconfig -o /etc/grub2.cfg that should change resolution of grub menu

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
#GRUB_TERMINAL_OUTPUT="console"
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_CMDLINE_LINUX="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau rhgb quiet rd.driver.blacklist=nouveau modprobe.blacklist=nouveaui"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
GRUB_GFXMODE=1600x1000
GRUB_GFXPAYLOAD_LINUX=keep

i again,

Here’s all the info I have on this matter. Hope you’ll get it sorted out :slight_smile:

Why it’s not working for you whereas it works perfectly for me puzzled me a little. Then I noticed your custom non standard resolution. Maybe you should stick with closest standard resolution or use the following info to set the video kernel parameter for your needs.

GRUB_GFXMODE and GRUB_GFXPAYLOAD_LINUX are two important settings in GRUB configuration that control the graphics mode and payload for Linux boot entries.

GRUB_GFXMODE specifies the graphics mode to use when booting. It can be set to a specific resolution, such as 1024x768, or to auto to automatically detect the best resolution.

GRUB_GFXPAYLOAD_LINUX specifies the graphics payload to use for Linux boot entries. It can be set to keep to keep the current graphics mode, or to a specific graphics mode, such as 1024x768.

To change the resolution at boot on the GRUB menu on Fedora, you can modify the GRUB_GFXMODE and GRUB_GFXPAYLOAD_LINUX settings in the /etc/default/grub file.

Here’s an example of how to set a specific resolution:

GRUB_GFXMODE=1024x768
GRUB_GFXPAYLOAD_LINUX=1024x768

After modifying the /etc/default/grub file, you need to run sudo grub-mkconfig -o /boot/grub/grub.cfg to regenerate the grub.cfg file.

Q: It works perfectly when the resolution is vesa compatible such as 1024x768 or 1920x1024 but fails whenever the resolution is not standard such as 1600x1000

That’s because GRUB’s gfxmode and gfxpayload settings only work with VESA-compatible resolutions, which are a set of standard resolutions defined by the Video Electronics Standards Association (VESA).

When you set a non-standard resolution, such as 1600x1000, GRUB can’t use the VESA BIOS Extensions to set the resolution, and it will fail.

To overcome this limitation, you can use the video kernel parameter to set a custom resolution. This parameter allows you to specify a custom video mode using the following format:

video=<connection>:<xres>x<yres>-<bpp>@<refresh>

Where:

is the video connection type (e.g., eDP-1 for an internal laptop screen or HDMI-A-1 for an external HDMI monitor)
and are the horizontal and vertical resolutions, respectively
is the bits per pixel (e.g., 24 for true color)
is the refresh rate in Hz
For example, to set a resolution of 1600x1000 with 24-bit color and a 60Hz refresh rate, you can add the following kernel parameter to your GRUB menu entry:

linux /vmlinuz-linux root=/dev/mapper/volgroup0-lv_root rw cryptdevice=UUID=49bb1478-8b71-49fb-9386-cccc6a65b04c:encrypted_lvm root=/dev/volgroup0/lv_root loglevel=3 quiet video=eDP-1:1600x1000-24@60

Note that you may need to adjust the part depending on your system’s video configuration.

By using the video kernel parameter, you can set a custom resolution that’s not limited to VESA-compatible modes. However, keep in mind that this method may not work on all systems or with all graphics hardware.

BTW I’m using AMD CPU and GPU

According to the VESA BIOS Extensions (VBE) specification, the standard VESA modes are:

640x480 (VESA mode 0x101)
640x480 (VESA mode 0x102, with 16-bit color)
800x600 (VESA mode 0x103)
1024x768 (VESA mode 0x104)
1280x1024 (VESA mode 0x105)
1600x1200 (VESA mode 0x106)

Notice that 1600x1000 is not a standard VESA mode. However, it is a common resolution used in many modern displays, and most modern graphics cards and BIOSes support it as a non-standard VESA mode.

As for 3200x2000, it is not a standard VESA mode either. In fact, it’s a very high resolution that’s not commonly supported by older graphics cards or BIOSes. While some modern systems may support it, it’s not a guaranteed resolution that will work on all systems.

In general, if you need to use a non-standard resolution, it’s best to use the video kernel parameter, as I mentioned earlier, to specify the custom resolution. This way, you can ensure that the resolution is set correctly, even if it’s not a standard VESA mode.

If you need to haunt this forum and answer each and every question, it’s your right. But I suggest you take the time to at least read the OP problem carefully in order to provide a valid solution, and at that you failed miserably.

Nothing personal here but why do some people are having compulsory need to answer each and every message in forums without even understanding their problem is totally beyond me. This happens in every large forum. That’s the reason why I come here in very last resort.

@ledeni, @josevillani, and others who helped: Thank you very much! :smile:

Solution was to use these lines in /etc/default/grub:

GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_GFXMODE=1280x1024
GRUB_GFXPAYLOAD_LINUX=keep

(and of course run sudo grub2-mkconfig -o /boot/grub2/grub.cfg afterwards)

Key is to set output to gfxterm and use a standard VESA mode. The last line does not influence the resolution at the kernel boot screen and virtual consoles, but that is secondary, I wanted the GRUB text bigger and that works now :+1:

/Jaybe

3 Likes