Архитектура Lycoris
Композиция профилей, оверлеи airootfs, контейнер сборки и схема подтомов Btrfs.
На этой странице
Сборка Lycoris разделяет общий фундамент base и дельты редакций. Все шаги
идут внутри отдельного контейнера, поэтому окружение хоста на результат не
влияет.
Схема сборки и установки
Правила композиции
Пакеты только добавляются
Список редакции дополняет base, дубликаты схлопываются с сохранением первого
вхождения. Удалить пакет из base редакция не может.
Оверлеи заменяют файлы целиком
Файл из airootfs заменяет базовый по тому же пути. Построчного слияния
конфигураций нет, как и rsync --delete.
Удаление через remove.list
Пути проверяются до первого удаления: абсолютные пути, компоненты . и ..,
дубликаты, вложенные записи и выход за пределы файловой системы запрещены.
Метаданные в overrides
Параметры образа переопределяет profiledef.overrides.sh, который подключается
из profiledef.sh. Править profiledef.sh через sed нельзя.
Службы символическими ссылками
Включение юнитов systemd задаётся ссылками в airootfs/, например
display-manager.service. Preset-файлы в этом пайплайне не применяются.
Почему не сделано иначе
- Отдельные полные профили для каждой редакции пришлось бы править трижды, а различия между копиями быстро накапливаются.
sedпоprofiledef.shво время сборки прячет реальные значения от того, кто читает репозиторий.- Скомпонованные профили в Git устаревают при каждом изменении дельты, поэтому
они лежат в
work/и не коммитятся.
Разметка диска: Btrfs и Snapper
Установщик создаёт подтома Btrfs:
@: корень системы (/), снимки делаются только для него.@home: домашние каталоги (/home), откат системы не трогает пользовательские файлы.@snapshots: каталог снимков Snapper (/.snapshots).@var_log: системный журнал (/var/log). Остаётся на месте при откате, чтобы можно было разобраться в причине сбоя.@var_cache: кэш пакетов (/var/cache).
Обновления и откат
Хук snap-pac снимает состояние корня до и после каждой операции pacman.
Если после обновления система не стартует, grub-btrfs добавляет в меню GRUB
пункт с прошлыми снимками, и можно загрузиться в рабочий.
Оптимизация под процессор
При установке утилита lycoris-detect-cpu смотрит на флаги процессора в
/proc/cpuinfo и определяет уровень инструкций:
x86-64-v2: SSE4.2 и POPCNTx86-64-v3: AVX2, FMA, BMI1 и BMI2x86-64-v4: AVX-512
Для процессоров уровня v3 и выше подключаются репозитории ALHP x86-64-v3, для v2 подключается x86-64-v2. На остальных остаются стандартные репозитории Arch. Пакеты ALHP подписываются ключами Ed25519, которые добавляются в связку ключей pacman.