Un démarrage « graphique » sur Manjaro
L’idée de masquer le plus possible les messages du démarrage d’un OS Linux avec un joli logo animé est intéressante. On peut la constater chez Fedora, chez Ubuntu, et Tuxicoman a montré comment procéder sous Debian (c’est d’ailleurs lui qui m’a inspiré ce billet). Mais pas chez ArchLinux ou Manjaro. Sur cette dernière, une solution différente et un peu technique a été proposée, elle demande quelques manipulations, que je vais détailler ici.
En effet, ça repose sur l’installation de quelques paquets et la modification de fichiers de configuration, tout ça en mode administrateur. Le résultat est intéressant cependant, parfaitement stable chez moi, donc ne boudons pas notre plaisir de bricoler un peu.
On commence par installer deux paquets : bootsplash-systemd et bootsplash-theme-manjaro. Il existe plusieurs thèmes, j’ai fait l’essai avec celui-là, il n’est pas le plus joli mais ça permet de valider le fonctionnement (j’y reviens tout à l’heure). Certains thèmes sont présents dans les dépôts, d’autres seront à installer par d’autres biais :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ yay -Ss bootsplash aur/bootsplash-theme-bgrt 0.1-1 (+2 0.04%) BGRT bootsplash theme aur/exquisite 1.0.0-1 (+3 0.00%) Bootsplash program able to render in Framebuffer, or X11 (Enlightenmen17 component) extra/bootsplash-theme-xfce 0.1-3 (42.7 KiB 658.0 KiB) Bootsplash Theme XFCE Logo extra/bootsplash-theme-vendor 0.1-2 (25.6 KiB 540.0 KiB) Bootsplash Theme Vendor Logo extra/bootsplash-theme-manjaro 0.1-2 (25.8 KiB 625.0 KiB) (Installed) Bootsplash Theme Manjaro Logo extra/bootsplash-theme-kde 0.1-3 (27.4 KiB 658.0 KiB) Bootsplash Theme KDE Logo extra/bootsplash-theme-illyria 0.1-2 (26.9 KiB 663.0 KiB) Bootsplash Theme Illyria Logo extra/bootsplash-theme-gnome 0.1-2 (32.2 KiB 720.0 KiB) Bootsplash Theme Gnome Logo extra/bootsplash-theme-arch 0.1-2 (31.1 KiB 695.0 KiB) Bootsplash Theme Arch Linux Logo extra/bootsplash-theme-amd 0.1-2 (28.9 KiB 652.0 KiB) Bootsplash Theme AMD Logo extra/bootsplash-systemd 0.1.2-1 (14.2 KiB 23.0 KiB) (Installed) Systemd service files for Bootsplash |
On peut donc ensuite s’attaquer aux fichiers de configurations, à commencer par /etc/mkinitcpio.conf. Ce fichier est responsable de la configuration des images de démarrage système contenant notamment le noyau. A chaque mise à jour noyau, mkinitcpio va reconstruire les images de démarrages pour chaque version installée (sous Manjaro, vous pouvez avoir plusieurs versions installées très simplement), en suivant les paramètres de ce fichier de configuration. Il faut identifier la ligne qui commence par « HOOKS= », et ajouter un élément à la fin de la liste :
1 |
HOOKS="base udev autodetect modconf block keyboard keymap resume filesystems fsck bootsplash-manjaro" |
Ici, on ajoute bootsplash-manjaro
à la fin, manjaro étant le nom du thème, à adapter à la situation. On peut ensuite relancer la construction des initramfs (via root ou sudo) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ sudo mkinitcpio -P ==> Building image from preset: /etc/mkinitcpio.d/linux418.preset: 'default' -> -k /boot/vmlinuz-4.18-x86_64 -c /etc/mkinitcpio.conf -g /boot/initramfs-4.18-x86_64.img ==> Starting build: 4.18.20-1-MANJARO -> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [autodetect] -> Running build hook: [modconf] -> Running build hook: [block] -> Running build hook: [keyboard] -> Running build hook: [keymap] -> Running build hook: [resume] -> Running build hook: [filesystems] -> Running build hook: [fsck] -> Running build hook: [bootsplash-manjaro] ==> Generating module dependencies ==> Creating gzip-compressed initcpio image: /boot/initramfs-4.18-x86_64.img ==> Image generation successful |
Le deuxième fichier, c’est /etc/default/grub. C’est celui qui sert de base à la construction du menu qui vous permet de choisir le noyau voire le système d’exploitation (dans le cadre d’un multi-boot) que vous souhaitez utiliser lors du démarrage de la machine. Ici, le minimum vital pour que le bootsplash fonctionne, j’ai fait cette modification :
1 2 3 4 5 |
#Ligne originale #GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=bd3d39da-18e6-425a-ae41-34cbaba1f79d" #Ligne modifiée GRUB_CMDLINE_LINUX_DEFAULT="bootsplash.bootfile=bootsplash-themes/manjaro/bootsplash resume=UUID=bd3d39da-18e6-425a-ae41-34cbaba1f79d" |
Une fois encore, bootsplash-themes/manjaro/bootsplash
contient le nom du thème qui doit être chargé, donc il faut adpater en fonction de celui-ci. Notez bien qu’on enlève la directive quiet
, qui dans le démarrage par défaut masque les messages de démarrage des services, pour n’afficher que les infos finales des partitions, et d’éventuels messages d’erreur (ce que j’avais sur le Chromebook avec le 4.14 avec la carte son mal supportée).
Il faut ensuite mettre le menu à jour en lançant la commande update-grub :
1 2 3 4 5 6 7 8 9 10 |
$ sudo update-grub Generating grub configuration file ... Found background: /usr/share/grub/background.png Found linux image: /boot/vmlinuz-4.19-x86_64 Found initrd image: /boot/intel-ucode.img /boot/initramfs-4.19-x86_64.img Found initrd fallback image: /boot/initramfs-4.19-x86_64-fallback.img Found linux image: /boot/vmlinuz-4.18-x86_64 Found initrd image: /boot/intel-ucode.img /boot/initramfs-4.18-x86_64.img Found initrd fallback image: /boot/initramfs-4.18-x86_64-fallback.img Found memtest86+ image: /boot/memtest86+/memtest.bin |
Voilà, c’est fini, il ne reste plus qu’à redémarrer et à contempler le premier résultat. Voir un logo c’est quand même plus agréable que des messages texte, et si les messages vous intéressent quand même, un appui sur la touche échap vous ravira.
Quelques raffinements supplémentaires, parce que j’ai une carte Intel
Pour être honnête, le résultat n’est pas 100% parfait. En effet, il reste encore des « clignotements » pendant le démarrage, lié à plusieurs étapes de configuration de l’écran. Heureusement, j’ai du matériel Intel, fabricant très actif sous Linux qui propose notamment un raffinement : fastboot, qui permet justement d’éviter les multiples reconfigurations jusqu’à ce que X démarre (ou Wayland, notamment sur Fedora). Pour l’activer, il y a plusieurs méthodes, j’ai choisi d’ajouter l’option au démarrage de grub. Retour donc dans le fichier /etc/default/grub, pour obtenir le résultat suivant :
1 |
GRUB_CMDLINE_LINUX_DEFAULT="bootsplash.bootfile=bootsplash-themes/manjaro/bootsplash i915.fastboot=1 resume=UUID=bd3d39da-18e6-425a-ae41-34cbaba1f79d" |
Et un petit coup d’update-grub pour parfaire le tableau.
Mais ce n’est pas tout. J’ai aussi découvert qu’on pouvait faire un truc en plus, au petit nom de « Early KMS » (on remercie une fois de plus le wiki d’ArchLinux), qui permet de charger le module graphique plus tôt qu’en temps normal. Il faut retourner cette-fois dans /etc/mkinitcpio.conf, et chercher la ligne qui commence par « MODULES= » :
1 2 3 4 5 |
#Ligne d'origine #MODULES="" #Ligne modifiée MODULES="i915" |
Une fois encore, il faut relancer la construction avec mkinitcpio -P
, et un dernier reboot pour tout valider. Il doit être possible de faire la même chose pour les autres cartes graphiques dont les pilotes exploitent KMS, je vous laisse chercher.
En tout cas, ça fonctionne vraiment pas mal, il resterait éventuellement la transition entre le logo de chargement et la mire de login de Cinnamon, la transition est plutôt abrupte, mais là je n’ai rien trouvé de probant pour l’adoucir. Un simple fondu, ça devrait pas être compliqué non ?
Prochaine étape : faire son propre thème, l’installation sur Chromebook, tester l’alternative
Je n’ai pas encore compris tous les détails techniques sur la création du thème, mais grosso modo tout est documenté dans ce dépôt, donc quand j’aurai compris, et si je suis motivé, je me ferai mon propre thème.
Les autres distributions, comme le montre tuxicoman sous Debian, reposent plutôt sur une autre méthode, Plymouth, qui existe depuis assez longtemps maintenant, et dont l’installation est également possible sur Manjaro, c’est documenté sur leur Wiki qui explique les petites spécificités par rapport à ArchLinux. J’avais déjà essayé sur ma première installation à l’époque quand j’utilisais encore KDE, ça ne s’était pas vraiment bien passé. Je n’avais jamais retenté, c’est peut-être l’occasion. Je vais même peut-être utiliser le Chromebook pour ça.
PS : comme je n’ai pas la science infuse, ma base de travail a été ce post du forum Manjaro, qui centralise en anglais tout ce dont on a besoin pour mettre en place bootsplash.
Excepté que Bootsplash est abandonné depuis janvier 2018 bien qu’il soit proposé sur Manjaro. La feature était à l’initiative de « Max Staudt mstaudt at suse.de ».
Sources: https://github.com/philmmanjaro/linux-bootsplash/blob/master/README.md & https://lists.freedesktop.org/archives/dri-devel/2017-December/160236.html
Et elle est à l’abandon depuis janvier 2018.
Source: https://lists.freedesktop.org/archives/dri-devel/2018-January/162869.html
Mais toujours proposé par Manjaro.
Donc, probablement, Manjaro et Plymouth ce sera sera encore là pour un bon moment ^^’.
Pour ma part sous Debian Sid le fichier /etc/mkinitcpio.conf est vide, je pense que tout cela est géré par systemd à présent (c’est une hypothèse)
Debian a un système totalement différent pour la génération d’images noyau. Cette page est dédié à ArchLinux et à sa variante (ici Manjaro)