Mkimage: различия между версиями
м (→Пример использования: +Terminal) |
Нет описания правки |
||
Строка 1: | Строка 1: | ||
[[ | [[Категория:Devel]] | ||
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/mkimage}} | {{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/mkimage}} | ||
{{викифицировать}} | |||
== mkimage == | == mkimage == | ||
mkimage — инструмент для сборки образов Sisyphus-based системы по шаблону. | |||
mkimage — четвёртый и на данный момент последний среди длинного ряда сборщиков образов в рамках Sisyphus. Более подробно о том, кто кого сменял, можно узнать в [[ImageGeneratorsHistory|истории]]. | |||
== Зачем? == | == Зачем? == | ||
mkimage был создан для замены [[spt|spt]] | mkimage был создан для замены [[spt|spt]] — последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков. | ||
Как и <tt>spt</tt>, mkimage использует [[hasher|hasher]] для создания образа. | Как и <tt>spt</tt>, mkimage использует [[hasher|hasher]] для создания образа. | ||
Шаблон представляет собой набор | Шаблон представляет собой набор Makefile’ов. Для ускорения сборки в mkimage реализовано кэширование. Есть теоретическая возможность распараллеливания сборки, но из-за особенности работы [[hasher|hasher]] это сейчас не работает. | ||
=== README.ru === | === README.ru === | ||
Строка 24: | Строка 25: | ||
Может понадобиться организовать кастомный apt.conf, хотя проблема с altlinux-release и хак с pkgpriorities неактуальны при использовании IMAGE_INIT_LIST из mkimage-0.0.8 в свежих снапшотах профиля (исправлено в конце июля 2008). | Может понадобиться организовать кастомный apt.conf, хотя проблема с altlinux-release и хак с pkgpriorities неактуальны при использовании IMAGE_INIT_LIST из mkimage-0.0.8 в свежих снапшотах профиля (исправлено в конце июля 2008). | ||
Далее (поправьте <tt>boyarsh</tt> на используемый логин! | Далее (поправьте <tt>boyarsh</tt> на используемый логин! проверьте глазами получившееся): | ||
<pre>mkdir -p ~/git | <pre>mkdir -p ~/git | ||
cd ~/git | cd ~/git | ||
Строка 36: | Строка 37: | ||
==== x86_64 ==== | ==== x86_64 ==== | ||
В mkimage-profiles-desktop по умолчанию даже при сборке на архитектуре x86_64 выставляется i586<ref>в конце концов, десктоп сейчас обычно 32-битный, а вот сборочный | В mkimage-profiles-desktop по умолчанию даже при сборке на архитектуре x86_64 выставляется i586<ref>в конце концов, десктоп сейчас обычно 32-битный, а вот сборочный сервер — 64-битный… хотя после ветки 4.1 и официального выпуска 64-битного десктопа это соображение может быть и пересмотрено</ref>; посему для сборки 64-битного варианта требуется передать configure-скрипту ключик <tt>--with-arch=x86_64</tt>, а также убедиться, что в sources.list, упомянутом в <tt>--with-aptconf=/где/тут/apt.conf</tt> (по умолчанию /etc/apt/apt.conf и соответственно /etc/apt/sources.list) — упомянуты репозитории x86_64 и noarch. | ||
<pre> | <pre> | ||
Строка 44: | Строка 45: | ||
==== ALTSP5 ==== | ==== ALTSP5 ==== | ||
Если есть желание или необходимость сделать модификацию ALT Linux 4.0 | Если есть желание или необходимость сделать модификацию ALT Linux 4.0 Terminal — начинать стоит с: | ||
<pre> | <pre> | ||
apt-get install etersoft-build-utils | apt-get install etersoft-build-utils | ||
Строка 60: | Строка 61: | ||
=== Модификация === | === Модификация === | ||
Изучение существующих примеров удобней начинать с корневого <tt>[[Makefile.in|Makefile.in]]</tt> и далее по <tt>profiles/*/[[Makefile.in|Makefile.in]]</tt> и <tt>profiles/packages-lists/*</tt>. | Изучение существующих примеров удобней начинать с корневого <tt>[[Makefile.in|Makefile.in]]</tt> и далее по <tt>profiles/*/[[Makefile.in|Makefile.in]]</tt> и <tt>profiles/packages-lists/*</tt>. Стоит обратить внимание, что <tt>IMAGE_PACKAGES</tt> в профильном мэйкфайле может содержать как включаемые файлы-списки, так и имена пакетов (если как файлы они не будут найдены). | ||
==== Хуки и скрипты ==== | ==== Хуки и скрипты ==== | ||
Q: чем различаются install2/{image-scripts.d,scripts.d}/? | Q: чем различаются install2/{image-scripts.d, scripts.d}/? | ||
A: image-scripts выполняются в chroot собранной стадии. | A: image-scripts выполняются в chroot собранной стадии. scripts — в инструментальном chroot-е после установки пакетов и до архивации результата, что позволяет копировать файлы из/в chroot | ||
=== Проблемы === | === Проблемы === | ||
==== altlinux-release-* ==== | ==== altlinux-release-* ==== | ||
С одной стороны, <tt>altlinux-release</tt> стал виртуальным пакетом. | С одной стороны, <tt>altlinux-release</tt> стал виртуальным пакетом. | ||
С | С другой — сейчас его требует <tt>basesystem</tt>. | ||
Результат таков, что сперва в базовую систему устанавливается какой-либо из кандидатов (сейчас это обычно <tt>altlinux-release-terminal</tt> по лексикографическому старшинству), а потом apt не может его заменить уже явно указанным. | Результат таков, что сперва в базовую систему устанавливается какой-либо из кандидатов (сейчас это обычно <tt>altlinux-release-terminal</tt> по лексикографическому старшинству), а потом apt не может его заменить уже явно указанным. | ||
Объезд: прибить в конфигурации гвоздиком нужный вариант. | Объезд: прибить в конфигурации гвоздиком нужный вариант. | ||
Строка 118: | Строка 120: | ||
==== Нет графики при загрузке образа, первая стадия задаёт вопросы ==== | ==== Нет графики при загрузке образа, первая стадия задаёт вопросы ==== | ||
Если не поднялся gfxboot и propagator выпал из автоматического | Если не поднялся gfxboot и propagator выпал из автоматического режима — наверняка переменные <tt>INFO_THEME</tt> и <tt>DESKTOP_FLAVOUR</tt> (по состоянию на сегодня) не долетели до <tt>profiles/Makefile</tt>; попробуйте прибить руками и посмотреть, не в этом ли дело: | ||
<pre>INFO_THEME='desktop' \ | <pre>INFO_THEME='desktop' \ | ||
DESKTOP_FLAVOUR='personal' \ | DESKTOP_FLAVOUR='personal' \ |
Версия от 22:39, 22 сентября 2008
mkimage
mkimage — инструмент для сборки образов Sisyphus-based системы по шаблону.
mkimage — четвёртый и на данный момент последний среди длинного ряда сборщиков образов в рамках Sisyphus. Более подробно о том, кто кого сменял, можно узнать в истории.
Зачем?
mkimage был создан для замены spt — последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков.
Как и spt, mkimage использует hasher для создания образа.
Шаблон представляет собой набор Makefile’ов. Для ускорения сборки в mkimage реализовано кэширование. Есть теоретическая возможность распараллеливания сборки, но из-за особенности работы hasher это сейчас не работает.
README.ru
Пример использования
Предполагается использование 4.0/branch [+ people/boyarsh/repo/], 4.1/branch либо Sisyphus.
Может понадобиться организовать кастомный apt.conf, хотя проблема с altlinux-release и хак с pkgpriorities неактуальны при использовании IMAGE_INIT_LIST из mkimage-0.0.8 в свежих снапшотах профиля (исправлено в конце июля 2008).
Далее (поправьте boyarsh на используемый логин! проверьте глазами получившееся):
mkdir -p ~/git cd ~/git git clone git://git.altlinux.org/people/boyarsh/packages/mkimage-profiles-desktop mkdir -p ~/mkimage cp -a mkimage-profiles-desktop ~/mkimage cd ~/mkimage/mkimage-profiles-desktop autoconf ./configure --with-aptconf=/home/boyarsh/apt/apt.conf.M40+boyarsh make rescue.cd
x86_64
В mkimage-profiles-desktop по умолчанию даже при сборке на архитектуре x86_64 выставляется i586[1]; посему для сборки 64-битного варианта требуется передать configure-скрипту ключик --with-arch=x86_64, а также убедиться, что в sources.list, упомянутом в --with-aptconf=/где/тут/apt.conf (по умолчанию /etc/apt/apt.conf и соответственно /etc/apt/sources.list) — упомянуты репозитории x86_64 и noarch.
./configure --with-aptconf=/etc/apt/apt.conf.M41 --with-arch=x86_64 make rescue.cd
ALTSP5
Если есть желание или необходимость сделать модификацию ALT Linux 4.0 Terminal — начинать стоит с:
apt-get install etersoft-build-utils $EDITOR /etc/apt/sources.list.M40 git clone git://git.altlinux.org/people/mike/packages/mkimage-profiles-desktop cd mkimage-profiles-desktop git fetch git://git.altlinux.org/people/mike/packages/mkimage-profiles-desktop terminal-4.0.0:terminal-4.0.0 git checkout terminal-4.0.0 autoconf ./configure --with-aptconf=/etc/apt/apt.conf.M40 --with-distro=terminal --with-version=4.0 \ --with-design=terminal --with-license=terminal --with-release=terminal --with-language=ru_RU \ --with-kernel=std-smp nice time make ltsp-kde.cd
Модификация
Изучение существующих примеров удобней начинать с корневого Makefile.in и далее по profiles/*/Makefile.in и profiles/packages-lists/*. Стоит обратить внимание, что IMAGE_PACKAGES в профильном мэйкфайле может содержать как включаемые файлы-списки, так и имена пакетов (если как файлы они не будут найдены).
Хуки и скрипты
Q: чем различаются install2/{image-scripts.d, scripts.d}/? A: image-scripts выполняются в chroot собранной стадии. scripts — в инструментальном chroot-е после установки пакетов и до архивации результата, что позволяет копировать файлы из/в chroot
Проблемы
altlinux-release-*
С одной стороны, altlinux-release стал виртуальным пакетом. С другой — сейчас его требует basesystem. Результат таков, что сперва в базовую систему устанавливается какой-либо из кандидатов (сейчас это обычно altlinux-release-terminal по лексикографическому старшинству), а потом apt не может его заменить уже явно указанным. Объезд: прибить в конфигурации гвоздиком нужный вариант. Более системные варианты объездов и решений в данный момент обсуждаются в devel@.
> WARNING: The following essential packages will be removed > This should NOT be done unless you know exactly what you are doing! > altlinux-release-terminal (due to basesystem) http://lists.altlinux.org/pipermail/devel/2007-December/067565.html http://lists.altlinux.org/pipermail/devel/2007-December/067569.html
boyarsh@ в devel@
краткая суть объезда: свой apt.conf:
Dir::Etc::SourceList /home/boyarsh/branch+boyarsh.list; RPM::Ignore { "vim-plugin-vimruby"; }; Dir::Etc::pkgpriorities "/tmp/.private/boyarsh/mkimage-profiles-desktop/pkgpriorities";
pkgpriorities:
Important: basesystem altlinux-release-desktop Required: apt Standard: kernel-doc libpam0 libpam0-devel maxima-bin-gcl postfix python-dev python-modules-tkinter
Отладка конфликтов и битых зависимостей
Если возникают проблемы вроде неустанавливающихся пакетов:
The following packages have unmet dependencies: installer-ltsp-stage2: Depends: installer-stage2 but it is not going to be installed E: Broken packages
То может иметь смысл проверить вручную так:
hasher32:~/mkimage/build-LTSP/profiles/install2> hsh-install .work installer-stage2 Reading Package Lists... [...] The following packages have unmet dependencies: installer-stage2: Depends: installer (= 0.2-alt2) but it is not going to be installed E: Broken packages hsh-install: failed to calculate package file list. hsh-install: Failed to generate package file list. hasher32:~/mkimage/build-LTSP/profiles/install2>
Нет графики при загрузке образа, первая стадия задаёт вопросы
Если не поднялся gfxboot и propagator выпал из автоматического режима — наверняка переменные INFO_THEME и DESKTOP_FLAVOUR (по состоянию на сегодня) не долетели до profiles/Makefile; попробуйте прибить руками и посмотреть, не в этом ли дело:
INFO_THEME='desktop' \ DESKTOP_FLAVOUR='personal' \ MKI_OUTNAME=rescue.iso \ make -C profiles
Ссылки
- ↑ в конце концов, десктоп сейчас обычно 32-битный, а вот сборочный сервер — 64-битный… хотя после ветки 4.1 и официального выпуска 64-битного десктопа это соображение может быть и пересмотрено