mkimage

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
м (x86_64: уточнение)
 
(27 промежуточных версий не показаны.)
Строка 1: Строка 1:
-
[[Category:Devel]]
+
[[Категория:Mkimage]]
-
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/mkimage}}
+
{{DISPLAYTITLE:mkimage}}
 +
'''mkimage''' — инструмент для сборки образов Linux-системы из заданного Sisyphus-like репозитория.
-
== mkimage ==
+
Входит в [[Starterkits/builder|стартеркит builder]].
-
mkimage - инструмент для сборки образов Sisyphus-based системы по шаблону.
+
== Документация ==
 +
{{pkg|mkimage}} использует для сборки ''профиль'', представляющий собой набор Makefiles и хуков на shell; см. <tt>[http://git.altlinux.org/people/legion/packages/mkimage.git?p=mkimage.git;a=tree;f=examples/example3;hb=HEAD example3]</tt> в качестве примера.
-
mkimage - четвёртый и на данный момент последний среди длинного ряда сборщиков образов в рамках Sisyphus. Более подробно о том, кто кого сменял, можно узнать в [[ImageGeneratorsHistory|истории]].
+
Содержание и функционирование профилей документировано в [http://git.altlinux.org/people/legion/packages/mkimage.git?p=mkimage.git;a=blob;f=doc/README.ru;hb=HEAD README-файле] пакета <tt>mkimage</tt>.
-
== Зачем? ==
+
Обратите внимание: при использовании Linux 3.6+ практически обязательна установка {{pkg|mkimage-preinstall}}.
-
mkimage был создан для замены [[spt|spt]] - последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков.
+
== Использование в «реальной жизни» ==
 +
Основное применение mkimage — сборка дистрибутивов ALT Linux и производных от них:
 +
* [[Mkimage/Profiles/Desktop|семейство профилей для desktop-дистрибутивов]]
 +
* [[Mkimage/Profiles|обзор части профилей на git.altlinux.org]]
 +
* [[Mkimage/debug|отладка сборки профилей]]
-
В результате: шаблоны представляют собой модульные Makefiles (как результат - "бесплатное" кэширование и распараллеливание сборки). Как и <tt>spt</tt>, Использует [[hasher|hasher]].
+
== История ==
 +
{{pkg|mkimage}} — четвёртый и на данный момент новейший среди длинного ряда сборщиков образов в рамках Sisyphus, который был создан для замены {{pkg|spt}} — последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков.
 +
{{main|Mkimage/history}}
-
=== README.ru ===
+
== Исходный код ==
-
[http://git.altlinux.org/people/legion/packages/mkimage.git?p=mkimage.git;a=blob;f=doc/README.ru;hb=HEAD текущее README.ru]
+
* [http://git.altlinux.org/people/legion/packages/mkimage.git mkimage.git]
-
=== Пример использования ===
+
== Авторы ==
-
Предполагается использование [ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.0/branch 4.0/branch] [+ [ftp://ftp.altlinux.org/pub/people/boyarsh/repo people/boyarsh/repo/]], [ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.1/branch 4.1/branch] либо Sisyphus.
+
* Alexey Gladkov
-
Может понадобиться организовать кастомный apt.conf, хотя проблема с altlinux-release и хак с pkgpriorities неактуальны при использовании IMAGE_INIT_LIST из mkimage-0.0.8 в свежих снапшотах профиля (исправлено в конце июля 2008).
+
{{Category navigation|title=mkimage|category=mkimage|sortkey=*}}
-
 
+
[[en:mkimage]]
-
Далее (поправьте <tt>boyarsh</tt> на используемый логин!  проверьте глазами получившееся):
+
-
<pre>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</pre>
+
-
 
+
-
==== 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.
+
-
 
+
-
<pre>
+
-
./configure --with-aptconf=/etc/apt/apt.conf.M41 --with-arch=x86_64
+
-
make rescue.cd
+
-
</pre>
+
-
 
+
-
=== Модификация ===
+
-
Изучение существующих примеров удобней начинать с корневого <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}/?
+
-
A: image-scripts выполняются в chroot собранной стадии. scripts -- в инструментальном chroot-е после установки пакетов и до архивации результата, что позволяет копировать файлы из/в chroot
+
-
 
+
-
=== Проблемы ===
+
-
==== altlinux-release-* ====
+
-
С одной стороны, <tt>altlinux-release</tt> стал виртуальным пакетом.
+
-
С другой -- сейчас его требует <tt>basesystem</tt>.
+
-
Результат таков, что сперва в базовую систему устанавливается какой-либо из кандидатов (сейчас это обычно <tt>altlinux-release-terminal</tt> по лексикографическому старшинству), а потом apt не может его заменить уже явно указанным.
+
-
Объезд: прибить в конфигурации гвоздиком нужный вариант.
+
-
Более системные варианты объездов и решений в данный момент [http://lists.altlinux.org/pipermail/devel/2008-May/074555.html обсуждаются в devel@].
+
-
<pre>> 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</pre>
+
-
''boyarsh@ в devel@''
+
-
 
+
-
краткая суть объезда:
+
-
свой <tt>apt.conf</tt>:
+
-
<pre>Dir::Etc::SourceList    /home/boyarsh/branch+boyarsh.list;
+
-
RPM::Ignore { "vim-plugin-vimruby"; };
+
-
Dir::Etc::pkgpriorities "/tmp/.private/boyarsh/mkimage-profiles-desktop/pkgpriorities";</pre>
+
-
<tt>pkgpriorities</tt>:
+
-
<pre>Important:
+
-
  basesystem
+
-
  altlinux-release-desktop
+
-
Required:
+
-
  apt
+
-
  Standard:
+
-
  kernel-doc
+
-
  libpam0
+
-
  libpam0-devel
+
-
  maxima-bin-gcl
+
-
  postfix
+
-
  python-dev
+
-
  python-modules-tkinter</pre>
+
-
 
+
-
==== Отладка конфликтов и битых зависимостей ====
+
-
Если возникают проблемы вроде неустанавливающихся пакетов:
+
-
<pre>The following packages have unmet dependencies:
+
-
  installer-ltsp-stage2: Depends: installer-stage2 but it is not going to be installed
+
-
E: Broken packages</pre>
+
-
 
+
-
То может иметь смысл проверить вручную так:
+
-
<pre>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></pre>
+
-
 
+
-
==== Нет графики при загрузке образа, первая стадия задаёт вопросы ====
+
-
Если не поднялся gfxboot и propagator выпал из автоматического режима -- наверняка переменные <tt>INFO_THEME</tt> и <tt>DESKTOP_FLAVOUR</tt> (по состоянию на сегодня) не долетели до <tt>profiles/Makefile</tt>; попробуйте прибить руками и посмотреть, не в этом ли дело:
+
-
<pre>INFO_THEME='desktop' \
+
-
DESKTOP_FLAVOUR='personal' \
+
-
MKI_OUTNAME=rescue.iso \
+
-
            make -C profiles</pre>
+

Текущая версия на 11:33, 30 сентября 2015


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

Входит в стартеркит builder.

Содержание

Документация

mkimage использует для сборки профиль, представляющий собой набор Makefiles и хуков на shell; см. example3 в качестве примера.

Содержание и функционирование профилей документировано в README-файле пакета mkimage.

Обратите внимание: при использовании Linux 3.6+ практически обязательна установка mkimage-preinstall.

Использование в «реальной жизни»

Основное применение mkimage — сборка дистрибутивов ALT Linux и производных от них:

История

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

Основная статья: Mkimage/history


Исходный код

Авторы

  • Alexey Gladkov
 
Личные инструменты
На других языках