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

Материал из ALT Linux Wiki
(Новая: {{викифицировать}} Категория:Mkimage Предполагается использование бранчей [ftp://ftp.altlinux.org/pub/distributions/ALTLinux...)
 
(deprecation signs)
(не показано 14 промежуточных версий 4 участников)
Строка 1: Строка 1:
{{h0|Сборка дистрибутивов с помощью mkimage-profiles-desktop}}
{{викифицировать}}
{{викифицировать}}
[[Категория:Mkimage]]
{{crap}}
 
'''[[Mkimage/Profiles/Desktop|Текущая версия]] (актуальна для 5.1/branch+)'''
 
== устаревший вариант ==


Предполагается использование бранчей [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.
Предполагается использование бранчей [ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.0/branch 4.0], [ftp://ftp.altlinux.org/pub/distributions/ALTLinux/4.1/branch 4.1]. При сборке на старых бранчах могут потребоваться модификации или откат профиля до соответствующего периода. Над этим потихоньку работаем.


Может понадобиться организовать отдельный 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>/home/boyarsh</tt> на используемый путь! проверьте глазами получившееся):
<source lang="bash">
<source lang="bash">
mkdir -p ~/git
mkdir -p ~/git
Строка 20: Строка 25:




==== 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.


Строка 28: Строка 33:
</source>
</source>


==== ALTSP5 ====
== ALTSP5 ==
Если есть желание или необходимость сделать модификацию ALT Linux 4.0 Terminal — начинать стоит с:
Если есть желание или необходимость сделать модификацию ALT Linux 4.0 Terminal — начинать стоит с:
<source lang="bash">
<source lang="bash">
Строка 44: Строка 49:
</source>
</source>


NB: для ветки 4.1 сборка не проверялась, известна пара не очень существенных проблем; для ветки 5.0 по состоянию на конец зимы 2008/2009 работы потихоньку начаты.
NB: для ветки 4.1 сборка не проверялась, известна пара не очень существенных проблем; на ветке 5.0 по состоянию на лето 2009 выпущены альфа-бета, известна пара регрессий, но уже можно собираться (ветка master у mike@ или boyarsh@).


=== Модификация ===
== Модификация ==
Изучение существующих примеров удобней начинать с корневого <tt>[[Makefile.in|Makefile.in]]</tt> и далее по <tt>profiles/*/[[Makefile.in|Makefile.in]]</tt> и <tt>profiles/packages-lists/*</tt>. Стоит обратить внимание, что <tt>IMAGE_PACKAGES</tt> в профильном мэйкфайле может содержать как включаемые файлы-списки, так и имена пакетов (если как файлы они не будут найдены).
Загляните в [http://git.altlinux.org/people/boyarsh/packages/?p=mkimage-profiles-desktop.git;a=blob;f=README;hb=HEAD README].


==== Хуки и скрипты ====
Изучение существующих примеров удобней начинать с корневого <tt>Makefile.in</tt> и далее по <tt>profiles/*/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-* ====
=== Использование своего apt.conf ===
С одной стороны, <tt>altlinux-release</tt> стал виртуальным пакетом.
При использовании своего apt.conf была замечена такая проблема - при сборке дистрибутива apt проверял репозиторий, указанный в своем apt.conf, а затем обновлял списки пакетов из текущего системного репозитория. Чтобы заставить apt проверять только свой репозиторий и не смотреть в сторону /etc/apt/apt.conf необходимо в свой apt.conf добавить следующее
С другой — сейчас его требует <tt>basesystem</tt>.
<pre>
Результат таков, что сперва в базовую систему устанавливается какой-либо из кандидатов (сейчас это обычно <tt>altlinux-release-terminal</tt> по лексикографическому старшинству), а потом apt не может его заменить уже явно указанным.
Dir::Etc::SourceParts "/var/empty";
Объезд: прибить в конфигурации гвоздиком нужный вариант.
</pre>
[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>:
Вынесены [[Mkimage/Desktop/OldTroubles|отдельной страницей]].  Могут понадобиться при сборке образов на базе бранчей 4.0/4.1 из профилей соответствующих веток/времён.
<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>


==== Отладка конфликтов и битых зависимостей ====
=== Сообщения об ошибке в части установки firmware для wi-fi адаптеров ===
Два существенно разных случая: unmets (битые зависимости) и conflicts (конфликтующие пакеты, сами по себе устанавливающиеся, но оказавшиеся вместе).
при сборке под конец возможны такие сообщения
<pre>
mkmodpack: warning: Firmware file "tehuti/firmware.bin" for module "tehuti" not found
mkmodpack: warning: Firmware file "i2400m-fw-sdio-1.3.sbcf" for module "i2400m-sdio" not found
mkmodpack: warning: Firmware file "i2400m-fw-usb-1.3.sbcf" for module "i2400m-usb" not found
mkmodpack: warning: Firmware file "i2400m-fw-usb-1.4.sbcf" for module "i2400m-usb" not found
mkmodpack: warning: Firmware file "ar9170-2.fw" for module "ar9170usb" not found
mkmodpack: warning: Firmware file "ar9170-1.fw" for module "ar9170usb" not found
mkmodpack: warning: Firmware file "FW13" for module "b43" not found
mkmodpack: warning: Firmware file "FW10" for module "b43legacy" not found
mkmodpack: warning: Firmware file "iwlwifi-3945-2.ucode" for module "iwl3945" not found
mkmodpack: warning: Firmware file "iwlwifi-4965-2.ucode" for module "iwlagn" not found
mkmodpack: warning: Firmware file "iwlwifi-5150-2.ucode" for module "iwlagn" not found
mkmodpack: warning: Firmware file "iwlwifi-5000-2.ucode" for module "iwlagn" not found
mkmodpack: warning: Firmware file "iwlwifi-6050-2.ucode" for module "iwlagn" not found
</pre>
Это нормально. Поддержки wifi в propagator всё равно нет.


==== unmets ====
== Ссылки ==
Если возникают проблемы вроде неустанавливающихся пакетов:
* [[WhiteLabel]] — повышение ортогональности профилей («расплетание спагетти»)
<pre>The following packages have unmet dependencies:
* [http://lists.altlinux.org/pipermail/devel/2008-August/077836.html Обзор планов mike@ по лету 2008]
  installer-ltsp-stage2: Depends: installer-stage2 but it is not going to be installed
E: Broken packages</pre>


То может иметь смысл проверить вручную так:
[[Категория:Mkimage]]
<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>
 
==== conflicts ====
При включенном <tt>GLOBAL_VERBOSE=1</tt> в процессе работы скрипта <tt>mki-copy-pkgs</tt> (цель <tt>copy-packages</tt>) образуется подкаталог <tt>.work/mki-copy-pkgs.verbose/</tt>, содержащий ценные данные — список пакетов для установки и stderr, полученный при его формировании apt’ом.
 
Поскольку индивидуально конфликтующие пакеты устанавливаются, то диагностика может быть нетривиальной и следует оперировать именно списком пакетов, чтобы понять, что это не анмет, а конфликт.
 
Огромная благодарность Алексею Гладкову (legion@altlinux) за доброе и терпеливое участие в разборе случая, получившегося при адаптации профиля Desktop 5.0a по мотивам Terminal 4.0 вследствие наличия в последнем заведомо конфликтующих пакетов <tt>ltsp-server</tt> и <tt>ltsp-client</tt> в компонентах <tt>base</tt> и <tt>disk</tt>, которые там уже были смержены в одну <tt>main</tt>.
 
Пример в итоге получился [http://lists.altlinux.org/pipermail/devel-distro/2009-February/000236.html такой]:
 
* <tt>make</tt> давал останов с таким сообщением:
  The following packages have unmet dependencies:
    ltsp-client-full: Depends: ltsp-client (>= 5.1)
  E: Broken packages
 
* в <tt>.work/mki-copy-pkgs.verbose/err</tt> содержались те же данные
 
* hsh-install .work ltsp-client замечательно отрабатывал
 
* а вот при попытке поставить весь раскрытый из <tt>$(IMAGE_PACKAGES)</tt> список пакетов и воспроизводился облом:
  $ cd profiles/main/.work
  $ hsh-install -v . $(cat mki-copy-pkgs.verbose/req)
 
* наконец было осознано, что в файлик req попадают _и_ ltsp-client, _и_ ltsp-server, а потом замечено и вспомнено, что они же конфликтуют!
 
* вот как можно яснее понять, в чём проблема — «protected» тут явным образом запрошенный ранее пакет:
  $ cd profiles/main/.work
  $ aptbox/apt-get install -y -o Debug::pkgProblemResolver=1 $(cat mki-copy-pkgs.verbose/req)
  [...]
  Investigating alterator-ltsconf
  Package alterator-ltsconf has broken dep on ltsp-server
    Considering ltsp-server 2 as a solution to alterator-ltsconf 9999
      Reinst Failed because of protected ltsp-client
 
==== Нет графики при загрузке образа, первая стадия задаёт вопросы ====
Если не поднялся 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]

Версия от 22:36, 12 декабря 2009

Сборка дистрибутивов с помощью mkimage-profiles-desktop

42px-Wikitext-ru.svg.png
Эту статью следует викифицировать.
48px-Mail-mark-junk red.svg.png
Эта статья протухла.
Её нужно существенно доработать или удалить


Текущая версия (актуальна для 5.1/branch+)

устаревший вариант

Предполагается использование бранчей 4.0, 4.1. При сборке на старых бранчах могут потребоваться модификации или откат профиля до соответствующего периода. Над этим потихоньку работаем.

Может понадобиться организовать отдельный apt.conf, хотя проблема с altlinux-release и хак с pkgpriorities неактуальны при использовании IMAGE_INIT_LIST из mkimage-0.0.8 в свежих снапшотах профиля (исправлено в конце июля 2008).

Далее (поправьте /home/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

NB: для ветки 4.1 сборка не проверялась, известна пара не очень существенных проблем; на ветке 5.0 по состоянию на лето 2009 выпущены альфа-бета, известна пара регрессий, но уже можно собираться (ветка master у mike@ или boyarsh@).

Модификация

Загляните в README.

Изучение существующих примеров удобней начинать с корневого Makefile.in и далее по profiles/*/Makefile.in и profiles/packages-lists/*. Стоит обратить внимание, что IMAGE_PACKAGES в профильном мэйкфайле может содержать как включаемые файлы-списки, так и имена пакетов (если как файлы они не будут найдены).

Хуки и скрипты

Q: чем различаются install2/{image-scripts.d, scripts.d}/?

A: image-scripts выполняются в chroot собранной стадии. scripts — в инструментальном chroot-е после установки пакетов и до архивации результата, что позволяет копировать файлы из/в chroot

Проблемы

Использование своего apt.conf

При использовании своего apt.conf была замечена такая проблема - при сборке дистрибутива apt проверял репозиторий, указанный в своем apt.conf, а затем обновлял списки пакетов из текущего системного репозитория. Чтобы заставить apt проверять только свой репозиторий и не смотреть в сторону /etc/apt/apt.conf необходимо в свой apt.conf добавить следующее

Dir::Etc::SourceParts "/var/empty";

Старые грабли

Вынесены отдельной страницей. Могут понадобиться при сборке образов на базе бранчей 4.0/4.1 из профилей соответствующих веток/времён.

Сообщения об ошибке в части установки firmware для wi-fi адаптеров

при сборке под конец возможны такие сообщения

mkmodpack: warning: Firmware file "tehuti/firmware.bin" for module "tehuti" not found
mkmodpack: warning: Firmware file "i2400m-fw-sdio-1.3.sbcf" for module "i2400m-sdio" not found
mkmodpack: warning: Firmware file "i2400m-fw-usb-1.3.sbcf" for module "i2400m-usb" not found
mkmodpack: warning: Firmware file "i2400m-fw-usb-1.4.sbcf" for module "i2400m-usb" not found
mkmodpack: warning: Firmware file "ar9170-2.fw" for module "ar9170usb" not found
mkmodpack: warning: Firmware file "ar9170-1.fw" for module "ar9170usb" not found
mkmodpack: warning: Firmware file "FW13" for module "b43" not found
mkmodpack: warning: Firmware file "FW10" for module "b43legacy" not found
mkmodpack: warning: Firmware file "iwlwifi-3945-2.ucode" for module "iwl3945" not found
mkmodpack: warning: Firmware file "iwlwifi-4965-2.ucode" for module "iwlagn" not found
mkmodpack: warning: Firmware file "iwlwifi-5150-2.ucode" for module "iwlagn" not found
mkmodpack: warning: Firmware file "iwlwifi-5000-2.ucode" for module "iwlagn" not found
mkmodpack: warning: Firmware file "iwlwifi-6050-2.ucode" for module "iwlagn" not found

Это нормально. Поддержки wifi в propagator всё равно нет.

Ссылки

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