Files
quartz/content/10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth.md
Quartz Syncer 125a9b1752
All checks were successful
Build and Deploy Quartz / build (push) Successful in 26s
Published multiple files
2026-02-05 09:53:27 -07:00

132 lines
2.9 KiB
Markdown

---
publish: true
permalink: /10-19 LIFE/13 TECH SETUP/13.13 OS SETUP/Plymouth.md
title: Plymouth
created: 2026-02-05T09:31:46.739-07:00
modified: 2026-02-05T09:43:32.507-07:00
tags:
- boot
- splash
- luks
cssclasses: ""
---
Plymouth provides a graphical boot splash screen, including during LUKS password entry.
## Installation
```bash
sudo pacman -S plymouth
```
## Configuration
### mkinitcpio (systemd hooks)
I use systemd-based initramfs hooks. Edit `/etc/mkinitcpio.conf`:
```bash
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole plymouth sd-encrypt block filesystems resume fsck)
```
Key points:
- Using `systemd` not `udev`
- Using `sd-vconsole` not `keymap consolefont`
- Using `sd-encrypt` not `encrypt`
- `plymouth` comes **after** `sd-vconsole` and **before** `sd-encrypt`
Regenerate initramfs:
```bash
sudo mkinitcpio -P
```
### Kernel Parameters
Add `splash` to your bootloader config.
**For Limine** (`/boot/EFI/limine/limine.conf`):
```
cmdline: quiet splash rd.luks.uuid=<UUID> root=/dev/mapper/root ...
```
> **Note:** With systemd hooks, use `rd.luks.uuid=` instead of `cryptdevice=`
**For systemd-boot** (`/boot/loader/entries/arch.conf`):
```
options quiet splash rd.luks.uuid=<UUID> root=/dev/mapper/root ...
```
### Set Theme
```bash
# List available themes
plymouth-set-default-theme -l
# Set theme (and rebuild initramfs)
sudo plymouth-set-default-theme -R spinner
```
Popular themes:
- `spinner` — Simple spinner (default)
- `bgrt` — Uses manufacturer logo from ACPI
- `fade-in` — Fading star field
### Install more themes
```bash
paru -S plymouth-theme-arch-logo
paru -S plymouth-theme-monoarch
```
## LUKS Integration
Plymouth displays the LUKS password prompt graphically instead of the text console.
For this to work with systemd hooks:
1. `plymouth` hook must be before `sd-encrypt` hook
2. `splash` must be in kernel parameters
3. Use `rd.luks.uuid=` for LUKS device specification
## systemd vs udev Hooks
| udev-based | systemd-based |
|------------|---------------|
| `udev` | `systemd` |
| `keymap consolefont` | `sd-vconsole` |
| `encrypt` | `sd-encrypt` |
| `cryptdevice=UUID=...:name` | `rd.luks.uuid=...` |
## Testing
Test without rebooting:
```bash
sudo plymouthd
sudo plymouth --show-splash
# Press Enter to dismiss
sudo plymouth quit
```
## Troubleshooting
### No splash on boot
1. Verify `splash` is in kernel params
2. Check hook order in mkinitcpio.conf
3. Regenerate initramfs: `sudo mkinitcpio -P`
### LUKS prompt is text-only
The `plymouth` hook must come **before** `sd-encrypt`:
```bash
HOOKS=(... sd-vconsole plymouth sd-encrypt ...)
```
### View boot messages
Remove `quiet` temporarily to see boot messages if Plymouth isn't working.
## Resources
- Arch Wiki: https://wiki.archlinux.org/title/Plymouth
- Arch Wiki (mkinitcpio systemd): https://wiki.archlinux.org/title/Mkinitcpio#Common_hooks