Конвертация корневой файловой системы BTRFS в подтом
Ситуация, которую всем хочется избежать — это потеря данных — информации и настроек, на восстановление которых потребуется не мало времени и рутинной работы.
Для быстрого восстановления в Linux можно использовать возможности файловой системы BTRFS, которая позволяет легко создавать снимки файловой системы.
К сожалению, при установке некоторых современных дистрибутивов (например Ubuntu 24.04 и 24.10) нет возможности создать разные подтома в рамках одной файловой системы BTRFS для того, чтобы поместить в них корневой и другие разделы, например /home. Как правило, установщик позволяет создать файловую систему BTRFS и установить в нее корневой раздел, но при такой конфигурации нет возможности воспользоваться полезной утилитой Timeshift. Для работы Timeshift необходимо, чтобы корневой раздел был помещен в отдельный подтом файловой системы BTRFS. Это можно исправить, создав необходимый подтом и перенастроив загрузчик, чтобы он загружал систему из него.
Перенесем корневой раздел в подтом и перенастроим Grub, чтобы Linux загружался из подтома файловой системы BTRFS.
Создадим снимок корневого раздела:
sudo btrfs subvolume snapshot / /@
результат:
Create a snapshot of '/' in '//@'
Убедимся, что раздел создан:
sudo btrfs subvolume list /
результат:
ID 267 gen 2007 top level 5 path @
Редактируем fstab, чтобы корневая файловая система монтировалась из нового раздела (subvolume)
sudo nano /@/etc/fstab
вместо строки:
/dev/disk/by-uuid/ / btrfs defaults 0 1
должно быть что то похожее на (добавляем параметр монтирования subvol=@):
/dev/disk/by-uuid/ / btrfs subvol=@, defaults 0 1
Настраиваем Grub, чтобы он показывал меню загрузки и перезагружаем систему
sudo nano /etc/default/grub
меняем параметры на:
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
sudo update-grub
sudo reboot
Когда появляется меню загрузчика grub нажимаем клавишу «e», чтобы отредактировать меню загрузки. меняем параметры загрузки (добавляем »/@»):
linux /@/boot/…
в конце строки добавляем «rootflags=subvol=@» между «ro» and «quiet splash»
должно выглядеть примерно так:
… ro rootflags=subvol=@ quiet splash …
редактируем строку, начинающуюся с initrd:
initrd /@/boot/…
нажимаем F10 для загрузки
Убеждаемся, что запустились из нужного подтома
mount |grep ' / '
результат выполнения команды должен выгляжеть примерно так:
/dev/… on / type btrfs (…subvol=/@…)
если вы видите здесь »…subvol=/@…», значит вы загрузились с правильного подраздела
Сохраним настройки загрузчика
для не-UEFI систем (Legacy или BIOS):
sudo update-grub
sudo grub-install /dev/... # ваше устройство, например /dev/sda
reboot
для UEFI систем:
sudo update-grub
grub-install --efi-directory=/boot/efi
reboot
После удачной загрузки можно удалить данные с корневого раздела, с которые мы перенесли в подраздел /@ путем создания снимка
sudo mount /dev/sda2 /mnt
cd /mnt
ll # выведел список содержимого
# удаляем всё кроме /@
sudo rm -rf !(@*)
Теперь можно установить timeshift и наслаждаться легкой работой со снимками файловой системы.