Compare commits

..

4 Commits

Author SHA1 Message Date
Michael Shigorin
71c4404c4e 0.6.2.1-alt0.M60T.1
- altlinux-t6-server-ovz
2014-03-24 16:35:23 +04:00
Michael Shigorin
ed2d904ef0 install2: added branding-*-notes
Fix "License file not found" at the second step.
2014-03-24 15:58:25 +04:00
Michael Shigorin
b356d98baa t6.mk: barebones name proxy
Just like p7.mk in 1.1.x/1.0.x, this file is a kludge
serving to "rename" a particular image.
2014-03-24 15:41:22 +04:00
Michael Shigorin
33e6100d02 server.mk: more complete installer to server-ovz
It's not about "desktop vs server" but about installer-steps
included; hiddenman@ badly needs network and users setup,
those have been dropped from installer-distro-altlinux-generic
to trim testing cycles and -desktop has those.
2014-03-24 15:41:22 +04:00
185 changed files with 512 additions and 2295 deletions

View File

@@ -1,6 +1,6 @@
Name: mkimage-profiles Name: mkimage-profiles
Version: 0.8.0 Version: 0.6.2.1
Release: alt1 Release: alt0.M60T.1
Summary: ALT Linux based distribution metaprofile Summary: ALT Linux based distribution metaprofile
License: GPLv2+ License: GPLv2+
@@ -61,50 +61,8 @@ cp -a * %buildroot%mpdir
%doc README QUICKSTART %doc README QUICKSTART
%changelog %changelog
* Mon Aug 13 2012 Michael Shigorin <mike@altlinux.org> 0.8.0-alt1 * Mon Mar 24 2014 Michael Shigorin <mike@altlinux.org> 0.6.2.1-alt0.M60T.1
- stage2@live - altlinux-t6-server-ovz
* Mon Aug 06 2012 Michael Shigorin <mike@altlinux.org> 0.7.6-alt1
- minor improvements
* Mon Jul 30 2012 Michael Shigorin <mike@altlinux.org> 0.7.5-alt1
- a bunch of fixups and cleanups
* Mon Jul 16 2012 Michael Shigorin <mike@altlinux.org> 0.7.4-alt1
- ppc builds
* Mon Jul 09 2012 Michael Shigorin <mike@altlinux.org> 0.7.3-alt1
- arm builds
* Mon Jul 02 2012 Michael Shigorin <mike@altlinux.org> 0.7.2-alt1
- simply fixes
* Mon Jun 25 2012 Michael Shigorin <mike@altlinux.org> 0.7.1-alt1
- vm improvements and assorted tweaks/fixes
* Mon Jun 18 2012 Michael Shigorin <mike@altlinux.org> 0.7.0-alt1
- new features:
+ initial build-vm
+ plymouth
* Mon May 28 2012 Michael Shigorin <mike@altlinux.org> 0.6.8-alt1
- minor bugfixes
* Mon May 21 2012 Michael Shigorin <mike@altlinux.org> 0.6.7-alt1
- docs updates
* Mon May 14 2012 Michael Shigorin <mike@altlinux.org> 0.6.6-alt1
- build helpers refactored
- initial frontend support
* Mon May 07 2012 Michael Shigorin <mike@altlinux.org> 0.6.5-alt1
- branding feature
* Mon Apr 23 2012 Michael Shigorin <mike@altlinux.org> 0.6.4-alt1
- simply better (tm)
* Mon Apr 09 2012 Michael Shigorin <mike@altlinux.org> 0.6.3-alt1
- massive squashfs tuning
* Mon Apr 02 2012 Michael Shigorin <mike@altlinux.org> 0.6.2-alt1 * Mon Apr 02 2012 Michael Shigorin <mike@altlinux.org> 0.6.2-alt1
- better live-webkiosk and initial live-flightgear - better live-webkiosk and initial live-flightgear

View File

@@ -0,0 +1,6 @@
object 5347d342cca7ad1c23b866a81a70735b7b59616f
type commit
tag v0.6.2
tagger Michael Shigorin <mike@altlinux.org> 1333380199 +0300
webkiosk

View File

@@ -1,6 +0,0 @@
object 55fda1a044b132323a5b7fbbf109d0dbd9ea69fc
type commit
tag v0.7.6
tagger Michael Shigorin <mike@altlinux.org> 1344283455 +0400
improvements

View File

@@ -1 +1 @@
8c1ac8f38121c21dfeb04a0c38fa9b95bb7d1f32 v0.7.6 5b441e948d3bca3360d062ec7a36cdfa348f67f7 v0.6.2

View File

@@ -2,47 +2,34 @@
# iterate over multiple goals/arches, # iterate over multiple goals/arches,
# collect proceedings # collect proceedings
# preferences
-include $(HOME)/.mkimage/profiles.mk
# for immediate assignment # for immediate assignment
ifndef ARCHES ifndef ARCHES
ifdef ARCH ifdef ARCH
ARCHES := $(ARCH) ARCHES := $(ARCH)
else else
ARCHES := $(shell arch | sed 's/i686/i586/; s/armv.*/arm/; s/ppc.*/ppc/') ARCHES := $(shell arch | sed 's/i686/i586/')
endif endif
endif endif
export ARCHES export ARCHES
export PATH := $(CURDIR)/bin:$(PATH)
# supervise target tracing; leave stderr alone # supervise target tracing; leave stderr alone
ifdef REPORT ifdef REPORT
export REPORT_PATH := $(shell mktemp --tmpdir mkimage-profiles.report.XXXXXXX) export REPORT_PATH := $(shell mktemp --tmpdir mkimage-profiles.report.XXXXXXX)
POSTPROC := | report-filter > $(REPORT_PATH) POSTPROC := | bin/report-filter > $(REPORT_PATH)
endif endif
# recursive make considered useful for m-p # recursive make considered useful for m-p
MAKE += -r --no-print-directory MAKE += -r --no-print-directory
DIRECT_TARGETS := help help/distro help/ve help/vm clean distclean check .PHONY: clean distclean help
.PHONY: $(DIRECT_TARGETS) clean distclean help:
$(DIRECT_TARGETS):
@$(MAKE) -f main.mk $@ @$(MAKE) -f main.mk $@
export NUM_TARGETS := $(words $(MAKECMDGOALS)) export NUM_TARGETS := $(words $(MAKECMDGOALS))
# for pipefail
SHELL = /bin/bash
# don't even consider remaking a configuration file
.PHONY: $(HOME)/.mkimage/profiles.mk
# real targets need real work # real targets need real work
%: %:
@n=1; \ @n=1; \
set -o pipefail; \
say() { echo "$$@" >&2; }; \ say() { echo "$$@" >&2; }; \
if [ "$(NUM_TARGETS)" -gt 1 ]; then \ if [ "$(NUM_TARGETS)" -gt 1 ]; then \
n="`echo $(MAKECMDGOALS) \ n="`echo $(MAKECMDGOALS) \
@@ -53,11 +40,8 @@ SHELL = /bin/bash
fi; \ fi; \
for ARCH in $(ARCHES); do \ for ARCH in $(ARCHES); do \
if [ "$$ARCH" != "$(firstword $(ARCHES))" ]; then say; fi; \ if [ "$$ARCH" != "$(firstword $(ARCHES))" ]; then say; fi; \
say "** ARCH: $$ARCH"; \ say "** ARCH: $$ARCH" >&2; \
if $(MAKE) -f main.mk ARCH=$$ARCH $@ $(POSTPROC); then \ $(MAKE) -f main.mk ARCH=$$ARCH $@ $(POSTPROC); \
if [ -n "$$REPORT" ]; then \ $(MAKE) -f reports.mk ARCH=$$ARCH; \
$(MAKE) -f reports.mk ARCH=$$ARCH; \
fi; \
fi; \
done; \ done; \
if [ "$$n" -lt "$(NUM_TARGETS)" ]; then say; fi if [ "$$n" -lt "$(NUM_TARGETS)" ]; then say; fi

View File

@@ -1,6 +1,3 @@
English quickstart: make syslinux.iso (after setting up
http://en.altlinux.org/Hasher; large tmpfs helps a lot).
требуется требуется
~~~~~~~~~ ~~~~~~~~~
- ALT Linux 6.0 или выше (возможна адаптация "вниз") - ALT Linux 6.0 или выше (возможна адаптация "вниз")
@@ -21,17 +18,17 @@ http://en.altlinux.org/Hasher; large tmpfs helps a lot).
# apt-get install mkimage hasher git-core # apt-get install mkimage hasher git-core
# hasher-useradd USER # hasher-useradd USER
- от имени указанного пользователя (после повторного входа): - от имени пользователя (после повторного входа):
$ git config --global user.email "my@email" $ git config --global user.email "my@email"
$ git config --global user.name "My Name" $ git config --global user.name "My Name"
$ mkdir ~/out $ mkdir ~/out
- тестовая сборка (см. тж. lib/distro.mk, doc/params.txt): - тестовая сборка (см. тж. lib/distro.mk, doc/variables.txt):
$ make syslinux.iso $ make distro/icewm.iso
ссылки ссылки
~~~~~~ ~~~~~~
- http://www.altlinux.org/tmpfs - http://www.altlinux.org/tmpfs
- http://www.altlinux.org/hasher - http://www.altlinux.org/hasher
- http://www.altlinux.org/mkimage - http://www.altlinux.org/mkimage
- http://www.altlinux.org/m-p - http://www.altlinux.org/Mkimage/Profiles/m-p

21
README
View File

@@ -1,11 +1,15 @@
Welcome to mkimage-profiles! Welcome to mkimage-profiles!
English quickstart: make server-mini.iso;
see http://en.altlinux.org/Hasher (and a large tmpfs).
Configurables: ~/.mkimage/profiles.mk; Configurables: ~/.mkimage/profiles.mk;
see doc/params.txt and conf.d/README see doc/variables.txt and conf.d/README
License: GPLv2+, see COPYING License: GPLv2+, see COPYING
Most docs are in Russian, welcome to learn it or ask for English. Most docs are in Russian, welcome to learn it or ask for English.
См. тж. http://www.altlinux.org/Mkimage/Profiles/m-p
Задача: Задача:
- конфигурирование и создание образов на базе ALT Linux - конфигурирование и создание образов на базе ALT Linux
@@ -28,8 +32,8 @@ Most docs are in Russian, welcome to learn it or ask for English.
- сборка образа - сборка образа
Объекты: Объекты:
- дистрибутивы и виртуальные среды/машины: - дистрибутивы и виртуальные окружения:
+ описываются в conf.d/*.mk или соответственно lib/{distro,ve,vm}.mk + описываются в conf.d/*.mk или соответственно lib/{distro,ve}.mk
+ могут основываться на предшественниках, расширяя их + могут основываться на предшественниках, расширяя их
+ дистрибутивы также: + дистрибутивы также:
- включают один или более субпрофилей по надобности - включают один или более субпрофилей по надобности
@@ -39,7 +43,7 @@ Most docs are in Russian, welcome to learn it or ask for English.
+ базовые комплекты помещены в подкаталогах под sub.in/; + базовые комплекты помещены в подкаталогах под sub.in/;
их наборы скриптов могут расширяться фичами их наборы скриптов могут расширяться фичами
- фичи: - фичи:
+ накопительный список собирается в $(FEATURES) + список собирается в $(FEATURES)
+ законченные блоки функциональности (или наборы таковых) + законченные блоки функциональности (или наборы таковых)
+ описываются в индивидуальных features.in/*/config.mk + описываются в индивидуальных features.in/*/config.mk
+ могут требовать другие фичи, а также субпрофили + могут требовать другие фичи, а также субпрофили
@@ -54,11 +58,4 @@ Most docs are in Russian, welcome to learn it or ask for English.
+ указанный явно, + указанный явно,
+ либо ~/out/ (если возможно), + либо ~/out/ (если возможно),
+ или $(BUILDDIR)/out/ иначе + или $(BUILDDIR)/out/ иначе
- формируются отчёты, если запрошены (REPORT) - формируются отчёты, если запрошены (REPORTS)
См. тж.:
- http://altlinux.org/m-p
- doc/:
+ params.txt: переменные, указываемые при запуске сборки
+ pkglists.txt: формирование состава образа
+ features.txt: обзор подключаемых особенностей

View File

@@ -12,7 +12,7 @@ try_source() { [ -f "$1" ] && . "$1"; }
# hasher accepted ones # hasher accepted ones
get_prefices() get_prefices()
{ {
try_source /etc/hasher-priv/system || exit 1 try_source /etc/hasher-priv/system
try_source `/usr/libexec/hasher-priv/getconf.sh` try_source `/usr/libexec/hasher-priv/getconf.sh`
echo "$prefix" | tr ':' '\n' | while read i; do realpath "$i"; done echo "$prefix" | tr ':' '\n' | while read i; do realpath "$i"; done
} }
@@ -43,7 +43,7 @@ choose_tmpdir() {
for i in "$@"; do for i in "$@"; do
[ -d "$i" -a -w "$i" ] || continue [ -d "$i" -a -w "$i" ] || continue
echo -n "$i " echo -n "$i "
df -PT "$i" | tail -1 df -Tl "$i" | tail -1
done \ done \
| sort -unk6 \ | sort -unk6 \
| while read dir dev fstype size used free percent mnt; do | while read dir dev fstype size used free percent mnt; do
@@ -61,19 +61,19 @@ choose_tmpdir() {
# bringing it all together # bringing it all together
TMPDIRS="`contemplate_dirs $DIRS`" TMPDIRS="`contemplate_dirs $DIRS`"
if [ -z "$TMPDIRS" ]; then if [ -z "$TMPDIRS" ]; then
echo "error: no suitable directories found;" echo "error: no suitable directories found;" >&2
echo "please check QUICKSTART, filesystem and hasher setup" echo "please check docs, filesystem and hasher setup" >&2
echo "(mount enough tmpfs into /tmp or fix hasher-priv prefix?)" echo "(mount enough tmpfs into /tmp or fix hasher-priv prefix?)" >&2
exit 1 exit 1
fi >&2 fi
TEMP="`choose_tmpdir $TMPDIRS`" TEMP="`choose_tmpdir $TMPDIRS`"
if [ -z "$TEMP" ]; then if [ -z "$TEMP" ]; then
echo "error: no suitable directories found;" echo "error: no suitable directories found;" >&2
echo "please check hasher docs and filesystem setup" echo "please check hasher docs and filesystem setup" >&2
echo "(nodev and/or noexec on an otherwise suitable filesystem?)" echo "(nodev and/or noexec on an otherwise suitable filesystem?)" >&2
exit 1 exit 1
fi >&2 fi
DIR="$TEMP/`dirname "$1"`" DIR="$TEMP/`dirname "$1"`"
NAME="`basename "${1:-tmpdir}"`" NAME="`basename "${1:-tmpdir}"`"

View File

@@ -1,21 +0,0 @@
#!/bin/sh
# commit the directory ($1) with a message ($2) to git
. shell-error
[ -d "$1" ] || fatal "$1 is not an existing directory"
if type -t git >&/dev/null && pushd "$1" >/dev/null; then
if [ -z "$(git config --global user.name)" ]; then
exit 0
fi
if [ ! -d .git ]; then
git init -q || fatal "git init failed"
fi
if [ -n "$(git status -s)" ]; then
git add . \
&& git commit -qam "$2" \
|| fatal "git add/commit failed"
fi
popd >/dev/null
fi

View File

@@ -1,11 +0,0 @@
#!/bin/sh
# report on git repo in the current directory
if type -t git >&/dev/null; then
if pushd "$1" >/dev/null && [ -d .git ]; then
git show-ref --head -ds -- HEAD
git status -s
echo
popd >/dev/null
fi
fi

View File

@@ -1,131 +0,0 @@
#!/bin/bash -e
. shell-error
if [ $# -lt 2 ]; then
fatal "error: tar2vm needs at least two arguments"
fi
# this needs env_keep sudo setup to actually work
if [ -n "$GLOBAL_BUILDDIR" ]; then
WORKDIR="$GLOBAL_BUILDDIR/vmroot"
else
WORKDIR="$(mktemp --tmpdir -d vmroot-XXXXX)"
fi
[ -n "$WORKDIR" ] || fatal "couldn't come up with suitable WORKDIR"
[ -n "$GLOBAL_DEBUG" ] || message "WORKDIR: $WORKDIR"
# a tarball containing chroot with a kernel
TAR="$1"
[ -s "$TAR" ] || fatal "source tarball doesn't really exist"
# a path to the image to be generated
IMG="$2"
[ -d "$(dirname "$IMG")" ] || fatal "target directory doesn't exist"
# image size in bytes (256M is a fallback)
TARSIZE="$(stat -Lc %s "$TAR")"
DEFSIZE="$((3 * $TARSIZE / 2))"
DISKSIZE="${3:-${DEFSIZE:-268435456}}"
# ...and in megabytes
DISKSIZEM="$(($DISKSIZE / 1048576))"
# tested to work: ext[234], jfs
ROOTFSTYPE="${4:-ext4}"
# single root partition hardwired so far,
# add another image for swap if needed
ROOTDEV="/dev/sda1"
# last preparations...
for i in losetup parted kpartx mkfs."$ROOTFSTYPE"; do
if ! type -t "$i" >&/dev/null; then
fatal "$i required but not found"
fi
done
LOOPDEV="$(losetup --find)"
ROOTFS="$WORKDIR/chroot"
exit_handler()
{
rc=$?
if [ -n "$ROOTFS" ]; then
umount "$ROOTFS"{/dev,/proc,/sys,}
if [ -n "$LOOPDEV" ]; then
kpartx -d "$LOOPDEV"
losetup --detach "$LOOPDEV"
fi
rm -r -- "$ROOTFS"
rmdir -- "$WORKDIR"
fi
exit $rc
}
trap exit_handler EXIT
# prepare disk image and a filesystem inside it
rm -f -- "$IMG"
dd if=/dev/zero of="$IMG" conv=notrunc \
bs=1 count=1 seek="$(($DISKSIZE - 1))"
losetup "$LOOPDEV" "$IMG"
parted --script "$LOOPDEV" mklabel msdos
parted --script "$LOOPDEV" mkpart primary ext2 1 "$DISKSIZEM"
kpartx -a "$LOOPDEV"
LOOPDEV1="/dev/mapper/$(basename "$LOOPDEV")p1"
mkfs."$ROOTFSTYPE" "$LOOPDEV1"
# mount and populate it
mkdir -pm755 "$ROOTFS"
mount "$LOOPDEV1" "$ROOTFS"
tar -C "$ROOTFS" --numeric-owner -xf "$TAR"
for i in /dev /proc /sys; do mount --bind "$i" "$ROOTFS$i"; done
# NB: different storage modules might be needed for non-kvm
echo "$LOOPDEV1 / $ROOTFSTYPE defaults 1 1" >> "$ROOTFS/etc/fstab"
echo "MODULES_PRELOAD=sd_mod ata_piix $ROOTFSTYPE" >> "$ROOTFS/etc/initrd.mk"
KERNEL="$(readlink $ROOTFS/boot/vmlinuz | sed 's,vmlinuz-,,')"
chroot "$ROOTFS" make-initrd -k "$KERNEL"
sed -i "s,$LOOPDEV1,$ROOTDEV," "$ROOTFS/etc/fstab"
# configure and install bootloader
REGEXP='^([0-9]+) heads, ([0-9]+) sectors/track, ([0-9]+) cylinders.*$'
set -- $(fdisk -l "$LOOPDEV" | grep -E "$REGEXP" | sed -r "s@$REGEXP@\1 \2 \3@")
LILO_COMMON="lba32
delay=1
vga=0
image=/boot/vmlinuz
initrd=/boot/initrd.img
append=\"root=$ROOTDEV rootdelay=3\"
label=linux"
cat > "$ROOTFS"/etc/lilo-loop.conf << EOF
boot=$LOOPDEV
disk=$LOOPDEV
bios=0x80
heads=$1
sectors=$2
cylinders=$3
partition=$LOOPDEV1
start=63
$LILO_COMMON
EOF
chroot "$ROOTFS" lilo -C /etc/lilo-loop.conf
cat > "$ROOTFS"/etc/lilo.conf << EOF
boot=${ROOTDEV%[0-9]*}
$LILO_COMMON
EOF
if [ -n "$SUDO_USER" ]; then
chown "$SUDO_USER" "$IMG" "$ROOTFS" "$WORKDIR"
fi

View File

@@ -10,49 +10,25 @@
Попросту говоря, copy-paste -- тревожный признак. Попросту говоря, copy-paste -- тревожный признак.
По переменным (см. тж. ../doc/pkglists.txt): По переменным:
- для пользовательского окружения (live, main) предназначены
THE_PACKAGES, THE_LISTS, THE_GROUPS, THE_PACKAGES_REGEXP
- для "обычного общего" (live, main, rescue) есть COMMON_PACKAGES
(NB: тоже попадают в базовую установку)
- SYSTEM_PACKAGES стоит применять крайне осторожно -- эти пакеты попадут - SYSTEM_PACKAGES стоит применять крайне осторожно -- эти пакеты попадут
во все стадии, в том числе в образ чувствительной к объёму install2 во все стадии, в том числе в образ чувствительной к объёму install2
(в stage1 -- только в инструментальный чрут); применяйте для того, (в stage1 -- только в инструментальный чрут); применяйте для того,
что обязано быть и в инсталяторе, и в готовой системе что обязано быть и в инсталяторе, и в готовой системе
- для "обычного общего" (live, main, rescue) есть COMMON_PACKAGES
- для направленного действия служат: (NB: попадают в базовую систему)
+ STAGE1_PACKAGES, STAGE1_PACKAGES_REGEXP (первая стадия загрузки) - для "пользовательского" (live, main) есть THE_GROUPS, THE_LISTS
+ STAGE2_PACKAGES (инсталятор и спасательная/"живая" система) и THE_PACKAGES
+ INSTALL2_PACKAGES (инсталятор)
+ BASE_PACKAGES, BASE_LISTS, BASE_PACKAGES_REGEXP (базовая система)
+ MAIN_PACKAGES, MAIN_LISTS, MAIN_PACKAGES_REGEXP (дополнительные пакеты)
+ LIVE_PACKAGES, LIVE_LISTS, LIVE_PACKAGES_REGEXP ("живая" система)
- аналогично по модулям ядра: - аналогично по модулям ядра:
+ THE_KMODULES попадут в "пользовательскую" среду (live, main)
+ STAGE1_KMODULES доступны в производных от stage2 (install2, live, rescue) + STAGE1_KMODULES доступны в производных от stage2 (install2, live, rescue)
+ BASE_KMODULES попадут в установку по умолчанию + BASE_KMODULES попадут в установку по умолчанию
+ MAIN_KMODULES будут доступны для установки с носителя + MAIN_KMODULES будут доступны для установки с носителя
+ LIVE_KMODULES предназначены для LiveCD/LiveFlash + LIVE_KMODULES предназначены для LiveCD/LiveFlash
+ THE_KMODULES попадут в "пользовательские" окружения
Не стоит бояться такого разнообразия, для большинства задач достаточно THE_*. (live и установленную систему)
По подстановкам: По подстановкам:
- $(VAR) подставляются перед их записью в $(CONFIG), который distcfg.mk - $(VAR) подставляются перед их записью в $(CONFIG), который distcfg.mk
- $$(VAR) раскрываются позже, при включении $(CONFIG) и востребовании - $$(VAR) раскрываются позже, при включении $(CONFIG) и востребовании
значений; в этом случае их значения могут изменяться до окончания значений; в этом случае их значения могут изменяться до окончания
конфигурации, а также зависеть от значений других переменных конфигурации, а также зависеть от значений других переменных
По спискам пакетов:
- на этапе экспериментирования можно забивать прямо в описание образа
- при фиксации состояния стоит воспользоваться существующими списками,
а дополнительные оформить как можно более чётко обособленными по тем
задачам, для решения которых они и подобраны
- повторяющиеся логически связанные группы списков может иметь смысл
выделить в фичу (см., например, power или x11)
- если явной фичи не наблюдается, но у группы дистрибутивов намечается
заметная общая часть -- её можно выделить в промежуточную цель вида
distro/.name, не являющуюся самостоятельно собираемой

6
conf.d/alien.mk Normal file
View File

@@ -0,0 +1,6 @@
ve/.centos-base: ve/.bare
@$(call set,IMAGE_INIT_LIST,hasher-pkg-init)
ve/centos: ve/.centos-base
@$(call add,BASE_PACKAGES,openssh-server)

View File

@@ -6,14 +6,13 @@ distro/.desktop-base: distro/.installer use/syslinux/ui/vesamenu use/x11/xorg
distro/.desktop-mini: distro/.desktop-base use/x11/xdm +power; @: distro/.desktop-mini: distro/.desktop-base use/x11/xdm +power; @:
distro/.desktop-network: distro/.desktop-mini +vmguest distro/.desktop-network: distro/.desktop-mini use/virtualbox/guest
@$(call add,SYSTEM_PACKAGES,fonts-ttf-google-croscore-arimo) @$(call add,BASE_LISTS,$(call tags,(base || desktop) && network))
@$(call add,BASE_LISTS, \
$(call tags,(base || desktop) && (l10n || network)))
distro/icewm: distro/.desktop-network use/lowmem +icewm; @: distro/icewm: distro/.desktop-network use/lowmem +icewm; @:
distro/tde: distro/.desktop-mini +tde; @: distro/tde: distro/.desktop-mini +tde; @:
distro/ltsp-tde: distro/tde +ltsp; @: distro/ltsp-tde: distro/tde +ltsp; @:
distro/ltsp-icewm: distro/icewm +ltsp; @: distro/ltsp-icewm: distro/icewm +ltsp; @:
distro/desktop-systemd: distro/icewm use/systemd; @:
endif endif

View File

@@ -1,39 +1,42 @@
# live images # live images
ifeq (distro,$(IMAGE_CLASS)) ifeq (distro,$(IMAGE_CLASS))
distro/syslinux: distro/.init \
use/syslinux/localboot.cfg use/syslinux/ui/vesamenu use/hdt; @:
distro/dos: distro/.init use/dos use/syslinux/ui/menu; @: distro/dos: distro/.init use/dos use/syslinux/ui/menu; @:
distro/rescue: distro/.base use/rescue use/syslinux/ui/menu; @: distro/rescue: distro/.base use/rescue use/syslinux/ui/menu; @:
distro/live-systemd: distro/.base use/live/base use/systemd; @:
distro/.live-base: distro/.base use/live/base use/power/acpi/button; @: distro/.live-base: distro/.base use/live/base use/power/acpi/button; @:
distro/.live-desktop: distro/.base +live use/plymouth/live; @: distro/.live-desktop: distro/.base +live use/syslinux/ui/vesamenu; @:
distro/.live-kiosk: distro/.base use/live/base use/live/autologin \ distro/.live-kiosk: distro/.base use/live/base use/live/autologin \
use/syslinux/timeout/1 use/cleanup +power use/syslinux/timeout/1 use/cleanup +power
@$(call add,LIVE_PACKAGES,fonts-ttf-dejavu) @$(call add,LIVE_PACKAGES,fonts-ttf-dejavu)
@$(call add,CLEANUP_PACKAGES,'alterator*' 'guile*' 'vim-common') @$(call add,CLEANUP_PACKAGES,'alterator*' 'guile*' 'vim-common')
distro/live-isomd5sum: distro/.base use/live/base use/isomd5sum
@$(call add,LIVE_PACKAGES,livecd-isomd5sum)
distro/live-builder: pkgs := livecd-tmpfs livecd-online-repo mkimage-profiles distro/live-builder: pkgs := livecd-tmpfs livecd-online-repo mkimage-profiles
distro/live-builder: distro/.live-base use/dev/mkimage use/dev/repo \ distro/live-builder: distro/.live-base use/dev/mkimage use/dev/repo
use/syslinux/timeout/30
@$(call set,KFLAVOURS,$(BIGRAM))
@$(call add,LIVE_LISTS,$(call tags,base && (server || builder))) @$(call add,LIVE_LISTS,$(call tags,base && (server || builder)))
@$(call add,LIVE_PACKAGES,livecd-qemu-arch strace)
@$(call add,LIVE_PACKAGES,qemu-user-binfmt_misc)
@$(call add,LIVE_PACKAGES,zsh sudo) @$(call add,LIVE_PACKAGES,zsh sudo)
@$(call add,LIVE_PACKAGES,$(pkgs)) @$(call add,LIVE_PACKAGES,$(pkgs))
@$(call add,MAIN_PACKAGES,$(pkgs)) @$(call add,MAIN_PACKAGES,$(pkgs))
@$(call add,MAIN_PACKAGES,syslinux pciids memtest86+ mkisofs) @$(call add,MAIN_PACKAGES,syslinux pciids memtest86+ mkisofs)
distro/live-install: distro/.live-base use/live/textinstall; @: distro/live-install: distro/.live-base use/syslinux/localboot.cfg
distro/.livecd-install: distro/.live-base use/live/install; @: @$(call add,LIVE_PACKAGES,live-install)
distro/live-icewm: distro/.live-desktop use/live/autologin +icewm; @: distro/live-icewm: distro/.live-desktop use/live/autologin +icewm; @:
distro/live-razorqt: distro/.live-desktop use/live/autologin +razorqt; @: distro/live-razorqt: distro/.live-desktop +razorqt; @:
distro/live-tde: distro/.live-desktop use/live/ru use/live/install +tde; @: distro/live-tde: distro/.live-desktop use/live/ru +tde; @:
distro/live-rescue: distro/live-icewm distro/live-rescue: distro/live-icewm
@$(call add,LIVE_LISTS,$(call tags,rescue && (fs || live || x11))) @$(call add,LIVE_LISTS,$(call tags,rescue && (fs || live || x11)))
@$(call add,LIVE_LISTS,openssh \ @$(call add,LIVE_LISTS, \
$(call tags,(base || extra) && (archive || rescue || network))) $(call tags,(base || extra) && (archive || rescue || network)))
distro/live-webkiosk-mini: distro/.live-kiosk use/live/hooks use/live/ru distro/live-webkiosk-mini: distro/.live-kiosk use/live/hooks use/live/ru
@@ -41,33 +44,10 @@ distro/live-webkiosk-mini: distro/.live-kiosk use/live/hooks use/live/ru
@$(call add,LIVE_PACKAGES,livecd-webkiosk) @$(call add,LIVE_PACKAGES,livecd-webkiosk)
@$(call add,CLEANUP_PACKAGES,'libqt4*' 'qt4*') @$(call add,CLEANUP_PACKAGES,'libqt4*' 'qt4*')
# NB: flash/java plugins are predictable security holes
distro/live-webkiosk-flash: distro/live-webkiosk-mini use/plymouth/live +vmguest
@$(call add,LIVE_PACKAGES,mozilla-plugin-adobe-flash)
@$(call add,LIVE_PACKAGES,mozilla-plugin-java-1.6.0-sun)
@$(call add,LIVE_PACKAGES,alsa-utils udev-alsa)
distro/live-webkiosk: distro/live-webkiosk-mini use/live/desktop; @: distro/live-webkiosk: distro/live-webkiosk-mini use/live/desktop; @:
distro/live-flightgear: distro/live-icewm use/live/sound use/x11/3d-proprietary distro/live-flightgear: distro/live-icewm use/live/sound use/x11/3d-proprietary
@$(call add,LIVE_PACKAGES,FlightGear fgo input-utils) @$(call add,LIVE_PACKAGES,FlightGear fgo)
@$(call try,HOMEPAGE,http://www.4p8.com/eric.brasseur/flight_simulator_tutorial.html) @$(call try,HOMEPAGE,http://www.4p8.com/eric.brasseur/flight_simulator_tutorial.html)
distro/live-cinnamon: distro/.live-desktop use/live/autologin use/live/ru \
use/x11/cinnamon use/x11/3d-proprietary; @:
distro/live-mate: distro/.live-desktop use/live/nodm use/live/ru use/x11/3d-free
@$(call add,LIVE_LISTS,$(call tags,(desktop || mobile) && mate))
distro/live-enlightenment: distro/.live-desktop use/live/autologin \
use/live/ru use/x11/3d-free
@$(call add,LIVE_PACKAGES,enlightenment)
distro/live-gimp: distro/live-icewm use/x11/3d-free use/live/ru
@$(call add,LIVE_PACKAGES,gimp tintii immix fim)
@$(call add,LIVE_PACKAGES,cvltonemap darktable geeqie rawstudio ufraw)
@$(call add,LIVE_PACKAGES,macrofusion python-module-pygtk-libglade)
@$(call add,LIVE_PACKAGES,qtfm openssh-clients rsync)
@$(call add,LIVE_PACKAGES,design-graphics-sisyphus2)
endif endif

View File

@@ -2,26 +2,41 @@
ifeq (distro,$(IMAGE_CLASS)) ifeq (distro,$(IMAGE_CLASS))
distro/.server-base: distro/.installer use/syslinux/ui/menu use/memtest distro/.server-base: distro/.installer use/syslinux/ui/menu use/memtest
@$(call add,BASE_LISTS,server-base openssh) @$(call add,BASE_LISTS,server-base)
distro/server-nano: distro/.server-base \ distro/server-nano: distro/.server-base \
use/cleanup/x11-alterator use/bootloader/lilo +power use/cleanup/x11-alterator use/bootloader/lilo
@$(call add,BASE_LISTS,$(call tags,server network)) @$(call add,BASE_LISTS,$(call tags,server network))
@$(call add,BASE_PACKAGES,dhcpcd cpio) @$(call add,BASE_PACKAGES,dhcpcd cpio)
distro/server-mini: distro/.server-base use/server/mini use/cleanup/x11-alterator distro/server-mini: distro/.server-base use/cleanup/x11-alterator
@$(call set,KFLAVOURS,el-smp) @$(call set,KFLAVOURS,el-smp)
@$(call add,THE_KMODULES,e1000e igb)
@$(call add,STAGE1_KMODULES,e1000e igb)
@$(call add,BASE_LISTS,\
$(call tags,base && (server || network || security || pkg)))
@$(call add,BASE_LISTS,$(call tags,extra (server || network)))
distro/server-ovz: distro/server-mini use/install2/net use/hdt use/rescue \ distro/server-systemd: distro/server-mini use/systemd use/bootloader/lilo; @:
use/firmware/server use/firmware/wireless use/power/acpi/button
distro/server-ovz: distro/server-mini use/install2/net \
use/hdt use/rescue use/firmware/server use/power/acpi/button
@$(call set,INSTALLER,desktop)
@$(call set,STAGE1_KFLAVOUR,std-def) @$(call set,STAGE1_KFLAVOUR,std-def)
@$(call set,KFLAVOURS,std-def ovz-el) @$(call set,KFLAVOURS,std-def ovz-el)
@$(call add,BASE_KMODULES,rtl8168 rtl8192) @$(call add,BASE_KMODULES,rtl8168 rtl8192)
@$(call add,MAIN_KMODULES,bcmwl ndiswrapper)
@$(call add,MAIN_KMODULES,ipset ipt-netflow opendpi pf_ring xtables-addons) @$(call add,MAIN_KMODULES,ipset ipt-netflow opendpi pf_ring xtables-addons)
@$(call add,MAIN_KMODULES,drbd83 kvm) @$(call add,MAIN_KMODULES,drbd83 kvm)
@$(call add,BASE_LISTS,ovz-server) @$(call add,BASE_LISTS,ovz-server)
@$(call add,MAIN_LISTS,kernel-wifi)
@$(call add,MAIN_GROUPS,dns-server http-server ftp-server kvm-server) @$(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,ipmi mysql-server dhcp-server mail-server)
@$(call add,MAIN_GROUPS,monitoring diag-tools) @$(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/syslinux/localboot.cfg use/memtest
@$(call add,SYSLINUX_CFG,netinstall2)
endif endif

View File

@@ -1,11 +0,0 @@
# simply images
ifeq (distro,$(IMAGE_CLASS))
distro/live-simply: distro/.livecd-install use/slinux/full
@$(call add,THE_LISTS,slinux/live-install)
distro/simply: distro/.installer use/slinux/full
@$(call set,INSTALLER,simply-linux)
endif

7
conf.d/t6.mk Normal file
View File

@@ -0,0 +1,7 @@
# t6 base kits
ifeq (distro,$(IMAGE_CLASS))
distro/altlinux-t6-server-ovz: distro/server-ovz; @:
endif

View File

@@ -1,64 +0,0 @@
# debug/test/experimental images
ifneq (,$(DEBUG))
ifeq (distro,$(IMAGE_CLASS))
distro/syslinux: distro/.init \
use/syslinux/localboot.cfg use/syslinux/ui/vesamenu use/hdt; @:
distro/syslinux-auto: distro/.init use/hdt use/syslinux/timeout/1; @:
distro/syslinux-noescape: distro/syslinux-auto use/syslinux/noescape.cfg; @:
distro/live-systemd: distro/.base use/live/base use/systemd; @:
distro/live-plymouth: distro/.live-base use/plymouth/live; @:
distro/live-isomd5sum: distro/.base use/live/base use/isomd5sum
@$(call add,LIVE_PACKAGES,livecd-isomd5sum)
distro/live-testserver: distro/live-install use/server/mini
@$(call set,KFLAVOURS,std-def el-smp)
distro/server-systemd: distro/server-mini use/systemd
@$(call set,KFLAVOURS,std-def)
# 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/syslinux/localboot.cfg use/memtest
@$(call add,SYSLINUX_CFG,netinstall2)
distro/desktop-systemd: distro/icewm use/systemd; @:
distro/desktop-plymouth: distro/icewm +plymouth; @:
endif # IMAGE_CLASS: distro
ifeq (ve,$(IMAGE_CLASS))
ifeq (centos,$(REPO))
ve/.centos-base: ve/.bare
@$(call set,IMAGE_INIT_LIST,hasher-pkg-init)
ve/centos: ve/.centos-base
@$(call add,BASE_PACKAGES,openssh-server)
endif # REPO: centos
ifeq (opensuse,$(REPO))
ve/.opensuse-base: ve/.bare
@$(call set,IMAGE_INIT_LIST,hasher-pkg-init)
@$(call add,BASE_PACKAGES,aaa_base)
endif # REPO: opensuse
endif # IMAGE_CLASS: ve
ifeq (vm,$(IMAGE_CLASS))
vm/net-static: vm/bare use/vm-net/static use/vm-ssh
@$(call set,VM_NET_IPV4ADDR,10.0.2.16/24)
@$(call set,VM_NET_IPV4GW,10.0.2.2)
endif # IMAGE_CLASS: vm
endif

View File

@@ -1,9 +0,0 @@
# virtual machines
ifeq (vm,$(IMAGE_CLASS))
# NB: use/x11 employs some installer-feature packages
vm/icewm: vm/bare use/cleanup/installer use/x11/xdm +icewm; @:
vm/net: vm/bare use/vm-net/dhcp use/vm-ssh; @:
endif

View File

@@ -10,7 +10,7 @@
- build/build.log - build/build.log
+ подробность зависит от значения переменной DEBUG, + подробность зависит от значения переменной DEBUG,
которую можно передать при запуске make (см. params.txt); которую можно передать при запуске make (см. variables.txt);
+ содержит коммит, из которого происходит сборка, и признак + содержит коммит, из которого происходит сборка, и признак
"грязности" рабочего каталога при наличии модификаций после "грязности" рабочего каталога при наличии модификаций после
этого коммита; этого коммита;

View File

@@ -1,9 +1,8 @@
фичи фичи
~~~~ ~~~~
Особенности дистрибутива, не учитываемые в пакетной базе Особенности дистрибутива, не учитываемые в пакетной базе
или зависящие от переменных времени сборки/установки образа; или зависящие от переменных времени сборки/установки образа,
по необходимости влияют на конфигурацию, приносят с собой могут быть оформлены как:
или запрашивают скрипты, которые могут быть оформлены как:
* scripts.d/ или image-scripts.d/ различных стадий; * scripts.d/ или image-scripts.d/ различных стадий;
* пакеты installer-feature-* * пакеты installer-feature-*
@@ -28,12 +27,3 @@
Стоит избегать изменения пакетных умолчаний в случае, когда их Стоит избегать изменения пакетных умолчаний в случае, когда их
представляется осмысленным и возможным скорректировать в пакете: представляется осмысленным и возможным скорректировать в пакете:
таким образом они станут более дистрибутивными. таким образом они станут более дистрибутивными.
Обратите внимание, что фичи включаются в комплект инкрементально:
что добавили, то уже не убрать; поэтому при необходимости следует
выделять промежуточные цели сборки, собирающие необходимые фичи
и оставляющие те, по которым есть расхождения, на включение ближе
к конечной дистрибутивной цели.
Соглашение по именованию таково, что цели use/ФИЧА и use/ФИЧА/...
определяются в файле features.in/ФИЧА/config.mk и только в нём.

View File

@@ -1,50 +0,0 @@
списки пакетов
~~~~~~~~~~~~~~
Состав пакетной базы субпрофилей определяется значенями
следующих переменных профиля (см. тж. ../conf.d/README):
- main: пакетная база для установки
+ sub.in/main/Makefile, features.in/*/main/lib/*.mk
+ THE_LISTS, BASE_LISTS, MAIN_LISTS
+ THE_GROUPS, MAIN_GROUPS
+ THE_PACKAGES, BASE_PACKAGES, MAIN_PACKAGES,
SYSTEM_PACKAGES, COMMON_PACKAGES
+ THE_PACKAGES_REGEXP, BASE_PACKAGES_REGEXP, MAIN_PACKAGES_REGEXP
+ THE_KMODULES, BASE_KMODULES, MAIN_KMODULES, BASE_KMODULES_REGEXP
- KFLAVOURS
- stage2: общая часть installer, live, rescue
+ sub.in/stage2/Makefile, features.in/*/stage2/lib/*.mk
+ SYSTEM_PACKAGES, STAGE2_PACKAGES
+ STAGE1_KMODULES, STAGE1_KMODULES_REGEXP,
STAGE2_KMODULES, STAGE2_KMODULES_REGEXP
- STAGE1_KFLAVOUR или последний из KFLAVOURS
- installer: компактная "живая" система, содержащая только инсталятор
+ см. stage2
+ features.in/install2/install2/stage2cfg.mk,
features.in/*/install2/lib/*.mk
+ INSTALL2_PACKAGES
- live: пользовательский LiveCD (может содержать также инсталятор)
+ см. stage2
+ features.in/live/live/stage2cfg.mk,
features.in/*/live/lib/*.mk
+ THE_LISTS, LIVE_LISTS
+ THE_GROUPS, LIVE_GROUPS
+ THE_PACKAGES, LIVE_PACKAGES, COMMON_PACKAGES
+ THE_PACKAGES_REGEXP, LIVE_PACKAGES_REGEXP
+ THE_KMODULES, LIVE_KMODULES
- rescue: спасательный LiveCD
+ см. stage2
+ features.in/rescue/rescue/stage2cfg.mk
+ RESCUE_PACKAGES, COMMON_PACKAGES
+ RESCUE_LISTS
- stage1: ядро и загрузчик второй стадии
+ sub.in/stage1/Makefile, features.in/*/stage1/lib/*.mk
+ STAGE1_PACKAGES, SYSTEM_PACKAGES
+ STAGE1_PACKAGES_REGEXP
+ STAGE1_KMODULES_REGEXP
- STAGE1_KFLAVOUR или последний из KFLAVOURS

View File

@@ -1,9 +0,0 @@
Для сборки на "неродной" архитектуре с применением трансляции
посредством QEMU установите пакет livecd-qemu-arch и выполните
команду register-qemu-arm от имени root (также предоставляется
register-qemu-ppc, но как минимум при сборке под ppc32 на x86_64
известны проблемы эмуляции).
Пример запуска:
make ARCH=arm APTCONF=/etc/apt/apt.conf.sisyphus.arm ve/bare.tar

View File

@@ -2,7 +2,7 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* постарайтесь не вносить без обсуждения разнобой стилей, * постарайтесь не вносить без обсуждения разнобой стилей,
если есть предметные пожелания по коррекции текущего -- если есть предметные пожелания по коррекции текущего --
пишите в devel-distro@ или мне (mike@), обсудим; пишите в devel-distro@, обсудим;
* перед тем, как делать существенные переработки уже имеющегося * перед тем, как делать существенные переработки уже имеющегося
кода -- опять же опишите проблему, идею и предполагаемый результат, кода -- опять же опишите проблему, идею и предполагаемый результат,

View File

@@ -10,13 +10,13 @@
- ARCH - ARCH
+ задаёт целевую архитектуру образов + задаёт целевую архитектуру образов
+ значение: пусто (по умолчанию авто), i586, x86_64, arm, ppc + значение: пусто (по умолчанию авто), i586 или x86_64
+ см. ../lib/build.mk + см. ../lib/build.mk
- ARCHES - ARCHES
+ задаёт набор целевых архитектур при параметрическом задании APTCONF + задаёт набор целевых архитектур образов
+ значение: пусто (по умолчанию авто) либо список через пробел + значение: пусто (по умолчанию авто) либо список через пробел
+ см. ../Makefile, profiles.mk.sample + см. ../Makefile
- BELL - BELL
+ подаёт сигнал после завершения сборки + подаёт сигнал после завершения сборки
@@ -39,9 +39,9 @@
+ см. ../lib/log.mk + см. ../lib/log.mk
- CHECK - CHECK
+ включает режим проверки сборки конфигурации (без сборки образа) + включает режим проверки сборки конфигурации
+ значение: пусто (по умолчанию) либо любая строка + значение: пусто (по умолчанию) либо любая строка
+ см. ../lib/build.mk, ../lib/clean.mk + см. ../lib/build.mk
- CLEAN - CLEAN
+ экономия RAM+swap при сборке в tmpfs, иначе места на диске + экономия RAM+swap при сборке в tmpfs, иначе места на диске
@@ -51,9 +51,9 @@
+ см. ../lib/clean.mk + см. ../lib/clean.mk
- DEBUG - DEBUG
+ включает средства отладки, может отключить зачистку после сборки + включает средства отладки
+ значение: пусто (по умолчанию), 1 или 2 + значение: пусто (по умолчанию), 1 или 2
+ см. ../lib/log.mk, ../lib/clean.mk + см. ../lib/log.mk
- HOMEPAGE, HOMENAME, HOMEWAIT - HOMEPAGE, HOMENAME, HOMEWAIT
+ указывают адрес, название и таймаут перехода для домашней страницы + указывают адрес, название и таймаут перехода для домашней страницы
@@ -71,41 +71,16 @@
+ см. ../lib/build.mk + см. ../lib/build.mk
- REPORT - REPORT
+ запрашивает создание отчётов о собранном образе + запрашивает создание отчёта о собранном образе
+ значение: пусто (по умолчанию) либо любая строка + значение: пусто (по умолчанию) либо любая строка
+ NB: в силу специфики обработки передаётся только явно + NB: в силу специфики обработки передаётся только явно
+ см. ../Makefile, ../report.mk, ../lib/report.mk + см. ../Makefile, ../report.mk, ../lib/report.mk
- ROOTPW
+ устанавливает пароль root по умолчанию для образов виртуальных машин
+ значение: пусто (по умолчанию root) либо строка
+ см. ../features.in/build-vm/image-scripts.d/00root
- SAVE_PROFILE - SAVE_PROFILE
+ сохраняет архив сгенерированного профиля в .disk/ + сохраняет архив сгенерированного профиля в .disk/
+ значение: пусто (по умолчанию) либо любая строка + значение: пусто (по умолчанию) либо любая строка
+ см. ../image.in/Makefile + см. ../image.in/Makefile
- SORTDIR
+ дополнительно структурирует каталог собранных образов
+ значение: пусто (по умолчанию) либо строка
- например, '$(IMAGE_NAME)/$(DATE)'
+ см. ../image.in/Makefile
- SQUASHFS
+ определяет характер сжатия squashfs для stage2
+ значение:
- пусто (по умолчанию) либо normal: xz
- tight: xz с -Xbcj по платформе (лучше, но дольше -- подбор в два прохода)
- fast: gzip/lzo (быстрее запаковывается и распаковывается, меньше степень)
+ см. ../features.in/stage2/stage1/scripts.d/03-test-kernel
- STATUS
+ добавляет в имя образа указанный префикс
+ значение:
- пусто (по умолчанию) либо строка (например, "alpha", "beta")
+ см. ../image.in/Makefile
пример пример
~~~~~~ ~~~~~~
make DEBUG=1 CLEAN=1 distro/syslinux.iso make DEBUG=1 CLEAN=1 distro/syslinux.iso

View File

@@ -1,27 +0,0 @@
сборка образов виртуальных машин
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ВНИМАНИЕ: заключительная операция создания образа жёсткого диска
из архива с содержимым корневой файловой системы требует доступа
к sudo и разрешения на выполнение скрипта bin/tar2vm в корневом
каталоге метапрофиля при установке mkimage-profiles из пакета
(это в планах исправить, но подход к libguestfs пока успехом
не увенчался).
Соответствующий фрагмент конфигурации sudo(8) может выглядеть как:
mike ALL=NOPASSWD: /usr/share/mkimage-profiles/bin/tar2vm
При работе с локальной копией mkimage-profiles.git следует иметь
в виду, что предоставлять недоверенному пользователю право выполнять
от имени root доступный ему по записи скрипт равнозначно предоставлению
полных привилегий root.
Для работы с более специфичными форматами, чем raw ("буквальный"
образ диска), потребуется утилита qemu-img из одноименного пакета;
см. тж. вывод команды make help/vm
Также потребуется пакет multipath-tools (/sbin/kpartx).
Пример сборки и запуска VM:
$ make ROOTPW=reallysecret1 vm/bare.img && kvm -hda ~/out/bare.img

View File

@@ -25,13 +25,8 @@ define grepper_body
done done
endef endef
%:
$(error BUILDDIR not defined)
else else
export BUILDDIR
include $(BUILDDIR)/distcfg.mk include $(BUILDDIR)/distcfg.mk
# first rsync what's static, and make backups (*~) -- # first rsync what's static, and make backups (*~) --
@@ -65,18 +60,23 @@ $(FEATURES):
fi; \ fi; \
pushd "$$feat" >/dev/null && \ pushd "$$feat" >/dev/null && \
for sub in / $(SUBPROFILES); do \ for sub in / $(SUBPROFILES); do \
dirtags=; \
if [ "$$sub" = / ]; then \ if [ "$$sub" = / ]; then \
parts=lib; \
srcdirs="."; \ srcdirs="."; \
dst="."; \ dst="."; \
else \ else \
src="$${sub%@*}"; \ parts=; \
dst="$${sub#*@}"; \ src="$${sub%/*}"; \
dst="$${sub#*/}"; \
srcdirs=; \ srcdirs=; \
if [ -d "$$src" ]; then \ if [ -d "$$src" ]; then \
srcdirs="$$src"; \ srcdirs="$$src"; \
dirtags="&& $$src"; \
fi; \ fi; \
if [ -d "$$dst" -a "$$dst" != "$$src" ]; then \ if [ -d "$$dst" -a "$$dst" != "$$src" ]; then \
srcdirs="$${srcdirs:+$$srcdirs }$$dst"; \ srcdirs="$$srcdirs $$dst"; \
dirtags="&& ($$src || $$dst)"; \
fi; \ fi; \
for srcdir in $$srcdirs; do \ for srcdir in $$srcdirs; do \
rsync -qab --exclude tagged \ rsync -qab --exclude tagged \
@@ -89,25 +89,45 @@ $(FEATURES):
for srcdir in $$srcdirs; do \ for srcdir in $$srcdirs; do \
[ -d "$$srcdir" ] || continue; \ [ -d "$$srcdir" ] || continue; \
pushd "$$srcdir" >&/dev/null; \ pushd "$$srcdir" >&/dev/null; \
for part in lib {image-,}scripts.d; do \ for part in $$parts {image-,}scripts.d; do \
destdir="$(BUILDDIR)/$$dst/$$part"; \ destdir="$(BUILDDIR)/$$dst/$$part"; \
[ -d "$$destdir" ] || continue; \ [ -d "$$destdir" ] || continue; \
if [ "$$sub" = / -a -d "$$part" ]; then \ if [ "$$sub" = / -a -d "$$part" ]; then \
rsync -qab "$$part/" "$$destdir/"; \ rsync -qab "$$part/" "$$destdir/"; \
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; \ done; \
popd >&/dev/null; \ popd >&/dev/null; \
done; \ done; \
if [ -n "$$dst" ]; then \ if type -t git >&/dev/null && \
the="$$sub subprofile"; \ pushd "$(BUILDDIR)/$$dst/" >/dev/null; then \
else \ test -n "`git status -s`" && \
the="toplevel"; \ git add . && \
if [ -n "$$dst" ]; then \
the="$$sub subprofile"; \
else \
the="toplevel"; \
fi && \
git commit -qam "$$feat feature: $$the part added"; \
popd >/dev/null; \
fi; \ fi; \
mp-commit "$(BUILDDIR)/$$dst/" "$$feat feature: $$the part added"; \
done; \ done; \
if [ -x "generate.sh" ]; then sh generate.sh; fi; \ if [ -x "generate.sh" ]; then sh generate.sh; fi; \
if [ -s "generate.mk" ]; then $(MAKE) -f generate.mk; fi; \ if [ -s "generate.mk" ]; then $(MAKE) -f generate.mk; fi; \
mp-commit "$(BUILDDIR)" "$$feat feature generation complete"; \ if type -t git >&/dev/null && \
pushd "$(BUILDDIR)/" >/dev/null; then \
if [ -n "`git status -s`" ]; then \
git add . && \
git commit -qam "$$feat feature generation complete"; \
fi; \
popd >/dev/null; \
fi; \
popd >/dev/null popd >/dev/null
finalize: finalize:

View File

@@ -1,28 +1,28 @@
Этот каталог содержит т.н. фичи (features, особенности). Этот каталог содержит т.н. фичи (features, особенности) --
каталоги, содержимое каждого из которых реализует одну из
подключаемых автономных возможностей образа.
Фича -- отдельно подключаемая сущность, которая содержит Каждая фича должна содержать задействуемый при построении
повторно используемые конфигурацию/код и определяет одну конфигурации будущего образа файл config.mk, включаемый
из особенностей создаваемого образа. Может зависеть от в ../main.mk; он может описывать одну или более целей
других фич либо субпрофилей. вида use/*, дополняющих конфигурацию, и при наличии
дополнительных хуков для копирования или generate.*
Каждая фича должна содержать файл config.mk, включаемый обязан добавить имя фичи в $(FEATURES), для чего
в ../main.mk при построении конфигурации будущего профиля; создана функция add_feature без аргументов.
он может описывать одну или более целей вида use/*,
дополняющих конфигурацию, и обязан добавить имя фичи
в $(FEATURES), для чего создана функция add_feature.
На этапе генерации сборочного профиля фичи рассматриваются На этапе генерации сборочного профиля фичи рассматриваются
после инициализации профиля (см. ../image.in/) и копирования после инициализации профиля (см. ../image.in/) и копирования
субпрофилей (см. ../sub.in/). Для каждой фичи, указанной субпрофилей (см. ../sub.in/). Для каждой фичи, указанной
в $(FEATURES), копируются подкаталоги сообразно включенным в $(FEATURES), копируются подкаталоги сообразно субпрофилям,
субпрофилям, а также lib/ и {image-,}scripts.d/; затем а также производится обработка {image-,}scripts.d/; затем
выполняются generate.sh и generate.mk при их наличии. выполняется скрипт generate.sh и задействуется generate.mk
(при их наличии).
Если фича дополняет хуками семейство целевых субпрофилей, Если фича дополняет хуками семейство целевых субпрофилей,
построенных на одном базовом, можно воспользоваться подкаталогом построенных на одном базовом, можно воспользоваться подкаталогом
с именем исходного базового субпрофиля (см. $src, $dst в Makefile). с именем исходного базового субпрофиля (см. $src, $dst в Makefile).
Наиболее востребованные цели можно снабжать "ярлычками" вроде Наиболее употребительные цели можно снабжать "ярлычками" вроде
"+icewm" с тем, чтобы сделать более краткими и выразительными "+icewm" с тем, чтобы сделать более краткими и выразительными
использующие их правила. Просьба не злоупотреблять количеством. использующие их правила. Просьба не злоупотреблять количеством.

View File

@@ -5,7 +5,6 @@
# - remember .base if adding yet another *_PACKAGES # - remember .base if adding yet another *_PACKAGES
use/bootloader: use/install2 sub/main use/bootloader: use/install2 sub/main
@$(call add_feature)
@$(call add,BASE_PACKAGES,alterator-$$(BASE_BOOTLOADER)) @$(call add,BASE_PACKAGES,alterator-$$(BASE_BOOTLOADER))
use/bootloader/grub use/bootloader/lilo: use/bootloader/%: use/bootloader use/bootloader/grub use/bootloader/lilo: use/bootloader/%: use/bootloader

View File

@@ -1,26 +0,0 @@
Эта фича врезается в makefile субпрофилей и обеспечивает
добавление задающих внешний вид и сообщения дистрибутива
пакетов; см. тж. http://www.altlinux.org/Branding
Реализация "двумерная" -- отдельно задаётся BRANDING
(см. пакеты branding-*-%version-%release.src.rpm),
затем отдельно указывается, какие и куда помещать
компоненты заданного брендинга.
Назначение и возможные значения (если требуются):
- STAGE1_BRANDING
+ относится к загрузке со сгенерированного образа (например, ISO)
+ bootloader bootsplash (при старте)
- STAGE2_BRANDING
+ общая часть для всех вариантов stage2
+ bootsplash (при выключении)
- INSTALL2_BRANDING
+ специфические пакеты брендирования инсталятора
+ notes slideshow
- THE_BRANDING
+ общий список для использования в установленной системе и LiveCD
+ alterator bootsplash graphics indexhtml notes slideshow

View File

@@ -1,11 +0,0 @@
# NB: release part of branding goes to install2 feature
use/branding:
@$(call add_feature)
# NB: not every distro might have all the branding of its own
use/branding/full: use/branding use/syslinux/ui/gfxboot
@$(call add,THE_BRANDING,alterator bootsplash graphics)
@$(call add,THE_BRANDING,indexhtml notes slideshow)
use/branding/complete: use/branding/full use/plymouth/full
@$(call add,INSTALL2_BRANDING,notes slideshow)

View File

@@ -1 +0,0 @@
IMAGE_PACKAGES_REGEXP += $(call branding,$(INSTALL2_BRANDING))

View File

@@ -1,4 +0,0 @@
# step 4: build the distribution image
# NB: this comes just before build-distro.mk
DOT_BASE += $(call branding,$(THE_BRANDING))

View File

@@ -1 +0,0 @@
IMAGE_PACKAGES_REGEXP += $(call branding,$(THE_BRANDING))

View File

@@ -1 +0,0 @@
IMAGE_PACKAGES_REGEXP += $(call branding,$(THE_BRANDING))

View File

@@ -1 +0,0 @@
CHROOT_PACKAGES_REGEXP += $(call branding,$(STAGE1_BRANDING))

View File

@@ -1 +0,0 @@
IMAGE_PACKAGES_REGEXP += $(call branding,$(STAGE2_BRANDING))

View File

@@ -1,36 +0,0 @@
# step 4: build the distribution image
# take the latter part for complex-specified subprofiles like stage2@live
SUBDIRS = $(SUBPROFILE_DIRS)
# proxy over the ISO metadata collected; see also genisoimagerc(5)
BOOT_SYSI := $(META_SYSTEM_ID)
BOOT_PUBL := $(META_PUBLISHER)
BOOT_PREP := $(META_PREPARER)
BOOT_APPI := $(META_APP_ID)
BOOT_VOLI := $(META_VOL_ID)
BOOT_VOLS := $(META_VOL_SET)
BOOT_BIBL := $(META_BIBLIO)
BOOT_ABST := $(META_ABSTRACT)
BOOT_TYPE := isolinux
# see also ../scripts.d/01-isosort; needs mkimage-0.2.2+
MKI_SORTFILE := /tmp/isosort
all: $(GLOBAL_DEBUG) prep copy-subdirs copy-tree run-scripts pack-image \
postprocess $(GLOBAL_CLEAN_WORKDIR)
prep: $(GLOBAL_DEBUG) dot-disk $(WHATEVER)
# can't use mp-showref which belongs to the metaprofile
dot-disk:
@mkdir -p files/.disk
@echo "ALT Linux based" >files/.disk/info
@echo "$(ARCH)" >files/.disk/arch
@echo "$(DATE)" >files/.disk/date
@if type -t git >&/dev/null; then \
( cd $(TOPDIR) && test -d .git && \
git show-ref --head -ds -- HEAD ||:) \
>files/.disk/commit 2>/dev/null; \
fi

View File

@@ -0,0 +1,56 @@
# step 4: build the distribution image
# for complex-specified subprofiles like stage2/live,
# take the latter part
SUBDIRS = $(notdir $(SUBPROFILES))
# proxy over the ISO metadata collected; see also genisoimagerc(5)
BOOT_SYSI := $(META_SYSTEM_ID)
BOOT_PUBL := $(META_PUBLISHER)
BOOT_PREP := $(META_PREPARER)
BOOT_APPI := $(META_APP_ID)
BOOT_VOLI := $(META_VOL_ID)
BOOT_VOLS := $(META_VOL_SET)
BOOT_BIBL := $(META_BIBLIO)
BOOT_ABST := $(META_ABSTRACT)
BOOT_TYPE := isolinux
# Metadata/ needed only for installers (and not for e.g. syslinux.iso)
# FIXME: installable live needs it too, don't move to install2 feature
### see also .../pkg.in/lists/Makefile
ifneq (,$(findstring install2,$(FEATURES)))
METADATA = metadata
endif
# see also ../scripts.d/01-isosort; needs mkimage-0.2.2+
MKI_SORTFILE := /tmp/isosort
all: $(GLOBAL_DEBUG) prep copy-subdirs copy-tree run-scripts pack-image \
postprocess $(GLOBAL_CLEAN_WORKDIR)
prep: $(GLOBAL_DEBUG) dot-disk $(METADATA) imagedir
metadata: dot-base
@mkdir -p files/Metadata
@rm -f files/Metadata/pkg-groups.tar
# see also alterator-pkg (backend3/pkg-install); we only tar up what's up to it
@tar -cvf files/Metadata/pkg-groups.tar -C $(PKGDIR) \
$$(echo $(call list,$(MAIN_GROUPS) .base) \
$(call group,$(MAIN_GROUPS)) \
| sed 's,$(PKGDIR)/*,,g')
dot-base:
@p="$(call kpackages,$(THE_KMODULES) $(BASE_KMODULES),$(KFLAVOURS))"; \
echo -e "\n## added by build-distro.mk\n$$p" >> $(call list,.base)
dot-disk:
@mkdir -p files/.disk
@echo "ALT Linux based" >files/.disk/info
@echo "$(ARCH)" >files/.disk/arch
@echo "$(DATE)" >files/.disk/date
@if type -t git >&/dev/null; then \
( cd $(TOPDIR) && test -d .git && \
git show-ref --head -ds -- HEAD ||:) \
>files/.disk/commit 2>/dev/null; \
fi

View File

@@ -8,6 +8,6 @@
[ -x /sbin/chkconfig ] || exit 0 [ -x /sbin/chkconfig ] || exit 0
for i in network random syslogd; do chkconfig $i on; done for i in network random syslogd random; do chkconfig $i on; done
for i in fbsetfont netfs rawdevices; do chkconfig $i off; done for i in fbsetfont netfs rawdevices; do chkconfig $i off; done
: :

View File

@@ -15,3 +15,5 @@ IMAGE_PACKAGES = $(call list,$(BASE_LISTS)) \
all: $(GLOBAL_DEBUG) build-image copy-tree run-image-scripts pack-image \ all: $(GLOBAL_DEBUG) build-image copy-tree run-image-scripts pack-image \
postprocess $(GLOBAL_CLEAN_WORKDIR) postprocess $(GLOBAL_CLEAN_WORKDIR)
prep: imagedir

View File

@@ -1,3 +0,0 @@
Эта фича конфигурирует создание образа виртуальной машины (VM).
Дополняет финальную стадию сборки (lib/, image-scripts.d/).
Требует для работы sudo(8) -- см. тж. ../../doc/vm.txt .

View File

@@ -1,4 +0,0 @@
# hooked from ../../lib/sugar.mk
use/build-vm:
@$(call add_feature)
@$(call xport,ROOTPW)

View File

@@ -1,4 +0,0 @@
# copy tar2vm helper into generated profile to enable standalone builds
all:
@install -pD $(MKIMAGE_PROFILES)/bin/tar2vm $(BUILDDIR)/bin/tar2vm

View File

@@ -1,11 +0,0 @@
#!/bin/sh
if [ -n "$GLOBAL_ROOTPW" ]; then
if type -t chpasswd >&/dev/null; then
echo "root:$GLOBAL_ROOTPW" | chpasswd
else
echo "** warning: chpasswd binary missing" >&2
fi
else
echo "** warning: no root password provided, you're on your own" >&2
fi

View File

@@ -1,9 +0,0 @@
#!/bin/sh
# VMs might have no means to communicate with the outer
# world except for networking
[ -x /sbin/chkconfig ] || exit 0
for i in network random syslogd; do chkconfig $i on; done
for i in fbsetfont netfs rawdevices; do chkconfig $i off; done
:

View File

@@ -1,4 +0,0 @@
#!/bin/sh -e
# we don't need no extra gettys in VMs
[ -s /etc/inittab ] || exit 0
sed -i 's,^[3-9]\+:[0-9]\+:respawn:/sbin/mingetty.*,#&,' /etc/inittab

View File

@@ -1,12 +0,0 @@
#!/bin/sh -e
# tweak syslog configuration to avoid hard sync logging (one is better off
# doing remote syslog if you do care for reliable data anyways)
# credits: vvk@, thresh@ (2010)
CONFIG=/etc/syslog.conf
[ ! -f "$CONFIG" ] || \
sed -i \
-e 's,-/var/log/,/var/log/,g' \
-e 's,/var/log/,-/var/log/,g' \
"$CONFIG"

View File

@@ -1,13 +0,0 @@
#!/bin/sh
# predictable file locations make bootloader configuration simple;
# this script relates to .../features.in/stage2/stage1/scripts.d/80-make-initfs
kver="$(rpm -qa 'kernel-image*' \
--qf '%{installtime} %{version}-%{name}-%{release}\n' \
| sort -n \
| tail -n 1 \
| cut -f 2 -d ' ' \
| sed 's/kernel-image-//')"
ln -s vmlinuz-$kver /boot/vmlinuz
ln -s initrd-$kver.img /boot/initrd.img

View File

@@ -1,52 +0,0 @@
# step 4: build the virtual machine image
IMAGE_PACKAGES = $(SYSTEM_PACKAGES) \
$(COMMON_PACKAGES) \
$(BASE_PACKAGES) \
$(THE_PACKAGES) \
$(call list,$(BASE_LISTS) $(THE_LISTS)) \
$(call kpackages,$(THE_KMODULES) $(BASE_KMODULES),$(KFLAVOURS))
# intermediate chroot archive
VM_TARBALL := $(IMAGE_OUTDIR)/$(IMAGE_NAME).tar
VM_RAWDISK := $(IMAGE_OUTDIR)/$(IMAGE_NAME).raw
ifeq (,$(ROOTPW))
$(error please provide root password via ROOTPW)
endif
check-sudo:
@if ! type -t sudo >&/dev/null; then \
echo "** error: sudo not available, see doc/vm.txt" >&2; \
exit 1; \
fi
prepare-image: check-sudo
@if ! sudo $(TOPDIR)/bin/tar2vm \
"$(VM_TARBALL)" "$(VM_RAWDISK)" $$VM_SIZE; then \
echo "** error: sudo tar2vm failed, see also doc/vm.txt" >&2; \
exit 1; \
fi
convert-image: prepare-image
@case "$(IMAGE_TYPE)" in \
"img") mv "$(VM_RAWDISK)" "$(IMAGE_OUTPATH)"; exit 0;; \
"vhd") VM_FORMAT="vpc";; \
*) VM_FORMAT="$(IMAGE_TYPE)"; \
esac; \
if ! type -t qemu-img >&/dev/null; then \
echo "** warning: qemu-img not available" >&2; \
else \
qemu-img convert -O "$$VM_FORMAT" \
"$(VM_RAWDISK)" "$(IMAGE_OUTPATH)"; \
rm "$(VM_RAWDISK)"; \
fi
run-image-scripts: GLOBAL_CLEANUP_PACKAGES := $(CLEANUP_PACKAGES)
run-image-scripts: GLOBAL_ROOTPW := $(ROOTPW)
# override
pack-image: MKI_PACK_RESULTS := tar:$(VM_TARBALL)
all: $(GLOBAL_DEBUG) build-image copy-tree run-image-scripts pack-image \
convert-image postprocess $(GLOBAL_CLEAN_WORKDIR)

View File

@@ -1,6 +1,5 @@
use/cleanup: use/cleanup:
@$(call add_feature) @$(call add_feature)
@$(call xport,CLEANUP_PACKAGES)
use/cleanup/installer: use/cleanup use/cleanup/installer: use/cleanup
@$(call add,CLEANUP_PACKAGES,'installer-*') @$(call add,CLEANUP_PACKAGES,'installer-*')

View File

@@ -1,7 +0,0 @@
#!/bin/sh -efu
# remove temporary packages from the installed system
[ -n "$GLOBAL_CLEANUP_PACKAGES" ] || exit 0
list="$(rpmquery -a --qf='%{NAME}\n' $GLOBAL_CLEANUP_PACKAGES)"
[ -z "$list" ] || apt-get remove -f -y -- $list

View File

@@ -14,7 +14,7 @@ cat > "$SCRIPT" << EOF
# don't override the script start message on the same line # don't override the script start message on the same line
echo "removing $GLOBAL_CLEANUP_PACKAGES" echo "removing $GLOBAL_CLEANUP_PACKAGES"
# remove temporary packages from the installed system # remove extra packages from installed system
list="\$(exec_chroot rpmquery -a --qf='%{NAME}\\n' $GLOBAL_CLEANUP_PACKAGES)" list="\$(exec_chroot rpmquery -a --qf='%{NAME}\\n' $GLOBAL_CLEANUP_PACKAGES)"
[ -z "\$list" ] || exec_chroot apt-get remove -f -y -- \$list [ -z "\$list" ] || exec_chroot apt-get remove -f -y -- \$list
EOF EOF

View File

@@ -3,7 +3,7 @@ use/dev:
@$(call add,THE_PACKAGES,git-core hasher gear) @$(call add,THE_PACKAGES,git-core hasher gear)
use/dev/mkimage: use/dev use/dev/mkimage: use/dev
@$(call add,THE_PACKAGES,mkimage shadow-change su) @$(call add,THE_PACKAGES,mkimage shadow-change)
use/dev/repo: use/dev use/repo/main use/dev/repo: use/dev use/repo/main
@$(call add,THE_PACKAGES,apt-repo) @$(call add,THE_PACKAGES,apt-repo)

View File

@@ -13,10 +13,10 @@ HOME="/home/$USER"
install -dm750 -o "$USER" -g "$USER" "$HOME" install -dm750 -o "$USER" -g "$USER" "$HOME"
# we honestly don't know much more # we honestly don't know much more
if type -t git && type -t su; then if type -t git >&/dev/null; then
su - -c "git config --global user.email $USER@localhost" "$USER" su - -c "git config --global user.email $USER@localhost" "$USER"
su - -c "git config --global user.name 'live builder'" "$USER" su - -c "git config --global user.name 'live builder'" "$USER"
fi >&/dev/null fi
# developer should feel comfortable, eh? ;-) # developer should feel comfortable, eh? ;-)
ZSHELL="/bin/zsh" ZSHELL="/bin/zsh"

View File

@@ -3,23 +3,17 @@
# for mkmodpack to use # for mkmodpack to use
use/firmware: use/firmware:
@$(call add_feature)
@$(call add,SYSTEM_PACKAGES,firmware-linux) @$(call add,SYSTEM_PACKAGES,firmware-linux)
use/firmware/server: use/firmware use/firmware/server: use/firmware
@$(call add,SYSTEM_PACKAGES,firmware-aic94xx-seq) @$(call add,SYSTEM_PACKAGES,firmware-aic94xx-seq)
@$(call add,THE_PACKAGES_REGEXP,firmware-ql.*) @$(call add,MAIN_PACKAGES_REGEXP,firmware-ql.*)
# NB: individual firmwarez would sometimes conflict
# with ones newly merged into firmware-linux
# FIXME: kernel modules rather belong to use/hardware
use/firmware/wireless: use/firmware use/firmware/wireless: use/firmware
@$(call add,THE_KMODULES,bcmwl ndiswrapper) @$(call add,MAIN_PACKAGES,firmware-acx100)
@$(call add,THE_PACKAGES,firmware-acx100) @$(call add,MAIN_PACKAGES,firmware-i2400m)
@#$(call add,THE_PACKAGES,firmware-i2400m) @$(call add,MAIN_PACKAGES_REGEXP,firmware-carl9170.*)
@$(call add,THE_PACKAGES_REGEXP,firmware-carl9170.*) @$(call add,MAIN_PACKAGES_REGEXP,firmware-ipw.*)
@$(call add,THE_PACKAGES_REGEXP,firmware-prism.*) @#$(call add,MAIN_PACKAGES_REGEXP,firmware-iwl.*)
@$(call add,THE_PACKAGES_REGEXP,firmware-ipw.*) @$(call add,MAIN_PACKAGES_REGEXP,firmware-rt.*)
@#$(call add,THE_PACKAGES_REGEXP,firmware-iwl.*) @$(call add,MAIN_PACKAGES_REGEXP,firmware-zd.*)
@#$(call add,THE_PACKAGES_REGEXP,firmware-rt.*)
@$(call add,THE_PACKAGES_REGEXP,firmware-zd.*)

View File

@@ -1,19 +1,11 @@
# alterator-based installer, second (livecd) stage use/install2: use/stage2 sub/stage2/install2 use/cleanup/installer
use/install2: use/stage2 sub/stage2@install2 use/metadata use/cleanup/installer
@$(call add_feature) @$(call add_feature)
@$(call set,INSTALL2_PACKAGES,installer-distro-$$(INSTALLER)-stage2) @$(call set,INSTALL2_PACKAGES,installer-distro-$$(INSTALLER)-stage2)
@$(call add,INSTALL2_PACKAGES,branding-$$(BRANDING)-alterator) @$(call add,INSTALL2_PACKAGES,branding-$$(BRANDING)-alterator)
@$(call add,INSTALL2_PACKAGES,branding-$$(BRANDING)-notes)
@$(call add,BASE_PACKAGES,branding-$$(BRANDING)-release) @$(call add,BASE_PACKAGES,branding-$$(BRANDING)-release)
@$(call add,BASE_LISTS,$(call tags,basesystem)) @$(call add,BASE_LISTS,$(call tags,basesystem))
@$(call xport,BASE_BOOTLOADER)
### FR: curl-mini
use/install2/net: use/install2 use/install2/net: use/install2
@$(call add,INSTALL2_PACKAGES,curl) @$(call add,INSTALL2_PACKAGES,curl)
# modern free xorg drivers for mainstream hardware requires KMS support
use/install2/kms: use/stage2/kms
@$(call add,BASE_KMODULES_REGEXP,drm.*)
# see also use/vmguest/kvm; qxl included in xorg pkglist
use/install2/kvm:
@$(call add,INSTALL2_PACKAGES,spice-vdagent xorg-drv-qxl)

View File

@@ -3,6 +3,9 @@
echo "** install2 packages before rpmdb purge:" echo "** install2 packages before rpmdb purge:"
rpmquery -a --qf='%{NAME} %{VERSION}-%{RELEASE}\n' rpmquery -a --qf='%{NAME} %{VERSION}-%{RELEASE}\n'
# not going to need them without rpmdb, it's not even rescue anymore
apt-get remove -f -y apt libapt
# remove rpm, apt databases and cache # remove rpm, apt databases and cache
find /var/lib/rpm /var/lib/apt /var/cache/apt -type f -delete find /var/lib/rpm /var/lib/apt /var/cache/apt -type f -delete

View File

@@ -8,6 +8,9 @@ MKI_PACK_RESULTS = squash:altinst
# also removed in a cleanup hook but to spare a few cycles... # also removed in a cleanup hook but to spare a few cycles...
HSH_EXCLUDE_DOCS = 1 HSH_EXCLUDE_DOCS = 1
# pass downstream
GLOBAL_BASE_BOOTLOADER := $(BASE_BOOTLOADER)
debug:: debug::
@echo "** install2: IMAGE_PACKAGES: $(IMAGE_PACKAGES)" @echo "** install2: IMAGE_PACKAGES: $(IMAGE_PACKAGES)"
@echo "** install2: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)" @echo "** install2: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)"

View File

@@ -1 +0,0 @@
Эта фича привносит код, имеющий смысл при добавлении в образ ядра.

View File

@@ -1,4 +0,0 @@
###
use/kernel:
@$(call add_feature)
@$(call set,KFLAVOURS,std-def)

View File

@@ -1,6 +0,0 @@
# step 4: build the distribution image
# take care for kernel bits
DOT_BASE += $(call kpackages, \
$(THE_KMODULES) $(BASE_KMODULES) $(BASE_KMODULES_REGEXP), \
$(KFLAVOURS))

View File

@@ -2,40 +2,25 @@
# copy stage2 as live # copy stage2 as live
# NB: starts to preconfigure but doesn't use/cleanup yet # NB: starts to preconfigure but doesn't use/cleanup yet
use/live: use/stage2 sub/stage2@live use/live: use/stage2 sub/stage2/live
@$(call add_feature) @$(call add_feature)
@$(call add,CLEANUP_PACKAGES,'installer*') @$(call add,CLEANUP_PACKAGES,'installer*')
use/live/base: use/live use/syslinux/ui/menu use/live/base: use/live use/syslinux/ui/menu
@$(call add,LIVE_LISTS,$(call tags,base && (live || network))) @$(call add,LIVE_LISTS,$(call tags,base && (live || network)))
# a very simplistic one
use/live/x11: use/live use/x11/xorg
@$(call add,LIVE_PACKAGES,xinit)
# optimized out: use/x11/xorg # optimized out: use/x11/xorg
use/live/desktop: use/live/base use/x11/wacom use/live/sound +vmguest +power use/live/desktop: use/live/base use/x11/wacom use/virtualbox/guest \
use/live/sound +power
@$(call add,LIVE_LISTS,$(call tags,desktop && (live || network))) @$(call add,LIVE_LISTS,$(call tags,desktop && (live || network)))
@$(call add,LIVE_LISTS,$(call tags,base l10n))
@$(call add,LIVE_PACKAGES,fonts-ttf-dejavu fonts-ttf-droid) @$(call add,LIVE_PACKAGES,fonts-ttf-dejavu fonts-ttf-droid)
@$(call add,SYSLINUX_CFG,localboot) @$(call add,SYSLINUX_CFG,localboot)
# alterator-based permanent installation
use/live/install: use/metadata use/syslinux/localboot.cfg
@$(call add,LIVE_PACKAGES,livecd-install)
# text-based installation script
use/live/textinstall: use/syslinux/localboot.cfg
@$(call add,LIVE_PACKAGES,live-install)
# NB: there's an unconditional live/image-scripts.d/40-autologin script # NB: there's an unconditional live/image-scripts.d/40-autologin script
# *but* it only configures some of the *existing* means; let's add one # *but* it only configures some of the *existing* means; let's add one
# or another for the cases when there should be no display manager # for the cases when there should be no display manager
use/live/autologin: use/live/x11 use/live/autologin: use/live use/x11/xorg
@$(call add,LIVE_PACKAGES,autologin) @$(call add,LIVE_PACKAGES,autologin xinit)
use/live/nodm: use/live/x11
@$(call add,LIVE_PACKAGES,nodm)
use/live/hooks: use/live use/live/hooks: use/live
@$(call add,LIVE_PACKAGES,livecd-run-hooks) @$(call add,LIVE_PACKAGES,livecd-run-hooks)

View File

@@ -1,42 +0,0 @@
#!/bin/sh
# see also m-p-d::profiles/live/image-scripts.d/init3-services
[ -x /sbin/chkconfig ] || exit 0
ENABLE="
alteratord
livecd-evms
livecd-fstab
livecd-hostname
livecd-save-nfs
livecd-setauth
livecd-setlocale
network
NetworkManager
random
rpcbind
"
# NB: dnsmasq: https://bugzilla.altlinux.org/show_bug.cgi?id=18799
# NB: sshd might be needed for some particular cases
DISABLE="
anacron
bridge
clamd
crond
dhcpd
dnsmasq
mdadm
netfs
openvpn
rawdevices
slapd
smartd
sshd
update_wms
xinetd
"
for i in $ENABLE; do chkconfig $i on 2>/dev/null; done
for i in $DISABLE; do chkconfig $i off 2>/dev/null; done
:

View File

@@ -2,7 +2,8 @@
# * reset password for root # * reset password for root
# * add user `altlinux' (without password) # * add user `altlinux' (without password)
GRPLIST="users scanner audio radio proc cdrom cdwriter wheel fuse" NPG="nopasswdlogin"
GRPLIST="users scanner audio radio proc cdrom cdwriter wheel fuse $NPG"
verbose() verbose()
{ {
@@ -14,6 +15,7 @@ verbose()
add_user() add_user()
{ {
verbose "Add $1 user" verbose "Add $1 user"
groupadd -r "$NPG"
local groups= local groups=
for g in $GRPLIST; do for g in $GRPLIST; do
if groupmod $g 2>/dev/null; then if groupmod $g 2>/dev/null; then
@@ -26,8 +28,6 @@ add_user()
done done
useradd -p "" -G "$groups" "$1" ||: useradd -p "" -G "$groups" "$1" ||:
# Workaround for ALT#13213
chown -R "$1:auth" "/etc/tcb/$1"
chown -R "$1:$1" /home/$1 chown -R "$1:$1" /home/$1
if [ -n "$GLOBAL_CRYPT_HOMES" ]; then if [ -n "$GLOBAL_CRYPT_HOMES" ]; then

View File

@@ -1,6 +0,0 @@
#!/bin/sh
# Turn on xdg-user-dirs.
# NB: not yet available on t6/p6 hence the warning
control xdg-user-dirs enabled ||
echo "** warning: control xdg-user-dirs failed" >&2

View File

@@ -1,28 +1,20 @@
#!/bin/sh -e #!/bin/sh -ef
if [ ! -x /usr/bin/X ]; then if [ ! -x /usr/bin/X ]; then
echo "SKIP autologin: X not installed" >&2 echo "warning: autologin feature requested but X not installed" >&2
exit 0 exit 0
fi fi
USER=altlinux USER=altlinux
add_nopasswdlogin_group() # setup runlevel
{
[ -f "/etc/pam.d/$1" ] &&
egrep -qs '^auth.+user[[:blank:]]+ingroup[[:blank:]]+nopasswdlogin' "/etc/pam.d/$1" &&
groupadd -r nopasswdlogin &&
gpasswd -a "$USER" nopasswdlogin
}
## setup runlevel
INITTAB=/etc/inittab INITTAB=/etc/inittab
if [ -f "$INITTAB" ]; then if [ -f "$INITTAB" ]; then
[ -z "$runlevel" ] && runlevel=5 [ -z "$runlevel" ] && runlevel=5
sed -i "s,^\(id:\)\(.*\)\(:initdefault.*\),\\1$runlevel\\3," "$INITTAB" sed -i "s,^\(id:\)\(.*\)\(:initdefault.*\),\\1$runlevel\\3," "$INITTAB"
fi fi
## autologin^2 # autologin^2
if [ -x /usr/sbin/autologin ]; then if [ -x /usr/sbin/autologin ]; then
cat << E_O_F >> /etc/sysconfig/autologin cat << E_O_F >> /etc/sysconfig/autologin
USER=$USER USER=$USER
@@ -30,25 +22,23 @@ AUTOLOGIN=yes
E_O_F E_O_F
fi fi
## lightdm autologin # lightdm autologin
LIGHTDM_CONF=/etc/lightdm/lightdm.conf LIGHTDM_CONF=/etc/lightdm/lightdm.conf
if [ -f "$LIGHTDM_CONF" ]; then if [ -f "$LIGHTDM_CONF" ]; then
sed -i \ sed -i \
-e "s/^#\(autologin-user=\).*$/\1$USER/" \ -e "s/^#\(autologin-user=\).*$/\1$USER/" \
-e "s/^#\(autologin-user-timeout=0\)/\1/" \ -e "s/^#\(autologin-user-timeout=0\)/\1/" \
"$LIGHTDM_CONF" "$LIGHTDM_CONF"
add_nopasswdlogin_group lightdm ||:
fi fi
## gdm2 autologin # gdm2 autologin
GDM_CONF=/etc/X11/gdm/custom.conf GDM_CONF=/etc/X11/gdm/custom.conf
if [ -f "$GDM_CONF" ]; then if [ -f "$GDM_CONF" ]; then
sed -i -e '/\[daemon\]/aAutomaticLoginEnable=true\nAutomaticLogin='$USER \ sed -i -e '/\[daemon\]/aAutomaticLoginEnable=true\nAutomaticLogin='$USER \
"$GDM_CONF" "$GDM_CONF"
add_nopasswdlogin_group gdm ||:
fi fi
## kdm3 autologin # kdm3 autologin
# TODO: iterate over kdm{,4} if feasible # TODO: iterate over kdm{,4} if feasible
KDMRC=/etc/X11/kdm/kdmrc KDMRC=/etc/X11/kdm/kdmrc
if [ -f "$KDMRC" ]; then if [ -f "$KDMRC" ]; then
@@ -57,66 +47,3 @@ if [ -f "$KDMRC" ]; then
-e '/AutoLoginUser/ s,^.*$,AutoLoginUser='$USER',' \ -e '/AutoLoginUser/ s,^.*$,AutoLoginUser='$USER',' \
"$KDMRC" "$KDMRC"
fi fi
## nodm autologin (the last since the most intrusive)
# FIXME nodm and xinitrc should be modified (also in p6)
NODM_RC=/etc/sysconfig/nodm
NODM_EXE=/usr/sbin/nodm
if [ -x "$NODM_EXE" ]; then
cat << E_O_F >> "$NODM_RC"
export NODM_USER=$USER
E_O_F
else
exit 0
fi
# FIXME: drop when #27449 is fixed
PREFDM=/etc/X11/prefdm
if [ -f "$PREFDM" ] && ! grep -q nodm "$PREFDM"; then
sed -i \
-e '/AUTOLOGIN_EXE=/ s,^.*$,AUTOLOGIN_EXE='$NODM_EXE',' \
-e '/AUTOLOGIN_CFG=/ s,^.*$,AUTOLOGIN_CFG='$NODM_RC',' \
"$PREFDM"
fi
# FIXME: drop when #27451 is fixed
NODM_PAM=/etc/pam.d/nodm
for module in pam_console.so pam_ck_connector.so; do
if [ -f /lib*/security/$module ]; then
str="-session optional $module"
grep -q "^$str$" "$NODM_PAM" || echo -e "$str" >> "$NODM_PAM"
fi
done
NODM_POLKIT_CONFDIR=/etc/polkit-1/localauthority/50-local.d
NODM_POLKIT_CONF=org.freedesktop.NetworkManager.pkla
if [ -d "$NODM_POLKIT_CONFDIR" ]; then
cat > "$NODM_POLKIT_CONFDIR/$NODM_POLKIT_CONF" << _EOF_
[nm-applet]
Identity=unix-group:users
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=no
ResultActive=yes
_EOF_
fi
NODM_DBUS_NM_CONF=/etc/dbus-1/system.d/nm-applet.conf
if [ -f "$NODM_DBUS_NM_CONF" ]; then
sed -i "s/at_console=\"true\"/user=\"$USER\"/" "$NODM_DBUS_NM_CONF"
fi
NODM_G2KR_DIR=/etc/skel/.gnome2/keyrings
mkdir -p "$NODM_G2KR_DIR"
echo -n login > "$NODM_G2KR_DIR"/default
cat > "$NODM_G2KR_DIR"/login.keyring << _EOF_
[keyring]
display-name=login
ctime=0
mtime=0
lock-on-idle=false
lock-after=false
_EOF_
:

View File

@@ -0,0 +1,14 @@
#!/bin/sh -efu
# attempt to autoconfigure ethernet
[ -x /sbin/dhcpcd -o -x /sbin/dhclient ] || {
echo "NOT configuring DHCP for eth0" >&2
exit 0
}
echo "configuring DHCP for eth0" >&2
mkdir -p /etc/net/ifaces/eth0 && {
echo TYPE=eth
echo BOOTPROTO=dhcp
} > /etc/net/ifaces/eth0/options ||:

View File

@@ -1,53 +0,0 @@
#!/bin/sh
# Setup network settings
# 1. Init /etc/hosts with "127.0.0.1 localhost"
# 2. Set hostname, domainname
# 3. Set defaults for NetworkManager or
# attempt to autoconfigure eth0 by etcnet.
. shell-config
verbose()
{
if [ -n "$GLOBAL_VERBOSE" ]; then
echo "HOOK: 50-setup-network: $@"
fi
}
verbose "has started"
# At startup time hostname may be changed by live-hostname package.
HOSTNAME="localhost.localdomain"
DOMAINNAME="localdomain"
verbose "Init /etc/hosts with 127.0.0.1 localhost"
echo "127.0.0.1 localhost localhost.localdomain" > /etc/hosts
netcfg="/etc/sysconfig/network"
verbose "Enable networking, set hostname to $HOSTNAME, domainname to $DOMAINNAME"
shell_config_set "$netcfg" NETWORKING yes
shell_config_set "$netcfg" HOSTNAME "$HOSTNAME"
shell_config_set "$netcfg" DOMAINNAME "$DOMAINNAME"
if [ -x /usr/sbin/NetworkManager ] ; then
verbose "Setup defaults for NetworkManager"
shell_config_set /etc/net/ifaces/default/options-eth NM_CONTROLLED yes
shell_config_set /etc/net/ifaces/default/options-eth DISABLED yes
shell_config_set /etc/net/ifaces/default/options-eth BOOTPROTO dhcp
else
# attempt to autoconfigure ethernet by etcnet
if [ -x /sbin/dhcpcd -o -x /sbin/dhclient ]; then
verbose "configuring DHCP for eth0"
mkdir -p /etc/net/ifaces/eth0 && {
echo TYPE=eth
echo BOOTPROTO=dhcp
} > /etc/net/ifaces/eth0/options
else
verbose "NOT configuring eth0 for DHCP"
fi
fi
verbose "finished"

View File

@@ -2,17 +2,10 @@
STAGE2_KMODULES = $(THE_KMODULES) $(LIVE_KMODULES) STAGE2_KMODULES = $(THE_KMODULES) $(LIVE_KMODULES)
IMAGE_PACKAGES_REGEXP = $(THE_PACKAGES_REGEXP) \ IMAGE_PACKAGES = $(COMMON_PACKAGES) $(THE_PACKAGES) $(LIVE_PACKAGES) \
$(LIVE_PACKAGES_REGEXP) $(call map,list, \
IMAGE_PACKAGES = $(call map,list, \
$(THE_LISTS) $(THE_GROUPS) \ $(THE_LISTS) $(THE_GROUPS) \
$(LIVE_LISTS) $(LIVE_GROUPS)) \ $(LIVE_LISTS) $(LIVE_GROUPS)) \
$(COMMON_PACKAGES) $(THE_PACKAGES) $(LIVE_PACKAGES) \
interactivesystem interactivesystem
MKI_PACK_RESULTS = squash:live MKI_PACK_RESULTS = squash:live
debug::
@echo "** live: IMAGE_PACKAGES: $(IMAGE_PACKAGES)"
@echo "** live: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)"

View File

@@ -1,7 +1,6 @@
+ltsp: use/ltsp/base; @: +ltsp: use/ltsp/base; @:
use/ltsp: use/ltsp:
@$(call add_feature)
@$(call add,INSTALL2_PACKAGES,installer-feature-ltsp-stage2) @$(call add,INSTALL2_PACKAGES,installer-feature-ltsp-stage2)
@$(call add,MAIN_LISTS,ltsp-client ltsp-client.$(ARCH)) @$(call add,MAIN_LISTS,ltsp-client ltsp-client.$(ARCH))
@$(call add,BASE_LISTS,ltsp) @$(call add,BASE_LISTS,ltsp)

View File

@@ -1,3 +0,0 @@
Эта фича занимается метаданными в составе образов --
в первую очередь инсталяционных и пригодных к установке
"живых".

View File

@@ -1,2 +0,0 @@
use/metadata:
@$(call add_feature)

View File

@@ -1,40 +0,0 @@
# step 4: build the distribution image
# package lists are needed for installer and live-install images
METADIR := files/Metadata
# preparation targets of ../../build-distro/lib/build-distro.mk
WHATEVER += metadata
# handle these too
DOT_BASE += $(BASE_PACKAGES_REGEXP)
# args: name, suffix, command
define dump-THEM
if [ -n "$($(1)_$(2))" ]; then echo -e "\n## $(1)_$(2)"; $(3) $($(1)_$(2)); fi;
endef
dump-PACKAGES = $(call dump-THEM,$(1),PACKAGES,echo)
dump-LISTS = $(call dump-THEM,$(1),LISTS,cat)
# BASE_PACKAGES, BASE_LISTS and whatever else goes into base install;
# thus construct requisite .base packagelist for alterator-pkg
metadata-.base:
@cd $(call list,/); \
{ \
echo "## generated by features.in/metadata/lib/metadata.mk"; \
$(foreach p,SYSTEM COMMON THE BASE,$(call dump-PACKAGES,$(p))) \
$(foreach l,THE BASE,$(call dump-LISTS,$(l))) \
if [ -n "$(DOT_BASE)" ]; then \
echo -e "\n## DOT_BASE\n$(DOT_BASE)"; \
fi; \
} | sed -re '/^[^[:space:]#]/ s/[[:space:]]+/\n/g' > .base
# see also alterator-pkg (backend3/pkg-install);
# we only tar up what's up to it
metadata: metadata-.base
@mkdir -p $(METADIR); \
tar -C $(PKGDIR) -cvf - \
$(call rlist,$(MAIN_GROUPS) .base) \
$(call rgroup,$(MAIN_GROUPS)) \
> $(METADIR)/pkg-groups.tar

View File

@@ -1,6 +1,3 @@
### this might really belong to build-*...
# distributions
DISTRO_EXTS := .iso DISTRO_EXTS := .iso
use/pack: use/pack:
@@ -15,7 +12,6 @@ else
@$(call set,IMAGE_PACKTYPE,isodata) @$(call set,IMAGE_PACKTYPE,isodata)
endif endif
# virtual environments
VE_ARCHIVES := tar cpio VE_ARCHIVES := tar cpio
VE_COMPRESSORS := gz xz# there's no sense in bzip2 by now VE_COMPRESSORS := gz xz# there's no sense in bzip2 by now
VE_ZIPS := $(call addsuffices, \ VE_ZIPS := $(call addsuffices, \
@@ -38,8 +34,3 @@ $(foreach c,$(VE_ARCHIVES), \
$(eval $(call PACK_containers,$(c))) \ $(eval $(call PACK_containers,$(c))) \
$(foreach z,$(VE_COMPRESSORS), \ $(foreach z,$(VE_COMPRESSORS), \
$(eval $(call PACK_compressors,$(c),$(z))))) $(eval $(call PACK_compressors,$(c),$(z)))))
# virtual machines
VM_EXTS := .img .qcow2 .vdi .vmdk .vhd
$(VM_EXTS:.%=use/pack/%): use/pack; @:

View File

@@ -1,5 +0,0 @@
Эта фича предназначена для добавления поддержки plymouth
-- современной реализации bootsplash. Плотно взаимодействует
с фичей branding по объективным причинам, но оформлена отдельно
для возможности собирать образы с частичным брендированием либо
"без излишеств".

View File

@@ -1,28 +0,0 @@
+plymouth: use/plymouth/full; @:
# and a few silent aliases
use/plymouth/live: use/plymouth/stage2
use/plymouth/install2: use/plymouth/stage2
use/plymouth:
@$(call add_feature)
# NB: *_REGEXP due to branding() using regexp and the
# dependency resolution having to occur within a
# single transaction (due to plymouth-system-theme)
# looks like there's no sense to pull in progressbars
# while leaving the very basic text bootloader screen
use/plymouth/stage2: use/plymouth use/branding \
use/syslinux/ui/gfxboot use/stage2/kms
@$(call add,STAGE1_PACKAGES_REGEXP,make-initrd-plymouth)
@$(call add,STAGE1_BRANDING,bootsplash)
@$(call add,STAGE2_BRANDING,bootsplash)
@$(call add,STAGE2_BOOTARGS,quiet splash)
use/plymouth/base: use/plymouth/stage2 use/install2/kms
@$(call add,INSTALL2_PACKAGES,installer-feature-setup-plymouth)
@$(call add,BASE_PACKAGES_REGEXP,make-initrd-plymouth cpio)
@$(call add,THE_BRANDING,bootsplash)
use/plymouth/full: use/plymouth/stage2 use/plymouth/base; @:

View File

@@ -1,7 +0,0 @@
#!/bin/sh
CONFIG=/etc/plymouth/plymouthd.conf
if [ -f "$CONFIG" ]; then
grep -q '^Theme=' "$CONFIG" || sed -i 's/#\([T\[]\)/\1/' "$CONFIG"
echo 'FEATURES += plymouth' >> /etc/initrd.mk
fi

View File

@@ -1,3 +0,0 @@
#!/bin/sh
cp -a /usr/share/plymouth/default-install-duration /var/lib/plymouth/boot-duration

View File

@@ -3,7 +3,6 @@
# common # common
# TODO: invent multi-target scripts and integrate that 08-powerbutton # TODO: invent multi-target scripts and integrate that 08-powerbutton
use/power: use/power:
@$(call add_feature)
@$(call add,COMMON_PACKAGES,installer-feature-powerbutton-stage3) @$(call add,COMMON_PACKAGES,installer-feature-powerbutton-stage3)
# modern power management # modern power management
@@ -21,4 +20,4 @@ use/power/acpi/powersave: use/power/acpi
# legacy power management # legacy power management
use/power/apm: use/power use/power/apm: use/power
@$(call add,COMMON_PACKAGES,apmd lphdisk) @$(call add,COMMON_PACKAGES,apmd)

View File

@@ -1,5 +1,4 @@
use/rescue: use/stage2 sub/stage2@rescue use/syslinux/sdab.cfg \ use/rescue: use/stage2 sub/stage2/rescue
use/firmware/server use/firmware/wireless
@$(call add_feature) @$(call add_feature)
@$(call add,RESCUE_LISTS, openssh \ @$(call add,RESCUE_LISTS, \
$(call tags,(base || extra) && (rescue || network))) $(call tags,(base || extra) && (rescue || network)))

View File

@@ -1,8 +1,8 @@
# stage2 mod: rescue "live" image # stage2 mod: rescue "live" image
IMAGE_PACKAGES = $(call list,$(RESCUE_LISTS)) \ IMAGE_PACKAGES = $(COMMON_PACKAGES) \
$(COMMON_PACKAGES) \
$(RESCUE_PACKAGES) \ $(RESCUE_PACKAGES) \
$(call list,$(RESCUE_LISTS)) \
interactivesystem startup-rescue interactivesystem startup-rescue
MKI_PACK_RESULTS = squash:rescue MKI_PACK_RESULTS = squash:rescue

View File

@@ -1,2 +0,0 @@
Эта фича предоставляет типичные для серверных образов
наборы списков пакетов и модулей ядра.

View File

@@ -1,9 +0,0 @@
use/server:
@$(call add_feature)
use/server/mini: use/server
@$(call add,THE_KMODULES,e1000e igb)
@$(call add,STAGE1_KMODULES,e1000e igb)
@$(call add,THE_LISTS,\
$(call tags,base && (server || network || security || pkg)))
@$(call add,THE_LISTS,$(call tags,extra (server || network)))

View File

@@ -1 +0,0 @@
Наборы пакетов для семейства дистрибутивов Simply Linux.

View File

@@ -1,21 +0,0 @@
use/slinux: use/x11/xfce use/x11/gdm2.20
@$(call add_feature)
@$(call set,BRANDING,simply-linux)
@$(call add,THE_BRANDING,menu xfce-settings)
@$(call add,THE_LISTS,gnome-p2p)
@$(call add,THE_LISTS,slinux/$(ARCH))
@$(call add,THE_LISTS,slinux/games)
@$(call add,THE_LISTS,slinux/graphics)
@$(call add,THE_LISTS,slinux/live)
@$(call add,THE_LISTS,slinux/misc)
@$(call add,THE_LISTS,slinux/misc-dvd)
@$(call add,THE_LISTS,slinux/multimedia)
@$(call add,THE_LISTS,slinux/network)
@$(call add,THE_LISTS,slinux/xfce)
@$(call add,THE_LISTS,$(call tags,base l10n))
@$(call set,META_VOL_SET,Simply Linux)
use/slinux/full: use/isohybrid use/slinux use/systemd \
use/firmware/wireless use/branding/complete \
use/x11/drm use/x11/3d-proprietary
@$(call add,THE_PACKAGES,apt-conf-sisyphus)

View File

@@ -1,5 +0,0 @@
#!/bin/bash
# Set system time to local time.
CONFIG="/etc/sysconfig/clock"
sed -i 's/^UTC=true/UTC=false/' "$CONFIG"

View File

@@ -1,29 +0,0 @@
#!/bin/sh
# see also m-p-d::profiles/live/image-scripts.d/init3-services
#[ -x /bin/systemctl ] || exit 0
#[ -x /bin/systemctl ] || exit 0
ENABLE="
network
NetworkManager
lvm2-monitor
mdadm
"
# NB: dnsmasq: https://bugzilla.altlinux.org/show_bug.cgi?id=18799
# NB: sshd might be needed for some particular cases
DISABLE="
sshd
"
for i in $ENABLE; do
[ -x /bin/systemctl ] && /bin/systemctl enable ${i}.service
[ -x /sbin/chkconfig ] && /sbin/chkconfig $i on
done
for i in $DISABLE; do
[ -x /bin/systemctl ] && /bin/systemctl disable ${i}.service
[ -x /sbin/chkconfig ] && /sbin/chkconfig $i off
done
:

View File

@@ -3,9 +3,6 @@ use/stage2: sub/stage1
@$(call add_feature) @$(call add_feature)
@$(call add,STAGE1_PACKAGES,file make-initrd make-initrd-propagator) @$(call add,STAGE1_PACKAGES,file make-initrd make-initrd-propagator)
use/stage2/kms:
@$(call add,STAGE1_KMODULES_REGEXP,drm.*)
# NB: sub/stage2 isn't used standalone but rather # NB: sub/stage2 isn't used standalone but rather
# as a base for various livecd modifications # as a base for various livecd modifications
# (currently install2, live, rescue) # (currently install2, live, rescue)

View File

@@ -1,55 +1,32 @@
#!/bin/sh #!/bin/sh
# NB: -f prohibited in this shebang
# check relevant kernel features availability # check relevant kernel features availability
CONFIGS=/boot/config-* GZ_OPTS="-comp gzip"
GZ_OPTS="-comp gzip -noI" XZ_OPTS="-comp xz -b 524288 -noI"
XZ_OPTS="-comp xz"
LZO_OPTS="-comp lzo -noI"
verbose() { [ -n "$GLOBAL_VERBOSE" ] && echo "** $@" >&2; }
fatal() { echo "** error: $@" >&2; exit 1; }
configured()
{
local option="CONFIG_$1"
if grep -q "^$option" $CONFIGS; then
verbose "${option%=*} available"
return 0
else
return 1
fi
}
ls $CONFIGS >&/dev/null || fatal "no stage1 kernel config found in /boot"
# test for installer-required filesystems support # test for installer-required filesystems support
for opt in SQUASHFS AUFS_FS; do for opt in CONFIG_SQUASHFS CONFIG_AUFS_FS; do
configured "$opt=[my]" || fatal "stage1 kernel must have $opt support" if grep -q "^$opt=[my]$" /boot/config-*; then
done [ -n "$GLOBAL_VERBOSE" ] && echo "** $opt available"
else
verbose "GLOBAL_SQUASHFS: $GLOBAL_SQUASHFS" if [ "$?" = 1 ]; then # a file exists but lacks the pattern
echo "** error: stage1 kernel must have $opt support" >&2
options() exit 1
{
# squashfs options: not really neccessary but better than none
# NB: this config file should be carried over into install2
if [ "$GLOBAL_SQUASHFS" != "fast" ] && configured "SQUASHFS_XZ=y"; then
# NB: the decompression filter overhead might hurt
# NB: there are arm, powerpc and some other filters too
if [ "$GLOBAL_SQUASHFS" = "tight" ] && configured "X86"; then
XZ_OPTS="$XZ_OPTS -b 524288 -Xbcj x86"
else
XZ_OPTS="$XZ_OPTS -b 262144 -noI"
fi
echo "$XZ_OPTS"
else # go fast, or even faster if possible
if configured "SQUASHFS_LZO=y"; then
echo "$LZO_OPTS"
else # safe default
echo "$GZ_OPTS"
fi fi
fi fi
} done
echo "PACK_SQUASHFS_OPTS=-no-recovery `options`" > /.image/squashcfg.mk # squashfs options: not really neccessary but better than none
# NB: this config file should be carried over into install2
if grep -q '^CONFIG_SQUASHFS_XZ=y$' /boot/config-*; then
# TODO: figure out if it's generally worth it even on x86:
# if binaries account for less than ~70% of blocks,
# the decompression filter overhead might hurt
# NB: there are arm, powerpc and some other filters too
if grep -q "^CONFIG_X86" /boot/config-*; then
XZ_OPTS="$XZ_OPTS -Xbcj x86"
fi
echo "PACK_SQUASHFS_OPTS=$XZ_OPTS" > /.image/squashcfg.mk
else
echo "PACK_SQUASHFS_OPTS=$GZ_OPTS" > /.image/squashcfg.mk
fi

View File

@@ -2,3 +2,10 @@
# FIXME: move somewhere else # FIXME: move somewhere else
#echo 'FEATURES += nfs' >> /etc/initrd.mk #echo 'FEATURES += nfs' >> /etc/initrd.mk
# FIXME: move to plymouth feature
#if [ -f /etc/plymouth/plymouthd.conf ];then
# sed -i 's/#\([T\[]\)/\1/' /etc/plymouth/plymouthd.conf
# echo 'FEATURES += plymouth' >> /etc/initrd.mk
#fi

View File

@@ -1,26 +1,15 @@
#!/bin/sh -efu #!/bin/sh -efu
# NB: /etc/initrd.mk carefully prepared by earlier scripts # NB: /etc/initrd.mk carefully prepared by earlier scripts
kver="$(rpm -qa 'kernel-image*' \ kver="$(rpm -qa 'kernel-image*' --qf '%{installtime} %{version}-%{name}-%{release}\n' \
--qf '%{installtime} %{version}-%{name}-%{release}\n' \
| sort -n \ | sort -n \
| tail -n 1 \ | tail -n 1 \
| cut -f 2 -d ' ' \ | cut -f 2 -d ' ' \
| sed 's/kernel-image-//')" | sed 's/kernel-image-//')"
MAKE_INITRD_OPTS="--no-checks -k $kver" make-initrd --no-checks -k $kver \
MAKE_INITRD_VER="`make-initrd -V \ && gzip < /boot/initrd-$kver.img > $(getconf LIBDIR)/propagator/initfs \
| sed -rn 's/^make-initrd version ([0-9.]+)/\1/p'`" || exit 1
if [ "`rpmvercmp "$MAKE_INITRD_VER" "0.7.8"`" != "-1" ]; then
MAKE_INITRD_OPTS="$MAKE_INITRD_OPTS --no-depmod"
fi
if make-initrd $MAKE_INITRD_OPTS; then
gzip < /boot/initrd-$kver.img > $(getconf LIBDIR)/propagator/initfs
else
exit 1
fi
[ -h /boot/vmlinuz ] || ln -s vmlinuz-$kver /boot/vmlinuz [ -h /boot/vmlinuz ] || ln -s vmlinuz-$kver /boot/vmlinuz
[ -h /boot/initrd.img ] || ln -s initrd-$kver.img /boot/initrd.img [ -h /boot/initrd.img ] || ln -s initrd-$kver.img /boot/initrd.img

View File

@@ -1,10 +1,6 @@
Добавление поддержки syslinux; требуется для инсталяторов, live/rescue; Добавление поддержки syslinux; требуется для инсталяторов, live/rescue;
реализуется в рамках stage1. реализуется в рамках stage1.
Самостоятельное творческое использование на данный момент подразумевает
знакомство с /usr/share/doc/syslinux-*/syslinux.txt и изучение кусочков
конфигурации, которые уже существуют.
Цели config.mk: Цели config.mk:
* use/syslinux/ui/% -- конфигурирование интерфейса (см. cfg.in/00*.cfg); * use/syslinux/ui/% -- конфигурирование интерфейса (см. cfg.in/00*.cfg);
при использовании автоматически добавляют syslinux в FEATURES; при использовании автоматически добавляют syslinux в FEATURES;
@@ -21,3 +17,8 @@
Здесь производится первичная обработка конфигурационных данных, Здесь производится первичная обработка конфигурационных данных,
окончательно проверяемых и используемых уже в инструментальном чруте. окончательно проверяемых и используемых уже в инструментальном чруте.
TODO: может потребоваться обобщение механизма генерации с учётом
многоуровневых меню и включаемых файлов (которыми лучше не злоупотреблять
из соображений скорости инициализации загрузчика); требуется обеспечить
брендирование заголовков.

View File

@@ -1 +0,0 @@
prompt 0

View File

@@ -1,2 +0,0 @@
noescape 1

Some files were not shown because too many files have changed in this diff Show More