Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index Assistance Other Things Gentoo
  • Search

Plymouth pain

Still need help with Gentoo, and your question doesn't fit in the above forums? Here is your last bastion of hope.
Post Reply
Advanced search
9 posts • Page 1 of 1
Author
Message
zen_desu
Guru
Guru
Posts: 501
Joined: Fri Oct 25, 2024 3:14 pm
Location: your area

Plymouth pain

  • Quote

Post by zen_desu » Sat Jan 31, 2026 4:08 am

https://github.com/desultory/ugrd/tree/plymouth

I've been trying to get plymouth going in ugrd again, and am having no luck.

There are a variety of issues, the main being that the display/themes simply don't work. This would be approachable, except plymouth is not logging in any capacity, regardless of what args I pass. It doesn't even seem to be reading the config files.

I've tried adding udev into the initramfs, and that makes no difference - I thought this was why I was having trouble before.

If anyone could test this branch with the ugrd.base.plymouth and ugrd.base.udev modules, that would be appreciated.
It would be greatly appreciated if anyone familiar with the plymouth codebase could give this stuff a look because I can't understand it at all.

To make matters worse, the current stable release is from 2022, but it doesn't seem to behave differently from the current 9999
µgRD dev
Wiki writer
Top
zen_desu
Guru
Guru
Posts: 501
Joined: Fri Oct 25, 2024 3:14 pm
Location: your area

  • Quote

Post by zen_desu » Sat Jan 31, 2026 11:36 pm

I think I got it: https://github.com/desultory/ugrd/tree/plymouth

there are a few secrets, to start you must read the theme files to determine what fonts are needed, and then trace those down based on their name (which may have style/size info in it)

Once you do that, you also need to get some libraries like libdrm and trace down all the dependencies for that.

Finally, gpu drivers seem totally necessary, I can't figure out how to make plymouth properly work with simpledrm or not a full gpu driver.

If anyone wants to test, it would be very appreciated. There are a few things to keep in mind with the current state of this module:

It is up to the user to toggle the GPU driver mask (kmod_ignore_video = false) and a few plymouth toggles must be manually set depending on your system.

If you are using systemd with the plymouth service or openrc with the plymouth module, you should be able to set "plymouth_kill = false" so it's not killed when switch_root happens.

When it builds an image, pay close attention to the kmods it pulls and confirm the video driver for your main GPU is pulled, and that necessary firmware is not missing.

The "plymouth_force_splash" config bool should "trick" plymouth into working regardless of the kernel cmdline, but "quiet" and "splash" should ideally be in your kernel cmdline.
µgRD dev
Wiki writer
Top
sinatosk
n00b
n00b
Posts: 25
Joined: Wed Sep 04, 2024 8:34 pm

  • Quote

Post by sinatosk » Fri Feb 06, 2026 9:30 am

The following packages are installed
  • sys-kernel/ugrd 2.0.2
    sys-boot/plymouth 22.02.122-r4
    kde-plasma/plymouth-kcm 6.5.5
    kde-plasma/breeze-plymouth 6.5.5
    media-fonts/cantarell 0.303.1
I did the following

- after doing a git clone of ugrd, I did the following. commit 2f8ad43e84d92b081b8a0914510302c96d0e4c48 is version 2.0.2

Code: Select all

mkdir -p /etc/portage/patches/sys-kernel/ugrd-2.0.2/
git checkout plymouth
git diff 2f8ad43e84d92b081b8a0914510302c96d0e4c48 > /etc/portage/patches/sys-kernel/ugrd-2.0.2/01-plymouth_changes.patch
- tested with ebuild clean and prepare to see if the patch applied

- after emerging I changed config.toml to the following

Code: Select all

modules = [
   "ugrd.fs.resume",
   "ugrd.base.plymouth",
]
kmod_ignore_video = false

plymouth_force_splash = true
plymouth_kill = false

cpio_compression = false

kmod_autodetect_lspci = true
kmod_autodetect_lsmod = true
kmod_autodetect_input = true

find_libgcc = true
- added "quiet" and "splash" to the kernel command line

- the UKI ( made by ukify ) is now larger from 52MB~ to 122MB~ ( I'm aware that it can be compressed )

- remade the initramfs, rebooted and works, I see some text under the bgrt logo and the animation too.

hope this helps

==== somewhat off topic ====

while I may have to do this as a separate github issue if necessary, the following wasn't there before plymouth but then again I wasn't using ugrd 2.1.0 prior to this either.

during ugrd initramfs building, I'm seeing these warnings

Code: Select all

INFO     | [60-cdrom_id.rules] Found binary requirements: cdrom_id
WARNING  | [60-cdrom_id.rules] Unable to find udev rule dependency: Binary not found not found in PATH: cdrom_id
INFO     | [60-fido-id.rules] Found binary requirements: fido_id
WARNING  | [60-fido-id.rules] Unable to find udev rule dependency: Binary not found not found in PATH: fido_id
INFO     | [60-persistent-storage-tape.rules] Found binary requirements: scsi_id
WARNING  | [60-persistent-storage-tape.rules] Unable to find udev rule dependency: Binary not found not found in PATH: scsi_id
INFO     | [60-persistent-v4l.rules] Found binary requirements: v4l_id
WARNING  | [60-persistent-v4l.rules] Unable to find udev rule dependency: Binary not found not found in PATH: v4l_id
INFO     | [70-memory.rules] Found binary requirements: dmi_memory_id
WARNING  | [70-memory.rules] Unable to find udev rule dependency: Binary not found not found in PATH: dmi_memory_id
INFO     | [75-probe_mtd.rules] Found binary requirements: mtd_probe
WARNING  | [75-probe_mtd.rules] Unable to find udev rule dependency: Binary not found not found in PATH: mtd_probe
INFO     | [10-dm.rules] Found binary requirements: /sbin/dmsetup
INFO     | [80-udisks2.rules] Found binary requirements: /bin/sh
INFO     | [69-dm-lvm.rules] Found binary requirements: /sbin/lvm
INFO     | [11-dm-lvm.rules] Found binary requirements: /sbin/dmsetup
INFO     | [56-multipath.rules] Found binary requirements: /sbin/multipath
INFO     | [11-dm-mpath.rules] Found binary requirements: kpartx_id
WARNING  | [11-dm-mpath.rules] Unable to find udev rule dependency: Binary not found not found in PATH: kpartx_id
INFO     | [11-dm-parts.rules] Found binary requirements: kpartx_id
WARNING  | [11-dm-parts.rules] Unable to find udev rule dependency: Binary not found not found in PATH: kpartx_id
INFO     | [60-persistent-storage.rules] Found binary requirements: ata_id, scsi_id
WARNING  | [60-persistent-storage.rules] Unable to find udev rule dependency: Binary not found not found in PATH: ata_id
INFO     | [80-libinput-device-groups.rules] Found binary requirements: /usr/lib/udev/libinput-device-group
INFO     | [90-libinput-fuzz-override.rules] Found binary requirements: /usr/lib/udev/libinput-fuzz-extract
I checked for those binaries and they exist at "/usr/lib/udev" and after doing

Code: Select all

ugrd --print-config
in the output, I see that "/usr/lib/udev" is part of binary_search_paths

Code: Select all

binary_search_paths:
  - /bin
  - /sbin
  - /usr/bin
  - /usr/sbin
  - /lib/systemd
  - /usr/libexec/plymouth
  - /usr/lib/udev
maybe I'm misinterpreting the warning
Top
zen_desu
Guru
Guru
Posts: 501
Joined: Fri Oct 25, 2024 3:14 pm
Location: your area

  • Quote

Post by zen_desu » Fri Feb 06, 2026 6:07 pm

thanks for testing, I think those binary not found bugs are fixed here:

https://github.com/desultory/ugrd/pull/405
https://github.com/desultory/ugrd/pull/404

What desktop environment/display manager are you using? I'm not sure where "plymouth_kill = false" functions well.
On all of my systems (i use sway with no display manager service), plymouth will hang onto the display endlessly and won't let me even switch tty's if I leave it running.

I'm wondering if this handover is handled by display manager services or possibly something in the init, I don't think openrc natively handles this, but it could ultimately be the responsibility of a display manager.
µgRD dev
Wiki writer
Top
sinatosk
n00b
n00b
Posts: 25
Joined: Wed Sep 04, 2024 8:34 pm

  • Quote

Post by sinatosk » Fri Feb 06, 2026 7:16 pm

KDE Plasma 6.5.5 and I don't use SDDM, just text login and then start KDE with the following set inside ".bashrc"

Code: Select all

alias sw='cd ~/; clear; MESA_LOADER_DRIVER_OVERRIDE=zink exec startplasma-wayland'
and I just do "sw" after login

my system is Framework 16 Laptop using Radeon 780M iGPU with no dGPU

still testing zink to see how it is, seems good for me so far, minus VAAPI but then I just set those applications to use radeonsi until zink implements VAAPI ( work in progress at the moment )
Top
zen_desu
Guru
Guru
Posts: 501
Joined: Fri Oct 25, 2024 3:14 pm
Location: your area

  • Quote

Post by zen_desu » Fri Feb 06, 2026 9:35 pm

sinatosk wrote:KDE Plasma 6.5.5 and I don't use SDDM, just text login and then start KDE with the following set inside ".bashrc"

Code: Select all

alias sw='cd ~/; clear; MESA_LOADER_DRIVER_OVERRIDE=zink exec startplasma-wayland'
and I just do "sw" after login

my system is Framework 16 Laptop using Radeon 780M iGPU with no dGPU

still testing zink to see how it is, seems good for me so far, minus VAAPI but then I just set those applications to use radeonsi until zink implements VAAPI ( work in progress at the moment )
OK, if you're seeing a text login, you probably want to keep the plymouth_kill option enabled if you are having any issues. I'm not entirely sure what is required for the full handover, but in my tests, if something does not "grab" the display back from plymouth, you may get a TTY but it will eat every second keypress

On my laptop (integrated amdgpu radeon graphics), I have it set to autologin with sway after I auth with my yubikey, but it seems to crash instantly because plymouth is still holding the display.

Thanks for testing this some, I think this is at least an improvement to the old plymouth module (which barely worked at all) but I'd like to get it fully ironed out.

WRT to the initramfs size, the firmware puller pulls all firmware defined in module info, I think one of the next steps to make this setup more reasonable is to filter out firmware by the card type so only the necessary firmware is pulled. If you can share the firmware used by your card (dmesg | grep "Loading firmware"), that will help me get an idea of what is necessary for each card family.
If you want to test, you can try manually including the firmware in the image by defining all of the file paths in a `dependencies = ["/usr/lib/firmware/amdgpu/x", "/usr/lib/firmware/amdgpu/y"] ` and so on, and disable pulling firmware with `kmod_pull_firmware = false`

I'd like to figure out how to make this work with simpledrm (so full drivers aren't required) but that is not enabled by default on dist-kernel and may conflict with plain DRM drivers if you're not careful.
µgRD dev
Wiki writer
Top
sinatosk
n00b
n00b
Posts: 25
Joined: Wed Sep 04, 2024 8:34 pm

  • Quote

Post by sinatosk » Sat Feb 07, 2026 3:57 am

I tried simpledrm ( I have "CONFIG_DRM_SIMPLEDRM=m" set in my kernel config ) but didn't work for me so I enabled so I left "kmod_ignore_video = false" set ( this was about 25MB~ ) and amdgpu depends on other kernel modules ( amdgpu.ko itself is 22.8MB ).

then plymouth ( 2MB~ ) but then there's libdrm and other files

none of the kernel modules or firmware files are compressed ( I'm aware that they can be compressed ).

with sys-kernel/linux-firmware 99999999 I have "savedconfig" flag set so I'm already benefitting from reduced firmware files

some of these firmware files are symlinks so do checkout the "WHENCE" file in linux-firmware repository to find out which ( I don't have "deduplicate" flag set when using "savedconfig" flag otherwise that too would create symlinks ) are symlinks

AMD Zen 4
  • amd-ucode/microcode_amd_fam19h.bin
AMD Radeon 780M
  • amdgpu/vcn_4_0_2.bin
    amdgpu/sdma_6_0_1.bin
    amdgpu/psp_13_0_4_toc.bin
    amdgpu/psp_13_0_4_ta.bin
    amdgpu/dcn_3_1_4_dmcub.bin
    amdgpu/gc_11_0_1_rlc.bin
    amdgpu/gc_11_0_1_pfp.bin
    amdgpu/gc_11_0_1_mes_2.bin
    amdgpu/gc_11_0_1_mes1.bin
    amdgpu/gc_11_0_1_mec.bin
    amdgpu/gc_11_0_1_me.bin
    amdgpu/gc_11_0_1_imu.bin
AMD NPU ( don't know which model )
  • amdnpu/1502_00/npu.sbin
    amdnpu/1502_00/npu.sbin.1.5.2.391
AMD TEE
  • amdtee/amd_pmf_v3_1.bin
    amdtee/amd_pmf_v3.bin
    amdtee/773bd96f-b83f-4d52-b12dc529b13d8543.bin
    amdtee/f29bb3d9-bd66-5441-afb88acc2b2b60d6.bin
Mediatek MT7925
  • mediatek/mt7925/BT_RAM_CODE_MT7925_1_1_hdr.bin
    mediatek/mt7925/WIFI_MT7925_PATCH_MCU_1_1_hdr.bin
    mediatek/mt7925/WIFI_RAM_CODE_MT7925_1_1.bin
I think what you could do is check if "saveconfig" is enabled and file "/etc/portage/savedconfig/sys-kernel/linux-firmware" exists, if so, print a warning that "savedconfig" and then change all errors about missing firmware files ( like me for example )

truncated output

Code: Select all

ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/vega10_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/vega12_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/raven_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/picasso_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/raven2_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/arcturus_gpu_info.bin
should be printed as warnings instead or not at all. this is a gentoo specific thing though.

you could use the contents of "/etc/portage/savedconfig/sys-kernel/linux-firmware" to know what firmware files exists.
Top
zen_desu
Guru
Guru
Posts: 501
Joined: Fri Oct 25, 2024 3:14 pm
Location: your area

  • Quote

Post by zen_desu » Sat Feb 07, 2026 4:19 am

sinatosk wrote:I tried simpledrm ( I have "CONFIG_DRM_SIMPLEDRM=m" set in my kernel config ) but didn't work for me so I enabled so I left "kmod_ignore_video = false" set ( this was about 25MB~ ) and amdgpu depends on other kernel modules ( amdgpu.ko itself is 22.8MB ).

then plymouth ( 2MB~ ) but then there's libdrm and other files

none of the kernel modules or firmware files are compressed ( I'm aware that they can be compressed ).

with sys-kernel/linux-firmware 99999999 I have "savedconfig" flag set so I'm already benefitting from reduced firmware files

some of these firmware files are symlinks so do checkout the "WHENCE" file in linux-firmware repository to find out which ( I don't have "deduplicate" flag set when using "savedconfig" flag otherwise that too would create symlinks ) are symlinks

AMD Zen 4
  • amd-ucode/microcode_amd_fam19h.bin
AMD Radeon 780M
  • amdgpu/vcn_4_0_2.bin
    amdgpu/sdma_6_0_1.bin
    amdgpu/psp_13_0_4_toc.bin
    amdgpu/psp_13_0_4_ta.bin
    amdgpu/dcn_3_1_4_dmcub.bin
    amdgpu/gc_11_0_1_rlc.bin
    amdgpu/gc_11_0_1_pfp.bin
    amdgpu/gc_11_0_1_mes_2.bin
    amdgpu/gc_11_0_1_mes1.bin
    amdgpu/gc_11_0_1_mec.bin
    amdgpu/gc_11_0_1_me.bin
    amdgpu/gc_11_0_1_imu.bin
AMD NPU ( don't know which model )
  • amdnpu/1502_00/npu.sbin
    amdnpu/1502_00/npu.sbin.1.5.2.391
AMD TEE
  • amdtee/amd_pmf_v3_1.bin
    amdtee/amd_pmf_v3.bin
    amdtee/773bd96f-b83f-4d52-b12dc529b13d8543.bin
    amdtee/f29bb3d9-bd66-5441-afb88acc2b2b60d6.bin
Mediatek MT7925
  • mediatek/mt7925/BT_RAM_CODE_MT7925_1_1_hdr.bin
    mediatek/mt7925/WIFI_MT7925_PATCH_MCU_1_1_hdr.bin
    mediatek/mt7925/WIFI_RAM_CODE_MT7925_1_1.bin
I think what you could do is check if "saveconfig" is enabled and file "/etc/portage/savedconfig/sys-kernel/linux-firmware" exists, if so, print a warning that "savedconfig" and then change all errors about missing firmware files ( like me for example )

truncated output

Code: Select all

ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/vega10_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/vega12_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/raven_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/picasso_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/raven2_gpu_info.bin
ERROR    | [amdgpu] Firmware file does not exist: /lib/firmware/amdgpu/arcturus_gpu_info.bin
should be printed as warnings instead or not at all. this is a gentoo specific thing though.

you could use the contents of "/etc/portage/savedconfig/sys-kernel/linux-firmware" to know what firmware files exists.
I want ugrd to ideally handle setups on any distro, so reading a config file to determine present firmware is a bit out of scope.
A lot of those warnings can be ignored, many modules will reference firmware files which don't exist, and that is generally fine, but in some cases it's a problem (maybe this should be warning level, not error). I think it has to be addressed by the user, because module definitions can change and many things are not strictly necessary when booting.

by default pycpio should deduplicate files, but if you have a savecdonfig with only your required firmware available, that should help keep it minimal.
ugrd won't pull the simpledrm module, but it can be added by defining it like `kmod_init = ["simpledrm"]` in the config.toml.

in this case, the only required firmware for plymouth would be GPU firmware
µgRD dev
Wiki writer
Top
sinatosk
n00b
n00b
Posts: 25
Joined: Wed Sep 04, 2024 8:34 pm

  • Quote

Post by sinatosk » Tue Feb 10, 2026 7:26 am

zen_desu wrote:I want ugrd to ideally handle setups on any distro, so reading a config file to determine present firmware is a bit out of scope.
A lot of those warnings can be ignored, many modules will reference firmware files which don't exist, and that is generally fine, but in some cases it's a problem (maybe this should be warning level, not error). I think it has to be addressed by the user, because module definitions can change and many things are not strictly necessary when booting.

by default pycpio should deduplicate files, but if you have a savecdonfig with only your required firmware available, that should help keep it minimal.
understandable

maybe allow us to provide a list to ugrd on which firmware files that are expected, ones that are in the array/list to ugrd ( array/list in config.toml ) but don't exist on the file system, an error is printed, otherwise a warning is printed and add an option for us to not have that warning printed but error still shows

this way it's not specific to any distro and me

I can then just create a script to generate the array/list and copy paste that into config.toml and I then can ( locally ) extend sys-kernel/linux-firmware to execute that script.
Top
Post Reply

9 posts • Page 1 of 1

Return to “Other Things Gentoo”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic