Lost GRUB background picture after changing menu.lst


I added an entry to grub’s menu.lst and reran grub (grub-install hd0) and now my background is gone and the entries just show up like on a normal console.

I searched the forums and I couldn’t find anything. Does anybody know why this happened and how to fix it?

I have not changed anything in menu.lst except for adding the new OS.

This is simple. It can be done in YaST Boot Loader but probably even easier to do with a text editor. So if using KDE press Alt-F2 and in the run dialog type:

kdesu kwrite /boot/grub/menu.lst

If using Gnome, then it is

gnomesu gedit /boot/grub/menu.lst

The line which controls the splash screen is near the top, and looks something like this:

gfxmenu (hd0,0)/boot/message

If it is missing, just add it. Make sure that the “(hd0,0)” is the same as the “root” line in the boot stanza below that you use. So if you have a line that is “root (hd0,5)” then you want the gfxmenu line to be (hd0,5), too.

By the way, if you make changes to menu.lst, you rarely need to reinstall grub. Reinstalling is only necessary if you are changing the location of where grub is installed to or changing the partition of where its loader program (stage2) is located, the order of the boot disks has changed, or the like. And don’t use the “grub-install” script; in openSUSE that simply passes /etc/grub.conf as an installation instruction to the grub shell, and that file was created when you last used YaST to install grub - so it is conceivable it could be doing something different than you intend. The vanilla grub-install script in openSUSE is grub-install.unsupported, and is less reliable than YaST. What is absolutely most reliable is to use the grub shell interactively from the command line.

Hi Mingus, thank you for your post.

The line gfxmenu (hd1,11)/message is still there, I didn’t change that part.

When I saw your post I realized that maybe /boot needed to be added to the path; I changed it and tried again and same thing, no background picture.

Thanks for your other comments- I know it is not necessary to rerun grub just to add an entry. But since the original grub install under SUSE was done automagically and I didn’t know what he did and because my new OS install overwrote the MBR, I had to install GRUB again from a live CD.

Then I went back into openSUSE and installed grub to the MBR again to make sure I had the latest gfxmenu support.

Anyway it is still white letters on black! What should I check for next? Thanks for your help.

Here is my menu.lst. My boot partition is /dev/sdb12.

# Modified by YaST2. Last modification on Wed Jan  7 17:44:36 UTC 2009
default 0
timeout 10
gfxmenu (hd1,11)/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.1 -
    root (hd1,11)
    kernel /vmlinuz- root=/dev/disk/by-id/ata-sanitized-part3 resume=/dev/disk/by-id/ata-sanitized-part2 splash=silent showopts vga=0x31a
    initrd /initrd-

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 11.1 -
    root (hd1,11)
    kernel /vmlinuz- root=/dev/disk/by-id/ata-sanitized-part3 showopts ide=nodma apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 x11failsafe vga=0x31a
    initrd /initrd-

###Don't change this comment - YaST2 identifier: Original name: floppy###
title Floppy
    rootnoverify (fd0)
    chainloader +1
###Added by operator: FreeBSD###
title FreeBSD
    root (hd0,0,a)
    kernel /boot/loader

Mingus’ advice was spot on:

But I have read and participated in some similar threads with other users. And the problem persists. I kind of lost track of them so I don’t know if any were solved.

gfxmenu (hd1,11)/boot/message

that is the correct entry

Make sure in /boot/
‘message’ exists (it’s a CPIO Archive)

Hi caf, yes the message file is there, unchanged.

Any ideas? Thanks.

You could try re-installing the kernel.

I have a feeling there is a bug in managing changes to the menu.lst via yast bootloader. Did you use that? Rather than a manual edit initially?
I know with some it has screwed the grub location.

Unless mingus has any ideas.

The menu.lst was initially created by the openSUSE 11.1 installation and then I added the entry for FreeBSD in a text editor.

It shouldn’t be a kernel problem since the background has to appear before any kernels are loaded…

Not a kernel problem.
Do to yast system boot select your openSUSE and add the appropriate value in vga from the table below:
Bit hard to read but you should be able to work out yours i use 0x31A

Colours   640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
  4 bits |    ?       ?     0x302      ?        ?        ?         ?
  8 bits |  0x300   0x301   0x303    0x305    0x161    0x307     0x31C
 15 bits |    ?     0x310   0x313    0x316    0x162    0x319     0x31D
 16 bits |    ?     0x311   0x314    0x317    0x163    0x31A     0x31E
 decimal |           d785    d788     d791
 24 bits |    ?     0x312   0x315    0x318      ?      0x31B     0x31F
 decimal |           d786    d789     d792
 32 bits |    ?       ?       ?        ?      0x164      ?

I think he has that

splash=silent showopts vga=0x31a

Thanks guys. I don’t think that’s the problem as caf said.

When SUSE starts up it shows the colored screen fine during booting.

The issue is no background picture for the initial grub menu. All the OS are booting normally.

Which AFAIK is controlled by gfxboot and gfxboot-branding-openSUSE,
have a look at the man page and your config.

Just did a quick check by moving the /boot/message file, lost grub
colored screen but still got the graphical screen whilst boot. Then
moved it back and grub colored screen was back.

My suggestion is to uninstall the gfxboot-branding-openSUSE, then
re-install or use the actual rpm to re-install with --force to
ensure /boot/message is re-installed.

Cheers Malcolm °¿° (Linux Counter #276890)
openSUSE 11.1 x86 Kernel
up 1 day 21:18, 2 users, load average: 0.07, 0.11, 0.06
GPU GeForce 6600 TE/6200 TE - Driver Version: 180.22

I agree with Malcolm’s suggestion.

The vga parameter on the kernel line is for the vesa framebuffer baked into the kernel and bootsplash which is built into the initrd, for the bootsplash to work. This parameter is not used until the kernel is called by grub, i.e., the grub menu has already been loaded.

The gfxmenu grub splash is different. It uses low-resolution/low bit-rate that virtually all bios’s support. But it does have to be callable/loadable by grub stage2.

Hi guys,

Thanks for your suggestions. Malcom I was sure it was going to work but I still have no background! I removed the gfxboot opensuse branding package and reinstalled it. I verified that /boot/message has a new date/time stamp. It still doesn’t work!

Really shaking the old noggin over this one!

What do I try next?

I have a similar problem with opensuse 11 and 11.1 and I looked into everything you did. In my case was that have on an usb external drive. As soon as I turned off during the booting it worked OK and the splash screen came up again.


Maybe comparing gfxboot configs may shed some light?

sudo /usr/sbin/gfxboot --show-config > gfxboot_config.txt
curl -F file=@gfxboot_config.txt www.nopaste.com/a

Here is mine;

Also a read of the man page for gfxboot may help, there seem to be lots of options to test…?

Cheers Malcolm °¿° (Linux Counter #276890)
openSUSE 11.1 x86 Kernel
up 6:32, 2 users, load average: 0.30, 0.17, 0.15
GPU GeForce 6600 TE/6200 TE - Driver Version: 180.22

Not sure if you fixed this problem yet or not, but here is a link that was extremely helpful to me, for I had the same problem.


Hi thanks for your post. What exactly was your problem and how did that thread help fix it?

I don’t see anything that applies to this situation in that thread.

My problem is: I added an entry to the menu.lst and I reinstalled Grub. Now I don’t get the background picture on the Grub menu.

I recently went through a “change the GRUB background image” drill on my AMD64 box. You have to keep things straight, and it all works out:

  • You put the GRUB program in the right place (MBR of hd0 is fine)
  • You have a /boot/message file
  • The /boot/grub/menu.lst file references the message file as
gfxmenu (hd0,n)/boot/message

where n is the 0-based partition number of hd0 containing /boot/message

  • hd0 is the first disk in your BIOS boot order
  • The message file, when cpio’d, really has the desired picture file in it

GRUB is pretty adaptable; there may be some confusion as to what GRUB program is executing when (that boot/root terminology is a bit confusing.) I ended up going with MBR of the primary disk, and putting in a small boot partition. Now, I think it is a bit of overkill–it ends up holding menu.lst and little else. But now I have a nice Linux Inside boot background picture.

One good idea is to back up your MBR sector with a dd command before messing with GRUB options.


Hi thanks for your post. Did you read the thread?

I didn’t try to change my background picture.

I added an entry to the menu.lst and I lost my background picture.