Accéder au contenu principal

Grub2 - Personnalisation

Avec plusieurs systèmes d'exploitation, le menu de sélection de Grub2 peut s'avérer pénible, voire bordélique. Il faut soit accepter tel quel ce menu, soit le modifier. La modification peut aller plus ou moins loin. Cependant, mieux vaut être très vigilant en le modifiant.

Pour rappel, Grub2 est installé sur la racine du disque maître, généralement SDA. Ensuite à chaque mise à jour d'un noyau, de la distribution GNU/Linux principale ou optionnelle, ou après l'ajout (ou la suppression) d'un autre système, la commande update-grub (sous droits root) met à jour le fichier de configuration de Grub2 (/boot/grub2/grub.cfg et /boot/grub/grub.cfg pour Debian et Ubuntu). C'est ce fichier grub.cfg qui est appelé et lu pour proposer les systèmes d'exploitation. Proposition affichant une sorte de liste avec en tête de liste le système principal puis les options avancées, les autres systèmes venant ensuite dessous.

Modifier ce fichier grub.cfg n'est pas recommandé. Mieux vaux faire une copie de sécurité avant toute modification grâce à la commande suivante (sous root) :
# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg-bak-date

Je vais donc exposer ici les griefs contre le fichier grub.cfg généré automatiquement, puis ce qu'il est possible de modifier et comment. Viendra enfin la solution de la personnalisation de grub.cfg via le fichier 40_custom.

1 - Les reproches de grub.cfg

Tel quel, le rendu de grub.cfg n'est pas obligatoirement plaisant.

1.1 - 2 versions de Mageia en cohabitation

Si 2 versions de Mageia sont installées (une stable et la cauldron), le fichier de configuration de grub crée une sorte de doublon. En plus des noyaux de la version de base, sont également inclus les noyaux de la seconde version dans les options avancées. Ainsi, avec une Mageia 5 sur SDA2 et une Mageia 4 (ou Cauldron) sur SDB1, on trouve des lignes notées "(sur /dev/sda2) (sur /dev/sdb1) dans les options avancées.

Pour la seconde version installée de Mageia, donc une Mageia optionnelle, les noyaux sont listés, dans les options avancées, du plus récent en tête de liste (en haut) au moins récent et ces noyaux indiqués clairement. Ensuite, viennent les lignes doublonnant avec la version Mageia principale.

1.2 Fedora

Si Fedora est installé en plus d'autre(s) distribution(s), l'installation de Grub2 met systématiquement en tête de liste le noyau de secours ("rescue") ou de débogage ("+debug"), ce qui peut nuire ensuite au confort d'utilisation puisque la taille de l'écran n'est plus maximale. Pour rappel, le pilote graphique est alors générique avec les modes "rescue" et/ou "debug". Il faut donc aller chercher le bon noyau dans les options avancées.

De plus, les options avancées ne mentionnent pas la version du noyau appelé. Il faut sélectionner au hasard. Cependant, la règle semble alors être de placer en tête de liste des options avancées (en haut) l'option rescue (ou debug) puis les autres noyau pour avoir enfin le tout dernier noyau (le plus récent) en fin (en bas).

Par contre, bizarrement, le fichier généré sous Fedora met en évidence les versions de noyaux de Fedora et en plaçant en tête de liste les noyaux principaux puis en dessous les noyaux de secours.

1.3 - Debian et Ubuntu

Pour Debian et Ubuntu (toujours en tandem avec une autre distribution), c'est l'inverse du cas Fedora. Grub2 indique correctement les noyaux et place en tête de liste (en haut) les noyaux les plus récents pour mettre les autres au milieu et terminer par le mode "recovery" (rescue) puis "memtest".

2 - Modification basique de grub.cfg

Pour rappel, modifier ce fichier grub.cfg n'est pas recommandé. Mieux vaux faire une copie de sécurité avant toute modification grâce à la commande suivante (sous root) :
# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg-bak-date

Pour modifier grub.cfg, le plus simple est d'utiliser Grub Customizer. Certains passeront par un éditeur de texte comme nano, kate, gedit, leafpad ... etc .. Toujours sous root.

Dans ce cas de figure, je me contente seulement de renommer au besoin la version du système d'exploitation et de mettre en valeur la version du noyau appelé dans les options avancées. Inutile de se compliquer la tâche, ni des  risques inutiles à corrompre la structure du fichier.

Exemples :

1) Renommage du système :
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Mageia 5'

Devient
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Mageia SDB1'

2) Mise en valeur du noyau :
menuentry "Fedora 23 (Twenty Three) (sur /dev/sda3)
        ... etc  ...
        initrd /boot/initramfs-4.3.3-300.fc23.x86_64.img
Devient
menuentry "Fedora SDA3 (4.3.3-300.fc23.x86_64)"
        ... etc  ...
        initrd /boot/initramfs-4.3.3-300.fc23.x86_64.img

La règle est de rester sur des modifications absolument minimales pour ne pas prendre de risque.

3 - Installation de Grub2 dans SDXn

Installons pour chaque distribution GNU/Linux Grub2 dans la racine de la partition d'installation de la distribution, soit SDXn (X représentant le disque (SDA, SDB ...) et n le numéro de partition. Tout se fait avec les droits root.

Cette opération permettra de chaîner correctement les divers systèmes par la suite.

3.1 - Mageia secondaire

# grub2-install --force /dev/sdb1
puis
# update-grub

3.2 - Debian, Ubuntu secondaire

# grub-install --force /dev/sda5
puis
# update-grub

3.3 - Fedora secondaire

# grub2-install --force /dev/sda3
puis
# grub2-mkconfig -o /boot/grub2/grub.cfg

4 - Modification de grub.cfg dans SDX

Pour rappel, modifier ce fichier grub.cfg n'est pas recommandé. Mieux vaux faire une copie de sécurité avant toute modification grâce à la commande suivante (sous root) :
# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg-bak-date

Pour modifier grub.cfg, certains passeront par un éditeur de texte comme nano, kate, gedit, leafpad .... Toujours sous root.

Nous allons modifier le fichier grub.cfg principal. C'est le Grub2 principal que nous modifions, c'est à dire le Grub2 utilisé par la distribution GNU/Linux principale et qui est installé sur la racine du disque principal, soit SDA en toute logique.

Ceci se fait par étape.

4.1 - Modifier /etc/default/grub

Il faut éditer le fichier /etc/default/grub, sous droits root.

Passer de "false" à "true" la ligne suivante
GRUB_DISABLE_OS_PROBER="true"

Ceci désactive la recherche d'autres systèmes d'exploitation lors de la mise à jour de grub.cfg.

4.2 - Modifier /etc/grub.d/40_custom

Il faut maintenant éditer le fichier /etc/grub.d/40_custom, sous droits root. Si ce fichier n'existe pas, créez-le.

Ajouter les lignes suivantes, sous root :

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
#
# Windows SDA1
menuentry 'Windows 7 SDA1' {
set root='hd0,msdos1'
chainloader +1
}
# Mageia Cauldron SDA2
menuentry 'Mageia Cauldron SDA2' {
set root='hd0,msdos2'
chainloader +1
}
# Fedora SDA3
menuentry 'Fedora SDA3' {
set root='hd0,msdos3'
chainloader +1
}
# Debian SDA5
menuentry 'Debian SDA5' {
set root='hd0,msdos5'
chainloader +1
}
# Ubuntu SDA8
menuentry 'Ubuntu SDA8' {
set root='hd0,msdos8'
chainloader +1
}
# Mageia SDA12
menuentry 'Mageia Tests SDA12' {
set root='hd0,msdos12'
chainloader +1
}

A adapter selon la situation, évidemment.

Note 1 : Notation selon le système de partition :

* Pour un partitionnement MSDOS : set root='hd0,msdos1'
* Pour un partitionnement GPT : set root='hd0,gpt1'

Note 2 : Notations fonctionnelles :

* set root='hd0,msdos1'
* set root=(hd0,1)

Note 3 : La notation selon l'UUID ne fonctionne passe. Exemples :

* set root=UUID=9ace6ad2-4142-a6a3-15b6b5a23ed5
* set root=UUID='9ace6ad2-4142-a6a3-15b6b5a23ed5'
* set root=UUID="9ace6ad2-4142-a6a3-15b6b5a23ed5"

Si, cas peu probable, ce fichier 40_custom doit être créé, celui-ci doit être exécutable. Soit, sous root :
# chmod +x /etc/grub.d/40_custom

4.3 - Regénérer le fichier grub.cfg

Sous root, en console, :
# update-grub

Notez que sous Fedora, ce sera la ligne suivante :
# grub2-mkconfig -o /boot/grub2/grub.cfg

Si tout se passe bien, la console doit lister les seuls noyaux du système principal. Une édition (via nano ....) de grub.cfg doit afficher :
  • une rubrique 10_linux_proxy se référant au système d'exploitation principal (avec ses divers noyaux) et que nous ne toucherons pas
  • une rubrique 30_os-prober désormais vide (qui contenait auparavant les références vers les divers systèmes)
  • une rubrique 40_custom complétée avec les éléments que nous venons de noter plus haut dans le fichier 40_custom (chap. 4.2)

5 - Validation

Il ne reste plus qu'a valider en redémarrant le système afin de démarrer chacun des divers systèmes d'exploitation.

Dans les deux cas suivants, il faudra démarrer à l'aide de SuperGrub (cf chap 6) le système afin d'installer Grub2 dans la partition racine comme indiqué au chapitre 3.
  • Si l'erreur signale "invalid signature", Grub2 n'a pas été installé.
  • Si l'erreur mentionne "GNU GRUB version 0.97", vous avez installé Grub dans sa version dite "Legacy" (soit la version Grub 1) et votre Grub2 ne sait pas voir et interpréter ce sélecteur de système d'exploitation.
Si après avoir réinstallé Grub2 correctement dans la partition racine correspondante, une erreur persiste, revérifiez dans le fichier 40_custom la notation des disques et/ou partitions.

Si la personnalisation est fonctionnelle, vous n'aurez plus à mettre à jour grub.cfg. A chaque mise à jour de noyau d'une distribution GNU/Linux secondaire, ce sera son propre fichier grub.cfg qui sera mis à jour automatiquement. Or, désormais, le Grub2 principal appellera par chaînage le fichier grub.cfg de la distribution secondaire sans devoir pointer vers un noyau précisé. Gain de temps et simplification !

6 - SuperGrub

Veuillez noter le lien suivant :
http://www.supergrubdisk.org/

En cas de problème, cet utilitaire gratuit, et open-source, permet de détecter tous les systèmes d'exploitation installés afin de démarrer dessus.

Voir aussi la FAQ suivante pour davantage d'informations montrant le mode d'utilisation :
http://www.commentcamarche.net/faq/15961-super-grub-disk-live-cd

7 - Lien annexe

Une excellente page fort complète sur Grub2 (y compris comment paramétrer, dépanner ...) :
http://www.linuxpedia.fr/doku.php/expert/grub2#premier_contact_avec_la_configuration

Commentaires

Posts les plus consultés de ce blog

Tablette Samsung Galaxy tab 2 10.1 - Episode 2

Je tente toujours de recycler ma vieille tablette. Il y a quelques jours, j'avais tenté d'installer LineageOS vainement . Je retente encore. Plutôt que de passer par une machine virtuelle (et risquer les possibles barrages), je suis passé par un véritable système Windows. 1- Le root J'ai suivi ce tutoriel pour rooter ma tablette.  L'opération s'est terminé correctement. A l'issue de cette manipulation, après un redémarrage de la machine, j'ai installé Root Checker Basic (plusieurs versions existent venant de divers programmeurs) qui, après vérification, me dit que l'appareil .... n'est pas rooté ! Encore ?! J'installe donc SuperSU pour installer le root et redémarre. Après ce nouveau redémarrage, je valide l'autorisation demandée par SuperSU puis relance une vérification avec Root Checker qui m'informe que ..... l'appareil est rooté. Ah ! Enfin ! 2 - Sauvegarder Depuis le Store, j'ai installé TWRP pour faire les s

Recyclage de matéreil Android

Ma vieille tablette Samsung Galaxy Tab 2 10.1 acquise en 2012 était devenue poussive. Depuis longtemps d'ailleurs ! Ayant reçu la nouvelle tablette, j'ai voulu recycler l'ancienne. Au départ, je pensais remplacer Android par Lineage OS. Cette vieille tablette est référencée compatible avec Lineage OS tandis que quelques tutoriaux trainent ici et là. Passer sur Lineage OS : facile ou pas dans mon cas ? ... Pas encore gagné ! Une tablette... Je me sers essentiellement de la tablette pour regarder 4 conneries "trucs" divers sur le Web et, surtout, lire. De la lecture de romans (polars, SF, romans à base historique, action, techno-trillers ...) et autres études variées (sur l'Histoire, la géopolitique ...). Mais aussi des BD via un abonnement chez Izneo et des achats chez comiXology . Il est évidemment possible de lire des BD aux formats CBZ ou CBR (qui ne sont que des archives ZIP ou RAR dont on aura modifié l'extension) grâce à diverses applications

Mageia 8 - Retour

Mageia 8 vient très récemment de sortir. L'occasion de mettre à niveau mes machines. Je dispose d'un PC fixe avec 2 installations Mageia (dont une de "production" et l'autre à des fins de test) ainsi qu'un PC portable MSI.  1- PC fixe Sur ma tour faite sur mesure et datant de 2012, la mise à niveau de Mageia 7 vers 8 s'est mal passée. Mageia 7 était préalablement bien à jour. J'avais suivi le wiki pour faire une mise à niveau en ligne avec urpmi. Je précise que : Je n'ai aucune application compilée sur mesure (que du RPM). Je n'ai aucune application en 32 bits. Je n'ai utilisé qu'un minimum de modules externes pour personnaliser Plasma. J'ai un boot legacy. Mon erreur a été très probablement de ne pas simuler préalablement l'installation (donc aussi de mieux lire attentivement les notes de version !) ce qui m'aurait permis de constater à temps que certains paquets ne pouvaient être installés et mis à niv