Problème Installation BUSTER 10.3: mauvais chemin pour root dans 3 sections de /boot/grub/grub.cfg

Tags: #<Tag:0x00007ff8c4276770> #<Tag:0x00007ff8c42764c8>

(j ai tenu compte des remarques de Pascal Hambourg pour corriger la description ci dessous)
Lors d’une installation Debian BUSTER 10.3 avec une clef USB live chargée avec
debian-live-10.3.0-amd64-lxqt.iso
sur un système Single Board Computer Atomx4
en choisissant l installation sur une carte uSD entière,
lors de la sélection au grub, le démarrage n’aboutit pas.
on se retrouve en shell busysbox avec un message erreur contenant “dernier montage /dev/sdb2”
En investiguant je vois que dans le fichier généré automatiquement /boot/grub/grub.cfg
il y a les 3 lignes dans menu et submenu ( section 10) donnant le chemin de root pour le noyau compressé qui pointe vers un chemin par device “/dev/sdb2”
c’est à dire là où était la cible d installation pendant l installation
mais où elle n’est plus ensuite au démarrage du système installé
linux /boot/vmlinuz-4.19.0 root=/dev/sdb2 ro quiet splash vt_handofft

Avec un autre système, à l éditeur et en mode sudo, je corrige le fichier /boot/grub/grub.cfg
et donne dans les 3 lignes en question le chemin “by-uuid” pour root: root=UUID=… ,
ce qui donne:
linux /boot/vmlinuz-4.19.0 root=UUID=8E54… ro quiet splash vt_handofft

et alors ça marche, le système boote correctement
Je pense que la fin d’installation avec la génération du fichier grub.cfg
n’a pas pu suivre la consigne by-uuid pour ces 3 lignes. Pourquoi?

un commentaire en complement de mon post de ce jour:
tout le fichier grub.cfg est écrit avec les chemins décrits en mode UUID
sauf le chemin pour le noyau compressé linux vmlinuz qui utilise le chemin en mode device
/dev/sdb2
ce mode est normalement abandonné depuis longtemps
ce mode est fortement ambigue car dependant de l affectation aleatoire par le BIOS

Le titre est erroné : c’est le chemin du paramètre root qui est incorrect, pas le chemin de vmlinuz.

J’ai déjà constaté cette anomalie après l’installation via l’installateur traditionnel (je n’ai jamais utilisé l’installateur Calamares du système live), mais j’ignore sa cause. La plupart du temps ça passe inaperçu car le nom du disque qui contient la partition racine est identique pendant l’installation et après, ce qui n’est pas ton cas.

Après avoir corrigé manuellement en éditant l’entrée de menu de GRUB pour démarrer, il suffit d’exécuter update-grub en root pour regénérer un fichier grub.cfg correct avec root=UUID=…

Merci Pascal pour ta reponse très pertinente
“mon” problème resulte du fait que support d installation et cible d installation sont tous deux de la famille /dev/sdxn qui est brassée et rebrassee par le bios
mais il y a une petite anomalie de fond:
ne pas avoir utilisé le mode UUID pour le chemin de root sur les 3 lignes “linux …”
Crois tu simple de se plonger dans le source (script) de l installer, on doit vraiment être dans la dernière ligne “droite”

Le BIOS détermine la numérotation des disques (hdX) dans GRUB, mais il n’a pas grand-chose à voir avec le nommage des disques /dev/sdX dans Linux. C’est l’ordre de découverte des disques par le noyau qui détermine le nommage, et cet ordre peut être imprévisible et changer d’un démarrage à l’autre, en tout cas il n’est pas fiable et c’est bien pour cela qu’on utilise les UUID à la place.

Ce n’est pas une anomalie de fond, c’est un problème aléatoire qui a affecté ton installation. Normalement ça n’arrive pas, grub.cfg utilise l’UUID dès l’installation.

Merci pour la precision entre le role du bios pour les disques durs et le noyau pour les sd.
j ai effectué integralement deux fois l installation pour arriver exactement au meme resultat /dev/sdb2
donc ce n est pas forcement aleatoire
Mon systeme est un Single Board Computer avec une mmc résidente, un lecteur sd card,
un port usb3 ( et un port usb2).
Pas de hd
Peut etre que ce bios uefi est particulier?
Comme tu devines je suis au-delà de la limite de mes connaissances mais je progresse
aussi grâce à toi, merci

Cher Pascal-Hambourg
la visite du fichier /etc/default/grub qui fournit les paramètres pour la génération de
/boot/grub/grub.cfg
confirme bien ce que tu expliques:

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

on voit que la ligne n’est pas décommentée, on devrait bien utiliser root=UUID=…

Cher Pascal-Hambourg

je dois aussi reconnaître que la lecture et l analyse du script /etc/grub.d/10_linux
ne sont pas des plus aisées pour moi.
Comme vous savez , c’est le script qui génère la section de grub.cfg qui nous interesse

Vous avez fait une suggestion très intéressante
à laquelle j’étais conduit et que je n’avais pas tenté:
relancer à chaud après correction manuelle la commande de génération de grub.cfg
update-grub

je ne suis pas sur le système en question maintenant, il est rangé.
je le ferai au prochain allumage et confirmerai ce qui se passe alors

cordialement
Sel_de_bain