Find a file
Hans de Goede 2f8b64ea4c ply-device-manager: Create renderer for simpledrm devices right away
Often when plymouth starts and enumerates udev devices which are already
present at start (coldplug detection), udev is still initializing all
the devices and it reports 0 for udev_device_get_is_initialized ().

It may take a long time for the state of the simpledrm udev device
to change to initialized and for a udev add event to be send.

Especially when the amdgpu kernel module is involved which is very
large for a kernel module and can take op to 7 seconds to load.

In this case it is even possible for plymouth's default DeviceTimeout
of 8 seconds to trigger before the simpledrm device is considered
initialized. See for example these lines extracted from the plymouth-debug
log attached to: https://bugzilla.redhat.com/show_bug.cgi?id=2183743

  00:00:02.909 ../src/libply-splash-core/ply-device-manager.c:498:create_devi: found device /sys/devices/pci0000:00/0000:00:01.0/simple-framebuffer.0/drm/card0
  00:00:02.910 ../src/libply-splash-core/ply-device-manager.c:513:create_devi: it's not initialized
  00:00:10.917 ../src/libply-splash-core/ply-device-manager.c:1237:create_dev: Timeout elapsed, looking for devices from udev
  00:00:10.918 ../src/libply-splash-core/ply-device-manager.c:498:create_devi: found device /sys/devices/pci0000:00/0000:00:01.0/simple-framebuffer.0/drm/card0
  00:00:10.918 ../src/libply-splash-core/ply-device-manager.c:513:create_devi: it's not initialized

This leads to plymouth falling back to the text splash even when
plymouth.use-simpledrm is passed on the kernel commandline.

Add a special case for simpledrm devices and add these during coldboot
even if they are not initialized yet.
2024-06-07 17:21:00 +02:00
docs autogoo: Drop the goo 2022-11-14 13:40:56 -05:00
images autogoo: Drop the goo 2022-11-14 13:40:56 -05:00
po Translated using Weblate (Kazakh) 2024-03-10 10:36:09 +01:00
scripts plymouth-set-default-theme: Use a more targeted bash ini-parser function instead of sed to handle the config file 2024-01-13 00:31:19 +00:00
src ply-device-manager: Create renderer for simpledrm devices right away 2024-06-07 17:21:00 +02:00
systemd-units autogoo: Drop the goo 2022-11-14 13:40:56 -05:00
themes Add system-reset splash mode 2023-11-24 20:11:36 +00:00
.gitignore gitignore: Add plymouthd-fd-escrow to gitignore 2022-02-28 16:28:41 +01:00
.gitlab-ci.yml ci: Fix check-format 2022-11-29 14:52:39 -05:00
AUTHORS Add Peter to AUTHORS 2008-06-10 21:59:10 -04:00
COPYING initial import 2007-05-08 17:48:00 -04:00
INSTALL build-goo: Remove vestigial remnants of old GDM integration code. 2020-03-07 00:36:54 +08:00
meson.build Bump required Meson version 2024-04-30 01:18:56 +00:00
meson_options.txt Port build system to Meson 2022-11-14 12:21:55 -05:00
ply_header.svg Add README in .md format. 2022-09-07 18:07:31 +00:00
README.md Add README in .md format. 2022-09-07 18:07:31 +00:00
VERSION autogoo: Determine project version from date 2022-01-11 10:38:28 -05:00

header image

Overview

Plymouth is an application that runs very early in the boot process (even before the root filesystem is mounted!) that provides a graphical boot animation while the boot process happens in the background.

It is designed to work on systems with DRM modesetting drivers. The idea is that early on in the boot process the native mode for the computer is set, plymouth uses that mode, and that mode stays throughout the entire boot process up to and after X starts. Ideally, the goal is to get rid of all flicker during startup.

For systems that don't have DRM mode settings drivers, plymouth falls back to text mode (it can also use a legacy /dev/fb interface).

In either text or graphics mode, the boot messages are completely occluded. After the root file system is mounted read-write, the messages are dumped to /var/log/boot.log. Also, the user can see the messages at any time during boot up by hitting the escape key.

Installation

Plymouth isn't really designed to be built from source by end users. For it to work correctly, it needs integration with the distribution. Because it starts so early, it needs to be packed into the distribution's initial ram disk, and the distribution needs to poke plymouth to tell it how boot is progressing.

Binary Files

plymouth ships with two binaries:

  • /sbin/plymouthd and
  • /bin/plymouth

The first one, plymouthd, does all the heavy lifting. It logs the session and shows the splash screen. The second one, /bin/plymouth, is the control interface to plymouthd.

It supports things like plymouth show-splash, or plymouth ask-for-password, which trigger the associated action in plymouthd.

Plymouth supports various "splash" themes which are analogous to screensavers, but happen at boot time. There are several sample themes shipped with plymouth, but most distributions that use plymouth ship something customized for their distribution.

Current Efforts

Plymouth isn't done yet. It's still under active development, but is used in several popular distros already, including Fedora, Mandriva, Ubuntu and others. See the distributions page for more information.

Code of Conduct

As with other projects hosted on freedesktop.org, Plymouth follows its Code of Conduct, based on the Contributor Covenant1. Please conduct yourself in a respectful and civilized manner when using the above mailing lists, bug trackers, etc:

References