see also http://www.altlinux.org/Mkimage/Profiles/next; quickstart: make distclean server-base.iso configurables: ~/.mkimage/profiles.mk, see libdistro.mk Концепция: - метапрофиль служит репозиторием всего возможно нужного для построения индивидуального профиля, по которому создаётся итоговый дистрибутив - для одноразовых модификаций можно подправить сгенерированный профиль, для долгосрочной разработки стоит вливать правки в метапрофиль (что требует больше навыков и времени) Особенности: - метапрофиль может быть полностью read-only при сборке - для сборки подыскивается предпочтительно tmpfs - в профиль копируются только нужные объекты; он автономен относительно метапрофиля Стадии работы: - инициализация дистрибутивного профиля - сборка конфигурации дистрибутива - наполнение дистрибутивного профиля - сборка дистрибутива Объекты: - дистрибутивы: distro.mk, могут основываться один на другом; желательно избегать множественного наследования, используя вместо него блоки use/* - субпрофили (список собирается в $(SUBPROFILES)): + stage1: propagator (ожидается после syslinux) + install2: инсталятор + main: пакетная база к инсталяции (обязательная и дополнительная) + ... - блоки функциональности use/*: не являются самостоятельными (не путать с дистрибутивами), но законченными; могут жить в distro.mk (или сделать use.mk?), либо же в индивидуальных features.in/*/config.mk, если необходимо дополнить не только distcfg.mk, а и дерево формируемого профиля - фичи: законченные кусочки функциональности, могут зависеть друг от друга; сливаются с соответствующими субпрофилями при сборке $(BUILDDIR), могут нести с собой копируемые в один или несколько субпрофилей каталоги/файлы и могут выполнять необходимые действия во время сборки после копирования (generate.sh, generate.mk). NB: добавляем в $(FEATURES) (из того же config.mk, который будет включён в distro.mk)! - списки пакетов: большая человеческая просьба по возможности избегать дублирования и подумать над pkg/lists/tagged... NB: следует крайне осторожно пользоваться COMMON_PACKAGES, т.к. указанные пакеты попадут во все стадии (в т.ч. stage1 и install2, чувствительные к объёму). Результат: - при успешном завершении сборки образ называется сообразно дистрибутиву и укладывается в $(IMAGEDIR): + указанный явно, + либо ~/out/ (если возможно), + или $(BUILDDIR)/out/ иначе