Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#26 02-10-2017 12:54:56

raleur
Membre
Inscription : 03-10-2014

Re : [résolu] grub entrées bizzarres

Debian Alain a écrit :

peux tu m'expliquer ce que tu as fait ?


Moi, je n'ai rien fait. C'est toi qui as effectué les opérations que j'ai indiquées.
Tu veux peut-être une explication de leur effet ?

Trois distributions GNU/Linux sont installées sur ta machine : Debian stretch, Debian buster et Ubuntu. Chacune a son propre chargeur GRUB avec son fichier de configuration /boot/grub/grub.cfg généré automatiquement par update-grub en tenant compte des options définies dans /etc/default/grub.
Bien sûr un seul de ces trois GRUB est lancé au démarrage de la machine. Avant c'était celui d'Ubuntu, maintenant c'est celui de strech mais cela ne change fondamentalement rien au problème car a priori ils se comportent tous les trois de façon similaire.

Le fichier grub.cfg généré par update-grub est composé de plusieurs sections, chacune étant générée par un des scripts présents dans /etc/grub.d.
La section 10_linux contient des entrées de menu pour les noyaux de la distribution courante.
Si os-prober est installé (ce qui est le cas par défaut), alors une section 30_os-prober est ajoutée. Par défaut os-prober est exécuté pour détecter les autres distributions et systèmes d'exploitation connus présents, et des entrées de menu correspondantes sont ajoutées dans la section. Si l'option GRUB_DISABLE_OS_PROBER=true est présente dans /etc/default/grub, alors os-prober n'est pas exécuté et la section est vide.

Je sais par expérience qu'update-grub utilise le contenu du fichier grub.cfg d'un autre système Linux détecté quand il existe pour générer les entrées de menu de cet autre système dans la section 30_os-prober de son propre fichier grub.cfg. Cela permet notamment de récupérer les paramètres passés au noyau. Par défaut, puisqu'os-prober est installé et GRUB_DISABLE_OS_PROBER=true est absent, l'update-grub de chaque distribution ajoute des entrées pour les deux autres distributions.

Mais voilà, dans certaines circonstances que je suis incapable de préciser (cela ne se produit pas systématiquement), update-grub semble s'embrouiller avec les entrées de menu de la section 30_os-prober du fichier grub.cfg des autres distributions. Normalement il ne devrait pas en tenir compte puisqu'elles concernent d'autres systèmes que celui auquel appartient le fichier grub.cfg, mais le fait est que parfois il le fait quand même. Le résultat est alors des choses bizarres comme des entrées de sous-menu supplémentaires utilisant le noyau d'une distribution avec la partition racine d'une autre distribution ou comportant plusieurs mentions "sur /dev/sdXY". Il y en a parfois des dizaines.

Mon idée pour corriger ce bazar était que si les fichiers grub.cfg des distributions dont le GRUB n'est pas lancé au démarrage n'avaient pas d'entrées de menu dans la section 30_os-prober, alors l'update-grub de la distribution dont le GRUB est lancé au démarrage ne serait plus embrouillé par ces entrées de menu. D'où la procédure pour que ces entrées ne soient plus présentes dans buster et Ubuntu et regénérer le fichier grub.cfg de stretch ensuite. C'est plus un contournement d'un bug qu'une véritable correction.

PS : Il vaut mieux éviter les traductions automatiques, comme on peut le constater encore ici elles ne sont pas très fiables.

Hors ligne

Pied de page des forums