Переместите установку Linux с помощью btrfs в подобъеме по умолчанию (subvolid = 0) в другой подобъем

15

При установке в корневую файловую систему btrfs многие дистрибутивы Linux устанавливаются в подобъем по умолчанию. Если оставить его без изменений, этот макет заставит создавать любые моментальные снимки или подобъемы внутри корневой файловой системы, что может быть нежелательно. Другой возможный макет может состоять в том, чтобы подобъем по умолчанию содержал snapshotsкаталог и rootfsподобъем, который является корневой файловой системой. Как я могу изменить установку дистрибутива по умолчанию для дистрибутива btrfs, чтобы использовать этот макет промежуточного тома без загрузки с livecd?

goncalopp
источник

Ответы:

15

Во-первых, мы создадим нужный нам макет в подобъеме по умолчанию:

btrfs subvolume snapshot / /rootfs
mkdir /snapshots

Обратите внимание, что /rootfsэто будет наша новая корневая файловая система, поэтому не делайте никаких изменений в текущей после этого шага.

Отредактируйте, /rootfs/etc/fstabчтобы система использовала новый дочерний том rootfs в качестве корневой файловой системы. Для этого вам нужно изменить его, чтобы включить subvol=rootfsопцию.

смонтируйте где-нибудь нашу новую корневую файловую систему, смонтируйте соответствующие файловые системы (dev, sys, proc, загрузитесь, если у вас есть), выполните chroot к нему и обновите 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

Вот и все. Перезагрузитесь, и ваша корневая файловая система должна быть подтомом rootfs. Если это удалось, не должно быть никакого каталога / snapshots. Теперь вы можете удалить содержимое старой корневой файловой системы в подобъеме по умолчанию.

Если вы хотите, вы можете сделать постоянную точку монтирования для подсоба по умолчанию:

mkdir /media/btrfs/root

тогда вы можете mount -o subvolid=0 /dev/sdXX /media/btrfs/rootи создавать свои снимки / подобъемы.

goncalopp
источник
1
Также обратите внимание, что вместо монтирования, изменения и обновления grub вы можете просто установить подобъем по умолчанию для rootfs btrfs subvolume set-default ID /. IDможно найти с помощью `
btrfs subvolume
Я добавил subvol=/rootfs(обратите внимание /) на то, fstabчто это кажется «правильным» способом, описанным в (btrfs wiki) [ btrfs.wiki.kernel.org/index.php/Mount_options] .
go2null
@ go2null Проблема использования subvol=/rootfsзаключается в том, что любая программа, которая не знает о вашем макете (например, установщики дистрибутивов), вместо этого будет монтировать подобъем по умолчанию. Если программа ожидает, что файловая система будет похожа на файловую систему linux, если произойдет сбой или что-то еще хуже, заполните свой
goncalopp
хм, подумал бы, что проги, которые возятся с файловыми системами, по крайней мере проверят fstabили загрузят конфигурацию загрузчика.
go2null