Plymouth et temps de démarrage

Plymouth [ Debian Wiki ] est la fonction qui permet d’afficher un joli écran de démarrage avec différents thèmes possibles, mais qui est un processus compliqué et lourd, pénalisant le temps de démarrage. Les conséquences de Plymouth sur le démarrage de Debian (ou autre linux) sont faciles à estimer:

systemd-analyze blame | head

Pour être précis, systemd permet la parallélisation de tâches au lancement, et il est donc difficile de mesurer précisément l’impact d’un processus au lancement, mais ce n’est pas le sujet ici, l’ordre de grandeur étant suffisant.

Lorsqu’on installe Debian à partir d’un système de base, il ne viendrait pas à l’idée d’installer Plymouth, si l’objectif est de rechercher un système léger et performant. Debian installé à partir d’un iso ‹ Desktop › installe Plymouth par défaut, donc plus délicat à désinstaller.

• Plymouth impacte la configuration de Grub, et potentiellement de l’initramfs, le mini système initial chargé en RAM au démarrage, dont a besoin le noyau, avant de pivoter sur l’installation réelle;
• Plymouth peut poser de sérieux problèmes de démarrage en fonction de la carte graphique exotique et des drivers installés, ou pas;
• Plymouth ne sert strictement à rien une fois le système lancé, sauf éventuellement à compliquer l’arrêt système;
• Plymouth, c’est 27 lignes de services, rien que pour afficher un écran de démarrage.

 /lib/systemd/system/
  plymouth-halt.service
  plymouth-kexec.service
  plymouth-log.service
  plymouth-poweroff.service
  plymouth-quit.service
  plymouth-quit-wait.service
  plymouth-read-write.service
  plymouth-reboot.service
  plymouth.service
  plymouth-start.service
  plymouth-switch-root-initramfs.service
  plymouth-switch-root.service
  systemd-ask-password-plymouth.service
  halt.target.wants/plymouth-halt.service
  halt.target.wants/plymouth-switch-root-initramfs.service
  initrd-switch-root.target.wants/plymouth-start.service
  initrd-switch-root.target.wants/plymouth-switch-root.service
  kexec.target.wants/plymouth-kexec.service
  kexec.target.wants/plymouth-switch-root-initramfs.service
  multi-user.target.wants/plymouth-quit.service
  multi-user.target.wants/plymouth-quit-wait.service
  poweroff.target.wants/plymouth-poweroff.service
  poweroff.target.wants/plymouth-switch-root-initramfs.service
  reboot.target.wants/plymouth-reboot.service
  reboot.target.wants/plymouth-switch-root-initramfs.service
  sysinit.target.wants/plymouth-read-write.service
  sysinit.target.wants/plymouth-start.service

Liste des paquets plymouth installés:
apt list -i 'plymouth*'

Alors plutôt Plymouth ou pas Plymouth ? A chacun de se faire son propre avis.

Comment tester le démarrage de Debian, sans plymouth, mais sans désinstaller Plymouth ?

Deux possibilités:
1 » pour ceux qui savent arrêter le grub au lancement, éditer temporairement la ligne du noyau concerné par le système à lancer, en supprimant l’option ‹ splash › du noyau. L’option ‹ quiet › permet d’avoir un boot totalement silencieux. Supprimer ‹ quiet › permet d’observer le lancement du noyau.

2 » édition du fichier de configuration grub:
sudo nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" devient:
GRUB_CMDLINE_LINUX_DEFAULT="quiet" , ou GRUB_CMDLINE_LINUX_DEFAULT=

sudo update-grub
sudo update-initramfs -u

Une fois l’option ‹ splash › supprimée, et testée, supprimer les paquets ‹ plymouth* › doit ‹ normalement › ne poser aucun problème (sauf cas particuliers).
Certaines distributions rendaient la désinstallation de Plymouth difficile, voir impossible à partir d’apt.
Bookworm n’empêche pas la désinstallation de Plymouth (pas de dépendances inverses), mais ne fait pas automatiquement la suite des opérations potentiellement nécessaires (selon configuration graphique).

En résumé, Plymouth ou pas, c’est un choix personnel entre performances et esthétique.
Mais techniquement, Plymouth reste une usine à gaz, source probable de problèmes de démarrage lors d’une nouvelle installation avec une carte graphique X, Y ou Z, dont on a pas eu encore eu le temps d’analyser l’identité, puisque le système ne démarre pas…

Bonjour, ma debian 12 Mate ne correspond manifestement à tes retours:

fab@fabien:~$ ls /lib/systemd/system/|grep "plymouth"
plymouth-halt.service
plymouth-kexec.service
plymouth-log.service
plymouth-poweroff.service
plymouth-quit.service
plymouth-quit-wait.service
plymouth-read-write.service
plymouth-reboot.service
plymouth.service
plymouth-start.service
plymouth-switch-root-initramfs.service
plymouth-switch-root.service
systemd-ask-password-plymouth.path
systemd-ask-password-plymouth.service
fab@fabien:~$ ls /lib/systemd/system/|grep "plymouth"|wc -l
14
fab@fabien:~$ 

donc chez moi Plymouth c’est 14 ligne de service …
et aucun n’apparait dans systemd-analyze blame | head .

Faut croire que l’impact de plymouth est moindre chez moi.

fab@fabien:~$ systemd-analyze blame | grep "plymouth"
 235ms plymouth-quit-wait.service
  55ms plymouth-read-write.service
  38ms plymouth-start.service
fab@fabien:~$

… après modifications du grub, systemd-analyse m’annonce un gain de 2.425 s .
Cependant, les services relatifs à plymouth reste présent malgrès :

sudo systemctl disable plymouth-quit-wait.service
sudo systemctl disable plymouth-read-write.service
sudo systemctl disable plymouth-start.service

j’imagine que cela est dû à la présence de l’image de fond présente dans le grub. Qu’en est-il?

édit: je constate que même sans affichage graphique du grub (ajoute de la ligne: GRUB_TERMINAL=console), les services plymouth sus nommés restent actifs…

Pour resituer ce fil dans son contexte, il faisait suite à un blocage/retard de démarrage de Debian dans une VM, pour lequel je suspectais fortement plymouth, intimement lié à l’environnement graphique dès l’initramfs.
Il y a en fait au total 27 services installés par plymouth, dont plymouth-{start,read-write,quit-wait}.service

Normalement, en désinstallant plymouth et libplymouth5, ils ne devraient plus apparaître.
27 services potentiellement utilisés pour afficher quelques secondes une image de démarrage, tout en compliquant une nouvelle installation qui n’a pas encore ses drivers installés (-> écran noir), je trouve ça bien lourdingue pour ne pas attirer l’attention.
J’ai une fâcheuse tendance à supprimer tout ce que je considère inutile, ou plutôt à n’installer que ce que je considère nécessaire, soit à partir d’une netinstall ou debootstrap.
Ça fait très très longtemps que je n’ai pas vu plymouth, ma dernière expérience remontant à une ubuntu dans laquelle il était impossible, à moins de contorsions vraiment extrêmes que je n’avais pas trouvées, de désinstaller plymouth (alors que moins englué dans une Debian).

Comme je l’ai précisé, systemd parallélisant les tâches de démarrage, il est très difficile de connaître précisemment l’impact de plymouth sur le démarrage, aussi variable selon hardware.
Un démarrage de Debian sur SSD est tellement rapide que plymouth est totalement inutile, dans mon cas d’utilisation que je ne généralise pas.

Ça, c’est encore autre chose ! C’est un thème grub: grub-{splashimages,theme-breeze,theme-starfield}

J’ai désinstallé sur une Vm (Ubuntu 22.04 car je n’avais que ça sous la main) le paquet plymouth, et cela a eu pour conséquence de me priver d’une session graphique …
Manifestement, c’est une brique du système utilisée aussi pour d’autres actions que la simple animation visuelle lors du boot.
Pour ma part, je n’ai pas les compétences techniques pour faire sans plymouth, sauf démarche explicitée, je me contenterais juste de la modification du grub.

La complexité de plymouth vient surtout d’interdépendance de nombreux micro-services qui ressemble sérieusement à une usine à gaz pour pas grand-chose.
Dans une Debian, « normalement », désinstaller plymouth ne doit poser aucun problème à condition, après suppression de :

1 - updater l’initramfs si pas fait automatiquement : update-initramfs -u
2 - éventuellement mettre à jour grub.
Le plus simple est bien sûr de ne pas installer plymouth (en netinstall).

Malheureusement, je perds alors la session graphique. (essayé sur vm xubuntu 22.04 n’ayant pas iso de debian sous la main)

édit: désinstallé sans souci sur ma Debian :slightly_smiling_face: