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.
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 est conseillé de désactiver le SUB_MENU comme vu plus haut.
Dans un premier temps, on va récupérer le "ID" du système à toujours démarrer dans le fichier grub.cfg :
ou
Chez moi, la réponse est :
On repère donc l'ID des 2 systèmes :
- Fedora : gnulinux-simple-05b61d0e-d062-4044-84af-a95b94cccef2
- Windows 10 : osprober-chain-28B66CC5B66C94DA
On va donc définir dans /etc/default/grub la valeur de GRUB_DEFAULT :
On regénère ensuite le grub.cfg et le tour est joué.
A noter, une valeur vide de GRUB_DEFAULT fera que GRUB sélectionnera la première entrée de la liste.
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
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.
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 est conseillé de désactiver le SUB_MENU comme vu plus haut.
Dans un premier temps, on va récupérer le "ID" du système à toujours démarrer dans le fichier grub.cfg :
Code BASH :
grep ^menuentry /boot/grub/grub.cfg
ou
Code BASH :
grep ^menuentry /boot/grub2/grub.cfg
Chez moi, la réponse est :
Code TEXT :
menuentry 'Fedora 31 (Workstation Edition)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-simple-05b61d0e-d062-4044-84af-a95b94cccef2' { menuentry 'Windows 10 (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-28B66CC5B66C94DA' {
On repère donc l'ID des 2 systèmes :
- Fedora : gnulinux-simple-05b61d0e-d062-4044-84af-a95b94cccef2
- Windows 10 : osprober-chain-28B66CC5B66C94DA
On va donc définir dans /etc/default/grub la valeur de GRUB_DEFAULT :
Code BASH :
GRUB_DEFAULT=osprober-chain-28B66CC5B66C94DA
On regénère ensuite le grub.cfg et le tour est joué.
A noter, une valeur vide de GRUB_DEFAULT fera que GRUB sélectionnera la première entrée de la liste.
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 :
grub-editenv - set menu_auto_hide=1
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