Amorçage, démarrage du système

GRUB : Configurer le démarrage du PC

Table des matières

Introduction



Voici quelques astuces de paramétrage de GRUB 2.
C'est un peu en vrac mais bon !
La doc complète se trouve sur le site officiel : https://www.gnu.org/software/grub/manual/grub/html_node/Simple-configuration.html

Prérequis



Evidemment, pour modifier le chargeur d'amorçage, il faudra les droits root.

Si on n'a pas le mot de passe root, on se connectera en root avec :
Code BASH :
sudo -i


Configurer Grub



Le fichier /boot/grub/grub.cfg (parfois situé dans /boot/grub2) est généré automatiquement par la commande grub-mkconfig (ou grub2-mkconfig).
Il n'est pas à modifier manuellement.
Pour configurer le GRUB, on va donc éditer le fichier /etc/default/grub

En graphique ou en ligne de commande :
Code BASH :
nano /etc/default/grub


Une fois modifié, on regénèrera le fichier grub.cfg avec :

Code BASH :
grub-mkconfig -o /boot/grub/grub.cfg

ou
Code BASH :
grub2-mkconfig -o /boot/grub2/grub.cfg


A adapter en fonction de votre distribution.

Quelques modifications possibles dans GRUB



Ajouter des options au boot



Pour ajouter des options au kernel, pour fixer un paramètre, modifiez la ligne GRUB_CMDLINE_LINUX. Par exemple si je veux ajouter l'option usbcore.autosuspend=-1 :

Code TEXT :
GRUB_CMDLINE_LINUX=" usbcore.autosuspend=-1"



Modifier le temps d'affichage du menu



On peut modifier le temps d'affichage de la liste des systèmes à lancer.

Pour modifier ce timer, modifier la valeur de GRUB_TIMEOUT=. La valeur à indiquer est en secondes.
Une valeur de 0 bootera directement l'entrée par défaut.
Une valeur de -1 laissera affiché la liste jusqu’à ce que l'utilisateur indique son choix.

Garder en mémoire la dernière entrée utilisée



Dans le cas d'un dualboot, on aura dans le menu GRUB plusieurs entrées disponibles (Par exemple Ubuntu et Windows Loader dans le cas d'un dual boot Ubuntu/Windows).

Pour garder en mémoire sur GRUB la dernière entrée utilisée, on va modifier les valeurs suivantes :

Code TEXT :
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true


Activer ou désactiver le sous Menu



Si vous souhaitez que tous les anciens noyaux soient listés dans GRUB, vous pouvez définir l'option GRUB_DISABLE_SUBMENU :

Code TEXT :
GRUB_DISABLE_SUBMENU=true


Si vous voulez désactiver cette fonction, pour par exemple simplifier l'affichage en cas de dual boot, commentez la ligne (ne mettez pas à false) :

Code TEXT :
#GRUB_DISABLE_SUBMENU=true


Définir une entrée par défaut



Si vous avez par exemple Linux et Windows sur le même système, et que vous voulez définir le choix par défaut, sur Windows par exemple, voici comment faire.

Il faut respecter 2 conditions :
1- Désactiver le SUBMENU comme vu plus haut si une entrée qu'on veut mettre par défaut se trouve dedans.
2- Configurer GRUB_DEFAULT=saved

Dans un premier temps, on va récupérer les noms des entrées le fichier grub.cfg :
Code BASH :
grep menuentry /boot/grub/grub.cfg

ou
Code BASH :
grep menuentry /boot/grub2/grub.cfg


Voici un exemple sur Ubuntu 22.04 :
Code TEXT :
menuentry 'Ubuntu, with Linux 6.5.0-41-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.5.0-41-generic-advanced-881a9bf8-d603-4d90-818e-4f0e9e368425' {
menuentry 'Ubuntu, with Linux 6.5.0-41-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.5.0-41-generic-recovery-881a9bf8-d603-4d90-818e-4f0e9e368425' {
menuentry 'Ubuntu, with Linux 6.5.0-28-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.5.0-28-generic-advanced-881a9bf8-d603-4d90-818e-4f0e9e368425' {
menuentry 'Ubuntu, with Linux 6.5.0-28-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.5.0-28-generic-recovery-881a9bf8-d603-4d90-818e-4f0e9e368425' {
menuentry 'Ubuntu, with Linux 5.15.0-113-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-113-generic-advanced-881a9bf8-d603-4d90-818e-4f0e9e368425' {
menuentry 'Ubuntu, with Linux 5.15.0-113-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-113-generic-recovery-881a9bf8-d603-4d90-818e-4f0e9e368425' {
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-28B66CC5B66C94DA' {


Le nom d'une entrée, est par exemple pour la première ligne ceci :
Code TEXT :
Ubuntu, with Linux 6.5.0-41-generic


Pour Windows, on repérera :
Code TEXT :
Windows Boot Manager (on /dev/sda1)


Si vous n'avez pas les entrées "Linux" sur les distributions Fedora Linux, Red Hat Enterprise Linux et dérivées, vous pouvez utiliser grubby :
Code BASH :
grubby --info=ALL


Ce qui donne
Code :
index=0
kernel="/boot/vmlinuz-6.9.7-200.fc40.x86_64"
args="ro rhgb quiet"
root="UUID=981c03ab-66b4-4ae4-93a4-ff5adf7da8f6"
initrd="/boot/initramfs-6.9.7-200.fc40.x86_64.img"
title="Fedora Linux (6.9.7-200.fc40.x86_64) 40 (Workstation Edition)"
id="61f816fb22924115a701afe1849f4aa2-6.9.7-200.fc40.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-61f816fb22924115a701afe1849f4aa2"
args="ro rhgb quiet"
root="UUID=981c03ab-66b4-4ae4-93a4-ff5adf7da8f6"
initrd="/boot/initramfs-0-rescue-61f816fb22924115a701afe1849f4aa2.img"
title="Fedora Linux (0-rescue-61f816fb22924115a701afe1849f4aa2) 40 (Workstation Edition)"
id="61f816fb22924115a701afe1849f4aa2-0-rescue"


Pour définir ensuite l'entrée par défaut, on utilisera :
Code BASH :
grub-set-default 'Windows Boot Manager (on /dev/sda1)'

ou sur certaines distributions :
Code BASH :
grub2-set-default 'Windows Boot Manager (on /dev/sda1)'


On peut aussi utiliser un numéro d'entrée, en commençant par 0 pour la première ligne, puis 1 pour la deuxième, et ainsi de suite.

Pour réinitialiser à la première ligne (paramétrage par défaut) :
Code BASH :
grub-set-default 0

ou sur certaines distributions :
Code BASH :
grub2-set-default 0



Masquer le menu de GRUB



Si vous voulez masquer GRUB 2, parce que vous utilisez toujours la première entrée, vous pouvez le faire en définissant une variable menu_auto_hide à 1 :

Code BASH :
grub-editenv - set menu_auto_hide=1

puis
Code BASH :
grub-mkconfig -o /boot/grub/grub.cfg


ou sur certaines distributions :

Code BASH :
grub2-editenv - set menu_auto_hide=1

puis
Code BASH :
grub2-mkconfig -o /boot/grub2/grub.cfg



Pour réafficher GRUB, on supprimera cette variable ainsi :

Code BASH :
grub-editenv - unset menu_auto_hide

puis
Code BASH :
grub-mkconfig -o /boot/grub/grub.cfg


ou sur certaines distributions :

Code BASH :
grub2-editenv - unset menu_auto_hide

puis
Code BASH :
grub2-mkconfig -o /boot/grub2/grub.cfg



Ajouter un thème à GRUB



C'est une demande que j'ai souvent.
Je met l'astuce ici, cependant, je n'ai pas trouvé d'utilité à décorer GRUB, on le voit si peu de temps...

Evidemment, si l'affichage de GRUB est désactivé, vous ne verrez pas le thème, reportez-vous au chapitre Masquer le menu de GRUB

Dans un premier temps, récupérez un thème qui vous plait sur le site https://www.gnome-look.org section GRUB THEMES : https://www.gnome-look.org/browse?cat=109&ord=latest

Pour cette démo, j'ai pris Darkmatter ( https://www.gnome-look.org/p/1603282 ) et plus particulièrement le fedora-1080p.

Téléchargez l'archive et décompressez-là.
Prenez le dossier du thème et déposez-le dans /boot/grub/themes ou /boot/grub2/themes.

Ensuite, éditez le fichier /etc/default/grub. Voici les variables à vérifier/modifier pour que le thème précédemment utilisé fonctionne :

Code TEXT :
GRUB_TIMEOUT=5
#GRUB_TERMINAL_OUTPUT="console"
GRUB_ENABLE_BLSCFG=false
GRUB_THEME="/boot/grub/themes/darkmatter/theme.txt"


GRUB_TIMEOUT : Oui sinon, vous n'avez pas le temps de voir le thème :D
#GRUB_TERMINAL_OUTPUT : doit être commenté, sinon, évidemment, GRUB s'affiche en mode terminal.
GRUB_ENABLE_BLSCFG=false : doit bien être positionné sur false si la variable existait et est sur true. Sinon, cela fait un conflit.
GRUB_THEME : Chemin du fichier .txt du thème, souvent nommé theme.txt et placé dans le dossier avec toutes les images.

Une fois modifié, on regénèrera le fichier grub.cfg avec :

Code BASH :
grub-mkconfig -o /boot/grub/grub.cfg

ou
Code BASH :
grub2-mkconfig -o /boot/grub2/grub.cfg
Cette page a été vue 37240 fois