Pindahkan instalasi Linux menggunakan btrfs pada subvolume default (subvolid = 0) ke subvolume lain

15

Ketika melakukan instalasi ke sistem file btrfs root, banyak distribusi Linux menginstal ke subvolume default. Jika dibiarkan tidak dimodifikasi, tata letak ini akan memaksa snapshot atau subvolume dibuat di dalam sistem file root, yang mungkin tidak diinginkan. Layout lain yang mungkin adalah memiliki subvolume default berisi snapshotsdirektori, dan rootfssubvolume, yang merupakan sistem file root. Bagaimana saya bisa mengubah instalasi btrf distro-default untuk menggunakan tata letak subvolume ini tanpa mem-boot dari livecd?

goncalopp
sumber

Jawaban:

15

Pertama, kita akan membuat tata letak yang kita inginkan dalam subvolume default:

btrfs subvolume snapshot / /rootfs
mkdir /snapshots

Perhatikan bahwa itu /rootfsakan menjadi sistem file root baru kami, jadi jangan buat perubahan apa pun pada yang sekarang setelah langkah ini.

Edit /rootfs/etc/fstabuntuk membuat sistem menggunakan subvolume rootfs baru sebagai sistem file root. Untuk itu, Anda harus memodifikasinya untuk memasukkan subvol=rootfsopsi.

me-mount sistem file root baru kami di suatu tempat, me-mount sistem file yang relevan (dev, sys, proc, boot jika Anda memilikinya), chroot ke sana dan perbarui 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

Itu dia. Reboot, dan sistem file root Anda harus menjadi subvolume rootfs. Jika ini berhasil, seharusnya tidak ada direktori / snapshots. Anda sekarang dapat menghapus isi sistem file root lama di subvolume default.

Jika mau, Anda dapat membuat titik pemasangan permanen untuk subvolume default:

mkdir /media/btrfs/root

maka Anda dapat mount -o subvolid=0 /dev/sdXX /media/btrfs/rootdan membuat snapshot / subvolume Anda.

goncalopp
sumber
1
Juga, perhatikan bahwa alih-alih memasang, chroot, dan memperbarui grub, Anda cukup mengatur subvolume default menjadi rootfs btrfs subvolume set-default ID /. IDdapat ditemukan menggunakan daftar subvolume `btrfs /
goncalopp
Saya menambahkan subvol=/rootfs(perhatikan /) fstabsebagai cara yang tampaknya 'tepat' seperti yang dijelaskan dalam (btrfs wiki) [ btrfs.wiki.kernel.org/index.php/Mount_options] .
go2null
@ go2null Masalah menggunakan subvol=/rootfsadalah bahwa program apa pun yang tidak mengetahui tata letak Anda (installer distro, misalnya) akan memasang subvolume default sebagai gantinya. Jika program mengharapkan sistem file terlihat seperti sistem file linux, jika akan gagal, atau lebih buruk - isi subvolume default Anda dengan hal-hal yang tidak Anda inginkan
goncalopp
hmm, akan berpikir bahwa progs yang dipusingkan dengan filesystem setidaknya akan memeriksa fstabatau mengkonfigurasi bootloader.
go2null