Compare commits

..

2 Commits

Author SHA1 Message Date
Michael Shigorin
3b2a0649bf 1.0.1-alt0.M70T.1
- important bugfix: THE_PACKAGES weren't getting through to .base
  (backported from 1.1.14)
2013-11-25 21:06:01 +04:00
Michael Shigorin
7929f61cad metadata: fix THE_PACKAGES processing
Actually the issue was worse in general: *_PACKAGES
weren't quoted when put into .base thus resulting
in a potentially broken echo command (silent one).

The macro scheme used was overgeneralized; stuffing
quoting differentiation into it was doable but ugly
(unless one is able to pass an unquoted quote sign
as a function's parameter in some elegant manner),
let's just make it straightforward.
2013-11-25 09:33:54 +04:00
404 changed files with 1535 additions and 5393 deletions

View File

@@ -1,22 +1,22 @@
Name: mkimage-profiles
Version: 1.1.75
Release: alt1
Version: 1.0.1
Release: alt0.M70T.1
Summary: ALT Linux based distribution metaprofile
License: GPLv2+
Group: Development/Other
Url: http://altlinux.org/m-p
Url: http://www.altlinux.org/Mkimage/Profiles/m-p
Source: %name-%version.tar
Packager: Michael Shigorin <mike@altlinux.org>
BuildArch: noarch
BuildRequires: rsync asciidoc-a2x xmlgraphics-fop fonts-ttf-dejavu
BuildRequires: /proc
Requires: rsync git-core
Requires: time schedutils sfdisk
Requires: mkimage >= 0.2.5
Requires: mkimage-preinstall
# Recommends: graphviz qemu-img
@@ -28,7 +28,6 @@ Requires: mkimage-preinstall
%package doc
Summary: %name documentation
Group: Development/Documentation
BuildRequires: java /proc
%description
mkimage-profiles is a collection of bits and pieces useful for
@@ -38,7 +37,7 @@ to choose from, and some ready-made image recipes as well.
Make no mistake: constructing distributions isn't just fun, it takes
a lot of passion and knowledge to produce a non-trivial one. So m-p
(the short alias for mkimage-profiles) is complex too. If you need
(the short nick for mkimage-profiles) is complex too. If you need
-- or want -- to make just a few tweaks to an existing recipe, it might
be easier to comprehend the generated profile (aka builddir) which
contains only the needed subprofiles, script hooks and package lists
@@ -79,244 +78,9 @@ cp -a * %buildroot%mpdir
%doc %docs/*
%changelog
* Mon Sep 28 2015 Michael Shigorin <mike@altlinux.org> 1.1.75-alt1
- systemd-specific hook for installer (solo@)
* Mon Sep 14 2015 Michael Shigorin <mike@altlinux.org> 1.1.74-alt1
- starterkits-20150912
* Mon Sep 07 2015 Michael Shigorin <mike@altlinux.org> 1.1.73-alt1
- im feature
* Mon Aug 31 2015 Michael Shigorin <mike@altlinux.org> 1.1.72-alt1
- starterkits alpha
* Mon Aug 10 2015 Michael Shigorin <mike@altlinux.org> 1.1.71-alt1
- docs feature
* Mon Jul 20 2015 Michael Shigorin <mike@altlinux.org> 1.1.70-alt1
- check KFLAVOURS
* Mon Jun 29 2015 Michael Shigorin <mike@altlinux.org> 1.1.69-alt1
- yet another systemd- tweak
* Mon Jun 22 2015 Michael Shigorin <mike@altlinux.org> 1.1.68-alt1
- LIVE_CLEANUP_KDRIVERS actually works
* Mon Jun 08 2015 Michael Shigorin <mike@altlinux.org> 1.1.67-alt1
- minor post-tweaks
* Mon Jun 01 2015 Michael Shigorin <mike@altlinux.org> 1.1.66-alt1
- remote rescue
* Mon May 04 2015 Michael Shigorin <mike@altlinux.org> 1.1.65-alt1
- archdep pkglists
* Mon Apr 20 2015 Michael Shigorin <mike@altlinux.org> 1.1.64-alt1
- modularized stage1 modules list
* Mon Mar 30 2015 Michael Shigorin <mike@altlinux.org> 1.1.63-alt1
- support USB3, ACPI suspend
* Mon Mar 16 2015 Michael Shigorin <mike@altlinux.org> 1.1.62-alt1
- starterkits-20150312
* Mon Mar 09 2015 Michael Shigorin <mike@altlinux.org> 1.1.61-alt1
- EFI_BOOTARGS
* Mon Mar 02 2015 Michael Shigorin <mike@altlinux.org> 1.1.60-alt1
- vmguest, install2: refactoring
* Mon Feb 23 2015 Michael Shigorin <mike@altlinux.org> 1.1.59-alt1
- regular rebase
* Mon Feb 16 2015 Michael Shigorin <mike@altlinux.org> 1.1.58-alt1
- vagrant feature (closes: #28553)
* Mon Feb 09 2015 Michael Shigorin <mike@altlinux.org> 1.1.57-alt1
- fix the lists copying fix
* Mon Feb 02 2015 Michael Shigorin <mike@altlinux.org> 1.1.56-alt1
- fix lilo check for vm images
* Mon Jan 26 2015 Michael Shigorin <mike@altlinux.org> 1.1.55-alt1
- lists copying fixed
* Mon Jan 05 2015 Michael Shigorin <mike@altlinux.org> 1.1.54-alt1
- live: don't force localboot
* Mon Dec 15 2014 Michael Shigorin <mike@altlinux.org> 1.1.53-alt1
- starterkits-20141212
* Mon Nov 17 2014 Michael Shigorin <mike@altlinux.org> 1.1.52-alt1
- docs: "7.0+" (closes: #30474)
- l10n feature
* Mon Nov 10 2014 Michael Shigorin <mike@altlinux.org> 1.1.51-alt1
- current updates
* Mon Oct 27 2014 Michael Shigorin <mike@altlinux.org> 1.1.50-alt1
- minor tweaks
* Mon Oct 13 2014 Michael Shigorin <mike@altlinux.org> 1.1.49-alt1
- pkglist updates
* Mon Sep 29 2014 Michael Shigorin <mike@altlinux.org> 1.1.48-alt1
- (sysv)init: exclude systemd explicitly
* Mon Sep 22 2014 Michael Shigorin <mike@altlinux.org> 1.1.47-alt1
- kpackages() argswap
* Mon Sep 15 2014 Michael Shigorin <mike@altlinux.org> 1.1.46-alt1
- regular fixes
* Mon Sep 01 2014 Michael Shigorin <mike@altlinux.org> 1.1.45-alt1
- starterkits alpha
* Mon Aug 18 2014 Michael Shigorin <mike@altlinux.org> 1.1.44-alt1
- connman fixup
* Mon Aug 04 2014 Michael Shigorin <mike@altlinux.org> 1.1.43-alt1
- fixed package build
* Mon Jul 28 2014 Michael Shigorin <mike@altlinux.org> 1.1.42-alt1
- current bits
* Mon Jul 07 2014 Michael Shigorin <mike@altlinux.org> 1.1.41-alt1
- post-214 fixups
* Mon Jun 30 2014 Michael Shigorin <mike@altlinux.org> 1.1.40-alt1
- systemd-214
* Mon Jun 16 2014 Michael Shigorin <mike@altlinux.org> 1.1.39-alt1
- starterkits-20140612
* Mon Jun 02 2014 Michael Shigorin <mike@altlinux.org> 1.1.38-alt1
- mksquashfs 4.3 support
* Mon May 26 2014 Michael Shigorin <mike@altlinux.org> 1.1.37-alt1
- use/browser
* Mon May 19 2014 Michael Shigorin <mike@altlinux.org> 1.1.36-alt1
- regular-lxqt
* Mon May 12 2014 Michael Shigorin <mike@altlinux.org> 1.1.35-alt1
- yet another rescue week
* Mon May 05 2014 Michael Shigorin <mike@altlinux.org> 1.1.34-alt1
- remember Odessa
* Mon Apr 28 2014 Michael Shigorin <mike@altlinux.org> 1.1.33-alt1
- net-eth tweaks
* Mon Apr 21 2014 Michael Shigorin <mike@altlinux.org> 1.1.32-alt1
- regular-rescue week
* Mon Apr 14 2014 Michael Shigorin <mike@altlinux.org> 1.1.31-alt1
- live: refactoring
- forensics mode
* Mon Apr 07 2014 Michael Shigorin <mike@altlinux.org> 1.1.30-alt1
- robotics support
* Mon Mar 31 2014 Michael Shigorin <mike@altlinux.org> 1.1.29-alt1
- mediacheck feature
* Mon Mar 24 2014 Michael Shigorin <mike@altlinux.org> 1.1.28-alt1
- install2: more cleanups
* Mon Mar 17 2014 Michael Shigorin <mike@altlinux.org> 1.1.27-alt1
- don't insist on k-m-r8168
- codebase deduplication
* Mon Mar 10 2014 Michael Shigorin <mike@altlinux.org> 1.1.26-alt1
- docs week
- deflogin: empty ROOTPW explicitly ignored (potential security fix)
* Mon Mar 03 2014 Michael Shigorin <mike@altlinux.org> 1.1.25-alt1
- regular updates
* Mon Feb 10 2014 Michael Shigorin <mike@altlinux.org> 1.1.24-alt1
- service bridge
* Mon Feb 03 2014 Michael Shigorin <mike@altlinux.org> 1.1.23-alt1
- live, net*, syslinux fixes (see also #26608)
* Mon Jan 27 2014 Michael Shigorin <mike@altlinux.org> 1.1.22-alt1
- ahci kludge (see #29705) :(
* Mon Jan 20 2014 Michael Shigorin <mike@altlinux.org> 1.1.21-alt1
- rescue tweaks
* Mon Jan 13 2014 Michael Shigorin <mike@altlinux.org> 1.1.20-alt1
- support for CIFS installation method (sin@)
- glibc-locales for regular images (closes: #29693)
* Mon Dec 30 2013 Michael Shigorin <mike@altlinux.org> 1.1.19-alt1
- regular fixes
* Mon Dec 23 2013 Michael Shigorin <mike@altlinux.org> 1.1.18-alt1
- efi updates
* Mon Dec 16 2013 Michael Shigorin <mike@altlinux.org> 1.1.17-alt1
- refind branding
* Mon Dec 09 2013 Michael Shigorin <mike@altlinux.org> 1.1.16-alt1
- e18
* Mon Dec 02 2013 Michael Shigorin <mike@altlinux.org> 1.1.15-alt1
- regular fixups
* Mon Nov 25 2013 Michael Shigorin <mike@altlinux.org> 1.1.14-alt1
* Mon Nov 25 2013 Michael Shigorin <mike@altlinux.org> 1.0.1-alt0.M70T.1
- important bugfix: THE_PACKAGES weren't getting through to .base
- regular-sysv-tde related churn
* Mon Nov 04 2013 Michael Shigorin <mike@altlinux.org> 1.1.13-alt1
- rescue friday
* Mon Oct 21 2013 Michael Shigorin <mike@altlinux.org> 1.1.12-alt1
- live-builder update
* Mon Oct 14 2013 Michael Shigorin <mike@altlinux.org> 1.1.11-alt1
- luks better
* Mon Sep 30 2013 Michael Shigorin <mike@altlinux.org> 1.1.10-alt1
- regular tweaks
* Mon Sep 23 2013 Michael Shigorin <mike@altlinux.org> 1.1.9-alt1
- regular fixes
* Mon Sep 16 2013 Michael Shigorin <mike@altlinux.org> 1.1.8-alt1
- armh/p7/ve fixes
* Mon Aug 26 2013 Michael Shigorin <mike@altlinux.org> 1.1.7-alt1
- minor fixes
* Mon Aug 12 2013 Michael Shigorin <mike@altlinux.org> 1.1.6-alt1
- vm-net retired
* Mon Aug 05 2013 Michael Shigorin <mike@altlinux.org> 1.1.5-alt1
- armh related fixes
* Mon Jul 29 2013 Michael Shigorin <mike@altlinux.org> 1.1.4-alt1
- assorted fixups
* Mon Jul 22 2013 Michael Shigorin <mike@altlinux.org> 1.1.3-alt1
- armh fixes and tweaks
* Mon Jul 15 2013 Michael Shigorin <mike@altlinux.org> 1.1.2-alt1
- control and sound features
* Mon Jul 01 2013 Michael Shigorin <mike@altlinux.org> 1.1.1-alt1
- cuboxism
* Mon Jun 17 2013 Michael Shigorin <mike@altlinux.org> 1.1.0-alt1
- 1.1.x branch: public alpha development status
+ new subprofile: rootfs
+ new features: armh*, deflogin, init, services
+ refactored features: build-*, efi, fonts, live, x11*
+ tar2vm got rewritten as tar2fs, gained ARM support
- minor spec metadata update
(backported from 1.1.14)
* Mon Jun 17 2013 Michael Shigorin <mike@altlinux.org> 1.0.0-alt1
- 1.0

View File

@@ -1,6 +0,0 @@
object d5fb22a7f8472245d413a911ba9e92ae67b80ab3
type commit
tag v1.1.74
tagger Michael Shigorin <mike@altlinux.org> 1442253671 +0300
starterkits-20150912

View File

@@ -0,0 +1,6 @@
object 5ffd07c65e360561c7a04f41aff746d9caa165cd
type commit
tag v1.0.0
tagger Michael Shigorin <mike@altlinux.org> 1371463392 +0400
1.0

View File

@@ -1 +1 @@
1e56c47d6b4954e784a5295afa8874a751f0c759 v1.1.74
5f4103e2678b4db8760eda8622f094f694f9cdcd v1.0.0

View File

@@ -6,16 +6,15 @@
-include $(HOME)/.mkimage/profiles.mk
# for immediate assignment
ifndef ARCH
ARCH := $(shell arch \
ifndef ARCHES
ifdef ARCH
ARCHES := $(ARCH)
else
ARCHES := $(shell arch \
| sed 's/i686/i586/; s/armv7.*/armh/; s/armv.*/arm/; s/ppc.*/ppc/')
endif
ifndef ARCHES
ARCHES := $(ARCH)
endif
export ARCHES ARCH
export ARCHES
export PATH := $(CURDIR)/bin:$(PATH)
@@ -30,10 +29,8 @@ MAKE += -r --no-print-directory
DIRECT_TARGETS := help help/distro help/ve help/vm clean distclean check
.PHONY: $(DIRECT_TARGETS)
# these build nothing so no use of reports either
$(DIRECT_TARGETS):
@$(MAKE) -f main.mk REPORT= $@
@$(MAKE) -f main.mk $@
export NUM_TARGETS := $(words $(MAKECMDGOALS))
@@ -56,12 +53,8 @@ SHELL = /bin/bash
say "** goal: $@ [$$n/$(NUM_TARGETS)]"; \
fi; \
for ARCH in $(ARCHES); do \
if [ -z "$(QUIET)" ]; then \
if [ "$$ARCH" != "$(firstword $(ARCHES))" ]; then \
say; \
fi; \
say "** ARCH: $$ARCH"; \
fi; \
if [ "$$ARCH" != "$(firstword $(ARCHES))" ]; then say; fi; \
say "** ARCH: $$ARCH"; \
if $(MAKE) -f main.mk ARCH=$$ARCH $@ $(POSTPROC); then \
if [ -n "$$REPORT" ]; then \
$(MAKE) -f reports.mk ARCH=$$ARCH; \
@@ -72,6 +65,3 @@ SHELL = /bin/bash
docs:
@$(MAKE) -C doc
docs-publish:
@$(MAKE) -C doc publish

View File

@@ -3,7 +3,7 @@ http://en.altlinux.org/Hasher; large tmpfs helps a lot).
требуется
~~~~~~~~~
- ALT Linux 7.0 или выше (возможна адаптация "вниз")
- ALT Linux 6.0 или выше (возможна адаптация "вниз")
- установленный mkimage (свежий, как и hasher)
- пользователь с правом запуска hasher
@@ -19,7 +19,7 @@ http://en.altlinux.org/Hasher; large tmpfs helps a lot).
~~~~~~~
от имени root::
----
# apt-get install mkimage mkimage-preinstall hasher git-core
# apt-get install mkimage hasher git-core
# hasher-useradd USER
----
@@ -27,10 +27,10 @@ http://en.altlinux.org/Hasher; large tmpfs helps a lot).
----
$ git config --global user.email "my@email"
$ git config --global user.name "My Name"
$ mkdir -p ~/out ~/tmp
$ mkdir ~/out
----
тестовая сборка (в каталоге mkimage-profiles)::
тестовая сборка::
----
$ make syslinux.iso
----
@@ -51,4 +51,3 @@ $ make ARCH=i586 APTCONF=~/apt/apt.conf.i586 REPORT=1 ve/generic.tar
- http://www.altlinux.org/hasher
- http://www.altlinux.org/mkimage
- http://www.altlinux.org/m-p
- http://www.altlinux.org/m-p-howto ("как поправить под себя")

12
README
View File

@@ -21,7 +21,7 @@
Особенности:
* метапрофиль при сборке может быть доступен только на чтение
* метапрофиль может быть полностью read-only при сборке
* для сборки подыскивается предпочтительно tmpfs
* в профиль копируются только нужные объекты;
он автономен относительно метапрофиля
@@ -36,9 +36,10 @@
Объекты:
* дистрибутивы и виртуальные среды/машины:
** описываются в conf.d/*.mk
** описываются в conf.d/*.mk или соответственно lib/{distro,ve,vm}.mk
** могут основываться на предшественниках, расширяя их
** дистрибутивы также включают один или более субпрофилей по надобности
** дистрибутивы также:
*** включают один или более субпрофилей по надобности
** желательно избегать множественного наследования, см. тж. фичи
* субпрофили:
** список собирается в $(SUBPROFILES)
@@ -65,15 +66,12 @@
См. тж.:
* http://altlinux.org/m-p: обзорная документация, в т.ч. howto
* http://altlinux.org/m-p
* doc/:
** params.txt: переменные, указываемые при запуске сборки
** pkglists.txt: формирование состава образа
** features.txt: обзор подключаемых особенностей
Примечание: пути в документации задаются от каталога верхнего уровня,
если не указаны как относительные в явном виде (./) или по смыслу.
Удачи; что не так -- пишите.
Michael Shigorin <mike@altlinux.org>

View File

@@ -45,7 +45,7 @@ choose_tmpdir() {
echo -n "$i "
df -PT "$i" | tail -1
done \
| sort -unk5 \
| sort -unk6 \
| while read dir dev fstype size used free percent mnt; do
check_options "$dev" "$mnt" || continue
[ "$free" -gt "$MINSIZE" ] || continue

View File

@@ -21,7 +21,7 @@ while read first second third rest; do
for to in $TO; do
out=" \"$FROM\" -> \"$to\""
case $to in
*distro/*|*vm/*)
*distro/*)
echo "$out [weight=10];";;
*)
echo "$out";;

View File

@@ -30,7 +30,4 @@ transformed="$(sed \
-e "s, *) *, ) ,g")"
[ "$DEBUG" = 2 ] && echo "`basename $0`: transformed = \"$transformed\"" >&2
[ -z "$transformed" ] ||
find $transformed \
| sed 's,^\./,,' \
| egrep -v '(\.sw.|~)$'
[ -z "$transformed" ] || find $transformed | sed 's,^\./,,' | grep -v '\.sw.$'

View File

@@ -1,248 +0,0 @@
#!/bin/bash -ex
# usage:
# tar2fs chroot.tar image.raw [size_in_bytes [fstype]]
. shell-error
export LANG=C
if [ $# -lt 2 ]; then
fatal "error: tar2fs 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"
MB=1048576 # a parted's "megabyte" in bytes is *broken*
SIZE_FACTOR=2 # multiply the sizes found by this value
BOOT_SIZE_FACTOR=2 # multiply /boot size by this value additionally
CUR_BOUNDARY=0 # align first partition at 1MB for performance (+1)
INITRD_MODULES=
BOOTFSTYPE=
BOOTPART=
case "`arch`" in # NB: sudo => no GLOBAL_ will do either; mind qemu-*
*86*)
# NB: different storage modules might be needed for non-kvm
INITRD_MODULES="sd_mod ata_piix ahci"
BLOCKDEV="/dev/sda" # might be /dev/vda for virtio
ROOTPART="1"
;;
arm*)
BOOTFSTYPE="ext2" # support expected in every sane target uboot
BLOCKDEV="/dev/mmcblk0p" # ...hopefully...
BOOTPART="1"
ROOTPART="2"
;;
esac
# figure out the part taken by /boot in the given tarball
boot_size() {
if [ -n "$BOOTPART" ]; then
tar tvf "$1" \
| awk ' \
BEGIN { sum=0 }
/^-.* \.\/boot\// { sum=sum+$3 }
END { print sum }'
else
echo "0"
fi
}
# parted wrapper for convenience
parting() { parted "$LOOPDEV" --align optimal --script -- "$@"; }
# unfortunately parted is insane enough to lump alignment controls
# into unit controls so creating adjacent partitions sized in MiB
# is not as straightforward as it might be... thus "+1" padding;
# see also http://www.gnu.org/software/parted/manual/parted.html#unit
mkpart() {
# a bit different start/end semantics to handle end of device too
local start="$(($CUR_BOUNDARY + 1))" # yes, we lose a megabyte
if [ -n "$1" ]; then
CUR_BOUNDARY="$(($start + $1))"
local end="$CUR_BOUNDARY"MiB
else
local end="-1s" # last sector of the image
fi
parting mkpart primary ext2 "$start"MiB "$end"
}
# 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"
# 0 means auto; if a value is specified it holds (no /boot subtracted)
ROOTSIZE="$3"
[ -n "$ROOTSIZE" -a "$ROOTSIZE" != 0 ] || unset ROOTSIZE
# image size in bytes
TARSIZE="$(stat -Lc %s "$TAR")"
# /boot size in that tarball
BOOTSIZE="$(boot_size "$TAR")"
DEFSIZE="$(($SIZE_FACTOR * ($TARSIZE - $BOOTSIZE)))" # (exact sizes)
ROOTSIZE="$((${ROOTSIZE:-$DEFSIZE} + $MB - 1))" # for ceil rounding to MB
# image and /boot sizes in megabytes
ROOTSIZEM="$(($ROOTSIZE / $MB))"
BOOTSIZEM="$((($SIZE_FACTOR * $BOOT_SIZE_FACTOR * $BOOTSIZE + $MB - 1) / $MB))"
# tested to work: ext[234], jfs
# NB: xfs doesn't have a spare sector for the bootloader
ROOTFSTYPE="${4:-ext4}"
# single root partition hardwired so far,
# add another image for home/data/swap if needed
ROOTDEV="$BLOCKDEV$ROOTPART"
# last preparations...
MKFS="mkfs.$ROOTFSTYPE ${BOOTFSTYPE:+mkfs.$BOOTFSTYPE}"
for i in losetup sfdisk parted kpartx $MKFS; do
if ! type -t "$i" >&/dev/null; then
fatal "$i required but not found in host system"
fi
done
LOOPDEV="$(losetup --find)" # would be sad about non-binary megabytes too
ROOTFS="$WORKDIR/chroot"
BOOTFS=
if [ -n "$BOOTPART" ]; then
BOOTFS="$ROOTFS/boot"
fi
exit_handler() {
rc=$?
if [ -n "$ROOTFS" ]; then
umount ${BOOTFS:+"$BOOTFS"} "$ROOTFS"{/dev,/proc,/sys,}
if [ -n "$LOOPDEV" ]; then
kpartx -d -s "$LOOPDEV"
losetup --detach "$LOOPDEV"
fi
rm -r -- "$ROOTFS"
rmdir -- "$WORKDIR"
fi
exit $rc
}
# handle -e in shebang as well
trap exit_handler EXIT ERR
# prepare disk image and a filesystem inside it
rm -f -- "$IMG"
OFFSET="$(($CUR_BOUNDARY + $BOOTSIZEM + $ROOTSIZEM - 1))"
dd if=/dev/zero of="$IMG" conv=notrunc bs=$MB count=1 seek="$OFFSET"
losetup "$LOOPDEV" "$IMG"
parting mklabel msdos
if [ -n "$BOOTPART" ]; then
BOOTDEV="$BLOCKDEV$BOOTPART"
mkpart "$BOOTSIZEM"
fi
# not ROOTSIZEM but "the rest"; somewhat non-trivial arithmetics lurk in parted
mkpart
kpartx -a -s "$LOOPDEV"
LOOPROOT="/dev/mapper/$(basename "$LOOPDEV")p$ROOTPART"
mkfs."$ROOTFSTYPE" "$LOOPROOT"
if [ -n "$BOOTPART" ]; then
LOOPBOOT="/dev/mapper/$(basename "$LOOPDEV")p$BOOTPART"
mkfs."$BOOTFSTYPE" "$LOOPBOOT"
fi
ROOTUUID="$(blkid -s UUID -o value -c /dev/null "$LOOPROOT")"
if [ -n "$ROOTUUID" ]; then
ROOTDEV="UUID=$ROOTUUID"
else
ROOTDEV="$LOOPROOT"
fi
if [ -n "$BOOTPART" ]; then
BOOTUUID="$(blkid -s UUID -o value -c /dev/null "$LOOPBOOT")"
if [ -n "$ROOTUUID" ]; then
BOOTDEV="UUID=$BOOTUUID"
fi
fi
# mount and populate it
mkdir -pm755 "$ROOTFS"
mount "$LOOPROOT" "$ROOTFS"
if [ -n "$BOOTPART" ]; then
mkdir -pm700 "$BOOTFS"
mount "$LOOPBOOT" "$BOOTFS"
fi
tar -C "$ROOTFS" --numeric-owner -xf "$TAR"
for i in /dev /proc /sys; do mount --bind "$i" "$ROOTFS$i"; done
# loop device so lilo could work...
echo "$ROOTDEV / $ROOTFSTYPE relatime 1 1" >> "$ROOTFS/etc/fstab"
# target device at once
if [ -n "$BOOTPART" ]; then
echo "$BOOTDEV /boot $BOOTFSTYPE defaults 1 2" >> "$ROOTFS/etc/fstab"
fi
echo "MODULES_PRELOAD += $INITRD_MODULES $ROOTFSTYPE" >> "$ROOTFS/etc/initrd.mk"
KERNEL="$(readlink $ROOTFS/boot/vmlinuz | sed 's,vmlinuz-,,')"
chroot "$ROOTFS" make-initrd -k "$KERNEL"
# ...target device too
sed -i "s,$LOOPROOT,$ROOTDEV," "$ROOTFS/etc/fstab"
if [ -x "$ROOTFS"/sbin/lilo ]; then
# configure and install bootloader
REGEXP='^.*: ([0-9]+) cylinders, ([0-9]+) heads, ([0-9]+) sectors/track*$'
set -- $(sfdisk -g "$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 quiet\"
label=linux"
cat > "$ROOTFS"/etc/lilo-loop.conf <<-EOF
boot=$LOOPDEV
disk=$LOOPDEV
bios=0x80
cylinders=$1
heads=$2
sectors=$3
partition=$LOOPROOT
start=63
$LILO_COMMON
EOF
chroot "$ROOTFS" lilo -C /etc/lilo-loop.conf
cat > "$ROOTFS"/etc/lilo.conf <<-EOF
boot=$BLOCKDEV
$LILO_COMMON
EOF
fi
if [ -n "$SUDO_USER" ]; then
chown "$SUDO_USER" "$IMG" "$ROOTFS" "$WORKDIR"
fi

134
bin/tar2vm Executable file
View File

@@ -0,0 +1,134 @@
#!/bin/bash -e
# usage:
# tar2vm chroot.tar image.raw [size_in_bytes]
. 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="$((2 * $TARSIZE))"
DISKSIZE="${3:-${DEFSIZE:-268435456}}"
# ...and in megabytes
DISKSIZEM="$(($DISKSIZE / 1048576))"
# tested to work: ext[234], jfs
# NB: xfs doesn't have a spare sector for the bootloader
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 sfdisk 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='^Disk .*: ([0-9]+) cylinders, ([0-9]+) heads, ([0-9]+) sectors/track*$'
set -- $(sfdisk -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
cylinders=$1
heads=$2
sectors=$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

@@ -12,13 +12,7 @@
Попросту говоря, copy-paste -- тревожный признак.
Вместо него нередко может помочь выделение кусочков конфигурации
в пределах включаемого файла в цели mixin/*, которые не являются
самостоятельными или даже промежуточными, но включают полезные
группы настроек, нужных в различных образах, не наследующих
друг другу -- посмотрите существующие примеры использования.
По переменным (см. тж. doc/pkglists.txt):
По переменным (см. тж. ../doc/pkglists.txt):
* для пользовательского окружения (live, main) предназначены
THE_PACKAGES, THE_LISTS, THE_GROUPS, THE_PACKAGES_REGEXP
@@ -29,7 +23,7 @@
* SYSTEM_PACKAGES стоит применять крайне осторожно -- эти пакеты попадут
во все стадии, в том числе в образ чувствительной к объёму install2
(в stage1 -- только в инструментальный чрут); применяйте для того,
что обязано быть и в инсталяторе, и в готовой системе (но не в rescue)
что обязано быть и в инсталяторе, и в готовой системе
* для направленного действия служат:
** STAGE1_PACKAGES, STAGE1_PACKAGES_REGEXP (первая стадия загрузки)

View File

@@ -1,93 +0,0 @@
ifeq (armh,$(ARCH))
ifeq (ve,$(IMAGE_CLASS))
# aliases for autobuild
ve/regular-nexus7-e17: ve/nexus7-e17; @:
ve/regular-nexus7-kde4: ve/nexus7-kde4; @:
ve/altlinux-p7-nexus7-e17: ve/nexus7-e17; @:
ve/altlinux-p7-nexus7-kde4: ve/nexus7-kde4; @:
ve/.tegra3-base: ve/.base use/armh use/kernel
@$(call add,BASE_PACKAGES,nvidia-tegra)
ve/.tegra3-tablet: ve/.tegra3-base use/armh-tegra3 +pulse
@$(call add,BASE_LISTS,$(call tags,base tablet))
ve/.nexus7-tablet: ve/.tegra3-tablet use/armh-nexus7 \
use/x11-autologin use/deflogin/altlinuxroot
@$(call set,KFLAVOURS,grouper) # fits tilapia just fine
@$(call set,BRANDING,altlinux-kdesktop) ### the only suitable so far
@$(call add,BASE_PACKAGES,mkinitrd) ### rootsubdir support
@$(call add,BASE_PACKAGES,firmware-nexus7)
@$(call add,BASE_PACKAGES,livecd-ru) ### until l10n is there
ve/nexus7-e17: ve/.nexus7-tablet use/x11/e17 use/x11/lightdm/gtk; @:
ve/nexus7-kde4: ve/.nexus7-tablet use/x11/lightdm/kde +systemd +pulse +nm
@$(call add,BASE_LISTS,$(call tags,base kde4mobile))
ve/nexus7-xfce: ve/.nexus7-tablet use/x11/xfce use/x11/lightdm/gtk +systemd
@$(call add,BASE_PACKAGES,florence at-spi2-atk)
endif
ifeq (vm,$(IMAGE_CLASS))
# NB: early dependency on use/kernel is on intent
vm/.arm-base: profile/bare use/kernel use/net-eth/dhcp use/net-ssh; @:
@$(call add,BASE_PACKAGES,interactivesystem e2fsprogs)
@$(call add,BASE_PACKAGES,apt)
@$(call add,BASE_PACKAGES,mkinitrd uboot-tools)
@$(call set,BRANDING,altlinux-kdesktop)
vm/.cubox-bare: vm/.arm-base use/armh-cubox use/net-ssh use/repo use/tty/S0
@$(call add,BASE_PACKAGES,glibc-locales vim-console rsync)
vm/.cubox-desktop: vm/.cubox-bare use/armh-dovefb +systemd +pulse \
use/armh-cubox use/branding use/xdg-user-dirs/deep \
use/fonts/otf/adobe use/fonts/ttf/redhat use/fonts/ttf/ubuntu
@$(call set,BRANDING,altlinux-kdesktop)
@$(call add,THE_BRANDING,alterator graphics indexhtml menu notes)
@$(call add,BASE_PACKAGES,parole gst-ffmpeg gst-plugins-vmeta)
@$(call add,BASE_PACKAGES,gst-plugins-good gst-plugins-nice)
@$(call add,BASE_PACKAGES,gst-plugins-bad gst-plugins-ugly)
@$(call add,BASE_PACKAGES,LibreOffice4-full LibreOffice4-langpack-ru)
@$(call add,BASE_LISTS,$(call tags,(base || desktop) && regular))
vm/cubox-xfce-ru: vm/.cubox-desktop use/deflogin/altlinuxroot \
use/slinux/arm use/x11/lightdm/gtk use/x11-autologin +nm
@$(call add,BASE_PACKAGES,livecd-ru)
# these images use a kind of OEM setup
vm/.cubox-oem: vm/.cubox-desktop use/oem; @:
vm/.cubox-gtk: vm/.cubox-oem use/x11/lightdm/gtk +nm; @:
vm/cubox-xfce: vm/.cubox-gtk \
use/slinux/arm use/net-usershares use/domain-client; @:
vm/cubox-mate: vm/.cubox-gtk use/x11/mate; @:
@$(call set,BRANDING,altlinux-centaurus)
@$(call add,THE_BRANDING,mate-settings)
vm/cubox-tde: vm/.cubox-oem use/net-eth/dhcp use/x11-autostart +tde
@$(call add,BASE_LISTS,openscada)
vm/cubox-kde4: vm/.cubox-oem use/x11/kde4 use/x11/kdm4 use/fonts/zerg +pulse
@$(call add,BASE_LISTS,$(call tags,desktop && kde4 && !extra))
vm/cubox-server: vm/.cubox-bare use/deflogin/altlinuxroot use/control/sudo-su \
+sysvinit
@$(call set,BRANDING,altlinux-centaurus)
@$(call add,BASE_PACKAGES,agetty fdisk)
@$(call add,BASE_LISTS,$(call tags,base security))
vm/arm-server: vm/.arm-base use/net-eth/dhcp use/cleanup/installer +sysvinit
@$(call set,KFLAVOURS,armadaxp)
@$(call add,BASE_PACKAGES,agetty)
@$(call add,BASE_LISTS,$(call tags,extra (server || network)))
endif
endif

View File

@@ -6,20 +6,16 @@ distro/.desktop-base: distro/.installer use/syslinux/ui/vesamenu use/x11/xorg
distro/.desktop-mini: distro/.desktop-base use/x11/xdm +power; @:
mixin/desktop-installer: use/x11-autostart use/sound +net-eth +vmguest
distro/.desktop-network: distro/.desktop-mini use/stage2/net-eth +vmguest
@$(call add,SYSTEM_PACKAGES,fonts-ttf-google-croscore-arimo)
@$(call add,BASE_PACKAGES,udev-rule-generator-net sysklogd)
@$(call add,BASE_LISTS, \
$(call tags,(base || desktop) && (l10n || network)))
@$(call add,INSTALL2_PACKAGES,ntfs-3g)
@$(call add,BASE_PACKAGES,os-prober)
distro/.desktop-network: distro/.desktop-mini mixin/desktop-installer; @:
distro/.desktop-extra:
@$(call add,BASE_LISTS,$(call tags,(archive || base) && (extra)))
distro/kde4-lite: distro/.desktop-mini \
distro/.desktop-network distro/.desktop-extra +kde4-lite
distro/kde4-lite: distro/.desktop-mini distro/.desktop-network distro/.desktop-extra +kde4-lite
@$(call set,KFLAVOURS,std-def)
distro/tde: distro/.desktop-network +tde; @:

View File

@@ -1,6 +1,6 @@
ifeq (distro,$(IMAGE_CLASS))
distro/homeros-mini: distro/.live-base use/live/textinstall \
use/homeros use/speech/en use/isohybrid; @:
distro/homeros-mini: distro/.live-base use/live/textinstall use/homeros; @:
endif

View File

@@ -6,135 +6,89 @@ distro/dos: distro/.init use/dos use/syslinux/ui/menu; @:
distro/rescue: distro/.base use/rescue use/syslinux/ui/menu \
use/efi/signed use/efi/refind use/efi/shell; @:
distro/rescue-remote: distro/.base use/rescue/base use/stage2/net-eth
@$(call set,SYSLINUX_CFG,rescue_remote)
@$(call set,SYSLINUX_DIRECT,1)
@$(call add,RESCUE_PACKAGES,livecd-net-eth)
distro/syslinux: distro/.init \
use/syslinux/localboot.cfg use/syslinux/ui/vesamenu use/hdt; @:
distro/.live-base: distro/.base use/live/base use/power/acpi/button; @:
distro/.live-x11: distro/.live-base use/live/x11; @:
distro/.live-desktop: distro/.base +live use/live/install use/stage2/net-eth \
use/plymouth/live; @:
use/plymouth/live use/efi; @:
distro/.live-desktop-ru: distro/.live-desktop use/live/ru; @:
distro/.live-kiosk: distro/.base use/live/base use/live/autologin \
use/syslinux/timeout/1 use/cleanup use/stage2/net-eth \
use/fonts/otf/adobe +power
distro/.live-kiosk: distro/.base use/live/base use/live/autologin +power \
use/syslinux/timeout/1 use/cleanup use/stage2/net-eth
@$(call add,LIVE_PACKAGES,fonts-ttf-dejavu)
@$(call add,CLEANUP_PACKAGES,'alterator*' 'guile*' 'vim-common')
@$(call set,SYSLINUX_CFG,live)
@$(call add,DEFAULT_SERVICES_DISABLE,rpcbind klogd syslogd)
@$(call add,DEFAULT_SERVICES_DISABLE,consolesaver fbsetfont keytable)
distro/live-builder-mini: distro/.live-base use/dev/builder/base \
use/syslinux/timeout/30 use/isohybrid \
use/stage2/net-eth use/net-eth/dhcp; @:
distro/live-builder-mini: distro/.live-base use/dev/mkimage use/dev \
use/syslinux/timeout/30
@$(call set,KFLAVOURS,$(BIGRAM))
@$(call add,LIVE_LISTS,\
$(call tags,(base || live) && (server || builder)))
@$(call add,LIVE_PACKAGES,livecd-qemu-arch strace)
@$(call add,LIVE_PACKAGES,qemu-user-binfmt_misc)
@$(call add,LIVE_PACKAGES,zsh sudo)
distro/live-builder: distro/live-builder-mini \
use/dev/builder/full use/live/rw +efi; @:
use/live/rw use/live/repo use/dev/repo
@$(call add,MAIN_LISTS,$(call tags,live builder))
@$(call add,MAIN_PACKAGES,syslinux pciids memtest86+ mkisofs)
distro/live-install: distro/.live-base use/live/textinstall; @:
distro/.livecd-install: distro/.live-base use/live/install; @:
distro/live-icewm: distro/.live-desktop use/x11/lightdm/gtk +icewm; @:
distro/live-razorqt: distro/.live-desktop +razorqt; @:
distro/live-tde: distro/.live-desktop-ru use/live/install +tde; @:
distro/live-fvwm: distro/.live-desktop-ru use/x11/lightdm/gtk use/x11/fvwm; @:
distro/live-rescue: distro/live-icewm +efi
distro/live-rescue: distro/live-icewm use/efi
@$(call add,LIVE_LISTS,$(call tags,rescue && (fs || live || x11)))
@$(call add,LIVE_LISTS,openssh \
$(call tags,(base || extra) && (archive || rescue || network)))
# NB: this one doesn't include the browser, needs to be chosen downstream
distro/.live-webkiosk: distro/.live-kiosk \
use/isohybrid use/live/hooks use/live/ru use/sound
@$(call add,LIVE_LISTS,$(call tags,live desktop))
distro/.live-webkiosk-gtk: distro/.live-webkiosk
distro/.live-webkiosk: distro/.live-kiosk use/live/hooks use/live/ru
@$(call add,LIVE_LISTS,$(call tags,desktop && (live || network)))
@$(call add,LIVE_PACKAGES,alsa-utils udev-alsa)
@$(call add,CLEANUP_PACKAGES,'libqt4*' 'qt4*')
# kiosk users rather prefer stability to latest bling
distro/live-webkiosk-mini: distro/.live-webkiosk-gtk \
use/browser/firefox/esr use/fonts/otf/mozilla
distro/live-webkiosk-mini: distro/.live-webkiosk
@$(call add,LIVE_PACKAGES,livecd-webkiosk-firefox)
# NB: flash/java plugins are predictable security holes
distro/live-webkiosk-flash: distro/live-webkiosk-mini use/plymouth/live \
use/browser/plugin/flash use/browser/plugin/java +vmguest; @:
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)
distro/live-webkiosk: distro/live-webkiosk-mini use/live/desktop; @:
distro/live-webkiosk-chromium: distro/.live-webkiosk use/fonts/ttf/google +efi
distro/live-webkiosk-chromium: distro/.live-webkiosk
@$(call add,LIVE_PACKAGES,livecd-webkiosk-chromium)
distro/live-webkiosk-seamonkey: distro/.live-webkiosk use/fonts/ttf/google
@$(call add,LIVE_PACKAGES,livecd-webkiosk-seamonkey)
distro/live-webkiosk-qupzilla: distro/.live-webkiosk use/fonts/otf/mozilla
@$(call add,LIVE_PACKAGES,livecd-webkiosk-qupzilla)
distro/.live-3d: distro/.live-x11 use/x11/3d \
use/x11/lightdm/gtk +icewm +sysvinit
@$(call add,LIVE_PACKAGES,glxgears glxinfo)
distro/live-glxgears: distro/.live-3d; @:
distro/.live-games: distro/.live-kiosk use/x11/3d use/sound \
use/stage2/net-eth use/net-eth/dhcp use/services +efi +sysvinit
@$(call set,KFLAVOURS,un-def)
@$(call add,LIVE_LISTS,$(call tags,xorg misc))
@$(call add,LIVE_PACKAGES,input-utils glxgears glxinfo)
@$(call add,DEFAULT_SERVICES_DISABLE,rpcbind alteratord messagebus)
@$(call add,SERVICES_DISABLE,livecd-net-eth)
distro/live-flightgear: distro/.live-games
@$(call add,LIVE_PACKAGES,FlightGear FlightGear-tu154b)
@$(call add,LIVE_PACKAGES,fgo livecd-fgfs)
distro/live-flightgear: distro/live-icewm use/live/sound use/x11/3d-proprietary
@$(call add,LIVE_PACKAGES,FlightGear fgo input-utils)
@$(call try,HOMEPAGE,http://www.4p8.com/eric.brasseur/flight_simulator_tutorial.html)
distro/live-0ad: distro/.live-games
@$(call add,STAGE2_BOOTARGS,quiet)
@$(call add,LIVE_PACKAGES,0ad livecd-0ad)
@$(call try,HOMEPAGE,http://play0ad.com/)
distro/live-gnome: distro/.live-desktop-ru use/systemd use/live/nodm use/x11/3d-proprietary
@$(call add,LIVE_PACKAGES,gnome3-default)
distro/live-e17: distro/.live-desktop-ru use/x11/e17 use/x11/lightdm/gtk; @:
distro/live-cinnamon: distro/.live-desktop-ru use/live/autologin \
use/x11/cinnamon use/x11/3d-proprietary; @:
distro/live-gimp: distro/live-icewm use/live/ru
@$(call add,LIVE_LISTS,$(call tags,desktop sane))
distro/live-mate: distro/.live-desktop-ru use/live/nodm use/x11/3d-free
@$(call add,LIVE_LISTS,openssh $(call tags,(desktop || mobile) && mate))
@$(call set,KFLAVOURS,un-def) # the newest one
distro/live-e17: distro/.live-desktop-ru use/live/autologin \
use/x11/e17 use/x11/gdm2.20; @:
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,darktable geeqie rawstudio ufraw)
@$(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 usbutils)
@$(call add,LIVE_PACKAGES,qtfm openssh-clients rsync)
@$(call add,LIVE_PACKAGES,design-graphics-sisyphus2)
distro/live-robo: distro/live-icewm +robotics use/live/ru; @:
# NB: use/browser won't do as it provides a *single* browser ATM
distro/live-privacy: distro/.base +power +efi +systemd +vmguest \
use/live/base use/live/privacy use/live/ru \
use/x11/xorg use/x11/lightdm/gtk use/x11/mate use/x11-autologin \
use/browser/firefox/i18n use/sound \
use/fonts/otf/adobe use/fonts/otf/mozilla \
use/fonts/ttf/google use/fonts/ttf/redhat
@$(call set,KFLAVOURS,un-def)
@$(call add,LIVE_LISTS,$(call tags,base l10n))
@$(call add,LIVE_LISTS,$(call tags,archive extra))
@$(call add,LIVE_PACKAGES,chromium gedit mc-full pinta xchm livecd-ru)
@$(call add,LIVE_PACKAGES,LibreOffice4-langpack-ru java-1.7.0-openjdk)
@$(call add,LIVE_PACKAGES,mate-document-viewer-caja)
@$(call add,LIVE_PACKAGES,mate-document-viewer-djvu)
@$(call add,LIVE_PACKAGES,cups system-config-printer livecd-admin-cups)
@$(call add,LIVE_KMODULES,staging)
@$(call add,DEFAULT_SERVICES_ENABLE,cups)
@$(call add,EFI_BOOTARGS,live_rw)
distro/live-privacy-dev: distro/live-privacy use/live/rw use/live/repo \
use/dev/repo use/dev/mkimage use/dev use/control/sudo-su
@$(call add,LIVE_LISTS,$(call tags,(base || live) && builder))
@$(call add,MAIN_LISTS,$(call tags,live builder))
@$(call add,MAIN_PACKAGES,syslinux mkisofs)
distro/live-sugar: distro/.live-desktop-ru use/x11/sugar; @:
endif

View File

@@ -1,46 +1,20 @@
# p7 base kits
mixin/p7: use/browser/firefox/esr
@$(call set,BRANDING,altlinux-starterkit)
ifeq (distro,$(IMAGE_CLASS))
### kludge compatibility: introspection stub for main.mk :-/
mixin/p7:
@$(call set,BRANDING,altlinux-starterkit)
### kludge compatibility: introspection stub for ../main.mk :-/
distro/altlinux-p7-cinnamon: distro/regular-cinnamon mixin/p7; @:
distro/altlinux-p7-e17: distro/regular-e17 mixin/p7; @:
distro/altlinux-p7-icewm: distro/regular-icewm mixin/p7; @:
distro/altlinux-p7-gnome3: distro/regular-gnome3 mixin/p7; @:
distro/altlinux-p7-gnustep: distro/regular-gnustep mixin/p7; @:
distro/altlinux-p7-kde4: distro/regular-kde4 mixin/p7; @:
distro/altlinux-p7-lxde: distro/regular-lxde mixin/p7; @:
distro/altlinux-p7-lxqt: distro/regular-lxqt mixin/p7; @:
distro/altlinux-p7-lxqt-sysv: distro/regular-lxqt-sysv mixin/p7; @:
distro/altlinux-p7-mate: distro/regular-mate mixin/p7; @:
distro/altlinux-p7-razorqt: distro/regular-razorqt mixin/p7; @:
distro/altlinux-p7-rescue: distro/regular-rescue mixin/p7; @:
distro/altlinux-p7-tde: distro/regular-tde mixin/p7; @:
distro/altlinux-p7-tde-sysv: distro/regular-tde-sysv mixin/p7; @:
distro/altlinux-p7-wmaker: distro/regular-wmaker mixin/p7; @:
distro/altlinux-p7-xfce: distro/regular-xfce mixin/p7; @:
distro/altlinux-p7-xfce-sysv: distro/regular-xfce-sysv mixin/p7; @:
distro/altlinux-p7-sysv-tde: distro/regular-sysv-tde mixin/p7; @:
distro/altlinux-p7-jeos: distro/regular-jeos mixin/p7; @:
distro/altlinux-p7-server: distro/regular-server mixin/p7; @:
distro/altlinux-p7-server-ovz: distro/regular-server-ovz mixin/p7; @:
distro/altlinux-p7-server-hyperv: distro/regular-server-hyperv mixin/p7; @:
distro/altlinux-p7-server-samba4: distro/regular-server-samba4 mixin/p7; @:
distro/altlinux-p7-builder: distro/regular-builder mixin/p7; @:
endif
ifeq (ve,$(IMAGE_CLASS))
ve/altlinux-p7-ovz-generic: ve/generic mixin/p7; @:
ve/altlinux-p7-ovz-pgsql94: ve/pgsql94 mixin/p7; @:
endif
ifeq (vm,$(IMAGE_CLASS))
vm/altlinux-p7-vm-net: vm/net mixin/p7; @:
vm/altlinux-p7-vagrant: vm/vagrant-base mixin/p7; @:
endif

View File

@@ -1,258 +1,82 @@
# regular build/usage images
ifeq (distro,$(IMAGE_CLASS))
# common ground (really lowlevel)
distro/.regular-bare: distro/.base +net-eth use/kernel/net
# common ground
distro/.regular-bare: distro/.base +wireless use/efi/signed \
use/memtest use/stage2/net-eth use/kernel/net
@$(call try,SAVE_PROFILE,yes)
# base target (for most images)
distro/.regular-base: distro/.regular-bare use/memtest +efi; @:
# graphical target (not enforcing xorg drivers or blobs)
distro/.regular-x11: distro/.regular-base +vmguest +wireless \
use/live/x11 use/live/install use/live/suspend \
use/live/repo use/live/rw use/luks use/x11/wacom \
use/branding use/browser/firefox/live use/browser/firefox/i18n
# WM base target
distro/.regular-base: distro/.regular-bare +vmguest +live \
use/live/ru use/live/install use/live/repo use/live/rw \
use/luks use/x11/3d-free use/branding
@$(call add,LIVE_LISTS,$(call tags,(base || desktop) && regular))
@$(call add,LIVE_LISTS,$(call tags,base rescue))
@$(call add,LIVE_PACKAGES,gpm livecd-install-apt-cache)
@$(call add,DEFAULT_SERVICES_ENABLE,gpm)
@$(call add,EFI_BOOTARGS,live_rw)
# common WM live/installer bits
mixin/regular-desktop: use/x11/xorg use/sound use/xdg-user-dirs
@$(call add,THE_PACKAGES,installer-feature-desktop-other-fs-stage2)
@$(call add,THE_PACKAGES,alterator-notes)
@$(call add,THE_BRANDING,alterator graphics indexhtml notes)
# WM base target
distro/.regular-wm: distro/.regular-x11 mixin/regular-desktop
@$(call add,LIVE_PACKAGES,installer-feature-desktop-other-fs-stage2)
@$(call add,THE_BRANDING,indexhtml notes alterator)
@$(call add,THE_BRANDING,graphics)
# DE base target
# TODO: use/plymouth/live when luks+plymouth is done, see also #28255
distro/.regular-desktop: distro/.regular-wm \
use/syslinux/ui/gfxboot use/firmware/laptop use/efi/refind +systemd
distro/.regular-desktop: distro/.regular-base \
use/systemd use/syslinux/ui/gfxboot use/firmware/laptop use/efi/refind
@$(call add,LIVE_PACKAGES,fuse-exfat)
@$(call add,LIVE_LISTS,domain-client)
@$(call add,THE_BRANDING,bootloader)
@$(call add,THE_PACKAGES,upower bluez)
@$(call add,DEFAULT_SERVICES_DISABLE,gssd idmapd krb5kdc rpcbind)
@$(call set,KFLAVOURS,std-def)
distro/.regular-gtk: distro/.regular-desktop use/x11/lightdm/gtk +plymouth; @:
distro/.regular-sysv: distro/.regular-wm +sysvinit; @:
distro/.regular-sysv-gtk: distro/.regular-sysv use/syslinux/ui/gfxboot \
use/x11/gdm2.20; @:
distro/.regular-install: distro/.regular-base +installer +sysvinit +power \
use/branding use/bootloader/grub use/luks \
use/install2/fs use/install2/vnc use/install2/repo
@$(call add,THE_LISTS,$(call tags,base regular))
@$(call add,INSTALL2_BRANDING,alterator notes)
@$(call add,THE_BRANDING,alterator)
# NB:
# - no +power or even use/power/acpi/button on intent
# - stock cleanup is not enough (or installer-common-stage3 deps soaring)
distro/regular-jeos: distro/.regular-bare use/isohybrid +sysvinit \
use/branding use/bootloader/lilo use/syslinux/lateboot.cfg \
use/install2/vmguest use/vmguest/base \
use/install2/repo use/install2/packages \
use/install2/cleanup/everything use/install2/cleanup/kernel/everything \
use/cleanup/x11-alterator use/net/etcnet use/power/acpi/button
@$(call add,BASE_KMODULES,guest scsi vboxguest)
@$(call set,INSTALLER,altlinux-generic)
@$(call add,INSTALL2_PACKAGES,volumes-profile-jeos)
@$(call add,INSTALL2_BRANDING,alterator notes)
@$(call add,THE_BRANDING,alterator) # just to be cleaned up later on
@$(call add,THE_PACKAGES,apt basesystem dhcpcd openssh vim-console)
@$(call add,THE_PACKAGES,bash-completion)
@# a *lot* of stray things get pulled in by alterator modules
@$(call add,CLEANUP_PACKAGES,libfreetype fontconfig)
@$(call add,CLEANUP_PACKAGES,'glib2*' libffi 'libltdl*')
@$(call add,CLEANUP_PACKAGES,liblcms libjpeg 'libpng*' 'libtiff*')
@$(call add,CLEANUP_PACKAGES,avahi-autoipd bridge-utils) # i-c-stage3
@$(call add,CLEANUP_PACKAGES,iw wpa_supplicant)
@$(call add,CLEANUP_PACKAGES,openssl libpcsclite)
@# fully fledged interactivesystem isn't needed here either
@$(call add,CLEANUP_PACKAGES,interactivesystem 'groff*' man stmpclean)
@$(call add,CLEANUP_PACKAGES,glibc-gconv-modules gettext)
@$(call add,CLEANUP_PACKAGES,console-scripts console-vt-tools 'kbd*')
@$(call add,CLEANUP_PACKAGES,libsystemd-journal libsystemd-login)
@$(call add,CLEANUP_PACKAGES,dbus libdbus libcap-ng)
@$(call add,STAGE2_BOOTARGS,quiet)
distro/.regular-install-x11: distro/.regular-install \
use/install2/suspend mixin/regular-desktop +vmguest +wireless
@$(call set,INSTALLER,altlinux-desktop)
@$(call add,THE_LISTS,$(call tags,regular desktop))
distro/regular-icewm: distro/.regular-sysv-gtk +icewm \
use/browser/seamonkey/i18n use/fonts/ttf/redhat
distro/regular-icewm: distro/.regular-base use/x11/lightdm/gtk +icewm
@$(call add,LIVE_LISTS,$(call tags,regular icewm))
@$(call add,LIVE_PACKAGES,gparted mnt winswitch xpra)
@$(call set,KFLAVOURS,un-def)
mixin/regular-wmaker: use/efi/refind use/syslinux/ui/gfxboot \
use/fonts/ttf/redhat use/x11/wmaker
distro/regular-wmaker: distro/.regular-desktop use/x11/lightdm/gtk \
use/x11/wmaker
@$(call add,LIVE_PACKAGES,livecd-install-wmaker)
@$(call add,LIVE_PACKAGES,installer-feature-no-xconsole-stage3)
@$(call add,MAIN_PACKAGES,wmgtemp wmhdaps wmpomme wmxkbru xxkb)
@$(call add,LIVE_PACKAGES,xxkb)
# wdm can't do autologin so add standalone one for livecd
distro/regular-wmaker: distro/.regular-sysv \
mixin/regular-wmaker use/live/autologin use/browser/seamonkey/i18n
@$(call add,LIVE_PACKAGES,wdm)
# gdm2.20 can reboot/halt with both sysvinit and systemd, and is slim
mixin/regular-gnustep: use/x11/gnustep use/x11/gdm2.20 use/mediacheck \
use/browser/firefox/classic
distro/regular-gnustep: distro/regular-wmaker use/x11/gnustep +plymouth
@$(call add,THE_BRANDING,graphics)
distro/regular-gnustep: distro/.regular-sysv \
mixin/regular-wmaker mixin/regular-gnustep; @:
distro/regular-gnustep-systemd: distro/.regular-wm +systemd \
mixin/regular-wmaker mixin/regular-gnustep; @:
distro/regular-xfce: distro/.regular-gtk use/x11/xfce; @:
distro/regular-xfce: distro/.regular-gtk \
use/x11/xfce use/domain-client/full use/browser/firefox/classic \
use/fonts/ttf/redhat use/x11/gtk/nm +nm; @:
distro/regular-xfce-sysv: distro/.regular-sysv-gtk \
use/init/sysv/polkit use/x11/xfce \
use/fonts/ttf/redhat use/fonts/otf/adobe use/fonts/otf/mozilla
@$(call set,KFLAVOURS,un-def)
@$(call add,LIVE_PACKAGES,xfce4-mixer pm-utils bc elinks mpg123)
distro/regular-lxde: distro/.regular-gtk use/x11/lxde use/fonts/infinality \
use/x11/gtk/nm use/im +nm
@$(call add,LIVE_LISTS,$(call tags,desktop gvfs))
distro/regular-lxde: distro/.regular-gtk use/x11/lxde use/fonts/infinality
@$(call add,LIVE_LISTS,$(call tags,desktop nm))
distro/regular-xmonad: distro/.regular-gtk use/x11/xmonad
@$(call add,LIVE_PACKAGES,livecd-regular-xmonad)
distro/regular-mate: distro/.regular-gtk +nm \
use/x11/mate use/fonts/ttf/google use/domain-client/full
@$(call add,LIVE_LISTS,$(call tags,mobile mate))
@$(call add,LIVE_LISTS,$(call tags,desktop sane))
distro/regular-mate: distro/.regular-gtk
@$(call add,LIVE_LISTS,$(call tags,(desktop || mobile) && (mate || nm)))
distro/regular-e17: distro/.regular-gtk use/x11/e17 use/fonts/infinality; @:
distro/regular-e19: distro/.regular-gtk use/x11/e19 use/fonts/infinality; @:
distro/regular-e19-sysv: distro/.regular-sysv-gtk use/x11/e19; @:
distro/regular-e17: distro/.regular-gtk use/x11/e17 use/fonts/infinality
@$(call add,LIVE_PACKAGES,xterm)
distro/regular-cinnamon: distro/.regular-gtk \
use/x11/cinnamon use/fonts/infinality use/net/nm/mmgui use/im
use/x11/cinnamon use/fonts/infinality
@$(call set,META_VOL_ID,ALT Linux $(IMAGE_NAME)) # see also #28271
@$(call set,KFLAVOURS,un-def)
# not .regular-gtk due to gdm vs lightdm
distro/regular-gnome3: distro/.regular-desktop +plymouth +nm \
use/x11/gnome3 use/browser/epiphany use/fonts/ttf/redhat
@$(call add,LIVE_PACKAGES_REGEXP,^setup-gnome3-done.*)
@$(call add,LIVE_PACKAGES,gnome3-regular xcalib templates)
distro/regular-gnome3: distro/.regular-desktop use/x11/gnome3 +plymouth; @:
# reusable bits
mixin/regular-tde: +tde \
use/syslinux/ui/gfxboot use/browser/firefox/classic use/fonts/ttf/redhat
@$(call add,THE_PACKAGES,kdeedu)
@$(call add,DEFAULT_SERVICES_DISABLE,upower bluez)
distro/regular-tde: distro/.regular-desktop +tde +plymouth
@$(call add,LIVE_LISTS,$(call tags,desktop nm))
@$(call add,LIVE_PACKAGES,kdegames kdeedu)
distro/regular-tde: distro/.regular-desktop mixin/regular-tde +plymouth \
use/x11/gtk/nm use/net/nm/mmgui
@$(call add,THE_LISTS,openscada)
distro/regular-kde4: distro/.regular-desktop use/x11/kde4 use/x11/kdm4 \
use/fonts/zerg +plymouth
@$(call add,LIVE_LISTS,$(call tags,regular kde4))
distro/regular-tde-sysv: distro/.regular-sysv mixin/regular-tde \
use/net-eth/dhcp use/efi/refind; @:
distro/regular-kde4: distro/.regular-desktop use/x11/kde4/nm use/x11/kdm4 \
use/browser/konqueror4 use/fonts/zerg use/domain-client/full \
use/net/nm/mmgui +pulse +plymouth
@$(call add,THE_LISTS,$(call tags,regular kde4))
@$(call add,THE_PACKAGES,volumes-profile-lite gparted)
@$(call add,DEFAULT_SERVICES_ENABLE,prefdm)
mixin/regular-lxqt: use/x11/lxqt use/x11/lightdm/lxqt \
use/net/connman use/browser/qupzilla +plymouth
@$(call add,THE_PACKAGES,qconnman-ui)
distro/regular-lxqt: distro/.regular-desktop mixin/regular-lxqt; @:
distro/regular-lxqt-sysv: distro/.regular-sysv mixin/regular-lxqt \
use/net-eth/dhcp use/efi/refind; @:
distro/regular-razorqt: distro/.regular-desktop +razorqt +plymouth; @:
distro/regular-sugar: distro/.regular-gtk use/x11/sugar; @:
distro/regular-leechcraft: distro/.regular-desktop \
use/x11/leechcraft use/x11/lightdm/lxqt +pulse; @:
distro/regular-kde5: distro/.regular-desktop \
use/x11/kde5 use/x11/sddm \
use/fonts/ttf/google use/fonts/ttf/redhat use/fonts/zerg \
+nm +pulse +plymouth
@$(call add,THE_PACKAGES,kde5-telepathy)
# NB: never ever use/syslinux/ui/gfxboot here as gfxboot mangles
# kernel cmdline resulting in method:disk instead of method:cdrom
# which will change propagator's behaviour to probe additional
# filesystems (ro but no loop) thus potentially writing to
# an unrecovered filesystem's journal
distro/regular-rescue: distro/.regular-base use/rescue/rw use/luks \
use/branding use/efi/refind use/efi/shell use/efi/memtest86 \
use/hdt use/syslinux/ui/menu use/syslinux/timeout/600 \
use/syslinux/rescue_fm.cfg use/syslinux/rescue_remote.cfg \
use/mediacheck test/rescue/no-x11 +wireless +sysvinit
distro/regular-rescue: distro/.regular-bare use/rescue/rw \
use/syslinux/ui/menu use/hdt use/efi/refind
@$(call set,KFLAVOURS,un-def)
@$(call add,RESCUE_PACKAGES,gpm livecd-net-eth)
@$(call add,RESCUE_LISTS,$(call tags,base smartcard))
distro/regular-sysv-tde: distro/.regular-install-x11 \
mixin/desktop-installer mixin/regular-tde use/install2/fs \
use/branding/complete use/branding/slideshow/once \
use/net-eth/dhcp use/efi/refind use/efi/shell use/rescue/base \
use/fonts/otf/adobe use/fonts/otf/mozilla
@$(call add,RESCUE_LISTS,$(call tags,rescue misc))
@$(call add,THE_LISTS,$(call tags,base desktop))
@$(call add,THE_LISTS,$(call tags,regular tde))
@$(call add,THE_PACKAGES,kpowersave)
@$(call add,MAIN_PACKAGES,anacron man-whatis usb-modeswitch)
distro/.regular-server: distro/.regular-install \
use/server/mini use/rescue/base use/cleanup/x11
@$(call add,THE_LISTS,$(call tags,regular server))
@$(call add,MAIN_PACKAGES,aptitude)
@$(call set,INSTALLER,altlinux-server)
@$(call add,CLEANUP_PACKAGES,qt4-common)
@$(call add,DEFAULT_SERVICES_DISABLE,bridge)
distro/regular-server: distro/.regular-server use/cleanup/x11-alterator; @:
distro/.regular-server-managed: distro/.regular-server
@$(call add,THE_PACKAGES,alterator-fbi)
@$(call add,THE_LISTS,$(call tags,server alterator))
@$(call add,DEFAULT_SERVICES_DISABLE,ahttpd alteratord)
distro/regular-server-ovz: distro/.regular-server-managed \
use/server/ovz use/server/groups/base
@$(call add,MAIN_GROUPS,vzstats)
distro/regular-server-hyperv: distro/.regular-server-managed
@$(call set,KFLAVOURS,un-def)
@$(call add,INSTALL2_PACKAGES,ntfs-3g)
@$(call add,THE_PACKAGES,hyperv-daemons)
@$(call add,DEFAULT_SERVICES_DISABLE,bridge cpufreq-simple)
distro/regular-builder: distro/.regular-bare \
use/dev/builder/full +sysvinit +efi +power \
use/live/base use/live/rw use/live/repo/online use/live/textinstall \
use/isohybrid use/syslinux/timeout/30 \
use/stage2/net-eth use/net-eth/dhcp
@$(call add,LIVE_PACKAGES,cifs-utils elinks lftp openssh wget)
@$(call add,LIVE_PACKAGES,bash-completion gpm screen tmux zsh)
@$(call add,LIVE_PACKAGES,ccache rpm-utils wodim)
@$(call add,DEFAULT_SERVICES_ENABLE,gpm)
distro/regular-server-samba4: distro/regular-server
@$(call add,THE_LISTS,$(call tags,server && (sambaAD || alterator)))
@$(call add,THE_PACKAGES,alterator-fbi alterator-dhcp bind-utils)
@$(call add,DEFAULT_SERVICES_DISABLE,smbd nmbd)
distro/regular-server: distro/.regular-bare +installer \
use/bootloader/grub use/firmware use/server/mini
@$(call add,THE_LISTS,$(call tags,(base || server) && regular))
endif

View File

@@ -5,20 +5,24 @@ distro/.server-base: distro/.installer use/syslinux/ui/menu use/memtest \
use/cleanup/x11-alterator
@$(call add,BASE_LISTS,server-base openssh)
distro/server-nano: distro/.server-base use/bootloader/lilo +power \
use/install2/cleanup/crypto use/install2/cleanup/vnc
distro/server-nano: distro/.server-base use/bootloader/lilo +power
@$(call add,BASE_LISTS,$(call tags,server network))
@$(call add,BASE_PACKAGES,dhcpcd cpio)
distro/server-mini: distro/.server-base +net-eth \
use/server/mini use/kernel/net use/efi use/power/acpi/button
@$(call set,INSTALLER,altlinux-server)
distro/server-mini: distro/.server-base use/server/mini use/kernel/net \
use/efi use/stage2/net-eth
@$(call add,BASE_PACKAGES,make-initrd-mdadm make-initrd-lvm)
distro/server-ovz: distro/server-mini use/server/ovz use/server/groups/base \
use/install2/net use/hdt use/rescue \
use/firmware/server use/firmware/cpu +wireless; @:
distro/server-zabbix: distro/server-mini use/server/zabbix; @:
distro/server-ovz: distro/server-mini use/install2/net use/hdt use/rescue \
use/firmware/server use/firmware/cpu use/power/acpi/button +wireless
@$(call set,STAGE1_KFLAVOUR,std-def)
@$(call set,KFLAVOURS,std-def ovz-el)
@$(call add,MAIN_KMODULES,ipset ipt-netflow opendpi pf_ring)
@$(call add,MAIN_KMODULES,xtables-addons) # t6/branch
@$(call add,MAIN_KMODULES,drbd83 kvm)
@$(call add,BASE_LISTS,ovz-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,monitoring diag-tools)
endif

View File

@@ -1,13 +0,0 @@
# t7 base kits
mixin/t7:
@$(call set,BRANDING,altlinux-starterkit) ### needs changing
ifeq (distro,$(IMAGE_CLASS))
distro/altlinux-t7-gnustep: distro/regular-gnustep mixin/t7; @:
distro/altlinux-t7-gnustep-systemd: distro/regular-gnustep-systemd mixin/t7; @:
distro/altlinux-t7-tde: distro/regular-tde mixin/t7; @:
distro/altlinux-t7-sysv-tde: distro/regular-sysv-tde mixin/t7; @:
endif

View File

@@ -6,9 +6,11 @@ ifeq (distro,$(IMAGE_CLASS))
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 +systemd; @:
distro/live-systemd: distro/.base use/live/base use/systemd; @:
distro/live-plymouth: distro/.live-base use/plymouth/live; @:
distro/live-mediacheck: distro/.base use/mediacheck +plymouth; @:
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)
@@ -17,22 +19,15 @@ distro/live-gns3: distro/live-icewm
@$(call add,LIVE_LISTS,gns3)
@$(call add,LIVE_KMODULES,kvm virtualbox)
# NB: requires runtime Server/ServerActive setup in zabbix_agentd.conf
distro/live-zabbix: distro/live-icewm use/net-eth
@$(call add,THE_PACKAGES,zabbix-agent)
@$(call add,DEFAULT_SERVICES_ENABLE,zabbix_agentd)
distro/icewm-efi: distro/icewm use/efi/debug use/firmware
@$(call add,INSTALL2_PACKAGES,strace)
distro/mate-kz: distro/regular-mate
distro/razorqt-kz: distro/regular-razorqt
@$(call set,GLOBAL_BOOT_LANG,kk_KZ)
@$(call add,LIVE_PACKAGES,hunspell-kk)
# a minimalistic systemd-based server installer
distro/server-systemd: distro/server-nano \
use/install2/repo use/cleanup/x11-alterator use/net/networkd +systemd
@$(call add,CLEANUP_PACKAGES,glib2 iw libpython libwireless)
distro/server-systemd: distro/server-mini use/systemd
@$(call set,KFLAVOURS,std-def)
distro/server-test: distro/server-mini use/relname
@$(call set,RELNAME,Test-Server)
@@ -41,33 +36,17 @@ distro/server-test: distro/server-mini use/relname
# NB: doesn't carry stage3 thus cannot use/bootloader
distro/netinst: distro/.base use/install2/net; @:
distro/propagator-test: distro/.base use/mediacheck
@$(call add,STAGE2_BOOTARGS,propagator-debug)
# 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-luks: distro/icewm use/luks; @:
distro/desktop-systemd: distro/icewm +systemd; @:
distro/desktop-systemd: distro/icewm use/systemd; @:
distro/desktop-plymouth: distro/icewm +plymouth; @:
distro/live-mate-systemd: distro/live-mate use/systemd use/live/install; @:
distro/server-efi: distro/server-mini use/efi/debug; @:
distro/server-zabbix: distro/server-mini use/server/zabbix use/net-eth
# a crop of images running stuff as PID 1
distro/bash: distro/.base use/pid1
@$(call add,STAGE1_PACKAGES,bash)
@$(call set,PID1_BIN,/bin/bash)
distro/vi: distro/.base use/pid1
@$(call add,STAGE1_PACKAGES,vim-minimal)
@$(call set,PID1_BIN,/bin/vi)
distro/emacs: distro/.base use/pid1
@$(call add,STAGE1_PACKAGES,mg)
@$(call set,PID1_BIN,/usr/bin/mg)
distro/elinks: distro/.base use/pid1/net
@$(call add,STAGE1_PACKAGES,elinks)
@$(call set,PID1_BIN,/usr/bin/elinks)
endif # IMAGE_CLASS: distro
ifeq (ve,$(IMAGE_CLASS))
@@ -94,8 +73,9 @@ endif # IMAGE_CLASS: ve
ifeq (vm,$(IMAGE_CLASS))
vm/net-static: vm/bare use/net-eth use/net-ssh
@$(call add,NET_ETH,eth0:static:10.0.2.16/24:10.0.2.2)
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

View File

@@ -1,36 +0,0 @@
ifeq (ve,$(IMAGE_CLASS))
# no "vzctl enter"
ve/bare: ve/.base +sysvinit; @:
# /dev/pty and friends start here
ve/base: ve/bare
@$(call add,BASE_PACKAGES,interactivesystem)
# a particular package list
ve/ldv: ve/bare
@$(call add,BASE_PACKAGES,xz bzip2 glibc hostinfo less)
@$(call add,BASE_PACKAGES,vim-console netlist rsync time)
@$(call add,BASE_PACKAGES,openssh-blacklist openssh-server)
@$(call add,BASE_PACKAGES,shadow-edit shadow-groups)
ve/docker: ve/.base use/repo; @:
# this should be more or less convenient
ve/generic: ve/base use/repo
@$(call add,BASE_PACKAGES,vim-console etckeeper)
@$(call add,BASE_LISTS,openssh \
$(call tags,base && (server || network || security || pkg)))
# example of service-specific template
ve/openvpn: ve/bare
@$(call add,BASE_LISTS,$(call tags,server openvpn))
ve/pgsql94: ve/generic
@$(call add,BASE_PACKAGES,postgresql9.4-server)
ve/systemd-bare: ve/.base use/control/sudo-su use/repo use/net/networkd +systemd
@$(call add,BASE_PACKAGES,interactivesystem su)
@$(call add,BASE_LISTS,openssh)
endif

View File

@@ -1,32 +1,9 @@
# virtual machines
ifeq (vm,$(IMAGE_CLASS))
# NB: interactivesystem pulls in network-config-subsystem anyways
vm/bare: vm/.bare +sysvinit
@$(call add,BASE_PACKAGES,apt)
# handle ROOTPW (through deflogin)
vm/net: vm/bare use/net-eth/dhcp use/net-ssh \
use/repo use/control/sudo-su use/deflogin
@$(call add,BASE_PACKAGES,su)
vm/net: vm/bare use/vm-net/dhcp use/vm-ssh; @:
# NB: use/x11 employs some installer-feature packages
vm/.desktop-bare: vm/net use/x11/xorg use/cleanup/installer use/repo; @:
vm/.desktop-base: vm/.desktop-bare \
use/deflogin/altlinuxroot use/x11-autologin; @:
mixin/icewm: use/x11/lightdm/gtk +icewm; @:
vm/icewm: vm/.desktop-base mixin/icewm; @:
vm/icewm-setup: vm/.desktop-bare mixin/icewm use/oem use/x11-autostart
@$(call set,BRANDING,simply-linux)
@$(call add,THE_BRANDING,graphics)
@$(call add,THE_LISTS,$(call tags,base l10n))
# some arbitrary gigabyte
vm/vagrant-base: vm/net use/vagrant
@$(call set,VM_SIZE,10737418240)
vm/icewm: vm/net use/cleanup/installer use/repo +icewm; @:
endif

View File

@@ -8,9 +8,6 @@ ifdef DEBUG
VERBOSE = --verbose
endif
# avoid common DEBUG for the time being
-include $(HOME)/.mkimage/profiles.mk
PROJECT = mkimage-profiles
TOPLEVEL_DOC = $(PROJECT).asciidoc
RESOURCE_FILES = /etc/asciidoc
@@ -27,22 +24,10 @@ COMMON_ARGS = -d book -a lang="$L" $(DEST) $(VERBOSE) $(TOPLEVEL_DOC)
HTML_ARGS = -a data-uri --icons -r $(RESOURCE_FILES) -r . \
--xsltproc-opts='$(XSLT_ARGS)' $(COMMON_ARGS)
# most convenient deliverables
DOCS_OUT = $(PROJECT).pdf $(PROJECT).html docbook-xsl.css
# intermediate files
DOCS_TMP = $(PROJECT).fo $(PROJECT).xml
.PHONY: all prep chunked xhtml pdf clean
all: chunked xhtml pdf
# NB: destination defined externally
publish: all
@if [ -n "$(DOCS_PUBLISH)" ]; then \
rsync -qa $(DOCS_OUT) "$(DOCS_PUBLISH)"; \
fi
prep:
@if [ -n "$(BUILDDIR)" ]; then mkdir -p "$(BUILDDIR)"; fi
@@ -61,4 +46,5 @@ pdf: prep
clean:
@echo "** cleaning up"
@if [ -d "$(BUILDDIR)" ]; then cd "$(BUILDDIR)"; fi; \
rm -rf $(DOCS_OUT) $(DOCS_TMP) $(PROJECT).chunked/ .fop.xconf
rm -f $(PROJECT).pdf $(PROJECT).html docbook-xsl.css; \
rm -rf $(PROJECT).chunked/

View File

@@ -1,46 +0,0 @@
== Архитектурно-зависимые фрагменты ==
=== Makefile ===
Достаточно воспользоваться ifeq/ifneq, сравнивая $(ARCH) с нужным:
ifeq (x86_64,$(ARCH))
EFI_LISTS := $(call tags,base efi)
endif
При необходимости сравнить со списком ("любой x86") можно сделать так:
ifeq (,$(filter-out i586 x86_64,$(ARCH)))
use/x11/xorg: use/x11 use/x11/intel use/firmware
else
use/x11/xorg: use/x11
endif
В рецептах (shell-часть Makefile) используйте $(ARCH) или $$ARCH.
=== скрипты ===
В скриптовых хуках ({image-,}scripts.d/*) проверяйте $GLOBAL_ARCH.
=== списки пакетов ===
Бывает так, что в списке пакетов есть смысл упоминать какой-либо из них
только для определённой архитектуры (например, wine или steam); в таких
случаях можно воспользоваться механизмом подстановки, который пословно
обрабатывает списки и в случае наличия суффикса @ARCH оставляет только
слова, в которых этот суффикс соответствует заданной архитектуре сборки.
Например, для Simply Linux в mkimage-profiles-desktop есть строчки:
@I586_ONLY@haspd
@X86_64_ONLY@i586-haspd
В случае mkimage-profiles они должны выглядеть так:
haspd@i586
i586-haspd@x86_64
Для преобразования можно воспользоваться следующей командой:
sed -r -e 's/@I586_ONLY@([^\t ]+)/\1@i586/g' \
-e 's/@X86_64_ONLY@([^\t ]+)/\1@x86_64/g'

View File

@@ -4,7 +4,7 @@
других частей mkimage-profiles либо содержание переменных.
NB: пути приводятся от верхнего уровня; проект в целом предполагает
ALT Linux 7.0+ и GNU make 3.82+ (на которых и разрабатывается),
ALT Linux 6.0+ и GNU make 3.81+ (на которых и разрабатывается),
но может быть портирован вместе с mkimage. Если что-либо не работает
или не собирается, стоит проверить на Sisyphus (mkimage, make, hasher,
собственно пакетная база), поскольку именно на нём происходит основная
@@ -27,7 +27,7 @@ ALT Linux 7.0+ и GNU make 3.82+ (на которых и разрабатыва
E: Couldn't find package
* features.in/kernel/stage1/scripts.d/80-make-initrd
* features.in/stage2/stage1/scripts.d/02-kdefault
* features.in/stage2/stage1/scripts.d/03-test-kernel
* sub.in/stage1/Makefile
** ожидают, что в stage1 попадёт строго одно ядро сообразно

View File

@@ -14,8 +14,7 @@
удобно для анализа и обновления (и в отличие от _m-p-d_ -- нет
вынужденной необходимости либо контролировать включение нужных
фич "вручную" в скриптах по косвенным признакам, либо выносить
их в пакеты installer-feature-*); также возможно добиться большей
степени интеграции по данным (например, язык gfxboot и LiveCD).
их в пакеты installer-feature-*).
Создание и упаковку installer-feature-* можно рекомендовать, если:

View File

@@ -10,27 +10,26 @@ mkimage-profiles, или _m-p_ — результат осмысления и о
*Цели*
* поощрение совместной работы
* относительно низкая трудоёмкость использования
* пригодность к применению как очень крутыми хакерами, так и новичками
* относительно низкая трудоёмкость использования
* поощрение совместной работы
*Средства*
Двухуровневость:
* метапрофиль более объёмен и сложен, но выгоден для долгосрочной разработки
* сгенерированный дистрибутивный профиль более легко обозрим и модифицируем как одноразовый форк
* наследственность на уровне индивидуальных особенностей и образов в целом
* прозрачность и диагностируемость формирования конфигурации
* документированность
метапрофиль более объёмен и сложен, но выгоден для долгосрочной разработки
сгенерированный дистрибутивный профиль более легко обозрим и модифицируем как одноразовый форк
наследственность на уровне индивидуальных особенностей и образов в целом
прозрачность и диагностируемость формирования конфигурации
документированность
*Примеры использования*
Выполняем начальные инструкции по документации:
Выполняем начальные инструкции по документации
git clone git://git.altlinux.org/people/mike/packages/mkimage-profiles.git
cd mkimage-profiles
make rescue.iso
make icewm.iso
= Основы =
@@ -80,4 +79,3 @@ include::vm.txt[]
include::qemu.txt[]
include::archdep.txt[]

View File

@@ -6,96 +6,91 @@
* APTCONF
** задаёт путь к требуемому apt.conf
** значение: пусто (по умолчанию системный) либо строка
** см. image.in/Makefile, doc/apt.conf.sample
** см. ../image.in/Makefile, apt.conf.sample
* ARCH
** задаёт целевую архитектуру образов
** значение: пусто (по умолчанию авто), i586, x86_64, arm, ppc
** см. lib/build.mk
** см. ../lib/build.mk
* ARCHES
** задаёт набор целевых архитектур при параметрическом задании APTCONF
** значение: пусто (по умолчанию авто) либо список через пробел
** см. Makefile, doc/profiles.mk.sample
** см. ../Makefile, profiles.mk.sample
* BELL
** подаёт сигнал после завершения сборки
** значение: пусто (по умолчанию нет) либо любая строка
** см. lib/build.mk
** см. ../lib/build.mk
* BUILDDIR
** задаёт каталог генерируемого профиля и сборки
** значение: пусто (по умолчанию авто) либо строка
** см. lib/profile.mk
** см. ../lib/profile.mk
* BUILDDIR_PREFIX
** задаёт префикс каталога генерируемого профиля и сборки
** значение: строка; по умолчанию выбирается алгоритмически
** см. main.mk
** см. ../main.mk
* BUILDLOG
** задаёт путь к файлу журнала сборки/очистки
** значение: $(BUILDDIR)/build.log (по умолчанию) либо строка
** см. lib/log.mk
** значение: по умолчанию $(BUILDDIR)/build.log либо строка
** см. ../lib/log.mk
* CHECK
** включает режим проверки сборки конфигурации (без сборки образа)
** значение: пусто (по умолчанию) либо любая строка
** см. lib/build.mk, lib/clean.mk
** см. ../lib/build.mk, ../lib/clean.mk
* CLEAN
** экономия RAM+swap при сборке в tmpfs, иначе места на диске
** очистка рабочего каталога после успешной сборки очередной стадии
** может помешать использовать некоторые варианты отладки
** значение: пусто, 0, 1, 2; по умолчанию пусто при DEBUG, иначе 1
** см. lib/clean.mk
** значение: любая строка; по умолчанию пусто при DEBUG, иначе 1
** см. ../lib/clean.mk
* DEBUG
** включает средства отладки, может отключить зачистку после сборки
** значение: пусто (по умолчанию), 1 или 2
** см. lib/log.mk, lib/clean.mk
** см. ../lib/log.mk, ../lib/clean.mk
* HOMEPAGE, HOMENAME, HOMEWAIT
** указывают адрес, название и таймаут перехода для домашней страницы
** значение: корректный URL, строка, целое неотрицательное число
** см. features.in/live/generate.mk (тж. по умолчаниям)
** см. ../features.in/live/generate.mk (тж. по умолчаниям)
* ISOHYBRID
** включает создание гибриднго ISO-образа
** значение: пусто (по умолчанию) либо любая строка
** см. features.in/pack/config.mk, features.in/isohybrid/config.mk
** см. ../features.in/pack/config.mk
* NICE
** понижает нагрузку системы сборочной задачей
** значение: пусто (по умолчанию) либо любая строка
** см. lib/build.mk
* QUIET
** отключает поясняющие сообщения при сборке (например, под cron)
** значение: пусто (по умолчанию) либо любая строка
** см. Makefile, lib/build.mk, lib/clean.mk, lib/profile.mk
** см. ../lib/build.mk
* REPORT
** запрашивает создание отчётов о собранном образе
** значение: пусто (по умолчанию) либо любая строка
** NB: в силу специфики обработки передаётся только явно
** см. Makefile, report.mk, lib/report.mk
** см. ../Makefile, ../report.mk, ../lib/report.mk
* ROOTPW
** устанавливает пароль root по умолчанию для образов виртуальных машин
** значение: пусто (по умолчанию root) либо строка
** см. features.in/deflogin/rootfs/image-scripts.d/50-root
** см. ../features.in/build-vm/image-scripts.d/00root
* SAVE_PROFILE
** сохраняет архив сгенерированного профиля в .disk/
** значение: пусто (по умолчанию) либо любая строка
** см. image.in/Makefile
** см. ../image.in/Makefile
* SORTDIR
** дополнительно структурирует каталог собранных образов
** значение: пусто (по умолчанию) либо строка
*** например, '$(IMAGE_NAME)/$(DATE)'
** см. image.in/Makefile
** см. ../image.in/Makefile
* SQUASHFS
** определяет характер сжатия squashfs для stage2
@@ -103,18 +98,18 @@
*** пусто (по умолчанию) либо normal: xz
*** tight: xz с -Xbcj по платформе (лучше, но дольше -- подбор в два прохода)
*** fast: gzip/lzo (быстрее запаковывается и распаковывается, меньше степень)
** см. features.in/stage2/stage1/scripts.d/03-test-kernel
** см. ../features.in/stage2/stage1/scripts.d/03-test-kernel
* STATUS
** добавляет в имя образа указанный префикс
** значение:
*** пусто (по умолчанию) либо строка (например, "alpha", "beta")
** см. image.in/Makefile
** см. ../image.in/Makefile
* VM_SIZE
** задаёт размер несжатого образа виртуальной машины в байтах
** значение: пусто (по умолчанию двойной размер чрута) или целое
** см. features.in/build-vm/lib/90-build-vm.mk, bin/tar2vm
** см. ../features.in/build-vm/lib/90-build-vm.mk, ../bin/tar2vm
[float]
=== пример ===

View File

@@ -1,7 +1,7 @@
== Списки пакетов ==
Состав пакетной базы субпрофилей определяется значениями
следующих переменных профиля (см. тж. conf.d/README;
Состав пакетной базы субпрофилей определяется значенями
следующих переменных профиля (см. тж. ../conf.d/README;
некоторые "*" ниже заэкранированы ради парсера asciidoc):
* main: пакетная база для установки
@@ -14,14 +14,14 @@
** THE_KMODULES, BASE_KMODULES, MAIN_KMODULES, BASE_KMODULES_REGEXP
*** KFLAVOURS
* stage2: общая часть install2, live, rescue
* 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
* install2: компактная "живая" система, содержащая только инсталятор
* installer: компактная "живая" система, содержащая только инсталятор
** см. stage2
*** features.in/install2/install2/stage2cfg.mk,
features.in/\*/install2/lib/*.mk

View File

@@ -2,14 +2,14 @@
*ВНИМАНИЕ:* заключительная операция создания образа жёсткого диска
из архива с содержимым корневой файловой системы требует доступа
к sudo и разрешения на выполнение скрипта bin/tar2fs в корневом
к sudo и разрешения на выполнение скрипта bin/tar2vm в корневом
каталоге метапрофиля при установке mkimage-profiles из пакета
(это в планах исправить, но подход к libguestfs пока успехом
не увенчался).
Соответствующий фрагмент конфигурации sudo(8) может выглядеть как:
mike ALL=NOPASSWD: /usr/share/mkimage-profiles/bin/tar2fs
mike ALL=NOPASSWD: /usr/share/mkimage-profiles/bin/tar2vm
При работе с локальной копией mkimage-profiles.git следует иметь
в виду, что предоставлять недоверенному пользователю право выполнять
@@ -25,10 +25,3 @@
Пример сборки и запуска VM:
$ make ROOTPW=reallysecret1 vm/bare.img && kvm -hda ~/out/bare.img
Если при сборке образа файловой системы произойдёт сбой, может оказаться
нужным вручную освободить используемые loop-устройства, например, так:
# losetup -a
# kpartx -d /dev/loop0
# losetup -d /dev/loop0

View File

@@ -21,12 +21,12 @@
цели в UI конфигурирования образа.
Остальное содержимое является дополнительным и используется
в таком порядке (см. features.in/Makefile):
в таком порядке (см. ../Makefile):
* сперва в $(BUILDDIR)/image/ копируются все подкаталоги,
соответствующие итоговым именам субпрофилей, запрошенных
для профиля образа; при этом они сливаются с деревом,
которое уже сформировано субпрофилями (sub.in/*) и уже
которое уже сформировано субпрофилями (../sub.in/*) и уже
скопированными фичами; если какие-либо файлы перекрылись
по именам, rsync должен оставить резервные копии (*~),
которые должны просигнализировать о беспорядке;

View File

@@ -8,6 +8,6 @@
#
# for somewhat more involved example, see syslinux feature
use/00example: use/repo/main use/anotherfeature
use/00example: sub/main use/anotherfeature
@$(call add_feature)
@$(call add,MAIN_PACKAGES,hello)

View File

@@ -36,8 +36,8 @@ include $(BUILDDIR)/distcfg.mk
# first rsync what's static, and make backups (*~) --
# these might signal of file clashes (or plain dirt);
# second, care for toplevel dirs;
# then handle feature generator scripts
# second, care for toplevel and tagged script dirs;
# then handle two more ways of implementing a feature
#
# NB: some subprofiles will be specified as "src/dst"
# -- then both src/ and dst/ can hold the addons;
@@ -58,15 +58,8 @@ prep:
fi
# feat
# NB: this is somewhat complicated since it has to handle "$sub" like:
# - "/": copy feature's toplevel parts to the BUILDDIR toplevel
# - "stage1": copy feature's stage1 parts into stage1 subprofile
# - "stage2@live": copy feature's stage2 parts into live subprofile
# - "rootfs@/": copy feature's rootfs parts into BUILDDIR toplevel
$(FEATURES):
@feat=$@; \
args="-qab --exclude README --exclude config.mk"; \
args="$$args --exclude generate.mk --exclude generate.sh"; \
if [ -n "$(GLOBAL_DEBUG)" ]; then \
echo "** adding $$feat feature"; \
fi; \
@@ -78,13 +71,6 @@ $(FEATURES):
else \
src="$${sub%@*}"; \
dst="$${sub#*@}"; \
if [ "$$src" = / ]; then \
echo "** src=/: you don't want this" >&2; \
exit 1; \
fi; \
if [ "$$dst" = / -o "$$dst" = "" ]; then \
dst="."; \
fi; \
srcdirs=; \
if [ -d "$$src" ]; then \
srcdirs="$$src"; \
@@ -92,9 +78,9 @@ $(FEATURES):
if [ -d "$$dst" -a "$$dst" != "$$src" ]; then \
srcdirs="$${srcdirs:+$$srcdirs }$$dst"; \
fi; \
: "why this overduplication was done? (still needed)"; \
for srcdir in $$srcdirs; do \
rsync $$args "$$srcdir/" "$(BUILDDIR)/$$dst/"; \
rsync -qab --exclude tagged \
"$$srcdir/" "$(BUILDDIR)/$$dst/"; \
done; \
fi; \
if [ -n "$(GLOBAL_DEBUG)" ]; then \
@@ -107,12 +93,12 @@ $(FEATURES):
destdir="$(BUILDDIR)/$$dst/$$part"; \
[ -d "$$destdir" ] || continue; \
if [ "$$sub" = / -a -d "$$part" ]; then \
rsync $$args "$$part/" "$$destdir/"; \
rsync -qab "$$part/" "$$destdir/"; \
fi; \
done; \
popd >&/dev/null; \
done; \
if [ -n "$$dst" -a "$$dst" != "." ]; then \
if [ -n "$$dst" ]; then \
the="$$sub subprofile"; \
else \
the="toplevel"; \

View File

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

View File

@@ -1 +0,0 @@
Поддержка SolidRun Cubox в расчёте на подключенный по HDMI дисплей FullHD.

View File

@@ -1,3 +0,0 @@
use/armh-cubox: use/armh
@$(call add_feature)
@$(call set,KFLAVOURS,cubox)

View File

@@ -1,19 +0,0 @@
#!/bin/sh
mkdir -p /boot
# 1920x1080 version of the boot script
cat > /boot/boot << EOF
setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 ro video=dovefb:lcd0:1920x1080-32@60-edid clcd.lcd0_enable=1 clcd.lcd1_enable=0 vmalloc=128M panic=3'
ext2load mmc 0:1 2000000 uimage
ext2load mmc 0:1 2800000 uinitrd
bootm 2000000 2800000
EOF
# 1280x720 version of the boot script (not used at the moment)
cat > /boot/boot.720 << EOF
setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 ro video=dovefb:lcd0:1280x720-24@60-edid clcd.lcd0_enable=1 clcd.lcd1_enable=0 vmalloc=128M panic=3'
ext2load mmc 0:1 2000000 uimage
ext2load mmc 0:1 2800000 uinitrd
bootm 2000000 2800000
EOF

View File

@@ -1 +0,0 @@
ehci_marvell

View File

@@ -1 +0,0 @@
Эта фича обеспечивает начальное конфигурирование Marvell Dove GPU.

View File

@@ -1,3 +0,0 @@
use/armh-dovefb: use/armh
@$(call add_feature)
@$(call add,THE_PACKAGES,xorg-drv-dovefb)

View File

@@ -1,106 +0,0 @@
#!/bin/sh
mkdir -p /etc/udev/rules.d
cd /etc/udev/rules.d
cat > 99-bmm.rules << EOF
KERNEL=="bmm|bmm[0-9]", GROUP="xgrp", MODE="0660"
EOF
cat > 99-fb.rules << EOF
KERNEL=="fb|fb[0-9]", GROUP="xgrp", MODE="0660"
EOF
cat > 99-galcore.rules << EOF
KERNEL=="galcore|galcore[0-9]", GROUP="xgrp", MODE="0660"
EOF
cat > 99-uio.rules << EOF
KERNEL=="uio|uio[0-9]", GROUP="xgrp", MODE="0660"
EOF
mkdir -p /etc/X11
cd /etc/X11
cat > xorg.conf.720 << EOF
Section "Device"
Identifier "Videocard0"
Driver "dovefb"
# Option "ExaAccel" "on"
Option "Solid" "on"
Option "Copy" "on"
Option "Composite" "on"
Option "Commit" "on"
Option "XvAccel" "on"
Option "UseGPU" "on"
EndSection
Section "Monitor"
Identifier "LCD0"
Option "PreferredMode" "1280x720"
EndSection
Section "Screen"
Identifier "Screen 0"
Device "Videocard0"
Monitor "LCD0"
DefaultDepth 24
DefaultFbBpp 24
SubSection "Display"
Depth 24
Modes "1280x720"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Main Layout"
Screen 0 "Screen 0"
EndSection
EOF
cat > xorg.conf.1080 << EOF
Section "Device"
Identifier "Videocard0"
Driver "dovefb"
# Option "ExaAccel" "on"
Option "Solid" "on"
Option "Copy" "on"
Option "Composite" "on"
Option "Commit" "on"
Option "XvAccel" "on"
Option "UseGPU" "on"
#Option "Debug" "on"
EndSection
Section "Monitor"
Identifier "LCD0"
Option "PreferredMode" "1920x1080"
EndSection
Section "Screen"
Identifier "Screen 0"
Device "Videocard0"
Monitor "LCD0"
DefaultDepth 16
DefaultFbBpp 16
SubSection "Display"
Depth 16
Modes "1920x1080@60"
EndSubSection
SubSection "Display"
Depth 24
Modes "1920x1080@60"
EndSubSection
SubSection "Display"
Depth 32
Modes "800x600@60"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Main Layout"
Screen 0 "Screen 0"
EndSection
EOF
ln -s xorg.conf.1080 xorg.conf

View File

@@ -1 +0,0 @@
Эта фича конфигурирует специфические для Google/ASUS Nexus7 аспекты.

View File

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

View File

@@ -1,172 +0,0 @@
#!/bin/sh
# FIXME: the exact partition may vary
cat >> /etc/fstab << EOF
# YMMV, this might be /dev/mmcblk0p10 either
/dev/mmcblk0p9 / ext4 defaults 1 1
EOF
cd /etc/udev/rules.d || exit 1
cat > 90-tegra-rt5640.rules << EOF
SUBSYSTEM!="sound", GOTO="tegra_rt5640_end"
ACTION!="change", GOTO="tegra_rt5640_end"
KERNEL!="card*", GOTO="tegra_rt5640_end"
ATTRS{id}=="tegrart5640", ENV{PULSE_PROFILE_SET}="tegra-nexus7.conf"
LABEL="tegra_rt5640_end"
EOF
cd /usr/share/pulseaudio/alsa-mixer/profile-sets || exit 1
cat > tegra-nexus7.conf << EOF
[General]
auto-profiles = yes
[Mapping analog-stereo]
device-strings = front:%f hw:%f plughw:%f
channel-map = left,right
paths-output = tegra-nexus7-speaker tegra-nexus7-headphone
paths-input = tegra-nexus7-intmic
priority = 10
EOF
cd /etc/X11 || exit 1
cat > xorg.conf << EOF
Section "Device"
Identifier "nexus"
Driver "tegra"
EndSection
EOF
cd /etc/X11/xorg.conf.d || exit 1
cat > 99-nexus-calibration.conf << EOF
Section "InputClass"
Identifier "Nexus 7 Touchscreen"
MatchIsTouchscreen "on"
MatchProduct "elan-touchscreen"
MatchDevicePath "/dev/input/event*"
MatchDriver "evdev"
# Option "Calibration" "29 2125 106 1356"
# Option "SwapAxes" "0"
# Option "Calibration" "566 1201 1025 2075"
# Option "SwapAxes" "1"
Option "Calibration" "6 2132 29 1294"
Option "SwapAxes" "0"
EndSection
EOF
cat > 99-nexus-rotation.conf << EOF
Section "Monitor"
Identifier "Monitor"
Option "Rotate" "right"
EndSection
Section "Screen"
Identifier "Screen"
Monitor "Monitor"
EndSection
EOF
cd /usr/share/pulseaudio/alsa-mixer/paths || exit 1
cat > tegra-nexus7-headphone.conf << EOF
[General]
priority = 90
name = analog-output-headphones
[Jack HP-detect]
state.plugged = yes
[Element Master]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element HP]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Headphone Jack]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Int Spk]
switch = off
; Due to a kernel bug (?) the "Int Mic" is a playback control.
; Therefore we enable it here instead of in the proper place
[Element Int Mic]
switch = on
EOF
cat > tegra-nexus7-intmic.conf << EOF
[General]
priority = 90
name = analog-input-microphone-internal
[Element ADC]
; For some reason the ADC volume seems not to be affecting input gain
switch = mute
volume = zero
override-map.1 = all
override-map.2 = all-left,all-right
[Element ADC Boost Gain]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Int Mic]
switch = mute
[Element DMIC]
enumeration = select
[Option DMIC:DMIC1]
priority = 89
name = analog-input-internal-microphone
EOF
cat > tegra-nexus7-speaker.conf << EOF
[General]
priority = 100
name = analog-output-speaker
[Jack HP-detect]
state.plugged = no
state.unplugged = unknown
[Element Master]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Speaker]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Int Spk]
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
[Element Headphone Jack]
switch = off
; Due to a kernel bug (?) the "Int Mic" is a playback control.
; Therefore we enable it here instead of in the proper place
[Element Int Mic]
switch = on
EOF

View File

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

View File

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

View File

@@ -1,28 +0,0 @@
#!/bin/sh
cd /etc/udev/rules.d || exit 1
cat > 69-tegra-gpu.rules << EOF
# Set the right permissions to the devices provided by the
# tegra driver
ENV{ACL_MANAGE}=="0", GOTO="tegra_gpu_end"
ACTION!="add|change", GOTO="tegra_gpu_end"
# root only devices
KERNEL=="knvrm" OWNER="root" GROUP="root" MODE="0660"
KERNEL=="knvmap" OWNER="root" GROUP="root" MODE="0660"
# graphics devices
ACTION=="add|change", KERNEL=="nvhost*", GROUP="xgrp", MODE="0660"
ACTION=="add|change", KERNEL=="nvmap*", GROUP="xgrp", MODE="0660"
ACTION=="add|change", KERNEL=="tegra*", GROUP="xgrp", MODE="0660"
ACTION=="add|change", KERNEL=="nvram", GROUP="xgrp", MODE="0660"
ACTION=="add|change", KERNEL=="nvhdcp*", GROUP="xgrp", MODE="0660"
LABEL="tegra_gpu_end"
EOF
# FIXME: xgrp is a kludge
cat > 69-tegra-touchscreen.rules << EOF
SUBSYSTEM=="input",ACTION=="add|change",KERNEL=="event*",ATTRS{name}=="elan-touchscreen", SYMLINK+="twofingtouch", MODE="0660", GROUP="xgrp"
EOF

View File

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

View File

@@ -1,2 +0,0 @@
use/armh: use/control/sudo-su
@$(call add_feature)

View File

@@ -1,2 +0,0 @@
#!/bin/sh
echo 'HWCLOCK_SET_TIME_AT_START=false' >> /etc/sysconfig/clock

View File

@@ -1,48 +0,0 @@
#!/bin/sh
kver="$(rpm -qa 'kernel-image*' \
--qf '%{installtime} %{version}-%{name}-%{release}\n' \
| sort -n \
| tail -n 1 \
| cut -f 2 -d ' ' \
| sed 's/kernel-image-//')"
[ -h /boot/vmlinuz ] || ln -s vmlinuz-$kver /boot/vmlinuz
[ -h /boot/initrd.img ] || ln -s initrd-$kver.img /boot/initrd.img
# NB: mkinitrd-3.0.16+ has rootsubdir support which is critical
# for TWRP based ARM "VE" chroots (e.g. for nexus7);
# should be implemented in make-initrd either
### rootfs type should become configurable
if rpm -q mkinitrd; then
mkinitrd --with ext4 -f /boot/initrd-$kver.img "$kver"
fi
# NB: if the adresses ever become different this "API" _will_ change
# NB: initrd compression (-C) might change, armadaxp handles gzip
umk() {
[ $# = 4 ] || exit 1
cd /boot
umkimage \
-A arm \
-O linux \
-T "$1" \
-C none \
-a "$2" \
-e "$2" \
-n "`readlink "$3"`" \
-d "$3" \
"$4"
}
### the addresses will become variables some day probably
if rpm -q uboot-tools; then
umk kernel 0x00008000 vmlinuz uimage
umk ramdisk 0x00800000 initrd.img uinitrd
if [ -s boot ]; then
umk script 0 boot boot.scr
fi
fi
:

View File

@@ -1,40 +0,0 @@
#!/bin/sh
# DESCRIPTION
#
# Setup network settings
# 1. Truncate /etc/resolv.conf
# 2. Init /etc/hosts with "127.0.0.1 localhost"
# 3. Set hostname, domainname
# 4. Set defaults for NetworkManager.
# REQUIRES
#
# Nothing
# INFO
# At startup time hostname may be changed by live-hostname package.
. shell-config
NAME="init3-network"
verbose()
{
if [ -n "$GLOBAL_VERBOSE" ]; then
echo "HOOK: $NAME: $@"
fi
}
verbose "has started"
DOMAINNAME="localdomain"
HOSTNAME="localhost.localdomain"
verbose "Init /etc/hosts with 127.0.0.1 localhost"
echo "127.0.0.1 localhost localhost.localdomain" > /etc/hosts
verbose "Truncate /etc/resolv.conf"
echo nameserver 8.8.8.8 >/etc/resolv.conf

View File

@@ -1,7 +0,0 @@
#!/bin/sh
# Sisyphus/armh is not being signed as of June, 2013
repo_source='/etc/apt/sources.list.d/alt.list'
[ -s "$repo_source" ] || exit 0
sed -i 's, \[alt\],,' "$repo_source" ||:

View File

@@ -4,7 +4,7 @@
# the last different one wins
# - remember .base if adding yet another *_PACKAGES
use/bootloader:
use/bootloader: use/install2 sub/main
@$(call add_feature)
@$(call add,BASE_PACKAGES,alterator-$$(BASE_BOOTLOADER))

View File

@@ -1,6 +0,0 @@
#!/bin/sh
if [ -z "$GLOBAL_BASE_BOOTLOADER" ]; then
echo "** error: BASE_BOOTLOADER empty while bootloader feature requested" >&2
exit 1
fi

View File

@@ -4,13 +4,8 @@ use/branding:
# 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 bootloader bootsplash graphics)
@$(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)
# http://altlinux.org/branding/slideshow
use/branding/slideshow/once: use/branding
@$(call add,INSTALL2_BRANDING_SLIDESHOW,once:true)
@$(call xport,INSTALL2_BRANDING_SLIDESHOW)

View File

@@ -1,7 +0,0 @@
#!/bin/bash
[ -n "$GLOBAL_INSTALL2_BRANDING_SLIDESHOW" ] || exit 0
for arg in $GLOBAL_INSTALL2_BRANDING_SLIDESHOW; do
echo "${arg/:/=}" >> /etc/alterator/slideshow.conf
done

View File

@@ -1,2 +1 @@
IMAGE_PACKAGES_REGEXP += $(call branding, \
$(STAGE2_BRANDING) $(INSTALL2_BRANDING))
IMAGE_PACKAGES_REGEXP += $(call branding,$(INSTALL2_BRANDING))

View File

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

View File

@@ -1,2 +1 @@
IMAGE_PACKAGES_REGEXP += $(call branding, \
$(THE_BRANDING) $(STAGE2_BRANDING))
IMAGE_PACKAGES_REGEXP += $(call branding,$(THE_BRANDING))

View File

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

View File

@@ -1,6 +0,0 @@
Эта фича обеспечивает наличие и конкретизацию выбора браузера.
Разумеется, дополнительные варианты могут быть установлены
явным или косвенным затребованием.
Следует понимать, что каждая из целей может быть использована
лишь один раз, повторное упоминание будет проигнорировано make.

View File

@@ -1,49 +0,0 @@
use/browser:
@$(call add_feature)
@$(call add,THE_PACKAGES_REGEXP,$$(THE_BROWSER))
@$(call try,THE_BROWSER,webclient) # fallback
# support both firefox and firefox-esr
use/browser/firefox: use/browser
@$(call set,THE_BROWSER,firefox$$(FX_FLAVOUR))
use/browser/seamonkey \
use/browser/chromium use/browser/epiphany \
use/browser/qupzilla use/browser/rekonq \
use/browser/elinks use/browser/links2: \
use/browser/%: use/browser
@$(call set,THE_BROWSER,$*)
use/browser/konqueror: use/browser
@$(call set,THE_BROWSER,kdebase-konqueror)
use/browser/konqueror4: use/browser
@$(call set,THE_BROWSER,kde4base-konqueror)
# the complete lack of dependencies is intentional
use/browser/firefox/esr:
@$(call set,FX_FLAVOUR,-esr)
use/browser/firefox/live: use/browser/firefox
@$(call add,THE_BROWSER,livecd-firefox)
# scarey, and will have to be done otherwise when l10n feature is there
use/browser/firefox/i18n: use/browser/firefox
@$(call add,THE_BROWSER,firefox$$(FX_FLAVOUR)-be)
@$(call add,THE_BROWSER,firefox$$(FX_FLAVOUR)-kk)
@$(call add,THE_BROWSER,firefox$$(FX_FLAVOUR)-ru)
@$(call add,THE_BROWSER,firefox$$(FX_FLAVOUR)-uk)
# fx29+
use/browser/firefox/classic: use/browser/firefox
@$(call add,THE_BROWSER,firefox-classic_theme_restorer.*)
use/browser/seamonkey/i18n: use/browser/seamonkey
@$(call add,THE_BROWSER,seamonkey-ru)
# inherently insecure, NPAPI only
use/browser/plugin/flash: use/browser
@$(call add,THE_PACKAGES,mozilla-plugin-adobe-flash)
use/browser/plugin/java: use/browser
@$(call add,THE_PACKAGES,mozilla-plugin-java-1.6.0-sun)

View File

@@ -3,9 +3,3 @@
Дополняет финальную стадию сборки (lib/, scripts.d/)
и тесно с ней связана.
При желании более полно воспользоваться доступными средствами
фиксации метаданных обратите внимание на следующие переменные:
META_SYSTEM_ID, META_PUBLISHER, META_PREPARER, META_APP_ID,
META_VOL_ID, META_VOL_SET, META_BIBLIO, META_ABSTRACT;
см. тж. genisoimagerc(5) из пакета genisoimage.

View File

@@ -1,3 +1,3 @@
# hooked from lib/sugar.mk
# hooked from ../../lib/sugar.mk
use/build-distro:
@$(call add_feature)

View File

@@ -1,8 +1,7 @@
# step 4: build the distribution image
# take the latter part for complex-specified subprofiles like stage2@live;
# care to exclude non-directories holding no makefiles like rootfs
SUBDIRS = $(sort $(dir $(wildcard $(addsuffix /Makefile,$(SUBPROFILE_DIRS)))))
# 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)
@@ -13,7 +12,6 @@ BOOT_VOLI := $(shell echo $(META_VOL_ID) | cut -c1-32)
BOOT_VOLS := $(META_VOL_SET)
BOOT_BIBL := $(META_BIBLIO)
BOOT_ABST := $(META_ABSTRACT)
DATE_F := $(shell date +%F)
BOOT_TYPE := isolinux
@@ -25,7 +23,7 @@ prep: $(GLOBAL_DEBUG) dot-disk $(WHATEVER)
# can't use mp-showref which belongs to the metaprofile
dot-disk:
@mkdir -p files/.disk
@echo "$(META_VOL_ID) $(DATE_F)" >files/.disk/info
@echo "ALT Linux based" >files/.disk/info
@echo "$(ARCH)" >files/.disk/arch
@echo "$(DATE)" >files/.disk/date
@if type -t git >&/dev/null; then \

View File

@@ -1,5 +1,4 @@
Эта фича конфигурирует создание образа виртуального окружения (VE),
что используется для сборки шаблонов OpenVZ и ARM-чрутов для TWRP.
Эта фича конфигурирует создание образа виртуального окружения (VE).
Дополняет финальную стадию сборки (lib/, image-scripts.d/)
и тесно с ней связана.

View File

@@ -1,3 +1,3 @@
# hooked from lib/sugar.mk
use/build-ve: sub/rootfs@/
# hooked from ../../lib/sugar.mk
use/build-ve:
@$(call add_feature)

View File

@@ -8,14 +8,10 @@ ifeq (cpio,$(IMAGE_PACKTYPE))
MKI_CPIO_COMPRESS = $(IMAGE_COMPRESS)
endif
# some VEs _can_ contain kernels (think ARM multiboot
# but this can also help VE/VM hybrid images)
IMAGE_PACKAGES = $(DOT_BASE) \
IMAGE_PACKAGES = $(call list,$(BASE_LISTS)) \
$(SYSTEM_PACKAGES) \
$(COMMON_PACKAGES) \
$(BASE_PACKAGES) \
$(THE_PACKAGES) \
$(call list,$(BASE_LISTS) $(THE_LISTS))
$(BASE_PACKAGES)
all: $(GLOBAL_DEBUG) build-image copy-tree run-image-scripts pack-image \
postprocess $(GLOBAL_CLEAN_WORKDIR)

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,11 @@
#!/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,6 +1,6 @@
#!/bin/sh
# predictable file locations make bootloader configuration simple;
# this script relates to features.in/stage2/stage1/scripts.d/81-make-initfs
# this script relates to .../features.in/stage2/stage1/scripts.d/80-make-initfs
kver="$(rpm -qa 'kernel-image*' \
--qf '%{installtime} %{version}-%{name}-%{release}\n' \

View File

@@ -0,0 +1,3 @@
#!/bin/sh
# Run scripts from /etc/firsttime.d at first start
[ -f "/var/lock/TMP_1ST" ] || touch "/var/lock/TMP_1ST"

View File

@@ -1,17 +1,19 @@
# step 4: build the virtual machine image
IMAGE_PACKAGES = $(DOT_BASE) \
$(SYSTEM_PACKAGES) \
IMAGE_PACKAGES = $(SYSTEM_PACKAGES) \
$(COMMON_PACKAGES) \
$(BASE_PACKAGES) \
$(THE_PACKAGES) \
$(call list,$(BASE_LISTS) $(THE_LISTS))
$(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
VM_FSTYPE ?= ext4
VM_SIZE ?= 0
ifeq (,$(ROOTPW))
$(error please provide root password via ROOTPW)
endif
check-sudo:
@if ! type -t sudo >&/dev/null; then \
@@ -20,9 +22,9 @@ check-sudo:
fi
prepare-image: check-sudo
@if ! sudo $(TOPDIR)/bin/tar2fs \
"$(VM_TARBALL)" "$(VM_RAWDISK)" $(VM_SIZE) $(VM_FSTYPE); then \
echo "** error: sudo tar2fs failed, see also doc/vm.txt" >&2; \
@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
@@ -38,10 +40,10 @@ convert-image: prepare-image
qemu-img convert -O "$$VM_FORMAT" \
"$(VM_RAWDISK)" "$(IMAGE_OUTPATH)"; \
rm "$(VM_RAWDISK)"; \
if [ -z "$(DEBUG)" ]; then rm "$(VM_TARBALL)"; fi; \
fi
run-image-scripts: GLOBAL_CLEANUP_PACKAGES := $(CLEANUP_PACKAGES)
run-image-scripts: GLOBAL_ROOTPW := $(ROOTPW)
# override
pack-image: MKI_PACK_RESULTS := tar:$(VM_TARBALL)

View File

@@ -4,5 +4,3 @@
По возможности стоит работать над дизайном инфраструктуры
и пакетной базой так, чтобы ставить-удалять приходилось как
можно меньше. В идеале такой антифичи не должно быть вовсе :)
ВНИМАНИЕ: также удаляет rpm, apt и базу по пакетам из образа!

View File

@@ -2,15 +2,11 @@ use/cleanup:
@$(call add_feature)
@$(call xport,CLEANUP_PACKAGES)
use/cleanup/libs:
@$(call add,BASE_PACKAGES,apt-scripts)
@$(call add,INSTALL2_PACKAGES,installer-feature-cleanup-libs-stage3)
use/cleanup/installer: use/cleanup
@$(call add,CLEANUP_PACKAGES,'installer-*')
use/cleanup/x11: use/cleanup use/cleanup/libs
@$(call add,CLEANUP_PACKAGES,libICE libSM libxcb 'libX*')
use/cleanup/x11: use/cleanup
@$(call add,CLEANUP_PACKAGES,libSM libXext libXmu libXi)
# as some alterator modules are installed into stage3 (the destination
# root filesystem) to perform actions like bootloader setup, we might

View File

@@ -1,2 +0,0 @@
Эта фича предоставляет интерфейс для конфигурирования дистрибутивных
значений по умолчанию control(8); см. тж. http://altlinux.org/control

View File

@@ -1,8 +0,0 @@
use/control:
@$(call add_feature)
@$(call add,THE_PACKAGES,control)
@$(call xport,CONTROL)
# some presets
use/control/sudo-su: use/control
@$(call add,CONTROL,su:public sudo:public)

View File

@@ -1,11 +0,0 @@
#!/bin/sh
# setup control(8) states
[ -z "$GLOBAL_CONTROL" ] ||
echo "$GLOBAL_CONTROL" \
| tr ' ' '\n' \
| while IFS=':' read facility state; do
[ -z "$facility" -o -z "$state" ] ||
control "$facility" "$state"
done
:

View File

@@ -1,8 +0,0 @@
Эта фича конфигурирует root login и пользователей по умолчанию.
Если ROOTPW не задан, то подходящий пароль не существует.
При необходимости задать пустой пароль root (например, на LiveCD)
выставьте переменную ROOTPW_EMPTY в значение "1".
ВНИМАНИЕ: применяйте разумно, т.к. крайне легко создать и оставить
дыру в безопасности!

View File

@@ -1,41 +0,0 @@
# WARNING: the variable values are stored in build config/log!
use/deflogin:
@$(call add_feature)
@$(call add,THE_PACKAGES,shadow-utils passwd)
@$(call xport,ROOTPW_EMPTY)
@$(call xport,ROOTPW)
@$(call xport,USERS)
@$(call xport,GROUPS)
# some presets
# USERS variable chunk format is "login:passwd:admin:sudo"
# GROUPS are just stashed there to include USERS logins created
# basic livecd: root and altlinux users with no password at all
use/deflogin/live: use/deflogin
@$(call set,ROOTPW_EMPTY,1)
@$(call add,USERS,altlinux::1:1)
# real thing: some control added
use/deflogin/desktop: use/deflogin/live \
use/deflogin/hardware use/deflogin/xgrp use/deflogin/privileges; @:
# could also be passed on the commandline
use/deflogin/root: use/deflogin
@$(call try,ROOTPW,altlinux)
# appliances: "root:altlinux"; "altlinux:root" in "xgrp" group
use/deflogin/altlinuxroot: use/deflogin/root use/deflogin/xgrp
@$(call add,USERS,altlinux:root:1:1)
# peripherals
use/deflogin/hardware: use/deflogin
@$(call add,GROUPS,cdwriter radio scanner uucp)
# videocard and desktop related hardware
use/deflogin/xgrp: use/deflogin
@$(call add,GROUPS,xgrp audio)
# potentially elevated privileges (NB: _not_ wheel)
use/deflogin/privileges: use/deflogin
@$(call add,GROUPS,fuse netadmin proc users)

View File

@@ -1,23 +0,0 @@
#!/bin/sh
# issue welcome message if there's a guest user
# (the first one configured with empty password)
[ -n "$GLOBAL_USERS" ] || {
echo "** 50-issue: warning, no users created" >&1
exit 0
}
guest=
for u in $GLOBAL_USERS; do
login="${u%%:*}"
[ -n "$login" ] || continue
rest="${u#*:}"
pass="${rest%%:*}"
[ -z "$pass" ] || continue
guest="$login"
break
done
[ -n "$guest" ] || exit 0
echo "Hello friend, say \`$guest' to log in at \\l" >> /etc/issue

View File

@@ -1,16 +0,0 @@
#!/bin/sh
# explicitly requested empty root password
case "$GLOBAL_ROOTPW_EMPTY" in
1|y|Y|yes)
usermod -p "" root
exit 0
;;
esac
# set root password if any; no-op if it is empty
if [ -z "$GLOBAL_ROOTPW" ]; then
echo "** warning: no root password provided, skipping" >&2
else
echo "$GLOBAL_ROOTPW" | passwd --stdin root
fi

View File

@@ -1,36 +0,0 @@
#!/bin/sh
# add regular user(s) assigning passwords and attributes of power
# NB: care that the utilities exist; shadow-utils is warranted
add_user() {
useradd -m "$1" &&
usermod -p "" "$1" &&
if [ -n "$GLOBAL_GROUPS" ]; then # some of them might be missing
for group in $GLOBAL_GROUPS; do
usermod -a --groups "$group" "$1" ||:
done
fi ||
echo "*** failed to add user '$1'"
}
set_password() { echo "$1:$2" | chpasswd; }
set_admin() { usermod -a --groups "wheel" "$1"; }
# NB: one must care to purge this from LiveCD if it's installed permanently
set_sudo() {
[ ! -w "/etc/sudoers" ] ||
echo "$1 ALL=(ALL) ALL" >> "/etc/sudoers"
}
# chpasswd is intended for batch use but that would be less comprehensible
[ -z "$GLOBAL_USERS" ] ||
echo "$GLOBAL_USERS" \
| tr ' ' '\n' \
| while IFS=':' read login passwd admin sudo; do
add_user "$login"
[ -z "$passwd" ] || set_password "$login" "$passwd"
[ -z "$admin" ] || set_admin "$login"
[ -z "$sudo" ] || set_sudo "$login"
done

View File

@@ -3,9 +3,3 @@
Реализована поддержка LiveCD, возможно приспособление для образов
сборочных VM/VE.
Обратите внимание: эта фича достаточно серьёзно изменяет поведение
субпрофиля main, оставляя из всего обычного множества обрабатываемых
переменных только MAIN_PACKAGES, MAIN_PACKAGES_REGEXP и MAIN_LISTS
во избежание дублирования не требующихся для сборки минимальных
образов пакетов.

View File

@@ -1,7 +1,6 @@
use/dev: use/control
use/dev:
@$(call add_feature)
@$(call add,THE_PACKAGES,git-core hasher gear)
@$(call add,CONTROL,pam_mktemp:enabled)
use/dev/mkimage: use/dev
@$(call add,THE_PACKAGES,mkimage shadow-change su)
@@ -11,15 +10,3 @@ use/dev/repo: use/dev use/repo/main
@$(call add,MAIN_PACKAGES,rpm-build basesystem)
@$(call add,MAIN_PACKAGES,fakeroot sisyphus_check)
@$(call add,MAIN_PACKAGES,file make-initrd make-initrd-propagator)
use/dev/builder/base: use/dev/mkimage use/dev
@$(call set,KFLAVOURS,$(BIGRAM))
@$(call add,LIVE_LISTS,\
$(call tags,(base || live) && (server || builder)))
@$(call add,LIVE_PACKAGES,livecd-qemu-arch strace)
@$(call add,LIVE_PACKAGES,qemu-user-binfmt_misc)
use/dev/builder/full: use/dev/builder/base use/dev/repo
@$(call add,MAIN_LISTS,$(call tags,live builder))
@$(call add,MAIN_PACKAGES,syslinux pciids memtest86+ xorriso)
@$(call add,LIVE_PACKAGES,sudo)

View File

@@ -0,0 +1,44 @@
#!/bin/sh -efu
# configure hasher (implies that 30-users has been run already)
# predefined passwordless livecd user
USER="altlinux"
if ! id "$USER" >&/dev/null; then
echo "No such user '$USER'" >&2
exit
fi
# ~
HOME="/home/$USER"
install -dm750 -o "$USER" -g "$USER" "$HOME"
# we honestly don't know much more
if type -t git && type -t su; then
su - -c "git config --global user.email $USER@localhost" "$USER"
su - -c "git config --global user.name 'live builder'" "$USER"
fi >&/dev/null
# developer should feel comfortable, eh? ;-)
ZSHELL="/bin/zsh"
if [ -x "$ZSHELL" ]; then
chsh -s "$ZSHELL" "$USER"
install -m755 -o "$USER" -g "$USER" /dev/null "$HOME/.zshrc"
echo "mkdir -p \"\$TMP/hasher\"" >> "$HOME/.zshrc"
fi
# $TMP
TMP="/tmp/.private/$USER"
control pam_mktemp enabled
sed -i '/^%_tmppath.*tmp$/d' "$HOME/.rpmmacros"
echo "%_tmppath $TMP" >> "$HOME/.rpmmacros"
# ~/hasher
WORKDIR="$TMP/hasher"
ln -s "$TMP/hasher" "$HOME/hasher"
# online repo needs network not isolation
echo "export share_network=1" >> /etc/profile.d/hasher.sh
chmod +x /etc/profile.d/hasher.sh
# requisite
hasher-useradd "$USER"

View File

@@ -1,120 +0,0 @@
#!/bin/sh -efu
# configure hasher (implies that 30-users has been run already)
ARCH="$(rpm --eval '%_host_cpu')"
[ -n "$ARCH" ] || exit 2
gray="$(echo -ne "\\033[0;37m")"
white="$(echo -ne "\\033[1;37m")"
cyan="$(echo -ne "\\033[1;36m")"
# root
cat >> /root/.bash_profile << EOF
ram="\$(awk '/^MemTotal/ { print int(\$2/1024+0.5) }' /proc/meminfo)"
swap="\$(awk '/^SwapTotal/ { print int(\$2/1024+0.5) }' /proc/meminfo)"
tmpfs="\$(df -kT /tmp 2>/dev/null \\
| awk '/^[a-zA-Z_0-9/-]+[[:space:]]+tmpfs/ { print int(\$3/1024); }')"
cat << EOH
Welcome to live builder host system!
Memory: $cyan\${ram}M$gray, swap: $cyan\${swap}M$gray
Autoconfigured tmpfs on /tmp: $cyan\${tmpfs}M$gray
Run ${white}swapon${gray}(8) on any local swaps you might like to employ
followed by ${white}service livecd-tmpfs restart${gray} to reconfigure tmpfs
EOH
EOF
# predefined passwordless livecd user
USER="altlinux"
if ! id "$USER" >&/dev/null; then
echo "No such user '$USER'" >&2
exit
fi
# ~
HOME="/home/$USER"
install -dm750 -o "$USER" -g "$USER" "$HOME"
# http://altlinux.org/tmpfs
TMP="/tmp/.private/$USER"
# we honestly don't know much more
if type -t git && type -t su; then
su - -c "git config --global user.email $USER@localhost" "$USER"
su - -c "git config --global user.name 'live builder'" "$USER"
fi >&/dev/null
# developer should feel comfortable, eh? ;-)
ZSHELL="/bin/zsh"
if [ -x "$ZSHELL" ]; then
chsh -s "$ZSHELL" "$USER"
install -m644 -o "$USER" -g "$USER" /dev/null "$HOME/.zshrc"
cat >> "$HOME/.zsh_history" <<-EOF
git clone git://git.altlinux.org/gears/m/mkimage-profiles.git && cd mkimage-profiles && make help/distro
make -C /usr/share/mkimage-profiles syslinux.iso
git clone git://git.altlinux.org/gears/h/hello.git && cd hello && gear-hsh
EOF
fi
if type -t screen; then
cat >> "$HOME/.screenrc" <<-EOF
caption always "%{+b rk}%H%{gk} |%c %{yk}%d.%m.%Y | %72=Load: %l %{wk}"
defscrollback 1000
EOF
fi >&/dev/null
cat >> "$HOME/.profile" << EOF
alias l='ls -l'
alias m='cd /usr/share/mkimage-profiles'
clear
cat << EOH
Welcome to live builder environment!
Here are some ALT Linux package/image build tools prepared for you:
* ${white}gear${gray}(1) -- see ${cyan}http://en.altlinux.org/gear${gray};
* ${white}hsh${gray}(1) -- see ${cyan}http://en.altlinux.org/hasher${gray};
* ${white}mkimage${gray} -- see ${cyan}http://en.altlinux.org/mkimage${gray};
* ${white}mkimage-profiles${gray} described in Russian at ${cyan}http://altlinux.org/m-p${gray}
Examples (use right/middle mouse button to paste; see ~/hasher/repo/):
* ${white}git clone git://git.altlinux.org/gears/h/hello.git && cd hello && gear-hsh${gray}
* ${white}make -C /usr/share/mkimage-profiles syslinux.iso${gray}
EOH
EOF
# rpm
sed -i '/^%_tmppath.*tmp$/d' "$HOME/.rpmmacros"
cat << EOF >> "$HOME/.rpmmacros"
%packager Unknown <nobody@altlinux.org>
%_target_cpu $ARCH
%_tmppath $TMP
%_sourcedir %{_topsrcdir}/SOURCES/%name
EOF
# hasher
WORKDIR="$TMP/hasher"
ln -s "$WORKDIR" "$HOME/hasher"
echo "rpm-dir file://$HOME/hasher/repo $ARCH hasher" \
>> /etc/apt/sources.list.d/hasher.list
mkdir "$HOME/.hasher"
cat >> "$HOME/.hasher/config" << EOF
packager="\$(rpm --eval %packager)"
def_target=$ARCH
export GCC_USE_CCACHE=1
mkdir -p "$WORKDIR"
EOF
# online repo needs network not isolation
echo "export share_network=1" >> /etc/profile.d/hasher.sh
chmod +x /etc/profile.d/hasher.sh
# squashfs-tools 4.3+
echo "allowed_mountpoints=/proc" >> /etc/hasher-priv/system
# requisite
hasher-useradd "$USER"

View File

@@ -1,4 +0,0 @@
# only MAIN_* should go in this time
IMAGE_PACKAGES_REGEXP = $(MAIN_PACKAGES_REGEXP)
IMAGE_PACKAGES = $(MAIN_PACKAGES) $(call map,list,$(MAIN_LISTS))

View File

@@ -1,11 +0,0 @@
Эта фича добавляет в образ распакованную документацию дистрибутива,
а именно вводную страничку (входит в пакет branding-*-indexhtml)
и/или специфичное для данного продукта руководство из пакета docs-*
(вариант задаётся отдельно выставлением переменной DOCS).
Обратите внимание, что для indexhtml создаётся переброска с учётом
языка (при наличии index-LL.html), поэтому ожидается задействование
фичи l10n с соответствующим указанием языка по умолчанию.
NB: предполагается применение при формировании ISO-образов,
другие случаи наверняка потребуют доработки.

View File

@@ -1,18 +0,0 @@
# copy the packaged docs to image root
# packaged documentation sources:
# 1) branding-*-indexhtml
# 2) docs-* (should be installed elsewhere)
+docs: use/docs; @:
use/docs:
@$(call add_feature)
use/docs/indexhtml: use/docs use/branding
@$(call add,THE_BRANDING,indexhtml)
use/docs/manual: use/docs
@$(call xport,DOCS)
@$(call add,THE_PACKAGES,docs-$(DOCS))
use/docs/full: use/docs/indexhtml use/docs/manual; @:

View File

@@ -1,8 +0,0 @@
# step 4: build the distribution image
ifneq (,$(DOCS))
DOT_BASE += docs-$(DOCS)
CHROOT_PACKAGES += docs-$(DOCS)
endif
CHROOT_PACKAGES_REGEXP += $(call branding,indexhtml)

View File

@@ -1,46 +0,0 @@
#!/bin/sh -e
# trailing slash is important here
dest="docs/"
mkdir -p "$WORKDIR/$dest"
cd $WORKDIR
nonfatal() { echo "** $*" >&2; exit 0; }
indexdir="/usr/share/doc/indexhtml"
indexfile="$indexdir/index.html"
[ -s "$indexfile" ] || nonfatal "$indexfile not found"
[ -n "$GLOBAL_LOCALE" ] ||
echo "** warning: GLOBAL_LOCALE empty, maybe use/l10n" >&2
LANG="$GLOBAL_LOCALE" indexhtml-update
# http://unix.stackexchange.com/questions/94185/convert-soft-to-hardlinks
cp -aH "$indexdir" "$dest"
mkredir() {
cat >"${1}index.html" <<-EOF
<html>
<head>
<meta http-equiv="refresh" content="0;url=${2}indexhtml/index.html">
<title>Redirecting...</title>
</head>
<body>
<h1>Redirecting...</h1>
</body>
</html>
EOF
}
mkredir "" "$dest" # /index.html -> docs/indexhtml/index.html
mkredir "$dest" "" # docs//index.html -> indexhtml/index.html
docdir="/usr/share/doc/documentation"
[ -d "$docdir" ] || nonfatal "$docdir not found"
cp -aH "$docdir" "$dest"
### no need to replace symlinks with hardlinks by now? (-aH)

View File

@@ -1,7 +0,0 @@
Эта фича конфигурирует поддержку клиента домена ALT Linux.
krb5-ticket-watcher применяется для отладки либо обновления
билетов при нехватке сконфигурированного по умолчанию (сутки)
либо указанного администратором времени жизни таковых.
NB: не проверено на инсталяторах!

View File

@@ -1,7 +0,0 @@
use/domain-client: use/net/dhcp
@$(call add_feature)
@$(call add,THE_LISTS,domain-client)
use/domain-client/full: use/domain-client
@$(call add,THE_PACKAGES,krb5-ticket-watcher)
@$(call add,DEFAULT_SERVICES_ENABLE,avahi-daemon)

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