Pb GRUB, Multi-Boot et sous-volumes BTRFS


#1

Bonjour tout le monde,

Je consulte régulièrement pour avoir des réponses a mes questions et il y a bien Installation Debian/Btrfs/Luks et problème au redémarrage mais dans ce cas je n’arrive pas à trouver la réponse à mes questions.

Je fais habituellement mes install en debootstrap dans des sous volumes btrfs sans jamais aucun problème.
Mais la je suis face a un problème que je ne comprend pas du tout.
Comme souvent, je pense que c’est juste une c******ie que j’ai oublié.

DD - 500Go - GPT
|_ UEFI - 256Mo Vfat de type EF00
|_ BTRFS - reste du disque - sous-volume
   |_ @OS
       |_ @DebBoot1
       |_ @DebBoot2
       |_ @DebOS1
       |_ @DebOS2...
   |_ @Users
       |_ @Home
       |_ @UserSpec1...
   |_ @Snapshots
       |_ @DebOS1Snap
       |_ @DebOS2Snap...

C’est la liste des sous-volumes de mon arborescence de base BTRFS.

  • DebOS1 : Install principale en debootstrap et celle qui pose justement problème.
  • DebOS2 : Install de secours faite avec le mode avancé de l’installeur et un montage manuel dans /target.

DebOS2 boot sans problème (sans modifier le sous-volume btrfs par défaut). Je n’arrive pas a chainer vers le grub de DebOS1 ?
Par contre en modifiant les entrées grub de DebOS2 j’arrive a lancer directement DebOS1.

DebOS1 ne veut pas booter sur ce grub. J’arrive sur un grub bash-like.
Je peux charger l’os a la main (a revérifier) depuis ce bash-like.
J’ai beau faire un update-grub, grub-install (recheck, efi-dir, boot-dir, target efi x64...) directement dans l’os, en chroot (depuis DebOS2 ou un live).
Je peux charger depuis le grub de DebOS2 si je modifie les entrées existantes.
J’ai tenté de copier modifier éditer comparer les entrées entre DebOS1 et DebOS2 sans succès non plus car je ne voit pas de différences marquantes qui expliquerait que ce grub ne se lance pas.
Je ne comprend pas ce qu’il manque dans ce que je fais par rapporta ce que fait l’installeur debian avec grub.
Qqun a une idée du problème ?
Ou de l’endroit où trouver le script de debian-installer pour récupérer les commandes et actions liées a grub ?

En fait je souhaiterai que le grub principal soir celui de DebOS1 et que les autres os soient liés a celui-ci.
Quelle commandes et où installer grub pour chaque os ?
Comment bien changer les grub entre eux ?

Un grand merci d’avance.
Je suis un peu perdu et je finis par m’embrouiller le cerveau :slight_smile: donc votre aide est vraiment bienvenue.

@micalement,
Benjam


#2

Bonjour

Je me répond cela fonctionne maintenant a peu près.
Je m’explique, je boote bien sur le bon OS.
Par contre si grub se met a jour sur le deuxième OS cela casse tout.
Et je ne peux personnaliser l’entrée UEFI, elle doit forcément être BOOT.
C’est apparemment un problème fréquent sur les Asus, ce qui est mon cas (ASUS ZenBook Flip S UX370UA).
C’est donc en partie résolu, mais je continue de chercher les commandes a passer pour maîtriser le fonctionnement de GRUB en UEFI sur un disque nvme en btrfs et multi-OS/sous-volumes.
Je mettrai a jour en fonction de ce que je trouve si cela peut servir a d’autres.

@plux,
Benjam


#3

Bonsoir,

J’ai un fonctionnement qui semble correct avec les commandes que j’utilisai au départ et qui ne fonctionnaient pas (et se sont bien les même).
Je ne comprend donc pas du tout pourquoi ça ne fonctionnait pas ni pourquoi le fonctionnement devenu normal.
Je suis désolé de ne pas pouvoir apporter de vraie réponse technique sur ce problème (qui n’a pas intéressé grand monde, ca arrive, mais qui aurait pu servir à d’autre).

Donc pour répondre juste sur les commandes utilisées, les voici dans le cas où elles pourraient dépanner qqun à l’occasion :
Après avoir vérifié/compéter/personnalisé les fichiers /etc/default/grub et ceux dans /etc/grub.d/* (si nécessaire) ; j 'ai executé ces commandes (ne fonctionnaient pas au début mais fonctionne après avoir trifouiller depuis l’installateur auto Debian) :
update-initramfs -u -k all
update-grub
grub-install --target=amd64 --boot-directory=/boot --efi-directory=/boot/efi --bootloader-id=BOOT --recheck --no-floppy /dev/nvme0n1
Et ça semble fonctionner.
La seule chose que j’ai remarqué et qui semble avoir de l’importance pour que grub s’y retrouve dans le BTRFS et les sous-volumes (même si les docs disent le contraire), c’est qu’il semble nécessaire de mettre bootloader-id=BOOT (en majuscule et ce nom précis) et le péripherique en /dev/nvme0n1 (et non pas avec l’id ou le path).

Merci à tous et bonne soirée.
@micalement,
Benjam