386be9a5e8
I hereby release this work under the terms of GNU General Public License, either version 2 or a later version at your option. The code is either taken from mkimage-profiles-desktop.git (available under GPLv2+) or written by me with some exceptions in the form of: - snippets from GNU make documentation; - stackoverflow.com and cmcrossroads.com articles; - random advice on the 'net to be strict; given the nature of such snippets being explicitly proposed as an example or for immediate reuse, I consider it feasible to redistribute those worked into this code. If there's any concern regarding copyright, please contact me by e-mail to sort it out. |
||
---|---|---|
bin | ||
doc | ||
features.in | ||
image.in | ||
pkg.in | ||
sub.in | ||
.gitignore | ||
clean.mk | ||
COPYING | ||
distro.mk | ||
functions.mk | ||
iso.mk | ||
libdistro.mk | ||
log.mk | ||
Makefile | ||
profile.mk | ||
README |
see also http://www.altlinux.org/Mkimage/Profiles/next
quickstart: make server-base.iso
(NB: requires configured http://en.altlinux.org/Hasher)
configurables: ~/.mkimage/profiles.mk,
see doc/profiles.mk.sample and libdistro.mk
license: GPLv2+, see COPYING
Концепция:
- метапрофиль служит репозиторием для построения индивидуального
профиля, по которому создаётся итоговый дистрибутив
- для одноразовых модификаций можно подправить сгенерированный
профиль, для долгосрочной разработки стоит вливать правки
в метапрофиль (что требует больше навыков и времени)
Особенности:
- метапрофиль может быть полностью read-only при сборке
- для сборки подыскивается предпочтительно tmpfs
- в профиль копируются только нужные объекты;
он автономен относительно метапрофиля
Стадии работы:
- инициализация дистрибутивного профиля
- сборка конфигурации дистрибутива
- наполнение дистрибутивного профиля
- сборка дистрибутива
Объекты:
- дистрибутивы:
+ описываются в distro.mk
+ могут основываться один на другом
+ включают один или более субпрофилей по надобности
+ желательно избегать множественного наследования, см. тж. фичи
- субпрофили:
+ список собирается в $(SUBPROFILES)
+ базовые комплекты помещены в подкаталогах под sub.in/;
их наборы скриптов могут расширяться фичами
- stage1: propagator, ядро инсталятора и initrd в т.ч. с firmware
- install2: сам инсталятор (и модули ядра)
- main: пакетная база к инсталяции (обязательная и дополнительная)
- фичи:
+ список собирается в $(FEATURES)
+ законченные блоки функциональности (или наборы таковых)
+ описываются в индивидуальных features.in/*/config.mk
+ могут зависеть друг от друга и требовать субпрофили
+ при сборке $(BUILDDIR) содержимое указанных в $(FEATURES) фич
(подкаталоги, соответствующие входящим в дистрибутив субпрофилям)
добавляется в профиль; затем выполняются generate.sh, generate.mk
- списки пакетов (*_LISTS): просьба по возможности избегать дублирования
- индивидуальные пакеты (*_PACKAGES): следует крайне осторожно пользоваться
COMMON_PACKAGES -- эти пакеты попадут во все стадии, в том числе в образ
чувствительной к объёму install2 (в stage1 -- только в инструментальный
чрут); применяйте для того, что обязано быть и в инсталяторе, и в готовой
системе
Результат:
- при успешном завершении сборки образ называется сообразно
дистрибутиву и укладывается в $(IMAGEDIR):
+ указанный явно,
+ либо ~/out/ (если возможно),
+ или $(BUILDDIR)/out/ иначе