Plymouth has 2 hw discovery paths: 1. Enumerating devices already known by udev at plymouth startup 2. Devices which are hotplugged after startup At boot we have udevd which is enumerating hw and plymouthd racing with each other, which means that plymouthd may discover the new SimpleDRM device through either 1. or 2. Before this patch a check for SimpleDRM was missing from path 1, causing it to be treated as a normal device instead of being ignored as intended: plymouth-debug.log for the simpledrm being enumerated in path 1: ply-device-manager.c:344: create_devices_for_subsystem: found device /sys/devices/platform/simple-framebuffer.0/drm/card0 ply-device-manager.c:351: create_devices_for_subsystem: device is initialized ply-device-manager.c:360: create_devices_for_subsystem: found node /dev/dri/card0 ply-device-manager.c:283: create_devices_for_udev_device: found DRM device /dev/dri/card0 ply-device-manager.c:885: create_devices_for_terminal_and_rende: creating devices for /dev/dri/card0 (renderer type: 1) plymouth-debug.log for the simpledrm *not* being enumerated in path 1: ply-device-manager.c:344: create_devices_for_subsystem: found device /sys/devices/platform/simple-framebuffer.0/drm/card0 ply-device-manager.c:367: create_devices_for_subsystem: it's not initialized followed by path 2 enumerating the device very shortly after this: ply-device-manager.c:532: on_udev_event: got add event for device /dev/dri/card0 ply-device-manager.c:462: verify_add_or_change: ignoring since we only handle SimpleDRM devices after timeout Note how path 2 does correctly ignore SimpleDRM devices, where as path 1 does not. This commit fixes this by moving the verify_drm_device() check in to create_devices_for_udev_device() which runs in both paths. Link: https://bugzilla.redhat.com/show_bug.cgi?id=2127663 Reported-by: Michael Catanzaro <mcatanza@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> |
||
|---|---|---|
| docs | ||
| images | ||
| po | ||
| scripts | ||
| src | ||
| systemd-units | ||
| themes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| acinclude.m4 | ||
| AUTHORS | ||
| autogen.sh | ||
| ChangeLog | ||
| configure.ac | ||
| COPYING | ||
| INSTALL | ||
| Makefile.am | ||
| NEWS | ||
| ply_header.svg | ||
| README.md | ||
| TODO | ||
| VERSION | ||
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/plymouthdand/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: