Plymouth: Difference between revisions
(→Emergency console timeout when using encryption: flag for removal) |
(→Smooth transition: Remove plymouth deactivate from the smooth transition drop in, it crashes recent version of plymouth and so it doesn't seem necessary anymore) |
||
(20 intermediate revisions by 15 users not shown) | |||
Line 2: | Line 2: | ||
[[de:Plymouth]] | [[de:Plymouth]] | ||
[[es:Plymouth]] | [[es:Plymouth]] | ||
[[ja:Plymouth]] | [[ja:Plymouth]] | ||
[[pt:Plymouth]] | [[pt:Plymouth]] | ||
Line 21: | Line 20: | ||
== Installation == | == Installation == | ||
Plymouth is available with the stable package | Plymouth is available with the stable package {{Pkg|plymouth}}. For the development version, use {{AUR|plymouth-git}}. | ||
By default, Plymouth logs the boot messages into {{ic|/var/log/boot.log}}, and does not show the graphical splash screen. | By default, Plymouth logs the boot messages into {{ic|/var/log/boot.log}}, and does not show the graphical splash screen. | ||
Line 38: | Line 37: | ||
HOOKS=(... plymouth ...) | HOOKS=(... plymouth ...) | ||
}} | }} | ||
If you are using the {{ic|systemd}} hook, it must be before {{ic|plymouth}}. | |||
Furthermore make sure you place {{ic|plymouth}} before the {{ic|crypt}} hook if your system is encrypted with dm-crypt. | |||
=== dracut === | === dracut === | ||
Line 66: | Line 69: | ||
# ''('''Details''': "Verbose fallback theme")'' | # ''('''Details''': "Verbose fallback theme")'' | ||
By default, the ''' | By default, the '''fade-in''' theme is selected. The theme can be changed editing the configuration file, for example: | ||
{{hc|/etc/plymouth/plymouthd.conf|2= | {{hc|/etc/plymouth/plymouthd.conf|2= | ||
[Daemon] | [Daemon] | ||
Theme= | Theme=bgrt | ||
}} | }} | ||
Line 109: | Line 112: | ||
Edit the configuration file: | Edit the configuration file: | ||
{{hc|/etc/plymouth/plymouthd.conf|2= | {{hc|/etc/plymouth/plymouthd.conf|2= | ||
[Daemon] | |||
DeviceScale=''an-integer-scaling-factor'' | DeviceScale=''an-integer-scaling-factor'' | ||
}} | }} | ||
Line 132: | Line 136: | ||
[Service] | [Service] | ||
ExecStartPost=-/usr/bin/sleep 30 | ExecStartPost=-/usr/bin/sleep 30 | ||
ExecStartPost=-/usr/bin/plymouth quit --retain-splash | ExecStartPost=-/usr/bin/plymouth quit --retain-splash | ||
Line 147: | Line 150: | ||
# plymouth --quit | # plymouth --quit | ||
You can run these commands as root in a running X.Org session too, but the Plymouth window may cover your terminal window and lock itself on top. Have virtual desktops handy. | |||
=== Change background image === | === Change background image === | ||
Line 155: | Line 160: | ||
In case you are using the BGRT theme but the UEFI does not provide a vendor logo, you can place a fallback image into {{ic|/usr/share/plymouth/themes/spinner/bgrt-fallback.png}} to show it instead. | In case you are using the BGRT theme but the UEFI does not provide a vendor logo, you can place a fallback image into {{ic|/usr/share/plymouth/themes/spinner/bgrt-fallback.png}} to show it instead. | ||
Alternatively, set the following to keep the firmware background: {{hc|/etc/plymouth/plymouthd.conf|2= | |||
UseFirmwareBackground=true | |||
}} | |||
=== Slow down boot to show the full animation === | === Slow down boot to show the full animation === | ||
On systems with a very fast boot time, it might necessary to add a delay to {{ic|plymouth-quit.service}} with a [[drop-in snippet]] containing {{ic|1=ExecStartPre=/usr/bin/sleep 5}} if showing the whole animation is desired. See [https:// | On systems with a very fast boot time, it might be necessary to add a delay to {{ic|plymouth-quit.service}} with a [[drop-in snippet]] containing {{ic|1=ExecStartPre=/usr/bin/sleep 5}} if showing the whole animation is desired. See [https://old.reddit.com/r/archlinux/comments/u5fjbi/how_do_i_make_my_boot_time_slower/ this reddit post]. | ||
Alternatively, it is possible to use a new systemd service starting at the same time as plymouth and waiting the whole duration needed for the animation. This method will ensure that inconsistencies in the boot time will not be perceived, as it is not time added '''after''' the animation but a delay running ''''during''' the animation. | |||
{{hc|/etc/systemd/system/plymouth-wait-for-animation.service|2= | |||
[Unit] | |||
Description=Waits for Plymouth animation to finish | |||
Before=plymouth-quit.service display-manager.service | |||
[Service] | |||
Type=oneshot | |||
ExecStart=/usr/bin/sleep ''duration_of_your_animation'' | |||
[Install] | |||
WantedBy=plymouth-start.service | |||
}} | |||
Then [[enable]] the service. | |||
{{Note|None of the previous methods will work if you are starting Plymouth from initramfs.}} | |||
== Troubleshooting == | == Troubleshooting == | ||
Line 177: | Line 205: | ||
When using {{ic|systemd}} instead of {{ic|udev}} hooks in [[Mkinitcpio]], the password prompt may not update on themes that handle it via Plymouth scripting. | When using {{ic|systemd}} instead of {{ic|udev}} hooks in [[Mkinitcpio]], the password prompt may not update on themes that handle it via Plymouth scripting. | ||
You can try switching to development version {{AUR|plymouth-git}} or using substitutes from [[Mkinitcpio# | You can try switching to development version {{AUR|plymouth-git}} or using substitutes from [[Mkinitcpio#Common hooks]]. | ||
=== Display is not centered === | === Display is not centered === | ||
Line 184: | Line 212: | ||
You can use [[Kernel mode setting#Forcing modes]] to disable specific monitors. | You can use [[Kernel mode setting#Forcing modes]] to disable specific monitors. | ||
== See also == | == See also == |
Latest revision as of 12:12, 14 April 2024
Plymouth is a project from Fedora and now listed among the freedesktop.org's official resources providing a flicker-free graphical boot process. It relies on kernel mode setting (KMS) to set the native resolution of the display as early as possible, then provides an eye-candy splash screen leading all the way up to the login manager.
Preparation
Plymouth primarily uses KMS to display graphics, but on UEFI systems it can utilize the EFI framebuffer.
If you cannot use KMS, e.g. because you are using a proprietary driver, or if you do not want to use the EFI framebuffer, consider using Uvesafb as it works with widescreen resolutions. If you have neither KMS nor a framebuffer, Plymouth will fall back to text-mode.
Installation
Plymouth is available with the stable package plymouth. For the development version, use plymouth-gitAUR.
By default, Plymouth logs the boot messages into /var/log/boot.log
, and does not show the graphical splash screen.
- If you want to see the splash screen, append
splash
to the kernel parameters. - If you want silent boot, append
quiet
too. - If you want to disable the logging, append
plymouth.nolog
.
To start Plymouth on early boot, you must configure your initramfs generator to create images including Plymouth.
mkinitcpio
Add plymouth
to the HOOKS
array in mkinitcpio.conf.
/etc/mkinitcpio.conf
HOOKS=(... plymouth ...)
If you are using the systemd
hook, it must be before plymouth
.
Furthermore make sure you place plymouth
before the crypt
hook if your system is encrypted with dm-crypt.
dracut
After installing Plymouth, dracut will automatically detect it and add it to your initramfs images. If autodetection fails, you can force dracut to include Plymouth by adding the following line to your dracut configuration:
/etc/dracut.conf.d/myflags.conf
add_dracutmodules+=" plymouth "
Configuration
Plymouth can be configured in file /etc/plymouth/plymouthd.conf
. You can see the default values in /usr/share/plymouth/plymouthd.defaults
.
Changing the theme
Plymouth comes with a selection of themes:
- BGRT: A variation of Spinner that keeps the OEM logo if available (BGRT stands for Boot Graphics Resource Table)
- Fade-in: "Simple theme that fades in and out with shimmering stars"
- Glow: "Corporate theme with pie chart boot progress followed by a glowing emerging logo"
- Script: "Script example plugin" (Despite the description seems to be a quite nice Arch logo theme)
- Solar: "Space theme with violent flaring blue star"
- Spinner: "Simple theme with a loading spinner"
- Spinfinity: "Simple theme that shows a rotating infinity sign in the center of the screen"
- Tribar: "Text mode theme with tricolor progress bar"
- (Text: "Text mode theme with tricolor progress bar")
- (Details: "Verbose fallback theme")
By default, the fade-in theme is selected. The theme can be changed editing the configuration file, for example:
/etc/plymouth/plymouthd.conf
[Daemon] Theme=bgrt
or by this command:
# plymouth-set-default-theme -R theme
Every time a theme is changed, the initrd
must be rebuilt. The -R
option ensures that it is rebuilt (otherwise regenerate the initramfs manually).
Install new themes
You can install other themes from AUR. [1], alternatively plymouth-kcm provides integration into KDE Plasma's settings and offers themes not available on the AUR.
All currently installed themes can be listed by using this command:
$ plymouth-set-default-theme -l
or:
$ ls /usr/share/plymouth/themes
bgrt details fade-in glow script solar spinfinity spinner text tribar
Show delay
Plymouth has a configuration option to delay the splash screen:
/etc/plymouth/plymouthd.conf
[Daemon] ShowDelay=5
On systems that boot quickly, you may only see a flicker of your splash theme before your DM or login prompt is ready. You can set ShowDelay
to an interval (in seconds) longer than your boot time to prevent this flicker and only show a blank screen. The default is 0 seconds, so you should not need to change this to a different value to see your splash earlier during boot.
HiDPI
Edit the configuration file:
/etc/plymouth/plymouthd.conf
[Daemon] DeviceScale=an-integer-scaling-factor
and rebuild the initrd.
Tips and tricks
Show boot messages
During boot you can switch to boot messages by pressing the Esc
key.
Smooth transition
GDM supports smooth transition out of the box.
For other display managers you can get a nearly smooth transition with the following drop-in snippet for display-manager.service
:
/etc/systemd/system/display-manager.service.d/plymouth.conf
[Unit] Conflicts=plymouth-quit.service After=plymouth-quit.service rc-local.service plymouth-start.service systemd-user-sessions.service OnFailure=plymouth-quit.service [Service] ExecStartPost=-/usr/bin/sleep 30 ExecStartPost=-/usr/bin/plymouth quit --retain-splash
Preview themes
Themes can be previewed without rebuilding initrd, press Ctrl+Alt+F6
to switch to a text terminal, log in as root and type:
# plymouthd # plymouth --show-splash
To quit the preview, press Ctrl+Alt+F6
again and type:
# plymouth --quit
You can run these commands as root in a running X.Org session too, but the Plymouth window may cover your terminal window and lock itself on top. Have virtual desktops handy.
Change background image
You can add a background image for two-step-based themes (such as spinner and bgrt). Just place your desired image into /usr/share/plymouth/themes/spinner/background-tile.png
. Do not forget to regenerate the initrd once the theme changed.
Missing BGRT image
In case you are using the BGRT theme but the UEFI does not provide a vendor logo, you can place a fallback image into /usr/share/plymouth/themes/spinner/bgrt-fallback.png
to show it instead.
Alternatively, set the following to keep the firmware background:
/etc/plymouth/plymouthd.conf
UseFirmwareBackground=true
Slow down boot to show the full animation
On systems with a very fast boot time, it might be necessary to add a delay to plymouth-quit.service
with a drop-in snippet containing ExecStartPre=/usr/bin/sleep 5
if showing the whole animation is desired. See this reddit post.
Alternatively, it is possible to use a new systemd service starting at the same time as plymouth and waiting the whole duration needed for the animation. This method will ensure that inconsistencies in the boot time will not be perceived, as it is not time added after the animation but a delay running 'during the animation.
/etc/systemd/system/plymouth-wait-for-animation.service
[Unit] Description=Waits for Plymouth animation to finish Before=plymouth-quit.service display-manager.service [Service] Type=oneshot ExecStart=/usr/bin/sleep duration_of_your_animation [Install] WantedBy=plymouth-start.service
Then enable the service.
Troubleshooting
Disable with kernel parameters
If you experience problems during boot, you can temporary disable Plymouth with the following kernel parameters:
plymouth.enable=0 disablehooks=plymouth
Debugging
To write debug output into /var/log/plymouth-debug.log
, add the following kernel parameter:
plymouth.debug
Password prompt does not update
When using systemd
instead of udev
hooks in Mkinitcpio, the password prompt may not update on themes that handle it via Plymouth scripting.
You can try switching to development version plymouth-gitAUR or using substitutes from Mkinitcpio#Common hooks.
Display is not centered
Certain themes may have trouble centering the display when there is more than one monitor enabled during boot.
You can use Kernel mode setting#Forcing modes to disable specific monitors.