Plymouth
Contents
Plymouth is the application which provides the graphical "bootsplash" for Ubuntu.
Quick Facts
Plymouth:
- Uses KMS (Kernel Mode Setting) (where possible) and the framebuffer to set the screen resolution.
- Comprises 3 components:
A daemon (server) process called plymouthd
- The daemon is responsible for the graphical display, animation and logging.
A client application called plymouth
- The client sends commands to the daemon
A library libply.so to allow applications to be written to talk to the daemon
(The plymouth command is linked to libply.so for this reason).
- Supports themes.
Is scriptable (see package plymouth-theme-script)
- Runs at system startup and system shutdown:
- Boot
plymouthd is started in the initramfs
(see file /usr/share/initramfs-tools/scripts/init-top/plymouth)
plymouthd is stopped at the point the Display Manager is starting
(see Upstart job configuration file file /etc/init/plymouth-stop.conf).
- Shutdown
plymouthd is started by Upstart
(see Upstart job configuration file file /etc/init/plymouth.conf).
- Boot
Writes a log to /var/log/boot.log.
Options
Daemon
plymouthd runs in one of two modes which are set by specifing the appropriate command-line option:
--mode=boot
--mode=shutdown
This allows Plymouth to display potentially different content based on whether the system is starting or stopping.
Testing
Running Plymouth "post-boot"
You can experiment with Plymouth after your system has booted. To start the Plymouth daemon:
- Boot system and login as usual
[RECOMMENDED] Install plymouth-x11 package (allows you to see the boot screen in an X11 window)
sudo apt-get install plymouth-x11
Start a terminal (such as gnome-terminal)
- Start the Plymouth daemon by running the following:
sudo plymouthd --debug --tty=`tty` --no-daemon
Plymouth is now running, so we can have some fun:
To check if Plymouth really is running:
sudo plymouth --ping && echo plymouth is running || echo plymouth NOT running
- To show a message on our "boot" screen
Start another gnome-terminal terminal/tab
Run the following to show the Plymouth window:
sudo plymouth show-splash
- Display a message
sudo plymouth message --text="hello world"
- A slightly more useful example
- Show the splash screen
sudo plymouth show-splash
- Stop the graphical progress indicator
sudo plymouth pause-progress
- Display a message
sudo plymouth message --text="pausing boot - press 'c' or space bar to continue"
- Wait for the user to type either 'c', 'C' or space (no return required)
sudo plymouth watch-keystroke --keys="cC " --command="tee /tmp/c_key_pressed"
- Change the on-screen message
sudo plymouth message --text="resuming boot"
- Resume the graphical progress indicator
sudo plymouth unpause-progress
- Show the splash screen
To stop the Plymouth daemon:
sudo plymouth --quit
Debugging
This section is for advanced users only.
Showing old Text-based Boot
If you want to see the text-based boot messages, press ESCAPE at any point when Plymouth is running. Note that the ESCAPE key acts as a toggle, so you can keep switching between graphical and text mode if required.
Enabling Logging
You can set Plymouth to overlay internal debug messages by passing the following command-line option:
plymouth:debug
For example, if you are running Ubuntu Maverick (10.10):
- Power on system
Hold down the SHIFT key until the Grub boot menu appears
Type "e" to edit the default kernel command-line
Use the arrow keys to go to the end of the line which starts "linux /boot/vmlinuz ..."
Add a space character, followed by "plymouth:debug"
Notes:If you're interested in the overall boot, you may wish to remove the "quiet" keyword too)
Type CONTROL+x to boot
Once the system has booted, you can view all the Plymouth debug output in file var/log/plymouth-debug.log.
Notes:
- If you are using the live CD, the process is slightly different:
- Power on system
- Hold down the SHIFT key until ISOLINUX "boot:" prompt appears
Type, "live plymouth:debug"
Additional
"plymouth ask-question"
Note that the standard Ubuntu plymouth theme does not implement the display_question callback (see bug 509384).
This means that "plymouth ask-question" will not work. However, similar functionality is provided by a combination of "plymouth message" and "plymouth watch-keystroke".