Di chuyển cài đặt Linux bằng btrfs trên subvolume mặc định (subvolid = 0) sang subvolume khác


14

Khi thực hiện cài đặt vào hệ thống tập tin btrfs gốc, nhiều bản phân phối Linux sẽ cài đặt vào subvolume mặc định. Nếu không được sửa đổi, bố cục này sẽ buộc bất kỳ ảnh chụp nhanh hoặc subvolume nào được tạo bên trong hệ thống tập tin gốc, điều này có thể không mong muốn. Một cách bố trí có thể khác là có subvolume mặc định chứa một snapshotsthư mục và một rootfssubvolume, đó là hệ thống tập tin gốc. Làm cách nào tôi có thể thay đổi cài đặt btrfs mặc định distro để sử dụng bố cục subvolume này mà không cần khởi động từ một livecd?

Câu trả lời:


14

Đầu tiên, chúng tôi sẽ tạo bố cục mà chúng tôi muốn trong subvolume mặc định:

btrfs subvolume snapshot / /rootfs
mkdir /snapshots

Lưu ý rằng đó /rootfssẽ là hệ thống tập tin gốc mới của chúng tôi, vì vậy đừng thực hiện bất kỳ thay đổi nào đối với hiện tại sau bước này.

Chỉnh sửa /rootfs/etc/fstabđể làm cho hệ thống sử dụng subvolume rootfs mới như hệ thống tập tin gốc. Vì vậy, bạn sẽ cần sửa đổi nó để bao gồm subvol=rootfstùy chọn.

gắn hệ thống tập tin gốc mới của chúng tôi ở đâu đó, gắn kết các hệ thống tập tin có liên quan (dev, sys, Proc, boot nếu bạn có nó), chroot vào nó và cập nhật 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

Đó là nó. Khởi động lại và hệ thống tập tin gốc của bạn phải là subvolume rootfs. Nếu điều này thành công, không nên có bất kỳ thư mục / snapshots nào. Bây giờ bạn có thể xóa nội dung của hệ thống tập tin gốc cũ trong subvolume mặc định.

Nếu bạn muốn, bạn có thể tạo một điểm gắn kết vĩnh viễn cho subvolume mặc định:

mkdir /media/btrfs/root

sau đó bạn có thể mount -o subvolid=0 /dev/sdXX /media/btrfs/rootvà tạo ảnh chụp nhanh / subvolume của bạn.


1
Ngoài ra, lưu ý rằng thay vì gắn kết, chroot và cập nhật grub, bạn chỉ cần đặt subvolume mặc định là rootfs với btrfs subvolume set-default ID /. IDcó thể được tìm thấy bằng cách sử dụng `btrfs subvolume list /
goncalopp

Tôi đã thêm subvol=/rootfs(lưu ý /) vào fstabvì dường như đó là cách 'phù hợp' như được mô tả trong (btrfs wiki) [ btrfs.wiki.kernel.org/index.php/Mount_options] .
go2null

@ go2null Vấn đề của việc sử dụng subvol=/rootfslà bất kỳ chương trình nào không biết về bố cục của bạn (ví dụ như trình cài đặt distro) sẽ gắn kết subvolume mặc định. Nếu chương trình hy vọng hệ thống tệp trông giống như hệ thống tệp linux, nếu thất bại hoặc tệ hơn - hãy điền vào tệp con mặc định của bạn với những thứ bạn không muốn ở đó
goncalopp

hmm, sẽ nghĩ rằng các pross gây rối với hệ thống tập tin ít nhất sẽ kiểm tra fstabhoặc cấu hình bootloader.
go2null
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.