Mkimage: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 1: Строка 1:
[[Category:Devel]]
[[Категория:Devel]]
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/mkimage}}
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/mkimage}}
{{викифицировать}}


== mkimage ==
== mkimage ==


mkimage - инструмент для сборки образов Sisyphus-based системы по шаблону.
mkimage — инструмент для сборки образов Sisyphus-based системы по шаблону.


mkimage - четвёртый и на данный момент последний среди длинного ряда сборщиков образов в рамках Sisyphus. Более подробно о том, кто кого сменял, можно узнать в [[ImageGeneratorsHistory|истории]].
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]] это сейчас не работает.
Шаблон представляет собой набор 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-битный, а вот сборочный сервер -- 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.
В 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 Terminal -- начинать стоит с:
Если есть желание или необходимость сделать модификацию 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>IMAGE_PACKAGES</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 собранной стадии. scripts -- в инструментальном chroot-е после установки пакетов и до архивации результата, что позволяет копировать файлы из/в chroot
A: image-scripts выполняются в chroot собранной стадии. scripts — в инструментальном chroot-е после установки пакетов и до архивации результата, что позволяет копировать файлы из/в chroot


=== Проблемы ===
=== Проблемы ===
==== altlinux-release-* ====
==== altlinux-release-* ====
С одной стороны, <tt>altlinux-release</tt> стал виртуальным пакетом.
С одной стороны, <tt>altlinux-release</tt> стал виртуальным пакетом.
С другой -- сейчас его требует <tt>basesystem</tt>.
С другой — сейчас его требует <tt>basesystem</tt>.
Результат таков, что сперва в базовую систему устанавливается какой-либо из кандидатов (сейчас это обычно <tt>altlinux-release-terminal</tt> по лексикографическому старшинству), а потом apt не может его заменить уже явно указанным.
Результат таков, что сперва в базовую систему устанавливается какой-либо из кандидатов (сейчас это обычно <tt>altlinux-release-terminal</tt> по лексикографическому старшинству), а потом apt не может его заменить уже явно указанным.
Объезд: прибить в конфигурации гвоздиком нужный вариант.
Объезд: прибить в конфигурации гвоздиком нужный вариант.
Строка 118: Строка 120:


==== Нет графики при загрузке образа, первая стадия задаёт вопросы ====
==== Нет графики при загрузке образа, первая стадия задаёт вопросы ====
Если не поднялся gfxboot и propagator выпал из автоматического режима -- наверняка переменные <tt>INFO_THEME</tt> и <tt>DESKTOP_FLAVOUR</tt> (по состоянию на сегодня) не долетели до <tt>profiles/Makefile</tt>; попробуйте прибить руками и посмотреть, не в этом ли дело:
Если не поднялся 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' \

Версия от 19:39, 22 сентября 2008

Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.
42px-Wikitext-ru.svg.png
Эту статью следует викифицировать.


mkimage

mkimage — инструмент для сборки образов Sisyphus-based системы по шаблону.

mkimage — четвёртый и на данный момент последний среди длинного ряда сборщиков образов в рамках Sisyphus. Более подробно о том, кто кого сменял, можно узнать в истории.

Зачем?

mkimage был создан для замены spt — последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков.

Как и spt, mkimage использует hasher для создания образа.

Шаблон представляет собой набор Makefile’ов. Для ускорения сборки в mkimage реализовано кэширование. Есть теоретическая возможность распараллеливания сборки, но из-за особенности работы hasher это сейчас не работает.

README.ru

текущее 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

Ссылки

  1. в конце концов, десктоп сейчас обычно 32-битный, а вот сборочный сервер — 64-битный… хотя после ветки 4.1 и официального выпуска 64-битного десктопа это соображение может быть и пересмотрено