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

Posts les plus consultés de ce blog

VirtualBox et USB

Je me suis longtemps battu pour que mes machines virtuelles Windows sous VirtualBox bénéficient d'un support correctement exploitable de l'USB. Bien que je faisais tout ce qu'il fallait faire, impossible de brancher le moindre périphérique USB sur une machine VirtualBox ayant Windows (toutes versions confondues). Je m'étais même tourné vers VMware Player pour avoir une machine virtuelle Windows pleinement exploitable pour mes (rares) besoins Windows de travail !

Bizarrement, ces difficultés n'existent pas avec une quelconque distribution GNU/Linux virtualisée (sauf cas technique bien spécifique à la distribution).

Notez que tous mes essais partent depuis une distribution GNU/Linux (Debian 8 Jessie, Mageia 5, Fedora 25, Manjaro). Pour l'anecdote, naviguant plus ou moins entre ces distributions, j'utilisais la version officielle de VirtualBox sous Mageia tandis que c'était la version fournie par le gestionnaire de paquet pour les autres. Il est donc possi…

WPS Office - WPS Office contre LibreOffice

En mettant en place toute la logithèque nécessaire sur un PC portable neuf, j'ai découvert la suite WPS Office préinstallée. En fait, j'ai découvert que cette suite était aussi disponible pour PC, dont Windows ET GNU/Linux, puisqu'elle est déjà disponible gratuitement pour Android et iOS. Cette suite propose un tableur (Spreadsheets), un traitement de texte (Writer) et une application de présentation (Presentation). L'interface se rapproche beaucoup (voire totalement) de l'interface actuelle de Microsoft Office (exit les menus pour faire place à des onglets thématiques). Voir les liens en bas.

Cette suite est proposé par la société chinoise Beijing Kingsoft Office Software Co sous licence propriétaire.

Les formats proposés sont les formats Microsoft Office et l'export en PDF mais aucunement les formats LibreOffice OpenDocument (ODF).

J'ai poussé la curiosité à la tester brièvement dans deux machines virtuelles, une sous Windows 10 et l'autre sous Mageia 5…

La méteo dans un terminal

Si vous voulez la météo, il existe des tas d'applications graphiques, des extensions dédiées pour divers systèmes d'exploitations et pour divers environnements de bureaux. sans oublier les multiples sites internet.
1 - La météo dans la console Il est également possible d'avoir la météo dans une console. Oui, j'oubliais ! L'astuce est plutôt pour les utilisateur GNU/Linux, BSD, Mac. Brefs, les systèmes d'exploitations qui offrent un terminal. ... On me dit dans l'oreillette que Windows 10 a désormais un "vrai" terminal sauce Linux. Je ne le connais pas, donc m'abstiens. Par contre, pour Windows, vous aurez en fin d'article la variante pour vous ;-)

Revenons à notre terminal. Pas besoin des droits root.

Pour la météo de Toulouse :
$ curl wttr.in/Toulouse
Pour la météo de Brest
$ curl wttr.in/Brest
Cas particulier pour les noms composés :
$ curl wttr.in/Le+Havre
Vous pouvez aussi saisir les coordonnées GPS. Si vous ne les avez pas, vous pouvez l…