Спецификации (Blueprints)

Спецификации (blueprints) — это формат, используемый image-builder, инструментом для сборки Fedora Minimal с настройками на этапе сборки. Приведённые ниже примеры представляют собой короткие, ориентированные на конкретные случаи использования спецификации. Подробнее о спецификациях можно узнать в документации вышестоящего проекта для image-builder.

Приведённые ниже примеры можно поместить в файл с именем my-minimal.toml (или любым другим по вашему выбору) и передать image-builder:

$ sudo dnf install -y image-builder
$ sudo image-builder build --blueprint my-minimal.toml minimal-raw-zst
# ...

Пакеты

Добавление пакетов в Fedora Minimal — это наиболее распространённая настройка. Если вы хотите, чтобы пакеты устанавливались из пользовательских репозиториев, таких как RPMfusion, COPR или репозиториев поставщиков, обратитесь также к разделу настройка репозиториев.

packages = [
    { name = "tmux" },
    { name = "python3" },
]

Также можно ссылаться на группы композиций (composition groups), которые используются для группировки связанных пакетов. Следующая конфигурация имитирует Fedora KDE. Обратите внимание, что это не превращает собранный образ в Fedora KDE. Артефакты Fedora KDE тестируются группой людей, в то время как настройки, применяемые поверх Fedora Minimal, — нет.

packages = [
    { name = "@kde-desktop-environment" },
    { name = "@kde-apps" },
    { name = "@kde-media" },
    { name = "@kde-pim" },
    { name = "@kde-spin-initial-setup" },
    { name = "@firefox" },
    { name = "@libreoffice" },
    { name = "libreoffice-draw" },
    { name = "libreoffice-math" },
    { name = "fuse" },
    { name = "kde-l10n" },
]

# Для образа диска требуется немного больше места, чем
# стандартные 4 ГБ.
customizations.disk.minsize = "10 GiB"

Возможно, вы удивлены, что пакеты представлены объектами с ключом name. Это связано с тем, что вы также можете указать version для установки конкретной версии пакета, если она доступна в репозиториях.

Репозитории

Иногда может потребоваться использовать дополнительные репозитории для вашего образа. Эти значения (в основном) совпадают с теми, что используются в конфигурации репозиториев для dnf.

[[customizations.repositories]]
id = "example"
name = "Пример репозитория"
baseurls = ["https://example.com/"]
enabled = true
install_from = true

Этот пример добавит репозиторий example для использования при установке пакетов из вашей настройки пакетов и настроит его в полученном образе так, чтобы он был доступен для dnf.

Важно отметить, что image-builder различает репозитории, используемые для сборки системы, и те, которые используются для настройки пакетов. Если вы хотите включить или заменить репозитории, используемые для сборки самой системы, обратитесь к странице расширенной настройки.

Пользователи

Вы можете добавлять или изменять пользователей в собираемом образе с помощью настройки users. Пользователи идентифицируются по имени. Если пользователь уже существует (например, потому что один из установленных пакетов создал его), он будет изменён. Если пользователь не существует, он будет создан.

[[customizations.users]]
name = "myuser"
key = "ssh-ed25519 AAxxxAA user@host"

Создаст или обновит пользователя с именем myuser, установив его авторизованные SSH-ключи в указанный ключ. Дополнительные параметры см. в документации вышестоящего проекта для image-builder.

Разметка

По умолчанию Fedora Minimal использует "сырую" GPT-разметку с корневым разделом ext4, смонтированным в /. Это можно изменить следующими способами. Если вы хотите узнать больше о разметке и её поведении, вы можете прочитать документацию вышестоящего проекта для image-builder.

btrfs

Для сборки образа с использованием btrfs можно использовать следующую спецификацию. Это имитирует подтома Fedora Workstation.

[[customizations.disk.partitions]]
type = "btrfs"
minsize = "3 GiB"
subvolumes = [
  { name = "root", mountpoint = "/" },
  { name = "home", mountpoint = "/home" },
]

Будет разумно также разместить /var на отдельном подтоме.

lvm

Для сборки образа с использованием LVM:

[[customizations.disk.partitions]]
type = "lvm"
minsize = "3 GiB"

Это преобразует раздел, содержащий корневую точку монтирования /, в группу томов LVM, содержащую корневой логический том.

Использование таблицы разделов DOS

Вы можете переключиться с диска с разметкой GPT на диск с разметкой DOS. Это может потребоваться для загрузки на некоторых машинах, таких как Raspberry Pi 3. Дополнительные рекомендации для конкретного оборудования см. в поддержке оборудования.

[customizations.disk]
type = "dos"