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

Материал из ALT Linux Wiki
(init (thx drool@))
 
м (distcfg.mk и компания)
Строка 6: Строка 6:


= Проверка =
= Проверка =
Возьмём для примера live-icewm.iso — простой самогруз с лёгким оконным менеджером IceWM, хорошо подходящим как для небыстрого оборудования, так и для полукиосков заданной функциональности. Его сборка должна пройти успешно в течение нескольких минут (до получаса на сколь-нибудь современном процессоре) после команд<ref>подразумевается, что мы работаем со свежей копией mkimage-profiles.git, находясь в соответствующем каталоге</ref>:
Возьмём для примера live-icewm.iso — простой самогруз с лёгким оконным менеджером IceWM, хорошо подходящим как для небыстрого оборудования, так и для полукиосков заданной функциональности. Его сборка должна пройти успешно в течение нескольких минут (до получаса на сколь-нибудь современном процессоре) после команды<ref>подразумевается, что мы работаем со свежей копией mkimage-profiles.git, находясь в соответствующем каталоге</ref>:
  make live-icewm.iso
  make live-icewm.iso


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


В случае успешной сборки должна появиться строчка, указывающая путь к собранному образу и его размер:
В случае успешной сборки должна появиться строчка, указывающая путь к собранному образу и его размер:
  ** image: ~/out/live-icewm-20120717-i586.iso [173M]
  ** image: ~/out/live-icewm-20120717-i586.iso [173M]
Этот образ можно проверить в виртуальной машине, указав его в качестве загрузочного носителя для VirtualBox либо воспользовавшись kvm<ref>требует {{cmd|modprobe kvm_intel}} или {{cmd|modprobe kvm_amd}} сообразно процессору, а также группу <tt>vmusers</tt> для доступа к {{path|/dev/kvm}}</ref> или qemu:
$ kvm -cdrom ~/out/live-icewm-20120717-i586.iso
Загрузился?  Неужто :)


Также при этом в каталоге {{path|mkimage-profiles}} появится ссылка {{path|build}}, указывающая на сборочный каталог со сгенерированным минимальным профилем, который должно быть проще осмотреть целиком.  Рассмотрим его подробней:
Также при этом в каталоге {{path|mkimage-profiles}} появится ссылка {{path|build}}, указывающая на сборочный каталог со сгенерированным минимальным профилем, который должно быть проще осмотреть целиком.  Рассмотрим его подробней:
Строка 18: Строка 23:
$ ls -F1 build/
$ ls -F1 build/
build.log          -- журнал сборки
build.log          -- журнал сборки
distcfg.mk        -- конфигурационный файл
distcfg.mk        -- конфигурационный файл — его и правим
files/            -- содержимое копируется в корень образа
files/            -- содержимое копируется в корень образа
functions.mk      -- полезности
functions.mk      -- полезности
image-scripts.d/  -- см. документацию mkimage
image-scripts.d/  -- см. документацию mkimage
lib/              -- содержимое включается в Makefile  
lib/              -- содержимое включается в Makefile  
live/              -- субпрофиль для сборки LiveCD
live/              -- субпрофиль для сборки LiveCD — нам сюда
Makefile          -- основной файл для сборки
Makefile          -- основной файл для сборки
out@              -- ссылка на каталог с результатом
out@              -- ссылка на каталог с результатом
pkg/              -- списки пакетов, файлы групп -- нам сюда
pkg/              -- списки пакетов, файлы групп — ...и сюда
README            -- стоит глянуть, там немного :)
README            -- стоит глянуть, там немного :)
scripts.d/        -- см. документацию mkimage
scripts.d/        -- см. документацию mkimage
Строка 34: Строка 39:
vars.mk            -- вспомогательный makefile для дампа переменных
vars.mk            -- вспомогательный makefile для дампа переменных
</pre>
</pre>
Во включаемом в {{path|build/live/Makefile}} файле {{path|build/live/stage2cfg.mk}} заметно, какие переменные влияют на состав пакетной базы формирующего LiveCD субпрофиля; из них наиболее употребимы <tt>THE_PACKAGES</tt> и <tt>THE_LISTS</tt>.
Заполняются эти переменные в {{path|build/distcfg.mk}}, а посмотреть окончательные значения, принятые в сборку — можно в {{path|build/build.log}} после её завершения<ref>для тестового прогона можно добавить опцию <tt>CHECK=1</tt>, см. {{path|doc/params.txt}}</ref>.  Пакаджлисты трактуются как имена файлов со списками имён пакетов, расположенных ниже {{path|build/pkg/lists}}.


[to be continued]
[to be continued]

Версия от 20:56, 17 июля 2012

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

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

Для начала

Перед внесением правок стоит удостовериться, что 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