<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><br></div><div>Bonjour Philippe,</div><div>bonjour à tous,</div><div><br></div><div><br></div><div><blockquote type="cite">Peux-tu poster le contenu de /boot/grub/grub.cfg?</blockquote></div><div><br></div><div><br></div><div>Ton réflexe Philippe était bon.</div><div><br></div><div><br></div><div><blockquote type="cite" style="font-family: Menlo-Regular;"><font color="#000000">### BEGIN /etc/grub.d/10_linux ###<br></font></blockquote><div><br></div>[SNIP]</div><div><br><blockquote type="cite" style="font-family: Menlo-Regular;"><font color="#000000">set root='hd2,msdos4'<br><span class="Apple-tab-span" style="white-space: pre;">    </span>if [ x$feature_platform_search_hint = xy ]; then<br><span class="Apple-tab-span" style="white-space: pre;">        </span>  search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos4' --hint-bios=hd2,msdos4 --hint-efi=hd2,msdos4 --hint-baremetal=ahci2,msdos4  5352ab07-54c2-4dfa-ac47-c32455a6e1a6<br><span class="Apple-tab-span" style="white-space: pre;">     </span>else<br><span class="Apple-tab-span" style="white-space: pre;">    </span>  search --no-floppy --fs-uuid --set=root 5352ab07-54c2-4dfa-ac47-c32455a6e1a6<br><span class="Apple-tab-span" style="white-space: pre;">        </span>fi<br></font></blockquote><div><br></div><br>Et juste après... le coupable était là ! <b>root=/dev/sdc4</b>, au lieu de root=UUID=xxx</div><div>Mille merci.</div><div><br></div><div><br><blockquote type="cite" style="font-family: Menlo-Regular;"><font color="#000000">       linux<span class="Apple-tab-span" style="white-space: pre;">  </span>/@/boot/vmlinuz-4.15.0-101-generic <b>root=/dev/sdc4</b> ro rootflags=subvol=@  quiet splash $vt_handoff<br><span class="Apple-tab-span" style="white-space: pre;">       </span>initrd<span class="Apple-tab-span" style="white-space: pre;">    </span>/@/boot/initrd.img-4.15.0-101-generic<br></font></blockquote><br></div><div><br></div>Dans le fichier grub.cfg, il ne sert à rien d'écrire à la main<div><br></div><div><br></div><div><blockquote type="cite" style="font-family: Menlo-Regular;"><font color="#000000">root=UUID=5352ab07-54c2-4dfa-ac47-c32455a6e1a6</font></blockquote></div><div><br></div><div>à la place de </div><div><br></div><div><blockquote type="cite" style="font-family: Menlo-Regular;"><font color="#000000">root=/dev/sdc4</font></blockquote></div><div><br></div><div><br></div><div>puisque grub.cfg est écrasé à chaque commande <font face="Menlo">update-grub</font> (aka <font face="Menlo">grub-mkconfig -o /boot/grub/grub.cfg </font><span class="hljs-string"><font face="Menlo">"<span class="hljs-variable">$@</span>"</font>).</span></div><div><span class="hljs-string"><br></span></div><div><span class="hljs-string"><br></span></div><div><span class="hljs-string">Je n'ai pas résolu le problème jusqu'au moment où je suis allé regarder ce qu'il y avait dans </span><font face="Menlo">/etc/default/grub</font>, et j'ai eu du mal à le croire:</div><div><div><br></div><div><br></div><div><div></div><blockquote type="cite"><div><font face="Menlo" color="#000000"># Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux</font></div><div><font face="Menlo" color="#000000">GRUB_DISABLE_LINUX_UUID=true</font></div></blockquote></div><div><br></div><div><br></div><div>La solution était de repousser ce paramètre en commentaire, pour qu'il reprenne sa valeur par défaut, c'est à dire d'autoriser Grub à fonctionner "normalement", à l'aide des uuid. Pourquoi donc "disable uuid" s'est-il retrouvé sélectionné sur ma machine ? Ça restera un mystère. J'ai du mal à croire que ce soit le choix par défaut de Linux Mint (ici en version "Tricia"). Tant qu'il était interdit à Grub de générer son fichier de configuration en utilisant les uuid des partitions du SSD pour désigner au kernel la racine de son système de fichiers, la commande <font face="Menlo">update-grub</font> persistait évidement à inscrire <font face="Menlo">/dev/sdc4</font> au lieu de 5352ab07-54c2-4dfa-ac47-c32455a6e1a6. On pouvait passer <font face="Menlo">update-grub</font> autant de fois qu'on voulait, ça ne corrigeait donc rien. C'est l'interdiction de l'utilisation des uuid dans le fichier <font face="Menlo">/etc/default/grub</font> qui était la vraie cause du problème. Avant le changement de carte mère, quand le BIOS énumérait les volumes dans le même ordre à chaque démarrage, ce problème potentiel restait invisible.</div><div><br></div><div><br></div><div>Dans l'espoir que ça serve à d'autres, je colle ci-dessous les manips pour lancer <font face="Menlo">update-grub</font> depuis un live-cd quelconque, pour "réparer" Grub sur une machine Linux Mint <u>dont le système de fichiers est btrfs</u>. On trouve beaucoup de tutoriaux en ligne pour lancer <font face="Menlo">grub-update</font> après un chroot dans un système de fichiers ext4; mais adapter la procédure à btrfs n'est pas spontanément évident. Sur cette machine, /boot/ n'est pas sur une partition séparée.</div><div><br></div><div><br></div><div>On part donc du système démarré en live-cd (ici LMDE6 lancé depuis un port USB).</div><div><br></div><div><br></div><div><blockquote type="cite"><div><font face="Menlo" color="#000000">root@mint:~# ls -lah /mnt</font></div><div><font face="Menlo" color="#000000">total 0</font></div><div><font face="Menlo" color="#000000">drwxr-xr-x 2 root root   3 Sep 22  2023 .</font></div><div><font face="Menlo" color="#000000">drwxr-xr-x 1 root root 180 Mar 31 20:32 ..</font></div><div><font face="Menlo" color="#000000"><br></font></div><div><font face="Menlo" color="#000000">root@mint:~# mount -o subvol=@ /dev/sdc4 /mnt/</font></div></blockquote><div><br></div><div><br></div><div>Avec un système de fichiers btrfs, c'est cette commande <font face="Menlo">mount</font> qui diffère un peu de l'habitude, le point de montage doit alors se faire sur le sous-volume "@" de la partition Linux Mint sur laquelle on veut régénérer la configuration de Gub.</div><div><br></div><div><br></div><div><div>On peut vérifier qu'on a correctement monté le système btrfs dans le système de fichiers de l'hôte, quand on retrouve bien grub.cfg là où on l'attendait.</div></div><div><br></div><br><blockquote type="cite"><div><font face="Menlo" color="#000000">root@mint:~# ls -lah /mnt/boot/grub/grub.cfg</font></div><div><font face="Menlo" color="#000000">-r--r--r-- 1 root root 8.2K Mar 31 18:41 /mnt/boot/grub/grub.cfg</font></div></blockquote><div><br></div><div><br></div><div>Si ce fichier se trouvait ici,</div><div><br></div><div><br></div><div><blockquote type="cite"><font face="Menlo" color="#000000">/mnt/@/boot/grub/grub.cfg</font></blockquote></div><div><br></div><div><br></div><div>c'est qu'on aurait monté le volume btrfs depuis sa racine, et non depuis le sous-volume "@".</div><div><br></div><div><br></div><div>Classiquement, on attache cinq des pseudos fichiers du système hôte dans l'arborescence du volume qu'on vient de monter. Cette ligne trouvée sur le web est élégante et plus pratique que d'écrire cinq bind avec les risques d'erreurs par inattention.</div><div><br></div><div><br></div><blockquote type="cite"><div><font face="Menlo" color="#000000">root@mint:~# for i in /dev /dev/pts/ /proc /sys /run; do mount -B $i /mnt/$i; done</font></div></blockquote><div><br></div><div><br></div><div>Finalement, on place le système hôte dans l'arborescence du volume qu'on vient de monter.</div><div><br></div><br><blockquote type="cite"><div><font face="Menlo" color="#000000">root@mint:~# chroot /mnt/</font></div></blockquote></div><div><br></div><div><div><br></div><div>Je n'avais pas vraiment besoin de réinstaller Grub dans le MBR (la machine est BIOS, pas UEFI), seulement de régénérer la configuration de Grub. Mais réinstaller Grub ne fait pas de mal. Aucune de ces options n'était vraiment nécessaires, elles correspondent aux valeurs par défaut, mais ça permet d'expliciter ce qu'on fait. En particulier <font face="Menlo">--recheck</font> n'était pas utile, car Grub n'avait jamais généré de fichier devicemap sur cette machine.</div></div><div><br></div><div><br></div><div><blockquote type="cite"><div><font face="Menlo" color="#000000">root@mint:/# grub-install --target=i386-pc --recheck --boot-directory=/boot/ /dev/sdc</font></div><div><font face="Menlo" color="#000000">Installing for i386-pc platform.</font></div><div><font face="Menlo" color="#000000">Installation finished. No error reported.</font></div></blockquote></div><div><br></div><div><br></div><div>Et c'est là qu'on lance <font face="Menlo">grub-update</font>. Sur ma machine, voilà ce que ça m'a renvoyé.</div><div><br></div><div><br></div><div><blockquote type="cite"><div><font face="Menlo" color="#000000">root@mint:/# update-grub</font></div><div><font face="Menlo" color="#000000">Sourcing file `/etc/default/grub'</font></div><div><font face="Menlo" color="#000000">Sourcing file `/etc/default/grub.d/50_linuxmint.cfg'</font></div><div><font face="Menlo" color="#000000">Sourcing file `/etc/default/grub.d/60_mint-theme.cfg'</font></div><div><font face="Menlo" color="#000000">Generating grub configuration file ...</font></div><div><font face="Menlo" color="#000000">Found theme: /boot/grub/themes/linuxmint/theme.txt</font></div><div><font face="Menlo" color="#000000">Found linux image: /boot/vmlinuz-4.15.0-101-generic</font></div><div><font face="Menlo" color="#000000">Found initrd image: /boot/initrd.img-4.15.0-101-generic</font></div><div><font face="Menlo" color="#000000">Found memtest86+ image: /@/boot/memtest86+.elf</font></div><div><font face="Menlo" color="#000000">Found memtest86+ image: /@/boot/memtest86+.bin</font></div><div><font face="Menlo" color="#000000">  WARNING: Failed to connect to lvmetad. Falling back to device scanning.</font></div><div><font face="Menlo" color="#000000">grub-probe: error: cannot find a GRUB drive for /dev/sda1.  Check your device.map.</font></div><div><font face="Menlo" color="#000000">Found Windows 7 on /dev/sdc1</font></div><div><font face="Menlo" color="#000000">done</font></div></blockquote></div><div><br></div><div><br></div><div>On peut aller vérifier la date de dernière modification et le contenu du fichier grub.cfg, pour se persuader que <font face="Menlo">update-grub</font> a bien travaillé sur le bon fichier.</div><div><br></div><div><br></div><div><div></div><blockquote type="cite"><div><font face="Menlo" color="#000000">root@mint:/# ls -lah /boot/grub/grub.cfg</font></div><div><font face="Menlo" color="#000000">-r--r--r-- 1 root root 8.3K Mar 31 18:59 /boot/grub/grub.cfg</font></div></blockquote></div><div><br></div><div><br></div><div>Il reste ensuite à extraire le système hôte du système de fichiers du volume btrfs.</div><div><br></div><div><br></div><div><blockquote type="cite"><span style="font-family: Menlo;"><font color="#000000">root@mint:/# exit</font></span></blockquote><br></div><div><br></div><div>Puis à détacher les cinq pseudos fichiers. Sur ma machine, il m'a fallu passer deux fois la même commande pour tous les décrocher. Voilà l'affichage que ça m'a renvoyé.</div><div><br></div><div><br></div><div><div></div><blockquote type="cite"><div><font face="Menlo" color="#000000">root@mint:~# for i in /dev /dev/pts/ /proc /sys /run; do umount /mnt$i; done</font></div><div><font face="Menlo" color="#000000">umount: /mnt/dev: target is busy.</font></div><font color="#000000"><br></font><div><font face="Menlo" color="#000000">root@mint:~# for i in /dev /dev/pts/ /proc /sys /run; do umount /mnt$i; done</font></div><div><font face="Menlo" color="#000000">umount: /mnt/dev/pts/: not mounted.</font></div><div><font face="Menlo" color="#000000">umount: /mnt/proc: not mounted.</font></div><div><font face="Menlo" color="#000000">umount: /mnt/sys: not mounted.</font></div><div><font face="Menlo" color="#000000">umount: /mnt/run: not mounted.</font></div></blockquote><div><br></div><div><br></div><div>Un troisième passage a confirmé que la première "busy target" avait bien été décrochée elle aussi.</div><div><br></div><br><blockquote type="cite"><div><font face="Menlo" color="#000000">root@mint:~# for i in /dev /dev/pts/ /proc /sys /run; do umount /mnt$i; done</font></div><div><font face="Menlo" color="#000000">umount: /mnt/dev: not mounted.</font></div><div><font face="Menlo" color="#000000">umount: /mnt/dev/pts/: not mounted.</font></div><div><font face="Menlo" color="#000000">umount: /mnt/proc: not mounted.</font></div><div><font face="Menlo" color="#000000">umount: /mnt/sys: not mounted.</font></div><div><font face="Menlo" color="#000000">umount: /mnt/run: not mounted.</font></div></blockquote></div><div><br></div><div><br></div><div>Ne reste plus qu'à démonter le volume sur lequel Grub vient d'être réparé, et à tenter de booter.</div><div><br></div><div><br></div><div><blockquote type="cite"><span style="font-family: Menlo;"><font color="#000000">root@mint:~# umount /mnt</font></span></blockquote></div><div><br></div><div><br></div><div>Le kernel de cette machine est alors parvenu à monter le bon volume en racine, la machine a démarré normalement. Mais franchement, quand ce n'est pas du pro, on perd trop de temps à diagnostiquer et retrouver comment corriger ce genre de dysfonctionnements.</div><br id="lineBreakAtBeginningOfMessage"><div>
<meta charset="UTF-8"><div>--<br>Frédéric Dumas<br>f.dumas@ellis.siteparc.fr<br><br></div>
</div>
<div><br><blockquote type="cite"><div>Le 28 mars 2024 à 12:28, Philippe Strauss via gull <gull@forum.linux-gull.ch> a écrit :</div><br class="Apple-interchange-newline"><div><div>Bonjour Frédéric,<br><br>Peux-tu poster le contenu de /boot/grub/grub.cfg?<br><br>Salutations.<br><br><br>On 27.03.2024 19:01, Frederic Dumas via gull wrote:<br><blockquote type="cite">Bonjour messieurs les experts,<br><br>Après un changement de carte mère, je parviens à booter une machine Linux Mint depuis son OS sur SSD interne, **à condition** de connecter à la machine un quelconque disque externe ext4 en USB. En l'absence de ce volume supplémentaire, le kernel avorte le démarrage, et me lâche dans Busybox avec le message d'erreur:<br><br><blockquote type="cite">alert! /dev/sdc4 does not exist.  Dropping to a shell!<br></blockquote>Les volumes dans la fstab de la machine sont pourtant définis par leur UUID ou leur label, et non par leur nom dans la hierarchie /dev/:<br><br><br><blockquote type="cite"># <file system> <mount point>   <type>  <options>       <dump>  <pass><br># / was on /dev/sda4 during installation<br>UUID=5352ab07-54c2-4dfa-ac47-c32455a6e1a6 /               btrfs   defaults,subvol=@ 0       1<br># /home was on /dev/sda4 during installation<br>UUID=5352ab07-54c2-4dfa-ac47-c32455a6e1a6 /home           btrfs   defaults,subvol=@home 0       2<br># swap was on /dev/sda3 during installation<br>UUID=c68188a7-9ec4-4bdf-b909-894eced773d7 none            swap    sw              0       0<br>LABEL=BigStore /mnt/BigStore exfat defaults,uid=1000,umask=000,x-gvfs-show 0 2<br>LABEL=BiggerStore /mnt/BiggerStore exfat defaults,uid=1000,umask=000,x-gvfs-show 0 2<br></blockquote><br><br>Sur cette machine, le système Linux Mint est effectivement installé sur la quatrième partition du SSD. Mais d'où peut venir que le kernel cherche son système de fichier obligatoirement sur /dev/sdc4, et non sur UUID=5352ab07-54c2-4dfa-ac47-c32455a6e1a6 ?<br><br>Le problème ne semble pas venir de Grub lui-même, puisque le kernel se lance bien. Pourtant, un peu au hasard, j'ai reconfiguré Grub et même réinstallé son bootloader MBR (le Bios n'est pas UEFI) [1]. Aucune amélioration.<br><br>Modifier les paramètres du BIOS ne change rien, bien que ce fut le cas pour d'autres sur les forums [2]. Le dysfonctionnement est facilement reproductible:<br><br>  - disque flash externe supplémentaire en USB = Linux Mint démarre le bureau Cinnamon;<br>  - disque flash externe absent = Linux Mint échoue dans Bysybox;<br><br>On dirait que dans le premier cas, le kernel étiquette le SSD comme /dev/sdc et le démarrage aboutit, et dans le second cas l'étiquette comme /dev/sdb, ce qui provoque l'échec. A priori, le nom du volume dans /dev/ ne devrait pourtant pas être significatif.<br><br>Je vous soumets donc la devinette.<br><br>Merci!<br><br><br>[1] http://logan.tw/posts/2015/05/17/grub-install-and-btrfs-root-file-system/<br>[2] https://forums.linuxmint.com/viewtopic.php?t=342476<br>     https://ostechnix.com/how-to-fix-busybox-initramfs-error-on-ubuntu/<br>     https://ubuntuforums.org/showthread.php?t=2472734<br><br><br>--<br>Frédéric Dumas<br>f.dumas@ellis.siteparc.fr<br></blockquote></div></div></blockquote></div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></body></html>