README.md

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

    Версия stable: 20250212_01

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

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

    Описание

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

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

    Скрипт проверен на Debian 12.6 и Astra linux 1.8.

    Приведу пример на основе live инсталлятора astra linux 1.8.

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

    Инструкция

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

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

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

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

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

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

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

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

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

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

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

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

    • -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 -neb "astralinux" -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"

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

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

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

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

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

    • 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

    Описание

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

    Релизы
    20250422_02 2025-04-22
    Конвейеры
    0 успешных
    0 с ошибкой