Mkimage-profiles/howto

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

Зачем и для кого?

Это руководство по созданию производных дистрибутивов может оказаться полезно тем, кого почти устраивают уже существующие и при этом есть свои замечания или пожелания — начиная с обоев по умолчанию и добавления своих пакетов. :)

Для начала

Перед внесением правок стоит удостовериться, что mkimage установлен, а выбранный базовый дистрибутив им собирается и после этого работает; пожалуйста, не пропустите страничку с примерами, чтоб не тратить впустую время на экспериментальное выяснение уже описанного там и в QUICKSTART.

Проверка

Возьмём для примера live-icewm.iso — простой самогруз с лёгким оконным менеджером IceWM, хорошо подходящим как для небыстрого оборудования, так и для полукиосков заданной функциональности. Его сборка должна пройти успешно в течение нескольких минут (до получаса на сколь-нибудь современном процессоре) после команды[1]:

make live-icewm.iso

По умолчанию сборка производится под «родную» архитектуру хоста с использованием системной конфигурации apt. Если что-то произойдёт не так — например, отсутствует mkimage, не настроен hasher или автонаходилка не нашла места для сборки — должна быть выдана относительно внятная диагностика.

В случае успешной сборки должна появиться строчка, указывающая путь к собранному образу и его размер:

** image: ~/out/live-icewm-20120717-i586.iso [173M]

Этот образ можно проверить в виртуальной машине, указав его в качестве загрузочного носителя для VirtualBox либо воспользовавшись kvm[2] или qemu:

$ kvm -cdrom ~/out/live-icewm-20120717-i586.iso

Загрузился? Неужто :)

Также при этом в каталоге mkimage-profiles появится ссылка build, указывающая на сборочный каталог со сгенерированным минимальным профилем, который должно быть проще осмотреть целиком. Рассмотрим его подробней:

$ ls -F1 build/
build.log          -- журнал сборки
distcfg.mk         -- конфигурационный файл — его и правим
files/             -- содержимое копируется в корень образа
functions.mk       -- полезности
image-scripts.d/   -- см. документацию mkimage
lib/               -- содержимое включается в Makefile 
live/              -- субпрофиль для сборки LiveCD — нам сюда
Makefile           -- основной файл для сборки
out@               -- ссылка на каталог с результатом
pkg/               -- списки пакетов, файлы групп — ...и сюда
README             -- стоит глянуть, там немного :)
scripts.d/         -- см. документацию mkimage
sources.list       -- создаётся метапрофилем для архива
squashcfg.mk       -- передаваемые между stage1/2 данные
stage1/            -- субпрофиль с загрузчиками ядра и второй стадии
vars.mk            -- вспомогательный makefile для дампа переменных

Во включаемом в build/live/Makefile файле build/live/stage2cfg.mk заметно, какие переменные влияют на состав пакетной базы формирующего LiveCD субпрофиля; из них наиболее употребимы THE_PACKAGES и THE_LISTS.

Заполняются эти переменные в build/distcfg.mk, а посмотреть окончательные значения, принятые в сборку — можно в build/build.log после её завершения[3]. Пакаджлисты трактуются как имена файлов со списками имён пакетов, расположенных ниже build/pkg/lists.

[to be continued]

Примечания

  1. подразумевается, что мы работаем со свежей копией mkimage-profiles.git, находясь в соответствующем каталоге
  2. требует modprobe kvm_intel или modprobe kvm_amd сообразно процессору, а также группу vmusers для доступа к /dev/kvm
  3. для тестового прогона можно добавить опцию CHECK=1, см. doc/params.txt