A Closer Look At Red Hat's Plymouth
Back in July we shared Red Hat's intentions to replace RHGB with Plymouth, a new graphical boot process that is able to benefit from the latest Linux graphics capabilities. Red Hat engineers had primarily designed Plymouth around a forthcoming feature we've talked about quite a bit known as kernel mode-setting, which provides end-users with a cleaner and flicker-free boot experience. In September in The State of Kernel Mode-Setting we then shared more information on Plymouth along with a brief video. Most recently we published another video of Plymouth that shows the tighter integration between the boot process and starting the GNOME Display Manager. Today though we are looking at Plymouth and its different plug-ins along with providing a few more videos.
The current version of Plymouth is 0.6.0 and development on this RHGB replacement began in May of 2007 by Red Hat's Ray Strode. However, it wasn't until earlier this year with Fedora 10 that development of Plymouth kicked into full swing. The code to Plymouth is hosted on the FreeDesktop.org git server. As a forewarning, Plymouth is not a solution that can just be built for your distribution of choice, but it must be fully integrated into the distribution. However, once kernel mode-setting is in the mainline Linux kernel, we will hopefully see more distributions use Plymouth or develop their own richer boot programs.
Plymouth has an extensive API that allows artists and programmers to develop graphically rich Plymouth plug-ins. Plymouth is, however, compiled into the system's initial RAM disk (initrd) so there are some limitations. Plug-ins though can rely on loading PNG images as libpng is linked to Plymouth. The plug-ins currently available through the project's git repository currently include details, fade-in, pulser, solar, spinfinity, and text. These plug-ins are also packaged in RPM form on Fedora 10. The Fedora 10 RPMs include plymouth (the main graphical boot package), plymouth-devel (the libraries and headers), plymouth-gdm-hooks (provides integrated with GDM), plymouth-libs (the Plymouth libraries), plymouth-plugin-fade-in, plymouth-plugin-label, plymouth-plugin-pulser, plymouth-plugin-solar, plymouth-plugin-spinfinity, plymouth-scripts (scripts to assist in configuring Plymouth), plymouth-text-and-details-only (intended for those not interested in a rich boot experience), and plymouth-utils (utilities related to Plymouth).
The plug-ins for Plymouth are stored within the /usr/lib/plymouth/ directory. By default, the Spinfinity plug-in is currently used with Fedora, but that can be easily changed. For example, to change Plymouth to using the Solar theme, as root run plymouth-set-default-plugin solar. The plymouth-set-default-plugin utility will check that /usr/lib/plymouth/solar.so is present and will then create a link to it from /usr/lib/plymouth/default.so. As Plymouth is started from the initial RAM disk, the initrd must be rebuilt when changing themes / plug-ins. The easiest way to do this is by running /usr/libexec/plymouth/plymouth-update-initrd with root privileges.