Background image on GRUB

I have been trying to set a custom background image on GRUB using the GRUB_BACKGROUND option in /etc/default/grub. Running the mkconfig, I get a prompt saying “Found GRUB background image”, but, on the GRUB screen, I still the default black background. The image is all right since I was able to get the background on another PC running Debian. Is there some other method to get a custom background image?

Are you using PNG, JPG or some other type?

Generally speaking, GRUB prefers PNG images.

More importantly, you need to match the image to your native screen resolution.

  • Open /etc/default/grub.

  • Find GRUB_GFXMODE and set it to your monitor’s native resolution (e.g., 1920x1080) or the exact resolution of your image.

  • Uncomment the line by removing the # at the start

Save and run the update again.

Working now as hoped for?

It’s a PNG. I am already doing all of that to no avail. However, my image is saved in /usr/share. Could that be a problem? I have also set GRUB_TERMINAL_OUTPUT=“gfxterm”

Yes that will not work.

Remember that do disks are mounted when grub is running, hence no access to /usr.

The image file will need to be somewhere is /boot, but i am not sure of the exact location.

No difference. This is my current /etc/default/grub:

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_CMDLINE_LINUX="menu splash pcie_aspm=off"
GRUB_DISABLE_RECOVERY="false"
GRUB_ENABLE_BLSCFG=true
GRUB_BACKGROUND="/boot/grub2/themes/splash.png"
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_GFXMODE=1920x1080
GRUB_GFXPAYLOAD_LINUX="keep"
Turn off secure boot
add the line GRUB_BACKGROUND="/boot/grub2/images/imageName.png" to /etc/default/grub
Install the 'grub2-efi-x64-modules' package
Create directory /boot/efi/EFI/fedora/x86_64-efi/
Copy /usr/lib/grub/x86_64-efi/gfxterm_background.mod to /boot/efi/EFI/fedora/x86_64-efi/
Add the line "insmod gfxterm_background" to /etc/grub.d/00_header immediately after the line "insmod gfxterm"
Rebuild grub2 config

A brief text appears momentarily before GRUB menu now, but still no background.

ok we try different approach
copy splash.png to /boot/grub2/themes/theme-fedora/splash.png 
make theme.txt file with this contexts :
desktop-image: "splash.png"
terminal-left: "0"
terminal-top: "0"
terminal-width: "100%"
terminal-height: "100%"
terminal-border: "0"
after that copy theme.txt to /boot/grub2/themes/theme-fedora/
edit /etc/default/grub uncomment like  #GRUB_BACKGROUND="/boot/grub2/themes/splash.png" 
add GRUB_THEME="/boot/grub2/themes/theme-fedora/theme.txt"
run sudo grub2-mkconfig -o /etc/grub2.cfg 

The image is there now, but all the text is gone. I don’t think making a theme is the correct way to go.

Maybe the path to the image is relative?

Try just GRUB_BACKGROUND=splash.png or GRUB_BACKGROUND=themes/splash.png does either work?

Negative. mkconfig now does not even say found background image.

Put a # in front of this line and run grub2-mkconfig again. Reboot.

My background jpg is in /boot/grub2 or /boot/grub.

Here’s the /etc/default/grub from a Fedora Cinnamon virtual machine, for the boot screen you see above.

GRUB_TIMEOUT=15

GRUB_DISTRIBUTOR=”$(sed ‘s, release ,*$,g /etc/system-release)”

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

#GRUB_TERMINAL_OUTPUT=”console”

GRUB_CMDLINE_LINUX=”rhgb quite”

GRUB_DISABLE_RECOVERY=”true”

GRUB_ENABLE_BLSCFG=true

GRUB_BACKGROUND=”/boot/grub2/fedora_wall6_fixed.jpg”

I’ve successfully tested this on Fedora 43 LXDE, Cinnamon, Xfce and Server.

No success with Workstation, KDE.

Alas, I am on workstation. No change from the edit.

I found the fix. Apparently installing the GRUB EFI modules via dnf does not copy the .mod files to the /boot/grub2/ directory. Manually copying them from /usr/lib/grub/x86_64-efi did the job.