Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/devel/spt3 ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

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


Оглавление документа

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


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


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

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


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


2. Quickstart


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

Пример:

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


4. Утилиты

4.1. spt3


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

4.2. spt-deploy-lilo


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


Вход:

5. Опции


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


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


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



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



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

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


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



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

6. Tasks

6.1. spt-clean


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


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

6.2. spt-init-chroot


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


Вход:

Выход:

6.3. spt-make-chroot


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


Вход:

Выход:

6.4. spt-create-repo


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


Вход:

Выход:

6.5. spt-run-scripts


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


Вход:

Выход:

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


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

6.6.1. spt-copy-files-to-chroot


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


Вход:

Выход:

6.6.2. spt-copy-files-to-out


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


Вход:

Выход:

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


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

6.7.1. spt-boot-propagator


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


Вход:

Выход:

6.7.2. spt-boot-gfxboot


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


Вход:

Выход:

6.7.3. spt-boot-splash


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


Вход:

Выход:

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


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

6.8.1. spt-pack-squashfs


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


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

6.8.2. spt-pack-tarball


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


Вход:

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

6.8.3. spt-pack-cpio


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


Вход:

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

6.8.4. spt-pack-iso


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


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

7. Troubleshooting


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


Симптом: образ с propagator собирается, но не загружается: при попытке propagator'ом грузить хотя бы обязательные модули IDE / CDROM / USB – в консолях 3 и 4 видны сообщения о попытке загрузке модуля и unknown symbol
Проблема: файл зависимостей – modules.dep – генерируется неправильно.
Решение: разбираться с вызовом mkmar; в частности, обязательно нужно наличие параметра -r /.

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


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


 
Файлов нет. [Показать файлы/форму]
Комментарии [Скрыть комментарии/форму]

Добрался, перечитал, спасибо; с spt-0.4 синкаться бушь?

-- MichaelShigorin (2006-11-03 21:01:14)

Оно не работает; говорит что 
/usr/bin/spt: line 13: spt-run-scripts -o setup_dir=setup.d: command not found
spt: ========== FAILED at STEP #3: processing 'spt-run-scripts -o setup_dir=setup.d'

-- ДенисМедведев (2006-11-25 13:32:25)