Personnalisation de sa machine Linux – 1 chargeur de démarrage

Première partie de la personnalisation de sa machine Linux.

Introduction

Le chargeur de démarrage, c’est un tout petit programme. Lorsque l’on allume sa machine, elle exécute le BIOS ou l’UEFI. Ceux-ci sont enregistrés dans une puce de la carte mère et permettent d’initialiser et de configurer la machine avec tous ses périphériques (carte vidéo, carte son, disque dur, etc). Lorsque le BIOS ou l’UEFI ont finit leur travail, ils chargent depuis le disque dur (en général) un petit programme stocké en début de disque, c’est le chargeur de démarrage. On trouve principalement GRUB ou LILO pour Linux, ou le Bootloader pour M$ Windows.

A quoi sert ce petit programme ? Il est souvent masqué ou ignoré de l’utilisateur lorsqu’il ne l’est pas. Et il passe très vite. C’est lui qui va lister les systèmes d’exploitations installés sur le ou les disques durs et permettre à l’utilisateur de choisir lequel il souhaite utiliser. Souvent, il n’y a qu’un seul système d’exploitation, c’est la raison pour laquelle peu d’utilisateurs remarquent le chargeur de démarrage.

On utilise ici GRUB, le chargeur de démarrage installé par défaut sous Debian Linux.

Comme on travaille sur une clé USB, suivant les machines sur lesquelles on va démarrer, il ne sera pas toujours possible de disposer d’une bonne résolution d’écran au démarrage. On fixe par défaut une résolution d’écran assez petite pour minimiser les problèmes, soit du 640×480.

Configuration de base

Ici, il n’y a rien à installer, tout est déjà en place suite à l’installation de Linux.

La configuration de GRUB se trouve dans /boot/grub/grub.cfg . Ce fichier de configuration est régénéré à chaque mise à jour du noyau Linux. Il vaut mieux ne pas le modifier directement mais de modifier le fichier de configuration pour la régénération de la configuration de GRUB, c’est à dire le fichier /etc/default/grub .

Voici quelques valeurs par défaut que je vous propose, à adapter à vos besoins. Modifier /etc/default/grub :
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR="Terminator"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_OS_PROBER=true
GRUB_DISABLE_SUBMENU=y
GRUB_GFXMODE=640x480

Mode silencieux

Si on n’a pas de deuxième système d’exploitation, on peut tout simplement masquer l’affichage de GRUB au démarrage. Il sera toujours lancé mais en l’absence d’interaction de l’utilisateur il affichera un écran noir.

Pour cela, dans le fichier /etc/default/grub, ajouter/modifier les lignes :
GRUB_HIDDEN_TIMEOUT=2
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0

Cela fera attendre 2s avec un écran noir avant de démarrer le système d’exploitation par défaut (GRUB_DEFAULT).

Pour appliquer les changements, lancer :
update-grub2

Il peut être intéressant de combiner le mode silencieux avec une image de fond. Il suffit d’ajouter ce qui est fait dans le paragraphe suivant.

Mode avec image

Nous partons ici pour une résolution au démarrage de 640×480 en 32bits.

Créer une image de type PNG avec ces paramètres.
Si la résolution d’écran, et surtout le rapport largeur/hauteur, n’est pas parfaitement maîtrisée, l’image sera déformée. Dans ce cas tous les motifs et dessins avec une géométrie parfaite comme les ronds et carrés apparaîtrons déformés. Penser aussi que sur la partie en haut à droite il y a des informations qui vont s’afficher par dessus et que certains motifs de l’image peuvent perturber la lecture

Par exemple, mon image :

grub_starend
640x480x32

Enregistrer l’image dans /boot/grub/image.png .

Dans le fichier /etc/default/grub, ajouter les lignes :
GRUB_TERMINAL=gfxterm
GRUB_BACKGROUND=/boot/grub/image.png

Pour appliquer les changements, lancer :
update-grub2
update-initramfs -u

Image plus grande

Si vous êtes sur une machine fixe, il est tout à fait possible de mettre une image plus grande pour épater la galerie.

Il faut d’abord déterminer quelles sont les résolutions supportées au démarrage. Redémarrer et lorsque le menu de GRUB apparaît, taper la touche [c]. Puis taper la commande vbeinfo. Choisir la plus grande résolution avec le rapport largeur/hauteur de l’écran. Par exemple 1366x768x32.

Créer une image de la bonne résolution (1366×768) et du bon nombre de couleurs (32bits) et l’enregistrer dans /boot/grub/image.png .

Modifier dans /etc/default/grub la ligne :
GRUB_GFXMODE="1366x768x32 640x480x16"
GRUB_GFXPAYLOAD_LINUX="keep"

Pour appliquer les changements, lancer :
update-grub2

On peux même faire en sorte que plusieurs résolutions soient indiquées, la première utilisable le sera. Mettre en place une image à la plus grande résolution attendue. Modifier dans /etc/default/grub la ligne :
GRUB_GFXMODE="1920x1080x32 1366x768x32 640x480x16"

grub_starend_1920x1080
1920x1080x32

Personnalisation avancée

Le fichier de configuration de GRUB est généré à partir de la configuration dans /etc/default/grub . Il est possible de modifier le comportement de la génération du fichier de configuration de GRUB. Tout est fait par scripts shell. Ces scripts sont stockés dans /etc/grub.d/ . Il faut cependant faire attention lorsque l’on modifie un des scripts en place, il sont susceptibles d’être modifiés par une mise à jour du système. Il est donc préférable d’en ajouter de nouveaux avec le bon numéro pour que le nouveau script soit lancé au bon moment.

Il existe heureusement par défaut deux scripts qui sont personnalisables : 40_custom et 41_custom .
Le premier, 40_custom, est à votre entière disposition. Vous pouvez ajouter les options qui seront écrites dans le fichier de configuration de GRUB. Attention à faire en sorte que les options soient valides.

Le second, 41_custom, recopie le contenu du fichier /boot/grub/custom.cfg à la fin du fichier de configuration de GRUB. Cela permet d’ajouter des options de configuration sans trop se poser de question. On peut notamment s’en servir pour changer la couleur du menu de GRUB avec :
set color_normal=dark-gray/black
set menu_color_normal=white/black
set menu_color_highlight=red/white

Il est par exemple possible d’en ajouter un autre, 42_custom, à votre entière disposition. A chaque fois que le script affiche quelque chose, c’est en fait écrit dans le fichier de configuration de GRUB. Attention à faire en sorte qu’il n’écrive pas n’importe quoi et qu’il se termine bien.

Pour appliquer les changements, lancer :
update-grub2
update-initramfs -u

Liens

https://help.ubuntu.com/community/Grub2/Setup
http://www.gnu.org/software/grub/manual
https://wiki.debian.org/Grub/SplashImage
http://www.dedoimedo.com/computers/grub-2.html
http://www.linuxpedia.fr/doku.php/expert/grub2