GRUB : Configurer le démarrage du PC
Table des matières
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
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
Une fois modifié, on regénèrera le fichier grub.cfg avec :
ou
A adapter en fonction de votre distribution.
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 :
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.
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 :
Si vous souhaitez que tous les anciens noyaux soient listés dans GRUB, vous pouvez définir l'option GRUB_DISABLE_SUBMENU :
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) :
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 :
ou
Voici un exemple sur Ubuntu 22.04 :
Le nom d'une entrée, est par exemple pour la première ligne ceci :
Pour Windows, on repérera :
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 :
Ce qui donne
Pour définir ensuite l'entrée par défaut, on utilisera :
ou sur certaines distributions :
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) :
ou sur certaines distributions :
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 :
puis
ou sur certaines distributions :
puis
Pour réafficher GRUB, on supprimera cette variable ainsi :
puis
ou sur certaines distributions :
puis
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...
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 :
GRUB_TIMEOUT : Oui sinon, vous n'avez pas le temps de voir le thème
#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 :
ou
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
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
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...
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
#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