Mkimage-profiles/howto
Зачем и для кого?
Это руководство по созданию производных дистрибутивов может оказаться полезно тем, кого почти устраивают уже существующие и при этом есть свои замечания или пожелания — начиная с обоев по умолчанию и добавления своих пакетов. :)
Для начала
Перед внесением правок стоит удостовериться, что mkimage установлен, а выбранный базовый дистрибутив им собирается и после этого работает; пожалуйста, не пропустите страничку с примерами, чтоб не тратить впустую время на экспериментальное выяснение уже описанного там и в QUICKSTART.
Проверка
Возьмём для примера live-icewm.iso — простой самогруз с лёгким оконным менеджером IceWM, хорошо подходящим как для небыстрого оборудования, так и для полукиосков заданной функциональности. Его сборка должна пройти успешно в течение нескольких минут (до получаса на сколь-нибудь современном процессоре) после команд[1]:
make live-icewm.iso
По умолчанию сборка производится под «родную» архитектуру хоста с использованием системной конфигурации apt. Если что-то произойдёт не так — например, отсутствует mkimage, не настроен hasher или автонаходилка не нашла места для сборки — должна быть выдана относительно внятная диагностика).
В случае успешной сборки должна появиться строчка, указывающая путь к собранному образу и его размер:
** image: ~/out/live-icewm-20120717-i586.iso [173M]
Также при этом в каталоге 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 для дампа переменных
[to be continued]
Примечания
- ↑ подразумевается, что мы работаем со свежей копией mkimage-profiles.git, находясь в соответствующем каталоге