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.
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.
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.
# 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 :
Devient
2) Mise en valeur du noyau :
La règle est de rester sur des modifications absolument minimales pour ne pas prendre de risque.
Cette opération permettra de chaîner correctement les divers systèmes par la suite.
puis
# update-grub
puis
# update-grub
puis
# grub2-mkconfig -o /boot/grub2/grub.cfg
# 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.
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.
Ajouter les lignes suivantes, sous root :
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
# 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 :
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 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 !
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
http://www.linuxpedia.fr/doku.php/expert/grub2#premier_contact_avec_la_configuration
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 ...Devient
initrd /boot/initramfs-4.3.3-300.fc23.x86_64.img
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/sdb1puis
# update-grub
3.2 - Debian, Ubuntu secondaire
# grub-install --force /dev/sda5puis
# update-grub
3.3 - Fedora secondaire
# grub2-install --force /dev/sda3puis
# 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 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
Enregistrer un commentaire