README.md

Установка (перенос) системы linux на btrfs subvolume

Установка/переустановка загрузчика grub с установленной на btrfs subvolume системой (смотрите параметры скрипта)

Версия stable: 20250919_01

Рекомендуется ознакомление с инструкцией в docx или pdf

GITFLIC: https://gitflic.ru/user/medved0001
Вконтакте: https://vk.com/medved0001

Описание

Не все инсталляторы linux могут установить систему на btrfs subvolume.

Данная инструкция и скрипт предназначены для переноса системы (установленной на btrfs раздел) на btrfs subvolume.

Также есть параметр только для установки/переустановки загрузчика grub.

Работа скрипта проверена на live инсталляторе 1.8.3.

Проверен перенос систем:

  • Astra linux 1.8.3;
  • Debian 12.6.

Приведу пример установки Astra linux 1.8.3.

По любым вопросам и проблемам со скриптом обращайтесь в личные сообщения Вконтакте.

Инструкция

Установка системы

1.Выберите ручную разметку диска

2.Разметьте диск.

На текущем этапе нужно создать btrfs раздел с точкой монтирования корня / и не создавать дополнительные subvolume. На текущий момент инсталлятор не поддерживает прямую установку системы в subvolume.

Пример разметки есть в файле инструкции

3.Начните установку системы.

4.Дождитесь завершения установки и не перезагружайте компьютер.

Скрипт с автовыполнением по заданным параметрам

Скачайте скрипт btrfs-autocreate-subvol.sh. Скрипт необходимо запустить с параметрами.

Допустимые параметры запуска:

  • -im) Параметр считывающий UUID системного btrfs и efi разделов из файла. Используется при установке системы. Если файл /tmp/uuid-system-part существует, то первая строка будет взята для определения системного btrfs раздела, а вторая для efi раздела. Подробно про внедрение данного скрипта в live installer astra linux будет описано в скрипте astra linux create iso.

  • -f) Автоматический выбор первого доступного btrfs раздела. Если этот параметр не указан, то должен быть указан -sbp.

  • -mb) Добавить в fstab монтирование корня btrfs раздела в /mnt/root_btrfs. Полезно для быстрого доступа к корню раздела для создания/восстановления снапшотов.

  • -ncs \"Значение\"). Параметр для переустановки grub (Перенос системы на subvolume будет пропущен). В значении необходимо указать имя subvolume в котором находится система. Пример команды: ./btrfs-autocreate-subvol.sh -f -neb "astra" -ceb -ncs "@"

  • -ceb) Заменить файл /EFI/boot/bootx64.efi в ESP разделе файлом grubx64.efi созданным при установке grub.

  • -neb "Значение") Имя efi загрузчика для установки grub. Обязательный параметр. Имена текущих загрузочных записей вы можете посмотреть через команду efibootmgr.

  • -sbp "Значение") Имя btrfs раздела с системой (например, nvme0n1p4). Если параметр не указан, то должен быть указан параметр -f.

  • -sp "Значение") Значение в специальном формате для добавления строки монтирования в fstab (точка монтирования;имя subvolume;параметры монтирования;признак использования nocow).

Точка монтирования и имя subvolume обязательны для заполнения.

Параметры монтирования можно не указывать, тогда будет использоваться defaults

Признак использования nocow может принимать значение 0/1

  • 0 - не использовать nocow
  • 1 - выставить атрибут nocow для subvolume

Если запись с точкой монтирования корня / не будет указана, то будет использоваться значение /;@;defaults;0

Например: -sp "/;@;relatime,ssd,discard=async,space_cache=v2;0" -sp "/home;@home;;0"

Рекомендуется:

  • вынести /home, /tmp, /var/cache, /var/log, /var/tmp в отдельные subvolume;
  • к /tmp, /var/cache, /var/log, /var/tmp указать признак использования nocow со значением 1;
  • Если используется swap файл, создать его на отдельном subvolume с применением nocow.

Пример полной команды: ./btrfs-autocreate-subvol.sh -f -mb -ceb -neb "astra" -sp "/;@;relatime,ssd,discard=async,space_cache=v2;0" -sp "/home;@home;;0" -sp "/tmp;@tmp;;1" -sp "/var/cache;@varcache;;1" -sp "/var/log;@varlog;;1" -sp "/var/tmp;@vartmp;;1" -sp "/swap;@swap;;1"

Пример полной команды: ./btrfs-autocreate-subvol.sh -f -mb -ceb -neb "astra" -sp "/;@;defaults,space_cache=v2,nodiscard,relatime;0" -sp "/home;@home;defaults,space_cache=v2,nodiscard,relatime;0" -sp "/tmp;@tmp;defaults,space_cache=v2,nodiscard,relatime;1" -sp "/var/cache;@varcache;defaults,space_cache=v2,nodiscard,noatime;1" -sp "/var/log;@varlog;defaults,space_cache=v2,nodiscard,noatime;1" -sp "/var/tmp;@vartmp;defaults,space_cache=v2,nodiscard,relatime;1" -sp "/swap;@swap;defaults,space_cache=v2,nodiscard,noatime;1" -sp "/test1;@test1;;1"

Решение возможной проблемы создания EFI записи

В связи с существованием различных специфичных реализаций UEFI, на некоторых платах/виртуальных машинах при выполнении команды grub-install может не добавится загрузочная запись. По умолчанию UEFI обычно ищет /EFI/boot/bootx64.efi на ESP разделе.

Варианты решения (Зависит от реализации UEFI):

  • 1.Добавить запись через BIOS, указав нужный файл загрузчика (если поддерживается вашим BIOS);

  • 2.Заменить файл /boot/efi/EFI/boot/bootx64.efi файлом созданным grub (например /boot/efi/EFI/astra/grubx64.efi). Если смонтирован ESP раздел, то /boot/efi в пути не будет (можете использовать опцию -ceb при запуске скрипта);

  • 3.Оставить в каталоге /boot/efi/EFI только один загрузчик (Если смонтирован ESP раздел, то /boot/efi в пути не будет);

  • 4.Попробовать добавить запись через команду:

Внимание! Известны случаи повреждения firmware при использовании efibootmgr на некоторых устройствах с Phoenix UEFI.

efibootmgr -c -d /dev/sda -p 4 -L "ALTLinux" -l "\EFI\altlinux\grub64.efi"

  • 5.Для VirtualBox:

1-ый вариант выполнить в ещё загруженной системе:

  • echo "fs0:\EFI\altlinux\grubx64.efi" > /boot/efi/startup.nsh

Или то же самое сделать потом, из EFI Shell:

  • echo "fs0:\EFI\altlinux\grubx64.efi" > fs0:\startup.nsh

2-ый вариант выполнить замену файла /boot/efi/EFI/boot/bootx64.efi файлом созданным grub.

Подробнее про UEFI можно прочитать тут:

https://www.altlinux.org/UEFI

https://wiki.astralinux.ru/pages/viewpage.action?pageId=371804424

Описание

Установка (перенос) системы linux на btrfs subvolume

Релизы
20250919_01 2025-09-19
Конвейеры
0 успешных
0 с ошибкой