FreeSource: AltLinux/Sisyphus/devel/spt3

Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

Описание работы с spt3

Общие понятия

spt3 представляет собой инструмент для создания решений на базе некоего репозитария (Sisyphus).

Механизм работы spt прост – в некоей рабочей директории (изначально чистой), создается профиль – директория с описаниями того, как и что собирать. Профиль включает в себя файл рецепта (recipe) – инструкции по сборке, выполняя которые пошагово, можно получить желаемый результат, а также все вспомогательные файлы, требующиеся для сборки. Шаги сборки (см. ниже – tasks) – маленькие скрипты, каждый из которых, в соответствии с общепринятым в Unix подходом, делает всего одну вещь. После того, как профиль готов, сама сборка выполяется запуском одной утилиты spt, которая выполняет по очереди все шаги, вызывая каждый из них с нужными опциями.

Примеры возможных рецептов

Примеры профилей можно найти в приложении к пакету [указано название]:

Quickstart

  1. Сделать чистую директорию и перейти туда (например, work).
  2. Скопировать туда любой из понравившихся профилей из /usr/share/doc/spt3*/profiles/ как поддиректорию work/profile. При необходимости – доработать профиль под свои задачи.
  3. Выполнить команду spt.
  4. Результат можно забрать в work/chroot, work/out и work/*.iso – в зависимости от того, что нужно.

Пример:

Терминология

Утилиты

spt3

Утилита spt3 прогоняет последовательно инструкции, записанные в файле recipe, запуская соответствующие им tasks с правильными опциями и т.п., отслеживает процесс выполнения или невыполнения каждого из task'ов и выводит в логи заметные (начинающеся с =====) записи о прогонке или ошибке на очередном этапе.

spt-deploy-lilo

Утилита spt-deploy-lilo предназначена для установки образа системы на жесткий диск (или иной загрузочный носитель) и настройки его загрузки с помощью LILO. Подразумевается, что эта часть инсталляции выполняется с правами root на той же машине, на которой потом с этого жесткого диска будут загружаться.

Вход:

Опции

Все tasks получают на вход некий набор опций (в виде имя=значение). Эти опции могут быть определены в следующих местах (места расположены в порядке перекрытия значений опций – в случае задания опций в нескольких местах, используется значение указанное в месте ниже по списку):

Специальные опции

Среди опций выделяется одна центральная и обязательная опция – это положение рабочей директории (work_dir). Она, очевидно, не может быть задана в файле конфигурации, зато может быть:

Кроме того, есть еще 2 опции, которые действуют на все task'и:

Эти 3 опции доступны везде и везде ниже это больше особо оговариваться не будет.

Глобальные опции

Опции, общие для создаваемого решения (т.е. такие, которые должны быть одинаковыми во всех task'ах), удобнее всего определять в файле $work_dir/profile/config. Рекомендуется определять следующие глобальные опции:

Эти и остальные опции, относящиеся к определенным task'ам, описаны в соответствующих разделах task'ов.

Tasks

spt-clean

Корректно очищает в рабочей директории все наработки, кроме директории profile. Рекомендуется выполнять как аналог “make clean” перед полной пересборкой.

Вход: никакого.

Выход: удаляется все, кроме $work_dir/profile.

spt-init-chroot

Инициализирует рабочую директорию, создавая в ней служебные поддиректории для работы hasher.

Вход:

Выход:

spt-make-chroot

Распаковывает в инициализированный chroot пакеты по списку из файла packages в директории профиля (можно использовать другой файл, задав его имя опцией).

Вход:

Выход:

spt-create-repo

Создает в $out_dir репозитарий с названием IDENT с индексами с пакетами по списку из файла $IDENT.packages.

Вход:

Выход:

spt-run-scripts

Запускает некие произвольные скрипты в созданном chroot'е. Как правило, используется для первоначальной настройки окружения в свежей системе – добавления пользователей, создания групп, установки локалей и т.п. Для Live CD там же создается remounttab и т.п.

Вход:

Выход:

Семейство spt-copy-files

Семейство скриптов spt-copy-files занимается простым подкладыванием (копированием) заранее подготовленных файлов в различные каталоги в процессе сборки.

spt-copy-files-to-chroot

Копирует файлы из from в каталог to внутри chroot. Файлы перемещаются без головного каталога from, т.е. копируется именно его содержимое. По умолчанию to равен /, что означает копирование в корень chroot, что позволяет создавать в каталоге from дерево с обычными каталогами bin/, lib/, usr/ и т.п. и ожидать, что они правильно разложатся в chroot.

Вход:

Выход:

spt-copy-files-to-out

Копирует файлы из from в каталог to внутри $out_dir (выходного каталога, который будет упакован прямо в ISO). Файлы перемещаются без головного каталога from, т.е. копируется именно его содержимое. По умолчанию to равен /, что означает копирование в корень образа ISO.

Вход:

Выход:

Семейство spt-boot

Семейство скриптов spt-boot устанавливает/конфигурирует каким-то образом загрузчики, которые могут быть использованы для загрузки того образа, который собирался на предыдущих этапах.

spt-boot-propagator

Сложный скрипт, который подготавливает содержимое chroot к загрузке с помощью цепочки (syslinux / isolinux / pxelinux) – propagator.

Вход:

Выход:

spt-boot-gfxboot

Настраивает gfxboot для работы в загрузчике isolinux.

Вход:

Выход:

spt-boot-splash

Настраивает bootsplash для работы в загрузчике isolinux и в процессе загрузки системы.

Вход:

Выход:

Семейство spt-pack

Это семейство скриптов запаковывает получившиеся файлы/директории на предыдущих этапах в некие, как правило, одиночные файлы с архивами или образами файловых систем.

spt-pack-squashfs

Упаковывает chroot в образ squashfs.

Вход: chroot

Выход: $out_dir/altlinux – файл с образом

spt-pack-tarball

Упаковывать chroot в tarball.

Вход:

Выход: $out_dir/image.tar[.gzip|.bz2] – файл с образом

spt-pack-cpio

Упаковывать chroot в архив cpio. Возможно сжатие получающегося архива.

Вход:

Выход: $out_dir/image.cpio[.gzip|.bz2] – файл с образом

spt-pack-iso

Упаковывает out в образ загрузочного CD iso9660. Предполагается, что в каталоге isolinux создана инфраструктура для загрузчика.

Вход: содержимое $out_dir.

Выход: ISO-файл CDFILENAME [по умолчанию: livecd.iso] в директории $work_dir.

Troubleshooting

Сборка любых комплексных решений – сложный процесс и всегда есть вероятность какой-то ошибки – например, как-то не так исправили профиль и т.п. Сам spt3 пытается прилагать максимум усилий к диагностированию подобных вещей (хотя бы к тому, чтобы ошибка была обнаружена на стадии сборки, а не после загрузки собранного образа), но, к сожалению, далеко не все ситуации легко диагностируются. Ниже представлены наиболее типовые симптомы и наиболее вероятные решения.

Симптом: образ с propagator собирается, но не загружается: при попытке propagator'ом грузить хотя бы обязательные модули IDE / CDROM / USB – в консолях 3 и 4 видны сообщения о попытке загрузке модуля и unknown symbol

Проблема: файл зависимостей – modules.dep – генерируется неправильно.

Решение: разбираться с вызовом mkmar; в частности, обязательно нужно наличие параметра -r /.

Примеры использования SPT3

Страницы, ссылающиеся на данную: AltLinux/Sisyphus/TravelStick/spt3

AltLinux/Sisyphus/devel/ImageGeneratorsHistory