Sunday, January 3, 2010

My Custom Grub 2 Splash Screen

I recently purchased a new laptop and decided to install Ubuntu 9.10 (Karmic Koala) on it. It's long overdue, because until now I've been using 8.04, due to the huge effort to reconfigure everything until it's "just right".

In the process there were quite a few things that changed which I either didn't like, or utterly despised. Though that didn't stop me and I started making thing's "just right".

One of these were to customize my grub splash screen. Since the eye-pleasing grub screens have become popular a few years ago, having to go back to and 80x25 black/white screen was quite disappointing, so I got onto the net on the lookout for a wallpaper I could use I my splash screen, since those that ship with the grub2-splashimages packages are horrible.

I found some truly great Ubuntu wallpapers at http://www.desktopnexus.com/tag/ubuntu/1, and found a suitable one.

Though in the process I discovered the limitations of grub "themes". You're stuck with a choice of 16 colors and the frame and text/title/list positions/sizes are fixed. So I jumped into the grub source, modified it, rebuilt the package and installed it - made simple thanks to Debian's amazing package management system.

I basically changed the title to show my system's hostname instead of the grub version, move it to the middle on the Y axis (instead of 3-4 columns off-center), move the whole bunch a bit downwards to fit in with the background, changed the column widths a bit to also better fit the background, and finally tuned the colors just a bit.

At one point I actually got a nice fading "highlight" going, though the nature of the background made this look nice for one option and awkward for others. So I stuck with an opaque highlight.

To finish it off I customized the grub.cfg generation scripts and their configuration a bit, so grub and the kernel is "just right"... for the moment at least.

The result is the following. Since it requires quite a bit of patching on the C source code, I'm going to skip explaining how I did it. If you want the patch, send me a message and I'll share it with you together with some explanations of the changes.

No comments: