Remettre le fichier GRUB =?utf-8?q?Í ?= neuf

8 réponses
Avatar
ajh-valmer
Bonjour,

Mon fichier "grub.cfg" fait des kilomètres de hauteur,
Í  cause de centaines de lignes redondantes et totalement inutiles,
sans compter des UUID différents dans plusieurs menuentruy d'une même partition.

Comment recréer un nouveau fichier GRUB "grub.cfg",
qui ne reprend que les menuentry des partitions avec
les différentes versions de kernel dans /boot/ et sans erreurs ?
(config- , initrd.img- , System.map-)

Merci.

A. Valmer

8 réponses

Avatar
Sébastien NOBILI
Bonjour,
Le 2022-02-04 12:48, ajh-valmer a écrit :
Mon fichier "grub.cfg" fait des kilomètres de hauteur,
Í  cause de centaines de lignes redondantes et totalement inutiles,
sans compter des UUID différents dans plusieurs menuentruy d'une même
partition.
Comment recréer un nouveau fichier GRUB "grub.cfg",

Le fichier `grub.cfg` est autogénéré par la commande `update-grub`. Elle
est lancée
Í  chaque installation/mise Í  jour du noyau.
Normalement on n'y trouve que ce qui est présent sur le système.
Peut-être que tu as des choses pas standard dans le fichier
`/etc/default/grub`
ou le dossier `/etc/default/grub.d/`…
Sébastien
Avatar
Marc Chantreux
Normalement on n'y trouve que ce qui est présent sur le système.

ou alors tu te traines plein de vieux kernels parce que tu n'as jamais
fais de apt autoremove ?
cordialement,
marc
Avatar
ajh-valmer
On Friday 04 February 2022 14:18:51 Marc Chantreux wrote:
Normalement on n'y trouve que ce qui est présent sur le système.

ou alors tu te traines plein de vieux kernels parce que tu n'as jamais
fais de apt autoremove ?

apt autoremove
0 mis Í  jour, 0 nouvellement installés, 0 Í  enlever et 0 non mis Í  jour.
Ma Debian est très bien tenue :-)
Avatar
ajh-valmer
On Friday 04 February 2022 12:57:54 Sébastien NOBILI wrote:
Le 2022-02-04 12:48, ajh-valmer a écrit :
Mon fichier "grub.cfg" fait des kilomètres de hauteur,
Í  cause de centaines de lignes redondantes et totalement inutiles,
sans compter des UUID différents dans plusieurs menuentruy d'une même
partition.
Comment recréer un nouveau fichier GRUB "grub.cfg",

Le fichier `grub.cfg` est autogénéré par la commande `update-grub`. Elle
est lancée Í  chaque installation/mise Í  jour du noyau.
Normalement on n'y trouve que ce qui est présent sur le système.
Peut-être que tu as des choses pas standard dans le fichier
`/etc/default/grub` ou le dossier `/etc/default/grub.d/`…

"Normarlement..." :-)
mais in fine, le grub.cfg généré ne peut fonctionner (cf ci-dessus).
Il doit utiliser des infos mémorisées (mais ou, dans quel fichier ?)
que update-grub ajoute dans grub.cfg, d'o͹ ce fichier ultra-long
Í  infos redondantes et bourré d'erreurs d'UUID, entre autres.
Avatar
didier gaumet
Le vendredi 04 février 2022 Í  14:34 +0100, ajh-valmer a écrit :
"Normarlement..." :-)
mais in fine, le grub.cfg généré ne peut fonctionner (cf ci-dessus).
Il doit utiliser des infos mémorisées (mais ou, dans quel fichier ?)
que update-grub ajoute dans grub.cfg, d'o͹ ce fichier ultra-long
Í  infos redondantes et bourré d'erreurs d'UUID, entre autres.

Je pense que tu peux tomber sur ce genre de problèmes quand tu fais du
multiboot:
1) vérifier que tu n'as pas par le passé paramétré Í  la main des trucs
dans /etc/grub.d/40_custom et /etc/grub.d/41_custom. Faire le ménage Í 
l'intérieur de ces fichiers si nécessaire. vérifier que tu n'as pas
créé d'autres fichiers dans ce répertoire. Chez moi y a ça, en
standard:
:~$ ls /etc/grub.d
00_header 10_linux 30_os-prober 40_custom README
05_debian_theme 20_linux_xen 30_uefi-firmware 41_custom
2) si tu fais du multiboot avec plusieurs distros Linux en laissant
chacune installer son propre bootloader (Grub ou autre...), tu peux
probablement te retrouver avec des dépendances circulaires (Grub A de
distro A qui propose de lancer Grub B de distro B qui propose de lancer
Grub A de distro A qui...etc...). 
La détection automatique se fait avec os-prober et dans ce cas il vaut
probablement mieux,
soit:
a) dans /etc/default/grub utiliser l'option
GRUB_DISABLE_OS_PROBER="yes"
pour désactiver complètement la génération par Grub d'entrées de menu
pour les OS autres que celui o͹ Grub est installé.
soit
b) plus finement, pour ne déscativer que certains OS, dans
/etc/default/grub utiliser l'option
GRUB_OS_PROBER_SKIP_LIST="UUID1 UUID2 ... UUIDn" pour du BIOS ou de
l'UEFI
ou
GRUB_OS_PROBER_SKIP_LIST=" ...
" pour de l'UEFI chainloader
ceci pour chaque UUID de partition pour laquelle tu ne veux pas
générer automatiquement une entrée Grub
je ne me rappelle plus bien mais le efifile doit être le fichier EFI
appelé pour booter, donc par exemple (Debian en UEFI et Secure Boot):
/boot/efi/EFI/debian/shimx64.efi
Avatar
ajh-valmer
On Friday 04 February 2022 15:18:19 didier gaumet wrote:
Je pense que tu peux tomber sur ce genre de problèmes quand tu fais du
multiboot:
1) vérifier que tu n'as pas par le passé paramétré Í  la main des trucs
dans /etc/grub.d/40_custom et /etc/grub.d/41_custom. Faire le ménage Í 
l'intérieur de ces fichiers si nécessaire. vérifier que tu n'as pas
créé d'autres fichiers dans ce répertoire. Chez moi y a ça, en
standard:
:~$ ls /etc/grub.d
00_header 10_linux 30_os-prober 40_custom README
05_debian_theme 20_linux_xen 30_uefi-firmware 41_custom

Aah, enfin une aise positive... :-)
Est-ce que je peux ou dois effacer le contenu de "/etc/grub.d" ?
car faire le ménage dans les fichiers de /etc/grub.d/ = pas facile.
a) dans /etc/default/grub utiliser l'option
GRUB_DISABLE_OS_PROBER="yes"
pour désactiver complètement la génération par Grub d'entrées de menu
pour les OS autres que celui o͹ Grub est installé.
soit
b) plus finement, pour ne déscativer que certains OS, dans
/etc/default/grub utiliser l'option
GRUB_OS_PROBER_SKIP_LIST="UUID1 UUID2 ... UUIDn" pour du BIOS ou de
l'UEFI
ou
GRUB_OS_PROBER_SKIP_LIST=" ...
" pour de l'UEFI chainloader
ceci pour chaque UUID de partition pour laquelle tu ne veux pas
générer automatiquement une entrée Grub
je ne me rappelle plus bien mais le efifile doit être le fichier EFI
appelé pour booter, donc par exemple (Debian en UEFI et Secure Boot):
/boot/efi/EFI/debian/shimx64.efi

Merci pour ces configurations qui m'aident, je les fais.
Mais je ne m'explique pas pourquoi grub créé des erreurs de UUID.
Avatar
didier gaumet
Le vendredi 04 février 2022 Í  22:47 +0100, ajh-valmer a écrit :
[...]
Est-ce que je peux ou dois effacer le contenu de "/etc/grub.d" ?
car faire le ménage dans les fichiers de /etc/grub.d/ = pas facile.

surtout pas! ce sont des fichiers indispensables au fonctionnement de
Grub2
le contenu des fichiers 40_custom et 41_custom doit être le suivant (Í 
modifier si ce n'est pas le cas):
:~$ cat /etc/grub.d/40_custom
#!/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.
:~$ cat /etc/grub.d/41_custom
#!/bin/sh
cat <<EOF
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
EOF
Merci pour ces configurations qui m'aident, je les fais.
Mais je ne m'explique pas pourquoi grub créé des erreurs de UUID.

les UUID sont propres Í  une installation. Lorsque tu as plusieurs OS
Linux installés, même si chacun utilise les UUID pour identifier les
partitions, ce sont des UUID différents dans chaque OS pour une même
partition. Os-prober va alors potentiellement trouver des dépendances
circulaires, compliquées par des UUID valides dans un OS et pas dans un
autre
Personnellement, ça fait longtemps que je n'ai pas fait de multiboot
multi-linux mais j'installais un seul Linux avec un bootloader (Grub)
et lorsque l'installateur des autres Linux concernés le permettait, je
n'installais pas de bootloader pour ceux-ci.
=> le plus simple pour toi
- dans /etc/default/grub tu mets un GRUB_DISABLE_OS_PROBER="yes" et pas
de GRUB_OS_PROBER_SKIP_LIST
- ensuite tu fais un sudo update-grub
et ça devrait suffire
Avatar
Pierre Meurisse
Bonjour Í  tous,
j'ai plusieurs systèmes sur toutes mes machines et je n'ai pas eu
d'ennuis particuliers avec grub.
Il me semble important d'installer grub sur _un seul_ système, celui-ci
appelant les autres systèmes installés. Il suffit, lors d'une nouvelle
installation de refuser l'installation de grub et de redémarrer celle
contenant _le_ grub pour faire un update-grub.
Hope this helps.
Le Sat, Feb 05, 2022 at 08:37:52AM +0100, Pierre Malard a écrit :
Bonjour,
Je vois quelques informations qui me semblent étranges :
1) Erreurs UUID
==============> La seule partition utilisée lors d’un boot est la partition Swap
principale. Lister les UUID avec un « blkid » et vérifier dans
le /etc/fstab qu’il n’y a pas d’erreur.
Éventuellement forcer l’utilisation de la Swap dans le fichier
« /etc/initramfs-tools/conf.d/resume » avec une ligne comme ça :
RESUME=UUID=<UUID de la partition SWAP>
Au besoin régénérer les UUID si besoin (copie d’une autre
installation par exemple)
Avec un système de fichiers EXTn, la commande est :
# tune2fs -U $(uuidgen) /dev/<PARTITION>
Avec une partition XFS :
# xfs_admin -U $(uuidgen) /dev/<PARTITION>
Clearing log and setting UUID
writing all SBs
new UUID = XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX
Avec une partition SWAP :
# mkswap -U $(uuidgen) /dev/<PARTITION>
mkswap: /dev/<PARTITION> : avertissement : effacement de l'ancienne signature swap.
Configure l'espace d'échange (swap) en version 1, taille…
pas d'étiquette, UUID=XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX
Avec une partition FAT :
# mlabel -N $(uuidgen) /dev/<PARTITION>
2) Régénération du GRUB avec « update-grub » et UEFI
===================================================> Si le boot s’appuie sur UEFI cela devrait être accompagné d’un
partitionnement GPT et non MSDOS. Il est peut-être préférable
de le dire Í  « update-grub » et que le système ait le paquet
nécessaire (« grub-efi »).
Il faut également que la partition EFI soit montée sur /boot/efi.
Ensuite avec sdX le disque o͹ se trouve le système :
# grub-install —modules=part_gpt --target=x86_64-efi
--efi-directory=/boot/efi --bootloader-idÞbian
--recheck --debug /dev/<sdX>
Vérifier qu’il existe un répertoire « /boot/efi/EFI/boot », le
créer au besoin. Copier le fichier « grubx64.efi » dedans :
# cp /boot/efi/EFI/debian/grubx64.efi
/boot/efi/EFI/boot/bootx64.efi
Chez moi ça fonctionne…
(https://wiki.debian-fr.xyz/Debian_%26_UEFI)
En espérant vous aider
Le 4 févr. 2022 Í  23:15, didier gaumet a écrit :
Le vendredi 04 février 2022 Í  22:47 +0100, ajh-valmer a écrit :
[...]
Est-ce que je peux ou dois effacer le contenu de "/etc/grub.d" ?
car faire le ménage dans les fichiers de /etc/grub.d/ = pas facile.

surtout pas! ce sont des fichiers indispensables au fonctionnement de
Grub2
le contenu des fichiers 40_custom et 41_custom doit être le suivant (Í 
modifier si ce n'est pas le cas):
:~$ cat /etc/grub.d/40_custom
#!/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.
:~$ cat /etc/grub.d/41_custom
#!/bin/sh
cat <<EOF
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
EOF
Merci pour ces configurations qui m'aident, je les fais.
Mais je ne m'explique pas pourquoi grub créé des erreurs de UUID.

les UUID sont propres Í  une installation. Lorsque tu as plusieurs OS
Linux installés, même si chacun utilise les UUID pour identifier les
partitions, ce sont des UUID différents dans chaque OS pour une même
partition. Os-prober va alors potentiellement trouver des dépendances
circulaires, compliquées par des UUID valides dans un OS et pas dans un
autre
Personnellement, ça fait longtemps que je n'ai pas fait de multiboot
multi-linux mais j'installais un seul Linux avec un bootloader (Grub)
et lorsque l'installateur des autres Linux concernés le permettait, je
n'installais pas de bootloader pour ceux-ci.
=> le plus simple pour toi
- dans /etc/default/grub tu mets un GRUB_DISABLE_OS_PROBER="yes" et pas
de GRUB_OS_PROBER_SKIP_LIST
- ensuite tu fais un sudo update-grub
et ça devrait suffire

--
Pierre Malard
« SPAM : Spieced Pork and Meat »
Pierre Dac (Londres, 1944)
Extrait de « Pierre DAC parle au Français » sur Radio Londres, le 24 mars 1944, dans DrÍ´le de guerre, éditions Omnibus (2008), pages 93 Í  96. (https://www.epi.asso.fr/revue/articles/a1602d.htm)
| _,,,---,,_
/,`.-'`' -. ;-;;,_
|,4- ) )-,_. , ( `'-'
'---''(_/--' `-'_) πr
perl -e '$_=q#: 3| 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-. ;-;;,_: |,A- ) )-,_. , ( `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"' `-'"'"'_): 24Ï€r::#;y#:#n#;s#(D)(d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--

--
Pierre Meurisse
Merci de noter que ma nouvelle adresse est :
Je continue provisoirement de recevoir les courriers envoyés
aux adresses précédentes.