|
|
(14 промежуточных версий не показаны.) |
Строка 1: |
Строка 1: |
| + | [[Категория:Mkimage]] |
| {{DISPLAYTITLE:mkimage}} | | {{DISPLAYTITLE:mkimage}} |
- | {{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/mkimage}}
| + | '''mkimage''' — инструмент для сборки образов Linux-системы из заданного Sisyphus-like репозитория. |
- | {{викифицировать}}
| + | |
| | | |
- | == mkimage ==
| + | Входит в [[Starterkits/builder|стартеркит builder]]. |
| | | |
- | mkimage — инструмент для сборки образов системы из заданного репозитория ALT Linux по шаблону. | + | == Документация == |
| + | {{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|отладка сборки профилей]] |
| | | |
- | Как и <tt>spt</tt>, mkimage использует [[hasher|hasher]] для создания образа.
| + | == История == |
| + | {{pkg|mkimage}} — четвёртый и на данный момент новейший среди длинного ряда сборщиков образов в рамках Sisyphus, который был создан для замены {{pkg|spt}} — последний использует жёстко зашитую последовательность шелл-скриптов, а шаблоны дистрибутивов с трудом поддаются вычленению общих блоков. |
| + | {{main|Mkimage/history}} |
| | | |
- | Шаблон представляет собой набор Makefile’ов. Для ускорения сборки в mkimage реализовано кэширование. Есть теоретическая возможность распараллеливания сборки, но из-за особенности работы [[hasher|hasher]] это сейчас не работает.
| + | == Исходный код == |
| + | * [http://git.altlinux.org/people/legion/packages/mkimage.git mkimage.git] |
| | | |
- | === Документация === | + | == Авторы == |
- | [http://git.altlinux.org/people/legion/packages/mkimage.git?p=mkimage.git;a=blob;f=doc/README.ru;hb=HEAD текущее README.ru]
| + | * Alexey Gladkov |
| | | |
- | === Пример использования === | + | {{Category navigation|title=mkimage|category=mkimage|sortkey=*}} |
- | Предполагается использование бранчей [ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.0/branch 4.0], [ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.1/branch 4.1], [ftp://ftp.altlinux.org/pub/distributions/ALTLinux/5.0/branch 5.0] либо текущего Sisyphus.
| + | [[en:mkimage]] |
- | | + | |
- | Может понадобиться организовать отдельный apt.conf, хотя проблема с altlinux-release и хак с pkgpriorities неактуальны при использовании IMAGE_INIT_LIST из mkimage-0.0.8 в свежих снапшотах профиля (исправлено в конце июля 2008).
| + | |
- | | + | |
- | Далее (поправьте <tt>boyarsh</tt> на используемый логин! проверьте глазами получившееся):
| + | |
- | <source lang="bash">
| + | |
- | 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
| + | |
- | </source>
| + | |
- | | + | |
- | | + | |
- | ==== 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.
| + | |
- | | + | |
- | <source lang="bash">
| + | |
- | ./configure --with-aptconf=/etc/apt/apt.conf.M41 --with-arch=x86_64
| + | |
- | make rescue.cd
| + | |
- | </source>
| + | |
- | | + | |
- | ==== ALTSP5 ====
| + | |
- | Если есть желание или необходимость сделать модификацию ALT Linux 4.0 Terminal — начинать стоит с:
| + | |
- | <source lang="bash">
| + | |
- | 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
| + | |
- | </source>
| + | |
- | | + | |
- | NB: для ветки 4.1 сборка не проверялась, известна пара не очень существенных проблем; для ветки 5.0 по состоянию на конец зимы 2008/2009 работы потихоньку начаты.
| + | |
- | | + | |
- | === Модификация ===
| + | |
- | Изучение существующих примеров удобней начинать с корневого <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/074887.html Более системные варианты] объездов и решений в данный момент [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>
| + | |
- | | + | |
- | === Ссылки ===
| + | |
- | * [http://lists.altlinux.org/pipermail/devel/2008-August/077836.html Обзор планов mike@ по лету 2008]
| + | |
- | | + | |
- | [[Категория:Utils]]
| + | |
Обратите внимание: при использовании Linux 3.6+ практически обязательна установка mkimage-preinstall.
Основное применение mkimage — сборка дистрибутивов ALT Linux и производных от них: