From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 27 Jan 2006 16:08:23 +0300 From: "Anton D. Kachalov" To: devel@lists.altlinux.org Message-ID: <20060127130823.GA31193@basalt.office.altlinux.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit Cc: sisyphus@lists.altlinux.org Subject: [sisyphus] I: spt X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jan 2006 13:08:24 -0000 Archived-At: List-Archive: List-Post: В i/S залит spt. Это давний форк от separator. Про него я ещё пускал слушок на Протвенской конференции. Основная фишка - это использование hasher для инициализации чрута и дальнейшей работой с чрутом после установки пакетов. На сегодняшний день, для инициализации чрута потребуется немного изменённый basesystem (без зависимости на dev). Это вопрос уже обсуждался с ldv@. Так же, это актуально в свете udev'a. Вместе с этим, появится новый dev (std и min). http://lrn.ru/~mouse/spt/basesystem-sisyphus-alt13.nodev.src.rpm Есть альтернативный способ для кул-хацкеров :) a) патчим /usr/share/hasher/mkchroot: --- hasher.orig/mkchroot 2005-11-26 01:15:53 +0300 +++ hasher/mkchroot 2005-11-29 20:56:32 +0300 @@ -95,7 +95,8 @@ Verbose "Changed working directory to \`$chroot'." mkdir -m711 $verbose .host -mkdir -m755 $verbose .in dev dev/pts +mkdir -m1775 $verbose dev +mkdir -m755 $verbose .in dev/pts chgrp "$gid1" $verbose . dev dev/pts mkdir -m1770 $verbose .out chgrp "$gid2" $verbose .out b) собираем пакет MAKEDEV без директории /dev и /dev/pts. После чего даже с обычным basesystem'ом пакет dev поставится в чрут. Данный вопрос тоже обсуждается в ldv@ :) Вернёмся к нашим попугаям. 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 Теперь точно всё :) Замечания, пожелания? -- mouse