forked from altcloud/mkimage-profiles
Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
48272c7119 | ||
|
10b9e293b0 | ||
|
b52ff4ef91 | ||
|
ad68750855 | ||
|
9cedefdba9 | ||
|
781c98bb3d | ||
|
c4a5515b64 | ||
|
ae7139f8b6 | ||
|
7964bccb92 | ||
|
7110ba77de | ||
|
52f6897318 | ||
|
f257b8e9df | ||
|
94d2ca36aa | ||
|
b85d82c219 | ||
|
e2eef6eb71 | ||
|
6782808223 | ||
|
7a8ac9e7e0 | ||
|
b3e4d9af0c | ||
|
ab70588f94 | ||
|
4313629aac | ||
|
0301f08e87 |
@@ -1,5 +1,5 @@
|
||||
Name: mkimage-profiles
|
||||
Version: 0.4.3
|
||||
Version: 0.5.0
|
||||
Release: alt1
|
||||
|
||||
Summary: ALT Linux based distribution metaprofile
|
||||
@@ -13,6 +13,7 @@ Packager: Michael Shigorin <mike@altlinux.org>
|
||||
BuildArch: noarch
|
||||
Requires: rsync git-core
|
||||
Requires: time schedutils
|
||||
Requires: mkimage >= 0.2.0
|
||||
|
||||
%define mpdir %_datadir/%name
|
||||
%add_findreq_skiplist %mpdir/*.in/*
|
||||
@@ -53,11 +54,25 @@ mkdir -p %buildroot%mpdir
|
||||
cp -a * %buildroot%mpdir
|
||||
|
||||
%files
|
||||
%mpdir/*
|
||||
%mpdir/
|
||||
%doc doc/
|
||||
%doc README QUICKSTART
|
||||
|
||||
%changelog
|
||||
* Mon Nov 21 2011 Michael Shigorin <mike@altlinux.org> 0.5.0-alt1
|
||||
- add_feature for autoregistration (simple but invasive)
|
||||
- added features: isomd5sum, repo, systemd
|
||||
- changed features: powerbutton -> power
|
||||
|
||||
* Tue Nov 08 2011 Michael Shigorin <mike@altlinux.org> 0.4.3.2-alt1
|
||||
- mkimage version required/checked
|
||||
|
||||
* Mon Nov 07 2011 Michael Shigorin <mike@altlinux.org> 0.4.3.1-alt1
|
||||
- CLEAN by default unless DEBUG
|
||||
|
||||
* Mon Nov 07 2011 Michael Shigorin <mike@altlinux.org> 0.4.3-alt2
|
||||
- include %mpdir/ itself as well
|
||||
|
||||
* Mon Nov 07 2011 Michael Shigorin <mike@altlinux.org> 0.4.3-alt1
|
||||
- enhancements to logging
|
||||
- NICE variable: employ nice(1) and ionice(1) if available
|
||||
|
6
.gear/tags/ebef5a60dc24c1e57e3b71ea26cf69b1724b6adb
Normal file
6
.gear/tags/ebef5a60dc24c1e57e3b71ea26cf69b1724b6adb
Normal file
@@ -0,0 +1,6 @@
|
||||
object 67828082236deb07175f359795487552d57702d5
|
||||
type commit
|
||||
tag v0.4.3.2
|
||||
tagger Michael Shigorin <mike@altlinux.org> 1320703844 +0200
|
||||
|
||||
mkimage >= 0.2.0
|
1
.gear/tags/list
Normal file
1
.gear/tags/list
Normal file
@@ -0,0 +1 @@
|
||||
ebef5a60dc24c1e57e3b71ea26cf69b1724b6adb v0.4.3.2
|
23
Makefile
23
Makefile
@@ -10,7 +10,10 @@ MKIMAGE_PROFILES = $(dir $(lastword $(MAKEFILE_LIST)))
|
||||
|
||||
# only process the first target (inter-target cleanup is tricky)
|
||||
IMAGE_TARGET := $(firstword $(MAKECMDGOALS))# distro/server-base.iso
|
||||
IMAGE_CONF := $(basename $(MAKECMDGOALS))# distro/server-base
|
||||
ifeq (./,$(dir $(IMAGE_TARGET)))# convenience fallback
|
||||
IMAGE_TARGET := distro/$(IMAGE_TARGET)# for omitted "distro/"
|
||||
endif
|
||||
IMAGE_CONF := $(basename $(IMAGE_TARGET))# distro/server-base
|
||||
IMAGE_CLASS := $(dir $(IMAGE_TARGET))# distro/ (let's fix it)
|
||||
IMAGE_CLASS := $(IMAGE_CLASS:%/=%)# distro
|
||||
IMAGE_FILE := $(notdir $(IMAGE_TARGET))# server-base.iso
|
||||
@@ -35,13 +38,7 @@ VES := $(call addsuffices,$(VE_EXTS),$(VE_TARGETS))
|
||||
IMAGES := $(DISTROS) $(VES)
|
||||
|
||||
.PHONY: $(IMAGES) $(DISTRO_TARGETS) $(VE_TARGETS)
|
||||
|
||||
help:
|
||||
@echo '** available distribution targets:'
|
||||
@echo $(DISTROS) | fmt -sw"$$((COLUMNS>>1))" | column -t
|
||||
@echo
|
||||
@echo '** available virtual environment targets:'
|
||||
@echo $(VES) | fmt -sw"$$((COLUMNS>>1))" | column -t
|
||||
.DEFAULT: help
|
||||
|
||||
### suboptimal but at least clear, reliable and convenient
|
||||
all:
|
||||
@@ -63,6 +60,16 @@ $(IMAGES): debug \
|
||||
config/pack/$(IMAGE_TYPE) \
|
||||
build; @:
|
||||
|
||||
# convenience shortcut
|
||||
$(DISTROS:distro/%=%): %: distro/%
|
||||
|
||||
help:
|
||||
@echo '** available distribution targets:'
|
||||
@echo $(DISTROS) | fmt -sw"$$((COLUMNS>>1))" | column -t
|
||||
@echo
|
||||
@echo '** available virtual environment targets:'
|
||||
@echo $(VES) | fmt -sw"$$((COLUMNS>>1))" | column -t
|
||||
|
||||
debug:
|
||||
ifeq (2,$(DEBUG))
|
||||
@$(foreach v,\
|
||||
|
3
README
3
README
@@ -47,8 +47,7 @@ Most docs are in Russian, welcome to learn it or ask for English.
|
||||
+ законченные блоки функциональности (или наборы таковых)
|
||||
+ описываются в индивидуальных features.in/*/config.mk
|
||||
+ могут требовать другие фичи, а также субпрофили
|
||||
+ при сборке $(BUILDDIR) содержимое указанных в $(FEATURES) фич
|
||||
добавляется в профиль с постобработкой (generate.*)
|
||||
+ при сборке $(BUILDDIR) содержимое фич добавляется в профиль
|
||||
- списки пакетов (*_LISTS):
|
||||
+ просьба по возможности избегать дублирования
|
||||
- индивидуальные пакеты (*_PACKAGES): см. тж. conf.d/README
|
||||
|
@@ -1,13 +1,15 @@
|
||||
# desktop distributions
|
||||
ifeq (distro,$(IMAGE_CLASS))
|
||||
|
||||
distro/desktop-base: distro/installer sub/main \
|
||||
distro/desktop-base: distro/installer use/repo/main \
|
||||
use/syslinux/ui-vesamenu use/x11/xorg use/bootloader/grub
|
||||
|
||||
distro/icewm: distro/desktop-base \
|
||||
use/lowmem use/x11/xdm use/x11/runlevel5 \
|
||||
use/bootloader/lilo use/powerbutton/acpi \
|
||||
use/bootloader/lilo use/power/acpi/button \
|
||||
use/cleanup/alterator
|
||||
@$(call add,BASE_LISTS,$(call tags,icewm desktop))
|
||||
|
||||
distro/desktop-systemd: distro/icewm use/systemd
|
||||
|
||||
endif
|
||||
|
@@ -1,12 +1,17 @@
|
||||
# live images
|
||||
ifeq (distro,$(IMAGE_CLASS))
|
||||
|
||||
distro/live: distro/.base use/live/base
|
||||
distro/live: distro/.base use/live/base use/power/acpi/cpufreq
|
||||
distro/rescue: distro/.base use/rescue use/syslinux/ui-menu
|
||||
distro/dos: distro/.init use/dos use/syslinux/ui-menu
|
||||
|
||||
distro/live-builder: distro/.base sub/main \
|
||||
use/live/base use/dev/mkimage
|
||||
distro/live-systemd: distro/.base use/live/base use/systemd
|
||||
|
||||
distro/live-isomd5sum: distro/.base use/live/base use/isomd5sum
|
||||
@$(call add,LIVE_PACKAGES,livecd-isomd5sum)
|
||||
|
||||
distro/live-builder: distro/.base use/repo/main \
|
||||
use/live/base use/dev/mkimage use/power/acpi/button
|
||||
@$(call add,LIVE_LISTS,$(call tags,base && (server || builder)))
|
||||
@$(call add,LIVE_PACKAGES,livecd-tmpfs livecd-online-repo)
|
||||
@$(call add,LIVE_PACKAGES,mkimage-profiles)
|
||||
|
@@ -1,7 +1,7 @@
|
||||
# server distributions
|
||||
ifeq (distro,$(IMAGE_CLASS))
|
||||
|
||||
distro/server-base: distro/installer sub/main \
|
||||
distro/server-base: distro/installer use/repo/main \
|
||||
use/syslinux/ui-menu use/memtest use/bootloader/grub
|
||||
@$(call add,BASE_LISTS,server-base)
|
||||
|
||||
@@ -12,19 +12,25 @@ distro/server-mini: distro/server-base use/cleanup/x11-alterator
|
||||
$(call tags,base && (server || network || security || pkg)))
|
||||
@$(call add,BASE_LISTS,$(call tags,extra network))
|
||||
|
||||
distro/server-ovz: distro/server-base \
|
||||
use/hdt use/rescue use/firmware/server use/powerbutton/acpi \
|
||||
use/cleanup/x11-alterator
|
||||
distro/server-systemd: distro/server-mini use/systemd
|
||||
|
||||
distro/server-ovz: distro/server-mini \
|
||||
use/hdt use/rescue use/firmware/server use/power/acpi/button
|
||||
@$(call set,STAGE1_KFLAVOUR,std-def)
|
||||
@$(call set,KFLAVOURS,std-def ovz-el)
|
||||
@$(call add,KMODULES,bcmwl e1000e igb ndiswrapper rtl8168 rtl8192)
|
||||
@$(call add,KMODULES,bcmwl ndiswrapper rtl8168 rtl8192)
|
||||
@$(call add,KMODULES,ipset ipt-netflow opendpi pf_ring xtables-addons)
|
||||
@$(call add,KMODULES,drbd83 kvm)
|
||||
@$(call add,INSTALL2_PACKAGES,curl) ### should become curl-mini
|
||||
@$(call add,BASE_LISTS,ovz-server)
|
||||
@$(call add,BASE_LISTS,$(call tags,base server))
|
||||
@$(call add,MAIN_LISTS,kernel-wifi)
|
||||
@$(call add,MAIN_GROUPS,dns-server http-server ftp-server kvm-server)
|
||||
@$(call add,MAIN_GROUPS,ipmi mysql-server dhcp-server mail-server)
|
||||
@$(call add,MAIN_GROUPS,monitoring diag-tools)
|
||||
|
||||
# tiny network-only server-ovz installer (stage2 comes over net too)
|
||||
distro/server-ovz-netinst: distro/.base sub/stage1 use/stage2 \
|
||||
use/syslinux/ui-menu use/memtest
|
||||
@$(call add,SYSLINUX_CFG,netinstall2)
|
||||
|
||||
endif
|
||||
|
@@ -26,7 +26,7 @@
|
||||
+ экономия RAM+swap при сборке в tmpfs, иначе места на диске
|
||||
+ очистка рабочего каталога после успешной сборки очередной стадии
|
||||
+ может помешать использовать некоторые варианты отладки
|
||||
+ значение: любая строка, по умолчанию пусто
|
||||
+ значение: любая строка; по умолчанию пусто при DEBUG, иначе 1
|
||||
+ см. ../lib/clean.mk
|
||||
|
||||
- DEBUG
|
||||
|
@@ -9,5 +9,5 @@
|
||||
# for somewhat more involved example, see syslinux feature
|
||||
|
||||
use/00example: sub/main use/anotherfeature
|
||||
@$(call add,FEATURES,00example)
|
||||
@$(call add_feature)
|
||||
@$(call add,MAIN_PACKAGES,hello)
|
||||
|
@@ -24,9 +24,6 @@ include $(BUILDDIR)/distcfg.mk
|
||||
# -- then both src/ and dst/ can hold the addons;
|
||||
# still both pieces go into a single destination
|
||||
|
||||
### {image-,}scripts.d/ get rsynced twice :-/
|
||||
### still we don't want the trimmed-down case
|
||||
|
||||
### sorry for somewhat complicated and overly long lines
|
||||
all:
|
||||
@echo "** starting feature configuration"
|
||||
@@ -40,33 +37,50 @@ all:
|
||||
fi; \
|
||||
pushd "$$feat" >/dev/null && \
|
||||
for sub in / $(SUBPROFILES); do \
|
||||
src="$${sub%/*}"; \
|
||||
dst="$${sub#*/}"; \
|
||||
if [ -d "$$src" ]; then \
|
||||
rsync -qab "$$src/" "$(BUILDDIR)/$$dst/"; \
|
||||
dirtags="&& $$src"; \
|
||||
fi; \
|
||||
if [ -d "$$dst" ]; then \
|
||||
rsync -qab "$$dst/" "$(BUILDDIR)/$$dst/"; \
|
||||
if [ "$$dst" != "$$src" ]; then \
|
||||
dirtags=; \
|
||||
if [ "$$sub" = / ]; then \
|
||||
parts=lib; \
|
||||
srcdirs="."; \
|
||||
dst="."; \
|
||||
else \
|
||||
parts=; \
|
||||
src="$${sub%/*}"; \
|
||||
dst="$${sub#*/}"; \
|
||||
srcdirs=; \
|
||||
if [ -d "$$src" ]; then \
|
||||
srcdirs="$$src"; \
|
||||
dirtags="&& $$src"; \
|
||||
fi; \
|
||||
if [ -d "$$dst" -a "$$dst" != "$$src" ]; then \
|
||||
srcdirs="$$srcdirs $$dst"; \
|
||||
dirtags="&& ($$src || $$dst)"; \
|
||||
fi; \
|
||||
for srcdir in $$srcdirs; do \
|
||||
rsync -qab --exclude tagged \
|
||||
"$$srcdir/" "$(BUILDDIR)/$$dst/"; \
|
||||
done; \
|
||||
fi; \
|
||||
for dir in lib {image-,}scripts.d; do \
|
||||
destdir="$(BUILDDIR)/$$dst/$$dir/"; \
|
||||
if [ -d "$$destdir" ]; then \
|
||||
if [ -d "$$dir" ]; then \
|
||||
rsync -qab "$$dir/" "$$destdir/"; \
|
||||
if [ -n "$(GLOBAL_DEBUG)" ]; then \
|
||||
echo "** src=[$$src] dst=[$$dst] srcdirs=[$$srcdirs]"; \
|
||||
fi; \
|
||||
for srcdir in $$srcdirs; do \
|
||||
[ -d "$$srcdir" ] || continue; \
|
||||
pushd "$$srcdir" >&/dev/null; \
|
||||
for part in $$parts {image-,}scripts.d; do \
|
||||
destdir="$(BUILDDIR)/$$dst/$$part"; \
|
||||
[ -d "$$destdir" ] || continue; \
|
||||
if [ "$$sub" = / -a -d "$$part" ]; then \
|
||||
rsync -qab "$$part/" "$$destdir/"; \
|
||||
fi; \
|
||||
if [ -d "tagged/$$dir" ]; then \
|
||||
if pushd "tagged/$$dir" >/dev/null; then \
|
||||
echo "$$feat $$dirtags" \
|
||||
| tags2lists . \
|
||||
| xargs -r cp -vpLt "$$destdir" --; \
|
||||
popd >/dev/null; \
|
||||
fi; \
|
||||
fi; \
|
||||
fi; \
|
||||
[ -d "tagged/$$part" ] || continue; \
|
||||
[ "$$srcdir" != "." ] || continue; \
|
||||
pushd "tagged/$$part" >/dev/null; \
|
||||
echo "$$feat $$dirtags" \
|
||||
| tags2lists . \
|
||||
| xargs -r cp -vpLt "$$destdir" --; \
|
||||
popd >/dev/null; \
|
||||
done; \
|
||||
popd >&/dev/null; \
|
||||
done; \
|
||||
if type -t git >&/dev/null && \
|
||||
pushd "$(BUILDDIR)/$$dst/" >/dev/null; then \
|
||||
|
@@ -7,15 +7,16 @@
|
||||
в ../Makefile; он может описывать одну или более целей
|
||||
вида use/*, дополняющих конфигурацию, и при наличии
|
||||
дополнительных хуков для копирования или generate.*
|
||||
должен добавить имя фичи в $(FEATURES).
|
||||
обязан добавить имя фичи в $(FEATURES), для чего
|
||||
создана функция add_feature без аргументов.
|
||||
|
||||
На этапе генерации сборочного профиля фичи рассматриваются
|
||||
после инициализации профиля (см. ../image.in/) и копирования
|
||||
субпрофилей (см. ../sub.in/). Для каждой фичи, указанной
|
||||
в $(FEATURES), копируются подкаталоги сообразно субпрофилям,
|
||||
а также производится обработка {tagged/,}{image-},scripts.d/
|
||||
(см. cleanup/ в качестве примера); затем выполняется скрипт
|
||||
generate.sh и задействуется generate.mk (при их наличии).
|
||||
а также производится обработка {tagged/,}{image-,}scripts.d/;
|
||||
затем выполняется скрипт generate.sh и задействуется generate.mk
|
||||
(при их наличии).
|
||||
|
||||
NB: тегированные скрипты являются экспериментальными,
|
||||
возможны недоработки и существенные изменения!
|
||||
@@ -29,9 +30,3 @@ generate.sh и задействуется generate.mk (при их наличи
|
||||
|
||||
Несложный пример содержится в 00example/, более близкий к жизни
|
||||
и нынешним пределам возможностей метапрофиля -- в syslinux/.
|
||||
|
||||
Основные фичи для построения дистрибутивных образов:
|
||||
- stage1: propagator, ядро инсталятора и initrd в т.ч. с firmware
|
||||
- stage2: базовый live-образ (и модули ядра, соответствующие stage1);
|
||||
используется фичами install2, live, rescue
|
||||
- main: пакетная база
|
||||
|
@@ -1,2 +1,2 @@
|
||||
use/build-distro: boot/isolinux
|
||||
@$(call add,FEATURES,build-distro)
|
||||
@$(call add_feature)
|
||||
|
@@ -4,8 +4,6 @@
|
||||
# take the latter part
|
||||
SUBDIRS = $(notdir $(SUBPROFILES))
|
||||
|
||||
# "main" subprofile needs genbasedir
|
||||
CHROOT_PACKAGES = apt-utils
|
||||
BOOT_TYPE = isolinux
|
||||
|
||||
# Metadata/ needed only for installers (and not for e.g. syslinux.iso)
|
||||
@@ -17,7 +15,7 @@ endif
|
||||
all: $(GLOBAL_DEBUG) prep copy-subdirs copy-tree run-scripts pack-image \
|
||||
postprocess $(GLOBAL_CLEAN_WORKDIR)
|
||||
|
||||
prep: $(GLOBAL_DEBUG) dot-disk $(METADATA) $(IMAGEDIR)
|
||||
prep: $(GLOBAL_DEBUG) dot-disk $(METADATA) imagedir
|
||||
|
||||
metadata: dot-base
|
||||
@mkdir -p files/Metadata
|
||||
|
@@ -1,40 +0,0 @@
|
||||
#!/bin/sh
|
||||
# FIXME: bring to common style
|
||||
|
||||
verbose()
|
||||
{
|
||||
[ -z "$GLOBAL_VERBOSE" ] ||
|
||||
echo >&2 "HOOK: 01-genbasedir: $*"
|
||||
}
|
||||
|
||||
verbose started
|
||||
|
||||
[ -d "$WORKDIR/ALTLinux" ] || exit 0
|
||||
cd "$WORKDIR/ALTLinux"
|
||||
|
||||
comps="$(find -mindepth 1 -maxdepth 1 -type d -name 'RPMS.*' -printf '%f\n' |
|
||||
sed 's/^RPMS\.//')"
|
||||
|
||||
verbose "comps=$comps"
|
||||
|
||||
[ -n "$comps" ] || exit 1
|
||||
|
||||
genbasedir \
|
||||
--topdir="$WORKDIR" \
|
||||
--architecture="$INFO_ARCH" \
|
||||
--no-oldhashfile \
|
||||
--partial \
|
||||
--xz \
|
||||
--bz2 \
|
||||
--create \
|
||||
--notautomatic=false \
|
||||
${INFO_NAME:+--archive="$INFO_NAME"} \
|
||||
${INFO_VERSION:+--version="$INFO_VERSION"} \
|
||||
${INFO_ORIGIN:+--origin="$INFO_ORIGIN"} \
|
||||
${INFO_LABEL:+--label="$INFO_LABEL"} \
|
||||
ALTLinux $comps
|
||||
|
||||
### drop this when genbasedir is fixed (--no-uncompressed)
|
||||
for comp in $comps; do rm -f base/{pkg,src}list.$comp; done
|
||||
|
||||
verbose finished
|
@@ -1,2 +1,2 @@
|
||||
use/build-ve:
|
||||
@$(call add,FEATURES,build-ve)
|
||||
@$(call add_feature)
|
||||
|
@@ -9,3 +9,5 @@ IMAGE_PACKAGES = $(call list,$(BASE_LISTS)) \
|
||||
|
||||
all: $(GLOBAL_DEBUG) build-image copy-tree run-image-scripts pack-image \
|
||||
postprocess $(GLOBAL_CLEAN_WORKDIR)
|
||||
|
||||
prep: imagedir
|
||||
|
@@ -1,5 +1,5 @@
|
||||
use/cleanup:
|
||||
@$(call add,FEATURES,cleanup)
|
||||
@$(call add_feature)
|
||||
|
||||
use/cleanup/installer: use/cleanup
|
||||
@$(call add,CLEANUP_PACKAGES,'installer-*')
|
||||
|
@@ -1,11 +1,11 @@
|
||||
#!/bin/sh -efu
|
||||
# create a postinstall script to drop temporarily needed packages
|
||||
### create a postinstall script to drop temporarily needed packages
|
||||
|
||||
if [ -n "$GLOBAL_VERBOSE" ]; then
|
||||
echo "** GLOBAL_CLEANUP_PACKAGES: $GLOBAL_CLEANUP_PACKAGES"
|
||||
fi >&2
|
||||
|
||||
SCRIPT="/usr/share/install2/postinstall.d/01+install2+cleanup"
|
||||
SCRIPT="/usr/share/install2/postinstall.d/01-remove-pkgs"
|
||||
cat > "$SCRIPT" << EOF
|
||||
#!/bin/sh -efu
|
||||
|
@@ -1,5 +1,5 @@
|
||||
use/dev:
|
||||
@$(call add,FEATURES,dev)
|
||||
@$(call add_feature)
|
||||
@$(call add,COMMON_PACKAGES,git-core hasher gear)
|
||||
|
||||
use/dev/mkimage: use/dev
|
||||
|
@@ -1,9 +0,0 @@
|
||||
#!/bin/sh -efu
|
||||
# configure local image repository provided by sub/main
|
||||
|
||||
# TODO: some integration with sub/main to ensure that it is there
|
||||
|
||||
{
|
||||
echo "# for real stuff you'll need full repo, see apt-repo"
|
||||
echo "rpm file:/image ALTLinux main"
|
||||
} > /etc/apt/sources.list.d/cdrom.list
|
@@ -1,5 +1,5 @@
|
||||
use/dos: use/syslinux
|
||||
@$(call add,FEATURES,dos)
|
||||
@$(call add_feature)
|
||||
@$(call add,SYSLINUX_CFG,dos)
|
||||
@$(call add,SYSLINUX_FILES,/usr/lib/syslinux/memdisk)
|
||||
@$(call add,STAGE1_PACKAGES,make-freedos-floppy glibc-gconv-modules)
|
||||
|
@@ -1,4 +1,4 @@
|
||||
use/hdt: use/syslinux use/memtest
|
||||
@$(call add,FEATURES,hdt)
|
||||
@$(call add_feature)
|
||||
@$(call add,STAGE1_PACKAGES,pciids)
|
||||
@$(call add,SYSLINUX_MODULES,hdt)
|
||||
|
@@ -1,5 +1,5 @@
|
||||
use/install2: use/stage2 sub/stage2/install2 use/cleanup/installer
|
||||
@$(call add,FEATURES,install2)
|
||||
@$(call add_feature)
|
||||
@$(call set,INSTALL2_PACKAGES,installer-distro-$$(INSTALLER)-stage2)
|
||||
@$(call add,INSTALL2_PACKAGES,branding-$$(BRANDING)-alterator)
|
||||
@$(call add,MAIN_PACKAGES,branding-$$(BRANDING)-release)
|
||||
|
3
features.in/isomd5sum/README
Normal file
3
features.in/isomd5sum/README
Normal file
@@ -0,0 +1,3 @@
|
||||
Эта фича конфигурирует внедрение контрольной суммы в образ
|
||||
инсталятора после его сборки с целью проверки целостности
|
||||
на ранней стадии установки.
|
3
features.in/isomd5sum/config.mk
Normal file
3
features.in/isomd5sum/config.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
use/isomd5sum:
|
||||
@$(call add_feature)
|
||||
@$(call add,POSTPROCESS_TARGETS,isomd5sum)
|
4
features.in/isomd5sum/lib/build-isomd5sum.mk
Normal file
4
features.in/isomd5sum/lib/build-isomd5sum.mk
Normal file
@@ -0,0 +1,4 @@
|
||||
CHROOT_PACKAGES += isomd5sum
|
||||
|
||||
postprocess-isomd5sum:
|
||||
@implantisomd5 "$(IMAGEDIR)/$(IMAGE_OUTFILE)"
|
@@ -1,5 +1,5 @@
|
||||
use/live: use/stage2 sub/stage2/live
|
||||
@$(call add,FEATURES,live)
|
||||
@$(call add_feature)
|
||||
|
||||
use/live/base: use/live use/syslinux/ui-menu
|
||||
@$(call add,LIVE_LISTS,$(call tags,base && (live || network)))
|
||||
|
@@ -1,4 +1,4 @@
|
||||
use/lowmem: use/install2
|
||||
@$(call add,FEATURES,lowmem)
|
||||
@$(call add_feature)
|
||||
# TODO: http://www.altlinux.org/Branding/slideshow => disable?
|
||||
# also installer-feature-rm-slideshow
|
||||
|
@@ -1,4 +1,4 @@
|
||||
use/memtest: use/syslinux
|
||||
@$(call add,FEATURES,memtest)
|
||||
@$(call add_feature)
|
||||
@$(call add,SYSTEM_PACKAGES,memtest86+)
|
||||
@$(call add,SYSLINUX_CFG,memtest)
|
||||
|
@@ -2,7 +2,7 @@ DISTRO_EXTS := .iso
|
||||
VE_EXTS := .tar .tgz
|
||||
|
||||
use/pack:
|
||||
@$(call add,FEATURES,pack)
|
||||
@$(call add_feature)
|
||||
|
||||
use/pack/iso: use/pack boot/isolinux
|
||||
ifeq (distro,$(IMAGE_CLASS))
|
||||
|
6
features.in/power/README
Normal file
6
features.in/power/README
Normal file
@@ -0,0 +1,6 @@
|
||||
Эта фича конфигурирует поддержку управления питанием
|
||||
-- выключение и регулировку частоты CPU для ACPI,
|
||||
засыпание для APM (не проверялось).
|
||||
|
||||
TODO: учесть изложенное в https://bugzilla.altlinux.org/25018
|
||||
(для gnome & co)
|
21
features.in/power/config.mk
Normal file
21
features.in/power/config.mk
Normal file
@@ -0,0 +1,21 @@
|
||||
# common
|
||||
# TODO: invent multi-target scripts and integrate that 08-powerbutton
|
||||
use/power:
|
||||
@$(call add,COMMON_PACKAGES,installer-feature-powerbutton-stage3)
|
||||
|
||||
# modern power management
|
||||
use/power/acpi: use/power
|
||||
@$(call add,COMMON_PACKAGES,acpid)
|
||||
|
||||
use/power/acpi/button: use/power/acpi
|
||||
@$(call add,COMMON_PACKAGES,acpid-events-power)
|
||||
|
||||
use/power/acpi/cpufreq: use/power/acpi
|
||||
@$(call add,COMMON_PACKAGES,cpufreq-simple)
|
||||
|
||||
use/power/acpi/powersave: use/power/acpi
|
||||
@$(call add,COMMON_PACKAGES,powersave)
|
||||
|
||||
# legacy power management
|
||||
use/power/apm: use/power
|
||||
@$(call add,COMMON_PACKAGES,apmd)
|
@@ -1,4 +0,0 @@
|
||||
Эта фича конфигурирует поддержку управления кнопкой питания
|
||||
-- выключение для ACPI, засыпание для APM (не проверялось).
|
||||
|
||||
TODO: учесть изложенное в https://bugzilla.altlinux.org/25018
|
@@ -1,14 +0,0 @@
|
||||
# common
|
||||
use/powerbutton:
|
||||
@$(call add,COMMON_PACKAGES,installer-feature-powerbutton-stage3)
|
||||
|
||||
# modern power management
|
||||
use/powerbutton/acpi: use/powerbutton
|
||||
@$(call add,COMMON_PACKAGES,acpid acpid-events-power)
|
||||
|
||||
use/powerbutton/powersave: use/powerbutton/acpi
|
||||
@$(call add,COMMON_PACKAGES,powersave)
|
||||
|
||||
# legacy power management
|
||||
use/powerbutton/apm: use/powerbutton
|
||||
@$(call add,COMMON_PACKAGES,apmd)
|
8
features.in/repo/README
Normal file
8
features.in/repo/README
Normal file
@@ -0,0 +1,8 @@
|
||||
Эта фича предназначена для конфигурирования репозиториев
|
||||
в образе, включая генерацию хэшей и подключение к LiveCD.
|
||||
|
||||
На данный момент единственным таким репозиторием является
|
||||
RPMS.main (создаваемый sub/main), но возможно добавление
|
||||
addons, updates или иных по мере необходимости.
|
||||
|
||||
Результат -- каталог ALTLinux/base/ для копирования в образ.
|
4
features.in/repo/config.mk
Normal file
4
features.in/repo/config.mk
Normal file
@@ -0,0 +1,4 @@
|
||||
use/repo:
|
||||
@$(call add_feature)
|
||||
|
||||
use/repo/main: sub/main use/repo
|
2
features.in/repo/lib/build-genbasedir.mk
Normal file
2
features.in/repo/lib/build-genbasedir.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
# ../scripts.d/01-genbasedir needs that
|
||||
CHROOT_PACKAGES += apt-utils
|
10
features.in/repo/live/image-scripts.d/80-repo-main
Executable file
10
features.in/repo/live/image-scripts.d/80-repo-main
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh -efu
|
||||
# configure package repository of the image (provided by sub/main);
|
||||
# this script will be run iff both live and repo features are used
|
||||
|
||||
DIR=/etc/apt/sources.list.d
|
||||
|
||||
mkdir -p $DIR && {
|
||||
echo "# for real stuff you'll need full repo, see apt-repo"
|
||||
echo "rpm file:/image ALTLinux main"
|
||||
} > $DIR/main.list
|
28
features.in/repo/scripts.d/01-genbasedir
Executable file
28
features.in/repo/scripts.d/01-genbasedir
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/sh -efu
|
||||
|
||||
PREFIX=ALTLinux
|
||||
cd "$WORKDIR/$PREFIX"
|
||||
|
||||
COMPS="$(find -mindepth 1 -maxdepth 1 -type d -name 'RPMS.*' -printf '%f\n' |
|
||||
sed 's/^RPMS\.//')"
|
||||
|
||||
[ -z "$GLOBAL_VERBOSE" ] || echo "** COMPS=$COMPS" >&2
|
||||
[ -n "$COMPS" ] || exit 1
|
||||
|
||||
genbasedir \
|
||||
--topdir="$WORKDIR" \
|
||||
--no-oldhashfile \
|
||||
--partial \
|
||||
--xz \
|
||||
--bz2 \
|
||||
--create \
|
||||
--notautomatic=false \
|
||||
${INFO_ARCH:+--architecture="$INFO_ARCH"} \
|
||||
${INFO_NAME:+--archive="$INFO_NAME"} \
|
||||
${INFO_VERSION:+--version="$INFO_VERSION"} \
|
||||
${INFO_ORIGIN:+--origin="$INFO_ORIGIN"} \
|
||||
${INFO_LABEL:+--label="$INFO_LABEL"} \
|
||||
$PREFIX $COMPS
|
||||
|
||||
### drop this when genbasedir is fixed (--no-uncompressed)
|
||||
for c in $COMPS; do rm -f base/{pkg,src}list.$c; done
|
@@ -1,4 +1,4 @@
|
||||
use/rescue: use/stage2 sub/stage2/rescue
|
||||
@$(call add,FEATURES,rescue)
|
||||
@$(call add_feature)
|
||||
@$(call add,RESCUE_LISTS,$(call tags,base && (rescue || network)))
|
||||
@$(call add,RESCUE_LISTS,$(call tags,extra network))
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# "1" is not a typo
|
||||
use/stage2: sub/stage1
|
||||
@$(call add,FEATURES,stage2)
|
||||
@$(call add_feature)
|
||||
@$(call add,STAGE1_PACKAGES,file make-initrd make-initrd-propagator)
|
||||
|
||||
# NB: sub/stage2 isn't used standalone but rather
|
||||
|
6
features.in/syslinux/cfg.in/20netinstall2.cfg
Normal file
6
features.in/syslinux/cfg.in/20netinstall2.cfg
Normal file
@@ -0,0 +1,6 @@
|
||||
label linux
|
||||
menu label Install server-ovz via internet
|
||||
kernel alt0/vmlinuz
|
||||
append initrd=alt0/full.cz ramdisk_size=131072 vga=0x314 quiet=1 showopts automatic=method:http,network:dhcp,server:ftp.linux.kiev.ua,directory:/pub/Linux/ALT/people/mike/iso/mkimage-profiles/netinst/server-ovz/x86_64
|
||||
### ramdisk_size=@altinst_size@
|
||||
### $(IMAGE_NAME)
|
@@ -1,6 +1,6 @@
|
||||
# default is plain text prompt
|
||||
use/syslinux: sub/stage1
|
||||
@$(call add,FEATURES,syslinux)
|
||||
@$(call add_feature)
|
||||
@$(call add,STAGE1_PACKAGES,syslinux)
|
||||
|
||||
# UI is overwritten
|
||||
|
3
features.in/systemd/README
Normal file
3
features.in/systemd/README
Normal file
@@ -0,0 +1,3 @@
|
||||
Эта фича заменяет в базовой системе sysvinit на systemd;
|
||||
в настоящее время является экспериментальной, читайте
|
||||
http://www.altlinux.org/systemd
|
4
features.in/systemd/config.mk
Normal file
4
features.in/systemd/config.mk
Normal file
@@ -0,0 +1,4 @@
|
||||
use/systemd:
|
||||
@$(call add_feature)
|
||||
@$(call add,COMMON_PACKAGES,systemd systemd-units systemd-sysvinit)
|
||||
@$(call add,COMMON_PACKAGES,installer-feature-systemd-stage3)
|
4
features.in/systemd/stage2/image-scripts.d/50-fstab
Executable file
4
features.in/systemd/stage2/image-scripts.d/50-fstab
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh -efu
|
||||
# aufs2 root is rw in reality
|
||||
|
||||
echo "/dev/root / auto defaults 0 0" >>/etc/fstab
|
@@ -4,10 +4,23 @@ GLOBAL_BUILDDIR ?= $(shell pwd)
|
||||
CURRENT_LINK := mkimage-profiles
|
||||
OUT_LINK := out
|
||||
|
||||
# there were mkimage fixes induced by mkimage-profile development
|
||||
MKI_VER_MINIMAL = 0.1.7
|
||||
MKI_VER_OPTIMAL = 0.2.0
|
||||
|
||||
include distcfg.mk
|
||||
include functions.mk
|
||||
include $(MKIMAGE_PREFIX)/config.mk
|
||||
|
||||
ifeq (-,$(shell rpmvercmp $(MKI_VERSION) $(MKI_VER_MINIMAL) | tr -d [0-9]))
|
||||
$(info error: mkimage-$(MKI_VERSION) is too old, please upgrade)
|
||||
$(error mkimage is too old, $(MKI_VER_MINIMAL) is minimal supported version)
|
||||
endif
|
||||
ifeq (-,$(shell rpmvercmp $(MKI_VERSION) $(MKI_VER_OPTIMAL) | tr -d [0-9]))
|
||||
$(info warning: mkimage-$(MKI_VERSION) is suboptimal, consider upgrading)
|
||||
$(warning consider upgrading mkimage to $(MKI_VER_OPTIMAL) or better)
|
||||
endif
|
||||
|
||||
# reconstruct instead of passing yet another variable
|
||||
IMAGE_LINK := $(IMAGE_NAME).$(IMAGE_TYPE)
|
||||
IMAGE_OUTFILE := $(IMAGE_NAME)-$(DATE)-$(ARCH).$(IMAGE_TYPE)
|
||||
@@ -27,12 +40,14 @@ include $(MKIMAGE_PREFIX)/targets.mk
|
||||
|
||||
# specified only for the final image (target-specific)
|
||||
pack-image: OUTDIR = $(IMAGEDIR)
|
||||
pack-image: $(IMAGEDIR)
|
||||
pack-image: imagedir
|
||||
|
||||
$(IMAGEDIR):
|
||||
.PHONY: imagedir postprocess debug
|
||||
|
||||
imagedir:
|
||||
@mkdir -p "$(IMAGEDIR)"
|
||||
|
||||
postprocess:
|
||||
postprocess: $(addprefix postprocess-,$(POSTPROCESS_TARGETS))
|
||||
@OUTPATH="$(IMAGEDIR)/$(IMAGE_OUTFILE)"; \
|
||||
echo "** image: $$OUTPATH" >&2 && \
|
||||
ln -sf "$(IMAGE_OUTFILE)" "$(IMAGEDIR)/$(IMAGE_LINK)" && \
|
||||
|
@@ -7,11 +7,12 @@
|
||||
Соответственно для сборки требуется или features.in/build-distro,
|
||||
или use/build-ve.
|
||||
|
||||
Пакетная база рабочего чрута минимальна; apt-utils включены
|
||||
ради genbasedir, который после завершения первоначального
|
||||
наполнения субпрофилей может переехать в ../sub.in/main/ (TODO).
|
||||
Пакетная база рабочего чрута минимальна (может чуть расширяться
|
||||
фичами -- см. ../features.in/repo/lib/build-genbasedir.mk
|
||||
в качестве примера).
|
||||
|
||||
Если требуется какая-либо иная обработка чрута, следует
|
||||
предпочитать scripts.d/.
|
||||
предпочитать scripts.d/ -- для универсальной обработки
|
||||
скрипт можно добавить здесь, для специфичной -- в фичу.
|
||||
|
||||
Результат -- готовый образ в $(IMAGEDIR)/.
|
||||
|
10
lib/build.mk
10
lib/build.mk
@@ -1,4 +1,6 @@
|
||||
# step 4 is kicked off here but actually done by image.in/Makefile
|
||||
ANSI_OK ?= 1;32
|
||||
ANSI_FAIL ?= 1;31
|
||||
|
||||
ifndef MKIMAGE_PROFILES
|
||||
$(error this makefile is designed to be included in toplevel one)
|
||||
@@ -25,6 +27,7 @@ IMAGEDIR ?= $(shell [ -d "$$HOME/out" -a -w "$$HOME/out" ] \
|
||||
&& echo "$$HOME/out" \
|
||||
|| echo "$(BUILDDIR)/out" )
|
||||
|
||||
# poehali
|
||||
build: profile/populate
|
||||
@echo -n "$(TIME) starting image build"
|
||||
@if [ -n "$(DEBUG)" ]; then \
|
||||
@@ -39,13 +42,16 @@ build: profile/populate
|
||||
@if $(START) $(MAKE) -C $(BUILDDIR)/ $(LOG); then \
|
||||
echo "$(TIME) done (`tail -1 $(BUILDLOG) | cut -f1 -d.`)"; \
|
||||
tail -200 "$(BUILDLOG)" \
|
||||
| grep --color=always '^\*\* image: .*' $(SHORTEN) ||:; \
|
||||
| GREP_COLOR="$(ANSI_OK)" \
|
||||
grep --color=always '^\*\* image: .*' $(SHORTEN) ||:; \
|
||||
else \
|
||||
echo "$(TIME) failed, see log: $(BUILDLOG)" $(SHORTEN); \
|
||||
if [ -z "$(DEBUG)" ]; then \
|
||||
echo "$(TIME) (you might want to re-run with DEBUG=1)"; \
|
||||
fi; \
|
||||
tail -200 "$(BUILDLOG)" | egrep "^(E:|[Ee]rror|[Ww]arning).*"; \
|
||||
tail -200 "$(BUILDLOG)" \
|
||||
| GREP_COLOR="$(ANSI_FAIL)" \
|
||||
egrep --color=always "^(E:|[Ee]rror|[Ww]arning).*"; \
|
||||
df -P $(BUILDDIR) | awk 'END { if ($$4 < $(LOWSPACE)) \
|
||||
{ print "NB: low space on "$$6" ("$$5" used)"}}'; \
|
||||
fi
|
||||
|
@@ -5,6 +5,10 @@
|
||||
|
||||
# tmpfs-sparing extra rule: cleanup workdir after completing each stage
|
||||
# (as packed results are saved this only lowers RAM pressure)
|
||||
# NB: it's useful enough to be enabled by default in DEBUG abscence
|
||||
ifndef DEBUG
|
||||
CLEAN ?= 1
|
||||
endif
|
||||
ifdef CLEAN
|
||||
export GLOBAL_CLEAN_WORKDIR = clean-current
|
||||
ifdef DEBUG
|
||||
|
@@ -42,6 +42,9 @@ define log_body
|
||||
grep -q '^# $@$$' "$(CONFIG)" || printf '# %s\n' '$@' >> "$(CONFIG)"; }
|
||||
endef
|
||||
|
||||
# in a use/feature/particularly target, we need a "feature" bit
|
||||
add_feature = $(call add,FEATURES,$(word 2,$(subst /, ,$@)))
|
||||
|
||||
# convert tag list into a list of relative package list paths
|
||||
# NB: tags can do boolean expressions: (tag1 && !(tag2 || tag3))
|
||||
tags = $(and $(strip $(1)),$(addprefix tagged/,$(shell echo "$(1)" | bin/tags2lists pkg.in/lists/tagged)))
|
||||
|
@@ -5,5 +5,6 @@ sfdisk
|
||||
mdadm
|
||||
|
||||
openssh-server
|
||||
openssh-clients
|
||||
openssh-blacklist
|
||||
acpid
|
||||
|
@@ -18,6 +18,7 @@ xorg-drv-vesa
|
||||
xorg-drv-video
|
||||
xorg-drv-void
|
||||
xorg-drv-wacom
|
||||
xorg-drv-wizardpen
|
||||
xorg-drv-qxl
|
||||
|
||||
# for those who need these
|
||||
|
@@ -1,7 +1,7 @@
|
||||
Этот каталог содержит субпрофиль main, собирающий пакетную базу
|
||||
для локальной инсталяции дистрибутива из полученного образа,
|
||||
включая необязательные пакеты; в live-builder применяется как
|
||||
локальный репозиторий для сборки.
|
||||
включая необязательные пакеты; в distro/live-builder применяется
|
||||
как локальный репозиторий для сборки.
|
||||
|
||||
Подбирает:
|
||||
- SYSTEM_PACKAGES, COMMON_PACKAGES, BASE_PACKAGES, BASE_LISTS:
|
||||
@@ -11,4 +11,7 @@
|
||||
В image-scripts.d/* смысла нет, только scripts.d/* --
|
||||
рабочий чрут не содержит исполняемых файлов.
|
||||
|
||||
Не следует использовать этот субпрофиль напрямую, для добавления
|
||||
пакетного репозитория в образ предназначена фича repo/main.
|
||||
|
||||
Результат -- каталог ALTLinux/RPMS.main для копирования в образ.
|
||||
|
@@ -18,3 +18,7 @@ STAGE1_KMODULES_REGEXP -- будет подмножество модулей
|
||||
(в силу зависимости stage2 от stage1).
|
||||
|
||||
Результат -- каталог syslinux/ для копирования в образ.
|
||||
|
||||
TODO (3.2+): "The network drivers directory (drivers/net)
|
||||
has been massively rearranged with most drivers moved into
|
||||
media-specific or protocol-specific subdirectories."
|
||||
|
@@ -255,3 +255,5 @@ scsi_mod.ko
|
||||
sd_mod.ko
|
||||
serio_raw.ko
|
||||
sr_mod.ko
|
||||
sdhci.ko
|
||||
sdhci_pci.ko
|
||||
|
Reference in New Issue
Block a user