Configuring the bootloader screen

This is a small point, and I can live without a solution, but for aesthetic reasons I would like to find one.

I have called, I hope correctly, the first screen you see after the BIOS details - “the bootloader screen”. If that is not the correct term, then I mean the screen against which GRUB displays your various OS boot options. For some reason, the bootloader screen only occupies the middle half of my widescreen monitor. The bootsplash screens and the login screen which come after it display correctly. I think they are controlled by the command vga=0x348

Is there a way of stretching the bootloader screen so that, like the bootsplash screens and login screen, it extends to the full width of the monitor?

Thanks.

It is strange that you do not have the correct size.

When you look in /etc/grub/menu.lst, you will find a line like:
gfxmenu (hd0,4)/boot/message
The last part of it point to a file in your boot partition (in my case the boot partition is hd0,4, which is the 5th partition of the first detected disk, this may be different in your system).

The file /boot/message is a cpio archive (a bit old-fashioned way to put some files together in one file). One of the files in the archive is the JPEG of the background. In principle one has to unpack the archive, replace the old background.jpg file by the new one and reassemble the archive. Years ago I did this with (sitting e.g. in your home directory):

$ mkdir -p cpio/work
$ cd cpio/work
$ cp /boot/message ./
$ cpio -idv <message
$ mv message ../message-old
$ cp path/to/your/favpic.jpg back.jpg
$ ls | cpio -ov >../message
$ cd ..
$ su
# cp message /boot/message
# exit
$ rm -Rf work

But you may like to do some reading of man/info cpio and some googling on this to get more confidense. In any case the above statments make a backup of the old /boot/message in the direcory cpio.

When you want more explanation about the above statements, please ask.

Thanks for your reply. I have managed to modify the background image, “back.jpg” in the archive, and by editing “gfxboot.cfg” in the archive, I have been able to change the position of the text and the maximum number of entries, but I still have not been able to get the bootloader screen to use the full width of my monitor. Is this because my monitor is of unusual dimensions - 1920x1080 - i.e. 16:9 format?

The OpenSuse documentation on this: Gfxboot - openSUSE, "gfxboot relies on the VESA Video BIOS for setting a video mode. So please be aware that not all screen sizes you have on your KDE or GNOME desktop are available. If in doubt, check:

hwinfo --framebuffer

for a list of modes". This gives me:
None 00.0: 11001 VESA Framebuffer
[Created at bios.459]
Unique ID: rdCR.83hARQZ5923
Hardware Class: framebuffer
Model: “NVIDIA G73 Board - p508h0”
Vendor: “NVIDIA Corporation”
Device: “G73 Board - p508h0”
SubVendor: “NVIDIA”
SubDevice:
Revision: “Chip Rev”
Memory Size: 256 MB
Memory Range: 0xe0000000-0xefffffff (rw)
Mode 0x0300: 640x400 (+640), 8 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+800), 8 bits
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x0307: 1280x1024 (+1280), 8 bits
Mode 0x030e: 320x200 (+640), 16 bits
Mode 0x030f: 320x200 (+1280), 24 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Mode 0x0312: 640x480 (+2560), 24 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0315: 800x600 (+3200), 24 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0318: 1024x768 (+4096), 24 bits
Mode 0x031a: 1280x1024 (+2560), 16 bits
Mode 0x031b: 1280x1024 (+5120), 24 bits
Mode 0x0330: 320x200 (+320), 8 bits
Mode 0x0331: 320x400 (+320), 8 bits
Mode 0x0332: 320x400 (+640), 16 bits
Mode 0x0333: 320x400 (+1280), 24 bits
Mode 0x0334: 320x240 (+320), 8 bits
Mode 0x0335: 320x240 (+640), 16 bits
Mode 0x0336: 320x240 (+1280), 24 bits
Mode 0x033d: 640x400 (+1280), 16 bits
Mode 0x033e: 640x400 (+2560), 24 bits
Mode 0x0345: 1600x1200 (+1600), 8 bits
Mode 0x0346: 1600x1200 (+3200), 16 bits
Mode 0x0347: 1400x1050 (+1400), 8 bits
Mode 0x0348: 1400x1050 (+2800), 16 bits
Mode 0x0352: 2048x1536 (+8192), 24 bits
Config Status: cfg=no, avail=yes, need=no, active=unknown

My resolution is not mentioned. Note that they are all 4:3 resolutions with the exception of ‘1280x1024’, which is 5:4
Does this mean that nothing can be done about this? If there is something I can try, any help would be appreciated. Thanks.

By the way, the syntax for opening the /boot/message archive has changed slightly.
To open code:
:~> cpio -i </boot/message

To repack the modified archive cd to the home folder that contains it and code:
:~> find . | cpio -o >/boot/message

You have ventured quite deep in it, I see. Thanks for the update on the needed cpio options.

I am not that well known with different monitor settings. The picture must of course match the correct size, but I do not know if GRUB uses the default setting of the monitor, or the setting it happens to be at the time of boot, or that it tries to set it.

My monitor is 1440 x 900 (not in your list). When the system switches on, allready at PO it displays something like: I am now on … x …, it would be better to use me at 1440 x 900. During boot the bootsplash fills the screen but I allways have the idea that the picture is distorted (including the text), that is wider then it should be.

Also, going from the kdm login screen to the screen with ruler at login there is somewhere a jump to redress this distortion.

But all this is not very usefull to your problem I am afraid.

1440x900 is 8:5 format. The back.jpg is 800x600 or 8:6 format. If you are compressing 8:6 into 8:5, then the background picture is going to seem squashed height-wise, and any text on it is going to look wider than it should.

It may also be that your gfxboot.cfg file is telling your boot set-up to work on an 800x600 resolution - look at the top of the [base] section of the file. If that is so, then any text displayed against the background from /boot/grub/menu.lst and by gfxboot itself is also going to look squashed and wider than it should.

If your computer will allow the full 1440x900 dimensions for the bootloader screen, then maybe you need to edit the [base] section of the gfxboot.cfg in the ‘message’ archive.
Try this: rename /boot/message /boot/message.original
Unpack the message file to a gfxboot folder in ~
Edit gfxboot.cfg
In the [base] ection change:
layout=800x600,boot
to:
layout=1440x900,boot

Then create a new section underneath the [base] section above the [800x600] layout section:
[1440x900]
; screen size
screen.size=1440,900
;upper left corner
mainmenu.pos=250,90
; boot option input field position
bootopt.pos=200,750

Save the file and repack the cpio archive to form a new ‘message’ archive. As root move this to the /boot folder.

You will probably have to play around with the figures in the [1440x900] layout section to get things positioned just to your liking.

I hope this works. I don’t see why it shouldn’t if your graphics card is allowing images of full screen size to be displayed before the kernel has loaded.

If this does work, then you might consider cropping the 800x600 back.jpg to 800x500, or using another jpg image of resolution 800x500 pixels.

My bootloader image and text is displayed correctly, but I am only seeing a 4:3 instead of a 16:9 display in the central portion of the monitor screen, so a quarter of the screen is not being used.

Thanks for the explanation, but I am not really bothered by the effect. You had the problem (it is much more annoying then I have). And I only told you about what happens here to give you some informmation in the hope it triggered something at your side :slight_smile:

And your case is still not solved I am afraid.

Did you check the install media? I’ve seen this as a result of a corrupted download.

No, I don’t think it can be that. Everything else on OpenSuse works perfectly. I think it is the framebuffer problem. I get the same issue with the boot-screen on a flash drive Slax install. I can’t see a way round it, unless an updated Nvidia driver would do the trick.

The Video drivers are not active yet at the boot screen. In essence grub is using vga and vga does not support the new wide screens.