[Résolu] btrfs et grub

Forum d'aide générale sur Slackware
Répondre
Avatar de l’utilisateur
Thomas
Administrateur
Messages : 468
Inscription : 08 janvier 2017, 07:14
Localisation : Anizy-le-Grand
Contact :

[Résolu] btrfs et grub

Message par Thomas »

Bonjour,

Toujours en train de tester btrfs, je suis confronté à ceci :
J'ai créé une partition dédiée à /boot en btrfs. Dans cette partition, j'ai créé un subvolume "@" qui est utilisé par défaut.

Code : Tout sélectionner

# mkfs.btrfs /dev/vda2
# mount /dev/vda2 /boot
# btrfs subvolume create /boot/@
# btrfs subvolume set-default /boot/@
# umount /boot
# mount /dev/vda2 /boot
# mount | grep \/boot
/dev/vda2 on /boot type btrfs (rw,subvolid=256,subvol=/@)
Ainsi j'utilise bien le subvolume @ pour /boot.

Mon /boot est ensuite peuplé normalement avec son vmlinuz, initrd.gz, etc et je fais un grub-mkconfig

Code : Tout sélectionner

# grub-mkconfig -o /boot/grub.cfg
/boot/grub.cfg contient les lignes :
linux /@/vmlinuz root=/dev/vda3 ro
(…)
initrd /@/initrd.gz
Si je comprends bien, grub monte la partition /boot sans utiliser le subvolume par défaut (subvol=/), donc les chemins de vmlinuz et initrd deviennent /@/vmlinuz et /@/initrd.gz au lieu de /vmlinuz et /initrd.gz.

Puis-je faire en sorte que grub monte directement le subvolume par défaut (qu'il détecte comme un grand) et utilise ainsi les chemins /vmlinuz et /initrd.gz ?

Ceci me permet de pouvoir changer le subvolume par défaut via "btrfs subvolume set-default <chemin>" sans avoir à reparamétrer grub si je veux démarrer depuis un autre subvolume.
Didier Spaier
Messages : 137
Inscription : 29 janvier 2017, 21:07

Re: btrfs et grub

Message par Didier Spaier »

Je ne comprends pas bien le but de l'opération. Tout d'abord, pourquoi créer une partition dédiée à /boot? GRUB n'en a pas besoin.

Ensuite, pourquoi démarrer depuis un autre subvolume? S'il s'agit simplement de
changer de couple (noyau+initrd), pourquoi ne pas laisser grub-mkconfig créer une entrée de menu pour chaque couple?

Ici, j'ai une seul partition formatée en btrfs et deux sous-volumes, comme indiqué dans /etc/fstab:

Code : Tout sélectionner

UUID=c275f3fa-55e8-4357-90d2-2b757bfd0118 / btrfs subvol=@,compress=zstd:3,discard=async,noatime 0 0
# Initially /dev/sda5
UUID=c275f3fa-55e8-4357-90d2-2b757bfd0118 /home btrfs subvol=@home,compress=zstd:3,discard=async,noatime 0 0
# Initially /dev/sda5
Je n'ai pas utilisé la commande set-default et grub-mkconfig génère les entrées de menu sans problème. Extrait de /boot/grub/grub.cfg:

Code : Tout sélectionner

	echo	'Loading Linux 6.6.7 ...'
	linux	/@/boot/vmlinuz-6.6.7 root=UUID=c275f3fa-55e8-4357-90d2-2b757bfd0118 ro rootflags=subvol=@ rootdelay=10 
	echo	'Loading initial ramdisk ...'
	initrd	/@/boot/intel-ucode.img /@/boot/amd-ucode.img /@/boot/initramfs-6.6.7.img
Peut-être quelque chose m'échappe-t-il dans ton intention?
Dernière modification par Didier Spaier le 12 avril 2024, 13:18, modifié 1 fois.
Avatar de l’utilisateur
Thomas
Administrateur
Messages : 468
Inscription : 08 janvier 2017, 07:14
Localisation : Anizy-le-Grand
Contact :

Re: btrfs et grub

Message par Thomas »

Salut, et merci de ta réponse. J'avais oublié une précision : mes slack sont la plupart sur des serveurs headless, je n'ai donc pas accès au menu proposé par grub, seulement au choix par défaut.
Ensuite pour l'histoire de /boot séparé ou pas, cela ne change rien au problème, grub monte la partition qui contient vmlinuz et initramfs via le subvol=/. Et si j'ai choisi de séparer /boot c'est parce que mon / est chiffré. Pour le déverrouiller à distance, l'initramfs lance un serveur ssh sur lequel je me connecte.

Prenons l'exemple suivant : j'ai une grosse MAJ à faire sur ma slack, kernel compris, par précaution je choisis de faire un snapshot de / et /boot :

Code : Tout sélectionner

# mount -o subvol=/@rescue LABEL=BOOT /rescue
# btrfs subvolume snapshot /boot /rescue/rescue
# umount /rescue

# mount -o subvol=/@rescue LABEL=ROOT /rescue
# btrfs subvolume snapshot / /rescue/rescue
# umount /rescue
Mettons qu'après la MAJ j'arrive à démarrer ma slack mais quelque chose cloche et je souhaite redémarrer sur les snapshots rescue. J'aurais souhaité simplement faire un "btrfs subvolume set-default /rescue/rescue" pour BOOT et ROOT et ne pas avoir à générer une conf grub qui indique ces snap à utiliser par défaut. J'aurais souhaité qu'avec les lignes :
linux /vmlinuz root=/dev/vda3 ro
(…)
initrd /initrd.gz
grub soit capable de détecter que le volume par défaut est @rescue/rescue. Mais d'après ce que je comprends, ce n'est pas possible, je suis obligé de générer une config avec
linux /@rescue/rescue/vmlinuz root=/dev/vda3 ro
(…)
initrd /@rescue/rescue/initrd.gz
Est-ce que tu confirmes ce comportement de grub ? Si c'est le cas, ce n'est pas grave, je fais avec. Ça me semblait plus pratique de ne pas avoir à générer la conf de grub.

Edit: je découvre la commande "grub-reboot" qui peut m'être très utile. Je regarde ça plus tard.
Avatar de l’utilisateur
Thomas
Administrateur
Messages : 468
Inscription : 08 janvier 2017, 07:14
Localisation : Anizy-le-Grand
Contact :

Re: btrfs et grub

Message par Thomas »

En effet "grub-reboot" répond au problème. Il suffit que j'ai une seconde entrée pour démarrer en rescue, que je fasse un "grub-reboot 1" et le prochain redémarrage se fera sur la seconde entrée (0 étant la 1ère entrée).
Merci encore Didier
Didier Spaier
Messages : 137
Inscription : 29 janvier 2017, 21:07

Re: [Résolu] btrfs et grub

Message par Didier Spaier »

De rien. Incidemment je suis coupable de https://github.com/DidierSpaier/absml (si je l'ai déjà mentionné, j'excipe de mon age avancé comme excuse) que je vais améliorer (permettre de faire de instantanés de /home et aussi de nommer comme on veut chaque instantané). Malheureusement pour un serveur headless ça ne peut pas servir à grand chose...

D'autre part il est possible de chiffrer / sans avoir une partition dédiée à /boot, ce qui est fait par défaut en mode d'installation "auto" de Slint si l'utilisateur le demande poliment. Seule la partition EFI n'est pas chiffrée, mais comme elle contient seulement le démarreur (noyau et initrd restent dans /boot) c'est sans risque. Heureusement GRUB a un pilote pour les systèmes de fichiers btrfs.
Avatar de l’utilisateur
Thomas
Administrateur
Messages : 468
Inscription : 08 janvier 2017, 07:14
Localisation : Anizy-le-Grand
Contact :

Re: [Résolu] btrfs et grub

Message par Thomas »

Sans avoir une partition dédiée à /boot, slint permet de déverrouiller à distance / ?
Didier Spaier
Messages : 137
Inscription : 29 janvier 2017, 21:07

Re: [Résolu] btrfs et grub

Message par Didier Spaier »

Thomas a écrit : 12 avril 2024, 18:38 Sans avoir une partition dédiée à /boot, slint permet de déverrouiller à distance / ?
Seulement s'il est possible de taper la passphrase qu'il demande avant d'afficher son menu. Mais à quel moment peux -tu commencer à interagir avec le système? Et comment démarres-tu la machine à distance?
Avatar de l’utilisateur
Thomas
Administrateur
Messages : 468
Inscription : 08 janvier 2017, 07:14
Localisation : Anizy-le-Grand
Contact :

Re: [Résolu] btrfs et grub

Message par Thomas »

La machine est un serveur dédié allumé 24h/24 auquel je n'ai aucun accès physique. D'où mon besoin d'avoir un serveur ssh dans l'initrd.
Didier Spaier
Messages : 137
Inscription : 29 janvier 2017, 21:07

Re: [Résolu] btrfs et grub

Message par Didier Spaier »

Dans ce cas le modus operandi de Slint ne peut pas fonctionner, puisqu'il nécessite d'interagir avec GRUB. Ceci dit je suis bien content d'avoir la machine virtuelle qui héberge le site slint.fr (entre autres) chez Linode car cela me permet d'utiliser un console web en cas de pépin et même si le serveur ssh de la machine virtuelle ne répond pas.
Avatar de l’utilisateur
Thomas
Administrateur
Messages : 468
Inscription : 08 janvier 2017, 07:14
Localisation : Anizy-le-Grand
Contact :

Re: [Résolu] btrfs et grub

Message par Thomas »

Ouais, malheureusement hetzner ne le propose pas sur ses serveurs auction.
Merci Didier, bonne soirée :)
Répondre