Компания Collabora представила debos, генератор системных образов на базе Debian

Компания Collabora представила проект debos, в рамках которого подготовлен инструментарий для создания произвольных системных образов для Debian и производных от него дистрибутивов. Код проекта написан на языке Go и распространяется под лицензией Apache 2.0.

В отличие от штатного debootstrap, debos позволяет не только загрузить и установить компоненты образа, но и провести кастомизацию, установить дополнительные файлы, запустить скрипты, внести изменения в настройки. Кроме того, в процессе работы debos не требует привилегий root для выполнения привилегированных операций в сформированном системном окружении. В debos применяется библиотека fakemachine, которая при помощи QEMU настраивает виртуальную машину, позволяющую выполнять привилегированные операции внутри образов и создавать образы для любых архитектур, поддерживаемых в QEMU.

Debos не привязывается к каким-то конкретным областям применения, таким как создание образов контейнеров, виртуальных машин или загрузочных сборок, а предоставляет универсальный, понятный и гибкий механизм для кастомизации. Начинка образов определяется в файлах конфигурации, оформленных в формате YAML. В файле конфигурации определяется набор не зависящих друг от друга действий. Среди предлагаемых действий:

  • apt: установка пакетов и связанных с ними зависимостей при помощи команды apt;
  • debootstrap: подготовка rootfs с использованием debootstrap;
  • download: загрузка файла по сети;
  • filesystem-deploy: развёртывание корневой ФС в уже ранее созданном образе;
  • image-partition: создание файла с образом с разбивкой на разделы и форматированием;
  • ostree-commit: создание коммита OSTree из rootfs;
  • ostree-deploy: развёртывание ветки OSTree в заданный образ;
  • overlay: рекурсивное копирование каталогов или файлов в целевую ФС;
  • pack: создание сжатого архива целевой ФС;
  • raw: прямая запись файла в образ по заданному смещению;
  • run: выполнение команды или скрипта в контексте создаваемой ФС;
  • unpack: распаковка файлов из архиве в создаваемую ФС.

Например, для создания образа для архитектуры ARM64, установки в него определённого набора пакетов, изменения имени хоста в /etc/hostname и упаковки образа в сжатый архив, можно запустить команду «debos example.yaml» со следующими настройками (более подробный пример подготовлен для создания сборки Debian для Raspberry Pi 3):

   {{- $image := or .image "debian.tgz" -}}

   architecture: arm64

   actions:
     - action: debootstrap
       suite: "buster"
       components:
         - main
         - non-free
       mirror: https://deb.debian.org/debian
       variant: minbase

     - action: apt
       packages: [ sudo, openssh-server, adduser, systemd-sysv, firmware-linux ]

     - action: run
       chroot: true
       command: echo debian  /etc/hostname

     - action: pack
       file: {{ $image }}
       compression: gz

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.