Процесс сборки среды выполнения

Процесс сборки среды выполнения#

Когда запускается сборка среды (команда build, create или import), aft-runtime выполняет несколько шагов и показывает их ход в журнале. Понимание этих шагов помогает читать журнал и находить причину, если сборка остановилась.

Шаги сборки#

Журнал нумерует восемь шагов; поиск уязвимостей идёт после них и своего номера не имеет.

  1. Создание базовой системы. В зависимости от источника система собирается через debootstrap, извлекается из Docker-образа или импортируется из готового rootfs.

  2. Настройка системы. Подключаются дополнительные репозитории, устанавливаются пакеты среды, выполняются команды настройки, очищается кэш пакетов и, если включено, удаляется документация.

  3. Создание структуры runtime. Система приводится к структуре Flatpak-runtime, формируются метаданные, включая объявленные точки расширения и переменные окружения.

  4. Создание SDK. Если включено, отдельно собирается SDK-вариант с заголовками, компиляторами и инструментами разработки.

  5. Генерация состава ПО. Если включена, создаётся состав ПО со всеми установленными пакетами и встраивается в среду.

  6. Подписание ELF. Если включена подпись по ГОСТ, бинарники подписываются через bsign.

  7. Экспорт ключей bsign. Публичные ключи выкладываются в среду, чтобы подпись можно было проверить на целевой системе.

  8. Экспорт в репозиторий. Среда и SDK экспортируются в репозиторий OSTree, при необходимости подписываются ключом GPG, обновляются метаданные репозитория.

После экспорта, если поиск уязвимостей включён, готовая среда прогоняется через проверку.

Какие шаги выполняются, зависит от настроек: SDK, состав ПО, подпись и поиск уязвимостей делаются только если их включили.

Настройка системы идёт в изолированном окружении, которому на время сборки подставляются разрешение имён и минимальный набор узлов устройств. Подставленное снимается после настройки и в готовую среду не попадает. Сбой обновления списков пакетов останавливает сборку сразу, не доводя до установки пакетов.

Где искать результат#

Готовая среда попадает в репозиторий OSTree (по умолчанию ./repo). Промежуточные файлы остаются в рабочем каталоге (по умолчанию ./build_dir); удалить их можно командой clean. Если сборка остановилась с ошибкой, её причина видна в журнале на соответствующем шаге.