Конвертация корневой файловой системы BTRFS в подтом

e75c6ec51cb40ec8da7360c3886dd773.png

Ситуация, которую всем хочется избежать — это потеря данных — информации и настроек, на восстановление которых потребуется не мало времени и рутинной работы.
Для быстрого восстановления в Linux можно использовать возможности файловой системы BTRFS, которая позволяет легко создавать снимки файловой системы.

К сожалению, при установке некоторых современных дистрибутивов (например Ubuntu 24.04 и 24.10) нет возможности создать разные подтома в рамках одной файловой системы BTRFS для того, чтобы поместить в них корневой и другие разделы, например /home. Как правило, установщик позволяет создать файловую систему BTRFS и установить в нее корневой раздел, но при такой конфигурации нет возможности воспользоваться полезной утилитой Timeshift. Для работы Timeshift необходимо, чтобы корневой раздел был помещен в отдельный подтом файловой системы BTRFS. Это можно исправить, создав необходимый подтом и перенастроив загрузчик, чтобы он загружал систему из него.

Перенесем корневой раздел в подтом и перенастроим Grub, чтобы Linux загружался из подтома файловой системы BTRFS.

  1. Создадим снимок корневого раздела:

sudo btrfs subvolume snapshot / /@

результат:
Create a snapshot of '/' in '//@'

  1. Убедимся, что раздел создан:

sudo btrfs subvolume list /

результат:
ID 267 gen 2007 top level 5 path @

  1. Редактируем fstab, чтобы корневая файловая система монтировалась из нового раздела (subvolume)

sudo nano /@/etc/fstab

вместо строки:
/dev/disk/by-uuid/ / btrfs defaults 0 1
должно быть что то похожее на (добавляем параметр монтирования subvol=@):
/dev/disk/by-uuid/ / btrfs subvol=@, defaults 0 1

  1. Настраиваем Grub, чтобы он показывал меню загрузки и перезагружаем систему

sudo nano /etc/default/grub

меняем параметры на:
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10

sudo update-grub
sudo reboot
  1. Когда появляется меню загрузчика grub нажимаем клавишу «e», чтобы отредактировать меню загрузки. меняем параметры загрузки (добавляем »/@»):

linux /@/boot/…

в конце строки добавляем «rootflags=subvol=@» между «ro» and «quiet splash»
должно выглядеть примерно так:

… ro rootflags=subvol=@ quiet splash …

редактируем строку, начинающуюся с initrd:

initrd /@/boot/…

нажимаем F10 для загрузки

  1. Убеждаемся, что запустились из нужного подтома

mount |grep ' / '

результат выполнения команды должен выгляжеть примерно так:
/dev/… on / type btrfs (…subvol=/@…)
если вы видите здесь »…subvol=/@…», значит вы загрузились с правильного подраздела

  1. Сохраним настройки загрузчика

    для не-UEFI систем (Legacy или BIOS):

sudo update-grub
sudo grub-install /dev/... # ваше устройство, например /dev/sda
reboot

для UEFI систем:

sudo update-grub
grub-install --efi-directory=/boot/efi
reboot
  1. После удачной загрузки можно удалить данные с корневого раздела, с которые мы перенесли в подраздел /@ путем создания снимка

sudo mount /dev/sda2 /mnt
cd /mnt
ll # выведел список содержимого
# удаляем всё кроме /@
sudo rm -rf !(@*)

Теперь можно установить timeshift и наслаждаться легкой работой со снимками файловой системы.

© Habrahabr.ru