Project

General

Profile

Actions

Feature #228

closed

Add boot splash

Added by Hammel about 11 years ago. Updated about 11 years ago.

Status:
Closed
Priority:
Urgent
Assignee:
Category:
04 - Root File System
Target version:
Start date:
10 Oct 2013
Due date:
% Done:

100%

Estimated time:
Severity:
02 - High

Description

See discussions on boot splash on the wiki.

Actions #1

Updated by Hammel about 11 years ago

  • Priority changed from High to Urgent
  • Severity changed from 03 - Medium to 02 - High
Actions #2

Updated by Hammel about 11 years ago

  • Target version changed from 1.0 - Atreides to 0.7.0
Actions #3

Updated by Hammel about 11 years ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 10

psplash will work. There are some things that need to be done to support this.

  1. Add psplash package to buildroot.
    1. This is useful enough to be part of PiBox Development Platform with a default MIOT boot logo.
  2. Patch source to support white background (that patch supports a black background and may not apply cleanly to the buildroot package reference). Ideally, a patch that allowed setting the background to any color would be preferred.
  3. Generate logo image to replace the POKY image header.
    1. mk-image-header.sh <src> POKY
    2. mv <new-header> psplash-poky-img.h
    3. This should be done once and applied as a patch in the buildroot package.
    4. Should provide README instructions on how to modify the image.
For this to be of value the splash may need to go up very early. That means...
  1. psplash init script probably runs right after S00dev
    1. psplash should be disabled if kernel arg disables it (psplash=0)
  2. kernel config (see RM #231) should be changed to make most things loadable modules so kernel output is limited before psplash runs
    1. S01modules should be added to load all the modules we need after psplash but before anything else happens.
    2. S01logging should be moved to S02logging
Actions #4

Updated by Hammel about 11 years ago

  • % Done changed from 10 to 20

Thinking it over, this would be easier to implement as an opkg because of all the specialized patching a user would have to do for a custom logo image. But I'll still need to move the init scripts around to make sure there is a place for the psplash init script early in the boot process.

Actions #5

Updated by Hammel about 11 years ago

  • % Done changed from 20 to 30

Created psplash metabuild based on Beagleboard implementation and pushed to repo under pibox project on gitorious. This version does not yet have the black background patch and the binaries it generates have not yet been tested on the target board.

Actions #6

Updated by Hammel about 11 years ago

  • % Done changed from 30 to 40

Integrated a default MIOT logo along with a modified version of the black background patch. The original patch left justified the logo. The modified patch keeps the logo centered.

Now the package needs an init script and a way to integrate it with the other init scripts. The buildroot patch for psplash has the best info on how to use psplash. Essentially:
  1. S00apsplash starts it in the background
    1. framebuffer device is built into kernel - no need to wait for driver to load
  2. Sxx* writes progress with
    1. psplash-write "PROGRESS <amount>"
    2. progress amount should be written to a file and each script reads it and bumps it. rcS should count the number of init scripts and also set the bump amount. That means there should be a utility "psplash_bump" function that all init scripts can call that will handle this for them.
    3. psplash_bump should take a message argument to output with
      1. psplash_write "MSG <msg>"
  3. S89psplash (right before UI starts) kills it with
    1. psplash-write "QUIT"
Actions #7

Updated by Hammel about 11 years ago

  • % Done changed from 40 to 50

Added "functions" to rootfs/etc/init.d (PiBox Development Platform) that can be used in conjunction with psplash package.

Added init scripts to start and then disable the psplash boot logo.

None of the scripts are tested on the hardware yet.

Actions #8

Updated by Hammel about 11 years ago

  • % Done changed from 50 to 60

Updated scripts to allow other scripts to easily update the progess bar on the splash. Still needs full testing on target hardware.

Actions #9

Updated by Hammel about 11 years ago

  • % Done changed from 60 to 70
Tested on target. It failed but I know why:
  • S00asplash needs to be S01asplash
Also:
  • rcS needs updates (see version on target)
  • functions has mods on target
This works, but it's klunky. The first few scripts go fast on the progress bar. Then things slow down. And then the UI starts before the full progress bar is done. Things to fix:
  • Put network startup in the background, along with anything that depends on it.
  • Compute number of scripts up to the UI starting - divide 100/that number to get bump factor instead of total number of scripts.

If we put slow things in the background but still count starting them then the progress will look better. This is very close to working sufficiently (if not actually improving the start up time).

Actions #10

Updated by Hammel about 11 years ago

Checked in the updates to rcS and functions in the rootfs. Checked in filename change to psplash's init script.

Still need the following:

  1. Put network startup in the background, along with anything that depends on it.
  2. Compute number of scripts up to the UI starting - divide 100/that number to get bump factor instead of total number of scripts.
Actions #11

Updated by Hammel about 11 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 70 to 100

Moved psplash-isms out of core platform and into psplash package, which is cleaner. Fixed percentage bump by dividing 100 by meaningful number of scripts.

Boot time cleanup to speed boot process is external issue. Closing this issue.

Actions

Also available in: Atom PDF