Найти тему
[about@Linux ~]#

Создание подтомов BTRFS, после установки системы в корень ФС (актуально для Calculate, Alt и т.д.)

Увы не все дистрибутивы, пока что, способны устанавливаться в BTRFS используя подтома. Некоторые из них ставят систему прямо в корень ФС и для начала полноценного пользования подтомами и резервными копиями, с помощью программы Timeshift, приходится переносить уже установленную систему по подтомам вручную. В этом руководстве я пошагово объясню вам как это сделать.

За основу для инструкции взята система Альт P10 Starterkit установленная на разделы следующим образом:

/dev/nvme0n1p1 — EFI System Partition

/dev/nvme0n1p2 — /boot ext4

/dev/nvme0n1p3 — / btrfs

Итак, начнем:

  1. Загружаемся в режиме LiveCD с носителя из которого выполнялась установка.

2. Далее переключаемся в root:

su -

3. И создаем каталог с любым удобным именем, в моем примере это будет btrfs:

# mkdir /mnt/btrfs

4. Монтируем раздел с установленной операционной системой в созданный каталог btrfs:

# mount /dev/nvme0n1p3 /mnt/btrfs/

5. Переходим в каталог /mnt/btrfs:

# cd /mnt/btrfs/

6. Создаем нужные нам подтома (@ и @home) в системе btrfs на разделе /dev/nvme0n1p3, который смонтирован в /mnt/btrfs:

Сначала создаем подтом для системы

# btrfs subvolume create ./@

А потом и подтом для домашнего каталога

# btrfs subvolume create ./@home

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

# btrfs subvolume list ./

8. Теперь переносим каталоги пользователей из каталога /home в /@home:

# mv ./home/* ./@home/

9. А все остальные каталоги (кроме /@home) переносим в подтом @:

# mv ./bin ./@/
# mv ./boot ./@/
# mv ./dev ./@/
# mv ./home ./@/
# mv ./lib ./@/
# mv ./etc ./@/
И т.д.

10. В каталоге /mnt/btrfs по итогу у вас должно остаться только два каталога @ и @home. Посмотреть список каталогов в корне можно командой:

# ls ./

Ну вот. Половина дела сделана. Осталось внести изменения в /etc/fstab и обновить загрузчик grub. Для этого:

  1. Создаем еще один каталог с, опять же, любым именем, к примеру /mnt/btrfs2
# mkdir /mnt/btrfs2

2. Заново примонтируем btrfs-раздел, но теперь уже с опцией subvol=@:

# mount /dev/nvme0n1p3 /mnt/btrfs2 -o subvol=@

3. Примонтируем временные интерфейсные файловые системы в /mnt/btrfs2:

# for i in dev sys proc run; do mount --bind -v /$i /mnt/btrfs2/$i; done

4. Примонтируем директории /boot и /boot/efi:

mount /dev/nvme0n1p2 /mnt/btrfs2/boot/
mount /dev/nvme0n1p1 /mnt/btrfs2/boot/efi

5. И теперь делаем chroot в нашу систему:

# chroot /mnt/btrfs2

6. Вносим изменения в /etc/fstab с помощью любого текстового редактора, например nano:

# nano /etc/fstab

Находим строку:

UUID=<uuid раздела> / btrfs relatime 1 1

И добавляем subvol=@, чтобы строка приобрела вид:

UUID=<uuid раздела> / btrfs relatime,subvol=@ 1 1

Ниже добавляем еще одну строку уже для подтома @home:

UUID=<uuid раздела> /home btrfs relatime,subvol=@home 1 1

UUID раздела в нашем случае будет одинаковый для @ и @home, так как они находятся в одном разделе.

7. Устанавливаем загрузчик grub в /dev/nvme0n1:

# grub-install /dev/nvme0n1

8. И обновляем его конфигурацию:

# grub-mkconfig -o /boot/grub/grub.cfg

9. Выходим из chroot:

# exit

10. И перезагружаем систему:

# reboot

На этом все. Система перенесена в подтом @, а пользовательские данные из /home, теперь находятся в подтоме @home. После перезагрузки можно ставить Timeshift и настраивать бэкап вашей системы. Не смотря на кажущуюся сложность, вся процедура занимает не более 10 минут.

[about@Linux ~]# - Сообщество пользователей и любителей ОС на базе ядра Linux и по-совместительству персональный блог одного из таких людей.

Страница ВК: https://vk.com/about_linux