GRUB(menu) très long délais d'affichage → fichier grub.cfg énorme ! Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Bonjour,

Une nouvelle fois des problèmes avec GRUB !
Décidément, c'est le talon d'Achille du système !
Je n'ai jamais tenté/testé les autres Chargeurs d'Amorçage,
mais peut-être cela en vaut-il la peine ???


Cette fois ayant adopté un partitionnement GPT
avec GRUB sur une partition indépendante ....
je pensais que tout était bien ficelé,
et qu'après 10 ans de galères à répétition "Powered by GRUB",
j'étais parvenu à faire la paix avec ce vieux BOURRU !
... et bien NON!

Je vais décrire, après la configuration, les étapes de recherche et d'errance,
pour les éviter à d'autres, sans pour autant les ignorer.

Pour les pressés => aller directement à Diagnostic


La Configuration


PC BIOSHP-Compaq DC7800 SFF

2 HDD

sda → GPT de 1To ; HDD principal, c'est là que se situe le problème
* GRUB sur sda7 (part dédiée bios_grub ; 1Mo ; placé au début du disque)

sdb → MBR de 80 Go ; HDD d'origine peu utilisé à présent.

OS installés

sda
* Debian stable (secours) → sda1 (/) ; sda2 (/home)
* swap → sda3 (utilisé par les 2 OS)
* Sparky5 (testing) (principal) → sda4 (/) ; sda5 (/home)
* Données stockées sur → sda6 (accessible aux 2 OS)

sdb
* Windows 7
* Debian 8
* Sparky 5

Tout ceci fonctionnait à merveille depuis > 6 mois
L'usage courant étant le boot sur sda4/sparky(testing)


Partitions

HDD principal

Code : Tout sélectionner

# parted /dev/sda print
Model: ATA WDC WD10EZRZ-00H (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start   End     Size    File system     Name  Flags
 7      1049kB  2097kB  1049kB                        bios_grub
 1      1049MB  37,7GB  36,7GB  ext4
 2      37,7GB  48,2GB  10,5GB  ext4
 3      48,2GB  53,5GB  5243MB  linux-swap(v1)
 4      53,5GB  90,2GB  36,7GB  ext4
 5      90,2GB  101GB   10,5GB  ext4
 6      101GB   625GB   524GB   ext4            Docs


Second HDD (sata déconnecté)

Code : Tout sélectionner

Model: ATA WDC WD800AAJS-60 (scsi)
Disk /dev/sda: 80.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
 

Number  Start   End     	Size   	 Type      	File system     Flags
 1      1049kB  	106MB   105MB   	primary  	 ntfs			boot
 2      106MB   	18.9GB  18.8GB  	primary  	 ntfs
 3      18.9GB  	80.0GB  61.1GB 	extended
 7      18.9GB  	30.5GB  11.5GB  	logical   	ext4
 8      30.5GB  	42.0GB  11.5GB  	logical  	ext4	
 5      42.0GB  	78.4GB  36.4GB  	logical   	ext3
 6      78.4GB  	80.0GB  1593MB  	logical  	linux-swap(v1)


Le problème

D'abord quelques points sur l'apparition du problème :
* ce n'est pas suite à une mise à jour des paquets grub*
* ni à une intervention de ma part sur GRUB

Le seul événement hors-norme a été une panne du réseau Orange qui m'a privé de connexion,
je n'ai donc pu faire les MàJ durant 10 j -> 150 pkges en une fois avec :

Code : Tout sélectionner

Log started: 2018-07-21  08:48:12
........
update-initramfs: Generating /boot/initrd.img-4.17.0-1-amd64
W: Possible missing firmware /lib/firmware/i915/skl_dmc_ver1_27.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/cnl_dmc_ver1_07.bin for module i915
W: Possible missing firmware /lib/firmware/i915/glk_dmc_ver1_04.bin for module i915
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_39.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver9_29.bin for module i915
W: Possible missing firmware /lib/firmware/i915/skl_guc_ver9_33.bin for module i915
ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf: No such file or directory
ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf: No such file or directory

cela n'a pas de rapport avec GRUB,
je n'ai pas trouvé ces firmwares dans les dépôts
et cela n'a pas posé de problème ( ça semble une histoire récurrente vu les bugs rapportés)



Symptômes


Prémisses


Au début le délais entre l'écran du BIOS et l'affichage du menu GRUB s'est vu allonger 3-4 fois la durée normale.

Ensuite après plusieurs sessions,
le délais entre le login (lightdm) et l'ouverture de la session XFCE s'est lui aussi allongé.
Je ne sais s'il y a un lien entre les 2 faits.
À ce stade mis à part ces délais rallongés, le système fonctionnait normalement.


Donc, agacé par ces attentes indues,
persuadé que le coupable était GRUB (installé par le système principal = sparky sur sda4)

je reboote sur le système Debian9 (secours) sur sda1
* même délais pour GRUB forcément
* pas de d'autre délais ensuite, tout va bien
* je passe :

Code : Tout sélectionner

# update-grub
# grub-install /dev/sda
ces commandes n'ont pas affichées d'erreur

La panne !

Ensuite ⇒ échec du reboot :
après l'écran du BIOS, l'écran reste vide et je ne note plus aucune activité.

Une courte pression sur pression sur le bouton I/O éteint la machine immédiatement.



Test du matériel


Carte-mère / BIOS

J'ai d'abord craint une défaillance de la carte-mère,
mais après quelques tests :

* Boot sur CD et USB => OK!

* Boot du second HDD via SuperGrub2 (1.99-b1)
qui affiche une série de error: unrecognised fs
avant d'afficher son menu GRUB avec uniquement les OS de sdb

* Après déconnexion du HDD "défaillant" et réinstallalation de Grub sur l'ancien HDD (sdb) => Boot des autres OS >>> OK!

Il ne s'agit donc pas d'un problème sur la carte-mère.


HDD
J'ai testé le HDD qui n'a que 3000h (6 mois)
SMART long n'a affiché aucun défaut.

Voir la sortie de : SMART


Partitionnement

Je me suis donc orienté vers :

* un problème de système de fichiers sur le partitionnement GPT
* ou sur la partition /dev/sda7 bios_grub BIOS boot

Table GPT

Que se soit avec FDISK ; PARTED ; GPARTED
la table gpt est bien reconnue ainsi que les partitions .

Code : Tout sélectionner

fdisk -l

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 9A1D176E-EFFA-4822-BBCF-C16564FCB79C

Device         Start        End    Sectors   Size Type
/dev/sda1    2048000   73727999   71680000  34.2G Linux filesystem
/dev/sda2   73728000   94207999   20480000   9.8G Linux filesystem
/dev/sda3   94208000  104447999   10240000   4.9G Linux swap
/dev/sda4  104448000  176127999   71680000  34.2G Linux filesystem
/dev/sda5  176128000  196607999   20480000   9.8G Linux filesystem
/dev/sda6  196608000 1220607999 1024000000 488.3G Linux filesystem
/dev/sda7       2048       4095       2048     1M BIOS boot

Partition table entries are not in disk order.
c'est normal sda7 a été créé ultérieurement

Les partitions ont été montées en session Live ainsi qu'en CHROOT,
tout fonctionne bien.

Donc à priori, le problème est ailleurs.


Partition Bios Grub

Je n'ai pas utilsé fsck qui ne peut rien pour la partition grub,
donc rien d'autre que la suppression et l'effacement,
suivis d'une création de partition non-formatée avec GParted.

À ce propos, étrangement :
la nouvelle partition juste après création est parfois déjà de type "grub2 core.img" alors que GRUB n'est pas installé ;
l'effacement (dans les options de formatage de GParted) remet le type à : "Inconnu" en conservant le drapeau bios_grub si déjà mis.



---------------------------------------------------------------------------------------------------------------------------------------------------------------

Pendant cette période d'errance, des actions inutiles et potentiellement dommageables pour le système ont été menées souvent dans un chroot :
* multiples update-grub && grub-install
* purge/install des pkges *grub* dont grub-coreboot (installé par erreur)
* suppression/création/effacement de la part sda7
* connexion/déconnexion SATA

---------------------------------------------------------------------------------------------------------------------------------------------------------------

Bref, j'ai tenté tout ce que je pouvais avec toutes les variantes possibles ou impossibles...

Jusqu'au moment où par chance et par dépit, j'ai laissé l'écran noir à son sort ...
... et miracle ...

... Le menu de GRUB m'est apparu ... itself !
:192:



Diagnostic

En fait GRUB n'ai pas cassé, mais il tarde 3 longues minutes à s'afficher,
bien trop long pour un type qui a soif d'en découdre ...
et comme je suis têtu, j'y ai passé un temps infini... c'est con ! :003:

Après usage de bootinfoscript

⇒ Identification de la nature sinon de la source profonde du problème :

→ Taille anormale du fichier grub.cfg (>> 1,5Mo)


due à la section :
### BEGIN /etc/grub.d/30_os-prober ###
qui réplique des dizaines d'entrées erronées le fichier compte 15 à 20 000 lignes (normalement < 500)

voir → bootinfo.report
j'ai tronqué le rapport (3.2Mo/50 000 lignes -> 10 000 lignes en conservant sa partie finale) car le pastebin ne l'acceptait pas correctement

si quelqu'un veut les fichiers complets, je peux les lui fournir




J'aurai pu me rendre compte du problème (c'est toujours facile après-coup)
car lors du : update-grub le délais de détection des OS est long ;

beaucoup plus long que : # os-prober qui ne dure que quelques secondes (j'ai vérifié).






Actions

Fort de cette découverte :

Code : Tout sélectionner

$ dpkg-query -l |grep grub
ii  grub-pc			        2.02+dfsg1-5	amd64        GRand Unified Bootloader, version 2 (PC/BIOS version)
ii  grub-pc-bin			2.02+dfsg1-5	md64        GRand Unified Bootloader, version 2 (PC/BIOS binaries)
ii  grub2-common		2.02+dfsg1-5	amd64        GRand Unified Bootloader (common files for version 2)
ii  sparky-grub-theme		0.1.3		         all          Sparky GRUB Theme

Suppression totale de GRUB pour repartir sur une base neuve

# apt-get purge grub-common grub2-common grub-pc grub-pc-bin os-prober

Durant la suppression ⇒ Message

Code : Tout sélectionner

	Voulez-vous supprimer les fichiers de configuration de GRUB2 contenu dans :
	/boot/grub
	Attention le système ne pourra pas redémarrer
	avant l'installation d'un nouveau chargeur d'amorçage
	
	=> OUI
Note : les autres fichiers de /boot/grub sont conservés



CRÉATION D'UNE PARTITION bios_grub NEUVE
AVANT LA RÉINSTALL DE GRUB


Fait avec Gparted (plus simple que parted pour emplacement et taille = 1Mo)
effacée pour suppression du type = grub2 core.img et drapeau = bios_grub


Résultat :

Code : Tout sélectionner

# parted /dev/sda print
Model: ATA WDC WD10EZRZ-00H (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start   End     Size    File system     Name  Flags
 7      1049kB  2097kB  1049kB                        bios_grub
 1      1049MB  37,7GB  36,7GB  ext4
 2      37,7GB  48,2GB  10,5GB  ext4
 3      48,2GB  53,5GB  5243MB  linux-swap(v1)
 4      53,5GB  90,2GB  36,7GB  ext4
 5      90,2GB  101GB   10,5GB  ext4
 6      101GB   625GB   524GB   ext4            Docs



Installation de GRUB

Code : Tout sélectionner

# apt-get install grub-pc
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés : 
  grub-common grub-pc-bin grub2-common os-prober
....
Affichage de l'écran de Configuration de grub-pc
Choix de l'installation sur : /dev/sda

Code : Tout sélectionner

...
Creating config file /etc/default/grub with new version
Installation pour la plate-forme i386-pc.
Installation terminée, sans erreur.
Création du fichier de configuration GRUB…
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found background image: /opt/artwork/sparky-grub.png
Image Linux trouvée : /boot/vmlinuz-4.17.0-1-amd64
Image mémoire initiale trouvée : /boot/initrd.img-4.17.0-1-amd64
Image Linux trouvée : /boot/vmlinuz-4.16.0-2-amd64
Image mémoire initiale trouvée : /boot/initrd.img-4.16.0-2-amd64
Debian GNU/Linux 9 (stretch) trouvé sur /dev/sda1
fait


Épilogue

Après tout cela j'espérai bien avoir remis GRUB sur ses pattes ...

... Et NON !

Code : Tout sélectionner

$ du -h  /boot/grub/grub.cfg
1,6M	/boot/grub/grub.cfg

Code : Tout sélectionner

$ file /boot/grub/grub.cfg
/boot/grub/grub.cfg: UTF-8 Unicode text, with very long lines

Rien à changer !

... à part que la session XFCE s'ouvre à nouveau sans délais ... coïncidence ???


Autre point assez déroutant pour moi,

la situation est identique avec Debian9 (stable) sur sda1 (sans délais pour XFCE)
alors que Sparky est une testing (les versions sont différentes)

Autre point étrange,
lorsque le second HDD (80Go) est connecté (SATA)
les entrées correspondant aux OS linux qu'il porte,
sont également dupliquées nx10 fois ;
ce qui tendrait à écarter un problème spécifique à l'autre HDD (gpt ; 1To)
les entrées relatives à windows7 ne sont pas dupliquées.


Je n'ai rien trouvé de semblable sur la toile,
et rien dans les BUGS → https://bugs.debian.org/cgi-bin/pkgrepo ... kg=grub-pc

Voilà, la situation reste bien nébuleuse pour moi, :shok:
j'espère que quelqu'un(e) aura une idée lumineuse pour me mettre sur la voie.



Merci de m'avoir lu,
c'est un peu long ... j'espère que cela soit utile.
**Simple Utilisateur** -- Debian stable - XFCE
PascalHambourg
Contributeur
Contributeur
Messages : 930
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

J'ai déjà vu le problème de grub.cfg énorme qui peut se produire en présence de multiboot avec plusieurs systèmes GNU/Linux utilisant aussi GRUB. Je n'en connais pas la cause précise, mais cela semble dû au fait que grub-mkconfig (appelé par update-grub) lit le fichier grub.cfg des autres systèmes mais ne traite pas correctement les entrées de menu de ce fichier provenant elles-mêmes d'autres systèmes. Il les ajoute, et ça reboucle, ça s'allonge...

Il est inutile de réinstaller GRUB ou quoi que ce soit d'autre.

Le contournement : désactiver os-prober sauf sur le système qui a installé le GRUB principal qui se lance au démarrage. C'est celui qui est en premier dans le menu de GRUB.
  • Dans chaque système GNU/Linux "secondaire", désactiver os-prober par l'un des moyens suivants :
    • ajouter la ligne "GRUB_DISABLE_OS_PROBER=true" (sans les guillemets) au fichier /etc/default/grub (ma préférée).
    • désinstaller os-prober (bof)
    • supprimer ou enlever la permission d'exécution du script /etc/grub.d/30_os-prober (bof++, sera remis en place en cas de mise à jour du paquet grub-common)
  • Reconstruire grub.cfg avec update-grub ou update-grub2 selon la distribution. La section "30_os-prober" devrait être vide.
  • Dans le système "primaire", reconstruire grub.cfg qui devrait retrouver une taille raisonnable.
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Merci Pascal,

Je teste cela,

et je reviens pour écrire le résultat

... et clore la discussion :004:
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Bonne nouvelle, le menu GRUB s'affiche normalement,
pour le moment je n'ai appliqué la solution N°1 (préférée de PascalHambourg) que sur le HDD principal,
l'autre étant pour le moment déconnecté de la carte-mère.

Mais je ne doute pas du résultat final.

Je considère la question résolue.

Bravo Pascal :023:
un fois de plus, tu as mis dans le 1000 !

@+
**Simple Utilisateur** -- Debian stable - XFCE
Répondre