50e0779f9d
A bit earlier the situation where there was a stage1 fallback for INSTALLER_KFLAVOUR as the last of KFLAVOURS, so we'd have an installer kernel or build would break; now the situration got somewhat twisted: there could be a vmlinuz in stage1 but no corresponding modules in install2 -- which can lead to different surprises but at least alterator-vm would complain about "Operation not permitted" on partition layout commit. The fallback is a copypaste from sub.in/stage1/Makefile though and should be redone properly somewhere. The question so far is, where exactly? |
||
---|---|---|
bin | ||
doc | ||
features.in | ||
image.in | ||
pkg.in | ||
sub.in | ||
.gitignore | ||
clean.mk | ||
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 Концепция: - метапрофиль служит репозиторием всего возможно нужного для построения индивидуального профиля, по которому создаётся итоговый дистрибутив - для одноразовых модификаций можно подправить сгенерированный профиль, для долгосрочной разработки стоит вливать правки в метапрофиль (что требует больше навыков и времени) Особенности: - метапрофиль может быть полностью read-only при сборке - для сборки подыскивается предпочтительно tmpfs - в профиль копируются только нужные объекты; он автономен относительно метапрофиля Стадии работы: - инициализация дистрибутивного профиля - сборка конфигурации дистрибутива - наполнение дистрибутивного профиля - сборка дистрибутива Объекты: - дистрибутивы: distro.mk, могут основываться один на другом; желательно избегать множественного наследования, используя вместо него блоки use/* - субпрофили (список собирается в $(SUBPROFILES)): + stage1: propagator и ядро инсталятора + install2: сам инсталятор + main: пакетная база к инсталяции (обязательная и дополнительная) + ... - блоки функциональности use/*: не являются самостоятельными (не путать с дистрибутивами), но законченными; описываются в 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/ иначе