me Banner
Davinci PDA E-Trex GPS Netgear RT314 Nokia N800 Metric/SAE Conversions

Customizing the Boot Screen

I've been trying to customize my boot process. The default boot process goes like this:
  1. Nokia logo on white background
  2. Nokia logo with blue progress bar at the bottom of the screen
  3. Nokia "hands" picture w/sound (wav file)
  4. Clear white screen
  5. GUI is loaded
Change to steps #2 and #3 are easy enough.

Step 1
The image in step #1 appears to be an image embedded in a binary, since the qgn_indi_startup_nokia_logo.png doesn't appear to be called in any other /etc/init.d scripts. Step #1 seems to be before the InitFS is loaded, which suggests that trying to modify it would be a "Bad Thing™".

Steps 2 & 3
Step #2 runs via the /etc/init.d/ shell script. This is a shell script front end for a binary called fb-progress. I assume "fb" stands for framebuffer, since the program access the framebuffer directly. fb-progress is an interesting little program; you can even use it after boot, if you don't mind messing up your display until you can refresh the screen with another app. Modifying the /usr/share/icons/hicolor/scalable/hildon/qgn_indi_startup_nokia_logo.png and qgn_indi_nokia_hands.png logos, or changing the filenames in the script, is reflected by changes in steps #2 and #3.

ImageSizeCalled From
/usr/share/icons/hicolor/scalable/hildon/qgn_indi_startup_nokia_logo.png 800x460 /etc/init.d/
/usr/share/icons/hicolor/scalable/hildon/qgn_indi_nokia_hands.png 800x480  

Other info...
  • That same Nokia logo from step #2 is also used in the shutdown process, with a white surround.
  • You can modify the sound that displays during the "hands" picture, but the picture during that step only seems to display as long as the sound is playing.

Steps 5
In step 5, /mnt/initfs/usr/bin/fb-chaimage is the binary which displays a progress bar and a background .PNG. The progress bar displays as a Nokia-blue (default color) pixel block (size of 8W 20H) updated at 50ms intervals (I think dyn-tick screws with this) using top-left as the physical and virtual screen zero point, virtual screen size of 800W 600H (bottom 120H is truncated off-screen) at 16bpp, a zero-point corner of 0W 460H, and a final-point of 792W 460H.

It appears to run on vt #3 (at least if run during normal operation and called from vt #2) by default.