Pretty Menus with Syslinux vesamenu.c32

Menu Configuration

We assume your syslinux is installed to /boot. We use syslinux.cfg as our configuration file.

UI vesamenu.c32
PROMPT 0
MENU BACKGROUND syslinux.png
MENU TITLE Boot Menu
MENU AUTOBOOT "Booting Default in #s"

Formatting Images

The Syslinux tools expect your image to be 640x480. That's nice and all, but if your monitor is not a 4:3 aspect ratio then your images are skewed. You can fix that using GIMP and a trick to making the image.

Example: My monitor is 1366x768, very common for a laptop. The 640x480 images are stretched wide and look ugly.

I created a new image in GIMP, with a resolution of 1366x768 - that is, native to my display. I then scaled the image down, in proportion, to 854x480, great. This becomes the beginning field of the image. Paste in your images, your graphics and all that sutff.

And here's the trick. When you are ready, scale your image to 640x480. You will have to disconnect the link so you are not scaling in proportion. Your image should look squished narrowly. Export from GIMP to a PNG image, like syslinux.png

sudo cp ~/Desktop/syslinux.png /boot/syslinux.png

Image Tricks

On boot Syslinux is aware of symbolic links. This means you can have multiple, rotating Syslinux boot images. Create the directory /boot/img and copy a few PNG files in there. Then run this little bit on boot, it will bit a random image file from your directory and update the symlink. The symlink is the value specified in MENU BACKGROUND above.

list=(/boot/img/*)
target=$(printf "%s" "${list[RANDOM % ${#list[@]}]}")
rm /boot/syslinux.png
ln -s $target /boot/syslinux.png

See Also