Утилиты для создания основанных на Sisyphus решений =================================================== 1. Инициализация рабочей директории. $ spt -v -P default ~/workdir spt: changed working directory to `/home/mouse/workdir' spt: creating profile `default' 2. Профайл. Конфиги. Все настройки хранятся в $workdir/profile. Каждый проект состоит из одной или нескольких компонент. - config Основной конфиг проекта, задющий имя, версию и т.д. Многие из переменных говорят сами за себя. Но на двух стоит остановится. o ARCH - фактически, вывод uname -m. При работе сепаратора создаётся директория $workdir/repo/ARCH/RPMS.hasher куда можно складывать RPM-файлы, подцепляемые во время разворачивания чрута. [TODO: сделать параметр --repo для явного указания местоположения репозитария] o COMPONENTS - список конфигурационных файлов по компонентно, задающие файлы со списками пакетов, именя конечных образов, скрипты, запускаемые после разворачивания чрута. o CDFILENAME - имя ISO-образа. По умолчанию, livecd.iso. Так же, его можно задать через command line. Т.к. это шелл-переменная, то иногда уместно использовать нечто вроде: CDFILENAME="livecd-$(uname -m)-$(date +%Y%m%d).iso" - *.cnf Конфигурационный файл отдельно взятой компоненты. o CLASS - имя класса. Наследие оригинального separator. Фактически, указывает на директорию с глобальными пост-скриптами, которые должны выполнятся взависимости от выбранного профайла: для livecd выполняются одни, для инсталлятора - другие. o DIRS - шаблон файлов или просто имя файла со списком пакетов. [TODO: переименовать во что-то более соответствующее назначению] o OUT - имя образа запакованного чрута. Используется при отсутствующей переменной NOIMAGE. o NOIMAGE - переменная, говорящая spt паковать чрут. o POSTLOCAL - имя директории с локальными пост-скриптами. По умолчанию, это setup.d, который можно найти в $workdir/profile/postinstall/ Для разных компонент иногда требуется использовать разные локальные пост-скрипты. Note: ВСЕ пост-скрипты выполняются _внутри_ чрута. [TODO: сделать дополнительные пост-скрипты, выполняемые снаружи для манипуляции файлами, созданными в чруте. Так же, вынести некоторый функционал spt в отдельные функции в файл functions, которые можно будет использовать в своих не чрут-скриптах. Например, создание iso-образа, копирование файлов из чрута в out для "набивки" контента для CD-диска и т.д.] o IDENT - некий идентификатор. Юзабелен в случае, когда создаётся несколько RPMS-репозитариев для инсталлятора (RPMS.$IDENT). o FILES - директория с дополнительными файлами, которые скопируются в out. o INSTALLDIR, COPYONLY, INSTALL2HASH - тоже наследие оригинального сепаратора. Используются при создании инсталлятора. О точном назначении лучше спросить rider'a :) - {isolinux,syslinux}.cfg.in Конфиги для isolinux, которые просто копируются в out/isolinux. Зачем нужно копировать syslinux пока непонятно =) Это тоже из унаследованного из separator. Отрывать не стал -- вдруг что сломает? - initfs Файл описывающий содержимое для initramfs. Лучше не трогать =) Только при работе под x86_64 нужно проследить, чтобы: file /init ссылался на /usr/lib64/propagator/bin/init, а не /usr/lib/propagator/bin/init. То же и для /sbin/stage1. В следующих версиях зафикшу :) Пара слов о списке пакетов. Каждая строчка может содержать только одно имя пакета. Допустимы зависимости на определённые версии и релиз пакета. Например: basesystem=sisyphus-alt13.nodev # firefox startup>=0.9.8.4 udev 3. Сепаратизм. После всех приготовлений наступает самый ответственный момент - непосредственно стряпанье: $ spt -v ~/workdir Пока всё :) А так, читаем spt --help и смотрим внутрь spt. PS. Да, кстати. Есть ещё дополнительная тулзень для инсталляции дерева в чрут. Удобно в случае, когда часто меняется контент одного из пакетов, например, при отладке. Называется сиё чудо spt-install. $ spt-install ~/workdir /home/mouse/tmp/spt-0.2-buildroot