Sposta un'installazione Linux usando btrfs sul sottovolume predefinito (subvolid = 0) in un altro sottovolume


15

Quando si esegue un'installazione su un filesystem btrfs di root, molte distribuzioni Linux si installano nel sottovolume predefinito. Se lasciato non modificato, questo layout forzerà la creazione di qualsiasi istantanea o sottovolume all'interno del filesystem di root, il che potrebbe essere indesiderabile. Un altro possibile layout sarebbe di avere il sottovolume predefinito che contiene una snapshotsdirectory e un rootfssottovolume, che è il filesystem di root. Come posso cambiare l'installazione di btrfs distro-default per usare questo layout di sottovolume senza avviare da un live?

Risposte:


15

In primo luogo, creeremo il layout desiderato nel sottovolume predefinito:

btrfs subvolume snapshot / /rootfs
mkdir /snapshots

Si noti che /rootfssarà il nostro nuovo filesystem di root, quindi non apportare modifiche a quello corrente dopo questo passaggio.

Modifica /rootfs/etc/fstabper fare in modo che il sistema utilizzi il nuovo sottovolume rootfs come filesystem root. Per questo, dovrai modificarlo per includere l' subvol=rootfsopzione.

monta il nostro nuovo filesystem di root da qualche parte, monta i filesystem rilevanti (dev, sys, proc, boot se ce l'hai), chroot su di esso e aggiorna grub:

mount -o subvol=rootfs /dev/sdXX /media/temporary
cd /media/temporary
mount -o bind /dev  dev
mount -o bind /sys  sys
mount -o bind /proc proc
mount -o bind /boot boot
chroot .
update-grub
exit

Questo è tutto. Riavvia e il tuo filesystem di root dovrebbe essere il sottovolume rootfs. Se ciò ha esito positivo, non ci dovrebbe essere alcuna directory / snapshot. Ora puoi eliminare il contenuto del vecchio filesystem di root nel sottovolume predefinito.

Se lo desideri, puoi creare un punto di montaggio permanente per il sottovolume predefinito:

mkdir /media/btrfs/root

quindi puoi mount -o subvolid=0 /dev/sdXX /media/btrfs/roote creare le tue istantanee / sottovolumi.


1
Inoltre, tieni presente che invece di montare, chrooting e aggiornare grub, puoi semplicemente impostare il volume secondario predefinito su rootfs btrfs subvolume set-default ID /. IDpuò essere trovato usando `btrfs subvolume list /
goncalopp il

Ho aggiunto subvol=/rootfs(notare il /) a fstabquello che sembra essere il modo "corretto" come descritto nel (btrfs wiki) [ btrfs.wiki.kernel.org/index.php/Mount_options] .
go2null,

@ go2null Il problema dell'utilizzo subvol=/rootfsè che qualsiasi programma che non è a conoscenza del layout (ad esempio installer di distro) monterà invece il sottovolume predefinito. Se il programma si aspetta che il filesystem assomigli ad un filesystem linux, se fallirà, o peggio ancora - riempi il tuo sottovolume predefinito con cose che non vuoi lì
goncalopp

hmm, avrei pensato che i prog che si scherzavano con i filesystem avrebbero almeno verificato fstabo configurato il bootloader.
go2null,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.