Compare commits

..

66 Commits

Author SHA1 Message Date
Michael Shigorin
49eb551fef 0.7.3-alt1
- arm builds
2012-07-09 23:46:49 +03:00
Michael Shigorin
3c26cc869d initial native ARM support
The only thing to be fixed was setarch(8) symlinks assumption
that is correct for x86 but not for ARM.

There's also some hasher(7) setup to be done:

  mkdir -p ~/.hasher
  echo >> ~/.hasher/config <<-EOF
  def_target=arm
  #cache_dir=$HOME/tmp	# depends on RAM/storage configuration
  EOF

...and of course apt(8) should be properly set up too.

An example PoC build on a CM-A510 board (tmpfs):

  $ make BRANDING=altlinux-centaurus ve/bare.tar.gz
  ** ARCH: arm
  18:10:45 initializing BUILDDIR: build/
  18:10:45 preparing distro config: build/distcfg.mk
  18:10:46 starting image build: tail -f build/build.log
  18:14:49 done (4:02)
  ** image: $TMP/out/bare-20120706-arm.tar.gz [23M]
2012-07-09 21:32:54 +03:00
Michael Shigorin
698c5e314a Makefile: drop noise when no config is found
~/.mkimage/profiles.mk is useful but not requisite by any margin;
no need to make noise trying to make it either.
2012-07-09 21:31:37 +03:00
Michael Shigorin
7683532ea2 lib/kernel.mk: single byte bugfix
Whoops, an overlooked character didn't bring too many
things down but was a BUG indeed :-/
2012-07-06 18:52:46 +03:00
Michael Shigorin
cf21fd4298 gear-store-tags 2012-07-02 16:19:06 +03:00
Michael Shigorin
b4560c7aee 0.7.2-alt1
- simply fixes
2012-07-02 16:17:22 +03:00
Michael Shigorin
bdb2ac05f8 50-setup-network: spelling fixes
It's not DHCP we're configuring but rather eth0.
(no need for trailing space either)
2012-07-02 16:14:34 +03:00
Michael Shigorin
cb55a89365 desktop.mk: use Croscore Arimo for most installers
The very basic bitmap fonts that were left in back a year ago
aren't particularly modern (even if they are somewhat elegant
and resource sparing which was the goal at that time).

So let's allow for something slightly prettier,
like Croscore Arimo kindly prepared by Steve Matteson,
provided by Google, packaged by Fedora and imported by
Igor Vlasenko.

Here's the news item behind this commit:
http://lwn.net/Articles/502371/
2012-07-02 16:14:34 +03:00
Michael Shigorin
ee3bdb2954 README: whoops, temporary name persisted
As they say there's nothing more permanent
than a temporary... params.txt and pkglists.txt
were known as vars-build.txt and vars-conf.mk
in the midst of reworking, and part of that
tried to stick.
2012-07-02 16:14:34 +03:00
Michael Shigorin
e36792ac90 lib/functions.mk: initial xport()
A few too many downstream makefiles employed the pattern
of "export GLOBAL_VAR := $(VAR)"; macroize that.
2012-07-02 16:14:34 +03:00
Michael Shigorin
fcf41f2201 proxy CLEANUP_PACKAGES down
mkimage implementation requires that the variables
to be passed to the scripts are to be prefixed with
GLOBAL_ or INFO_ tags as appropriate; in this case
the upstream makefile didn't care to.
2012-07-02 16:14:23 +03:00
Michael Shigorin
0e9a873608 build-vm: avoid dummy raw2raw conversion
It's better to rather just move the raw image instead
of specifically converting it into the same, and there's
no need for qemu-img altogether then.

Let's drop the intermediate raw image after successful
conversion as well.
2012-06-30 13:21:28 +03:00
Mikhail Efremov
bf5fd3f54e features.in/live: Don't use nopasswdlogin group in all cases.
Use it only for gdm and lightdm and only if it is used
in a PAM config.
2012-06-29 16:54:32 +04:00
Mikhail Efremov
87847ba744 slinux: Use installer-distro-simply-linux. 2012-06-28 19:41:37 +04:00
Mikhail Efremov
52ee4a826c live: Replace etcnet-dhcp hook with setup-network.
Setup network settings:
1. Init /etc/hosts with "127.0.0.1 localhost"
2. Set hostname, domainname
3. Set defaults for NetworkManager or
   attempt to autoconfigure eth0 by etcnet.

Based on init3-network script from m-p-d.
2012-06-27 20:00:53 +04:00
Mikhail Efremov
b8ece7f7be slinux/xfce: Added local-time hook.
Set system time to local time.
2012-06-26 20:24:27 +04:00
Mikhail Efremov
42d7025a7f slinux/xfce: gnome-screensaver -> xscreensaver. 2012-06-26 18:48:03 +04:00
Michael Shigorin
bb811eeae8 gear-store-tags 2012-06-25 20:29:59 +03:00
Michael Shigorin
5c4cedb873 0.7.1-alt1
- vm improvements and assorted tweaks/fixes
2012-06-25 20:29:06 +03:00
Michael Shigorin
9ba93dff2d 35-xdg-user-dirs: cope with missing control
There's no reason to bail out if xdg-user-dirs control
facility is not available within the branch used.
2012-06-25 19:29:38 +03:00
Michael Shigorin
f8af1c9243 docs updated
Minor tweaks to toplevel docs as well as some doc/*.txt,
doc/variables.txt renamed to doc/params.txt, and a brand new
doc/pkglists.txt is added (thanks manowar@ for his considerations).
2012-06-25 19:29:38 +03:00
Michael Shigorin
aa0f5c94e4 05live.cfg: drop "splash" by default
It's configured by plymouth feature when needed;
install2 bootargs support is generalized a bit
to become stage2 one as was intended anyways.
2012-06-25 19:29:38 +03:00
Michael Shigorin
83b7ca6982 live.mk: added live-webkiosk-flash
This one was requested by Andrew Churashev; please note
that the image in use must contain recent flash plugin
so that at least the already known vulnerabilities are
more or less plugged in it... and Sun Java plugin isn't
going to get secure either.
2012-06-25 19:29:38 +03:00
Michael Shigorin
09be84beee initial vm-{net,ssh} features
A virtual machine isn't very useful if there are no means
to access it; let's bring up the basic networking and provide
root SSH access via pre-existing public key.

As the remote access with known default credentials is roughly
equivalent to just lending one's VMs to anyone with network
access to it, the fallback root password is now exterminated;
you have to provide one (or a long enough random string
if you plan to use keys only, see e.g. apg utility).
2012-06-25 19:29:38 +03:00
Michael Shigorin
3f21b6b01c factor out openssh packages
There's no need to repeat the typical openssh-* triade
all over the place; those who need server and client
are better off pulling in "openssh" pkglist, and those
needing a particular package should specify it.
2012-06-25 19:29:38 +03:00
Michael Shigorin
b24bd31f45 build-vm: 06syslog should differ from VE's one
There's no need to disable console as it's emulated too,
and it still can be helpful or just convenient.
2012-06-25 19:29:38 +03:00
Michael Shigorin
11d4f4062e vm feature renamed to vmguest
The "vm" name became a bit confusing with the introduction
of build-vm feature; let's call this one "vmguest" until we do
hierarchical (sub)features.
2012-06-25 19:29:38 +03:00
Michael Shigorin
e355bd7ce9 bashize tar2vm
Finally tired of expr(1) quirks,
and even ash(1) does $((arithmetic-expansion))!
2012-06-25 19:29:38 +03:00
Michael Shigorin
0a5f164d65 cleanup, build-vm: mutual support
It appears that reusing installer-feature-*-stage3 packages
is perfectly fine with VM images; these just need to be removed
after the package scripts they carry have worked out.
2012-06-25 19:29:38 +03:00
Michael Shigorin
8a04d9b656 initial specific VM formats support
Raw disk images are convenient and universal
but there are custom formats like Qemu's qcow2
providing additional features, e.g. copy-on-write
or space savings.  All of this ultimately belongs
to mkimage but in the mean time has been implemented
here as well.
2012-06-25 19:29:38 +03:00
Michael Shigorin
90be07fbf8 initial conf.d/vm.mk
After we have built a bare virtual machine image successfully
some variations are due, and these are to be described here.
2012-06-25 19:29:38 +03:00
Michael Shigorin
72fc74d142 x11: use stage3 variations for THE_PACKAGES
installer-feature-no-xconsole depends on stage2 bits and is
NOT intended for installed/live systems at all; let's move
to the proper stage3 based one.
2012-06-25 19:29:38 +03:00
Michael Shigorin
f6462700ca README: single-byte bugfix
Was mentioning REPORTS while the variable name is REPORT.
2012-06-25 19:29:38 +03:00
Mikhail Efremov
bc4277ffe1 systemd: Add 20-systemd-locale hook on live.
Don't allow systemd to set LANG for all processes.
See ALT#27408 for details.
2012-06-22 15:38:00 +04:00
Mikhail Efremov
6c018082d6 live: Add 35-xdg-user-dirs hook.
Turn on xdg-user-dirs by default.
2012-06-21 20:55:02 +04:00
Mikhail Efremov
9addba0c9d live: Fixed 30-users hook.
Workaround for ALT#13213.
2012-06-21 20:06:22 +04:00
Mikhail Efremov
1a7940c86f Change link to the image format.
$(IMAGE_NAME).$(IMAGE_TYPE) -> $(IMAGE_NAME)-latest-$(ARCH).$(IMAGE_TYPE)
2012-06-21 17:12:27 +04:00
Mikhail Efremov
9bd853e88c Add LIBDIR variable.
Allow to put the log files and reports in a custom directory instead
of IMIGEDIR.
2012-06-21 17:11:02 +04:00
Michael Shigorin
fc716ec048 gear-store-tags 2012-06-18 21:58:42 +03:00
Michael Shigorin
4de50be84c 0.7.0-alt1
- new features:
  + initial build-vm
  + plymouth
2012-06-18 21:56:46 +03:00
Michael Shigorin
75f7c62bd1 initial build-vm feature
Yes, mkimage-profiles is now able to build VM disk images.
So far the support is pretty basic:

- a single hard drive image with a single partition/FS
- only stock root password is configurable
- LILO is hardwired as a bootloader

The resulting images tend to boot under qemu/kvm though.

Please see doc/vm.txt for the warning regarding additional
privileges and setup required.  This was started back in
February but I still hoped to avoid sudo/privileged helper
(and libguestfs is almost as undistributable as can be)...

Thanks:

- http://blog.quinthar.com/2008/07/building-1gb-bootable-qemu-image-using.html
- Alexey Morarash who reworked that as https://github.com/tuxofil/linsygen
- led@, legion@, vitty@, aen@ for providing advice and inspiration
2012-06-18 21:56:46 +03:00
Michael Shigorin
6ab9a3550b live-mate.iso: move to nodm
autologin won't register a consolekit session, and gnomes
are too greedy regarding sessions to let us go unmolested...

This particular image isn't production ready when built on
current Sisyphus yet due to unresolved NM/dbus problems
but I decided to at least archive the reached state.
2012-06-18 20:58:11 +03:00
Michael Shigorin
59c1bf9705 initial nodm autologin support
This one is contributed by Max Kosmach and somewhat
streamlined/tweaked by me; a part of it rather belongs to
nodm and xinitrc packages but is not exactly trivial to get it
there due to the looming systemd-logind/consolekit disaster;
see also #27449.

Several hacks to make NetworkManager usable in a LiveCD environment
are there too (but it resists so far).
2012-06-18 20:57:46 +03:00
Michael Shigorin
743bc279b1 initial live-mate
The second shot at an image worked out;
MATE packages are not in Sisyphus yet, use

rpm http://autoimports.altlinux.org/pub/ALTLinux/autoimports/Sisyphus $ARCH autoimports
rpm http://autoimports.altlinux.org/pub/ALTLinux/autoimports/Sisyphus noarch autoimports
2012-06-18 20:55:53 +03:00
Michael Shigorin
d565196878 live-tde += plymouth, use/live/install
These tweaks were suggested by rom_as@
based on his continued m-p-d work.

distro/.live-desktop also changed to depend
on use/plymouth/live
2012-06-18 20:55:52 +03:00
62d2353c3e update server-systemd
(mike@: actually no sense to set both
KFLAVOURS and STAGE1_KFLAVOUR to the same value
since the latter is derived from the former)
2012-06-18 20:55:52 +03:00
Michael Shigorin
2935c44dbb syslinux: get rid of ^s with gfxboot
Keyboard accelerators rather make sense
with menu/vesamenu UI.
2012-06-18 20:55:52 +03:00
Michael Shigorin
07d812d7ff 99cleanupdb: drop silly apt purge attempt
Why would anyone try to remove apt when it's needed
for package dependency tracking for the installation,
it only takes a less cursory look at the build.log
to figure out it didn't actually happen anyways...
2012-06-18 20:55:38 +03:00
Michael Shigorin
8989fc2771 added plymouth feature
An initial draft of it was done half a year ago but several tricky
thingies had kept the code from showing up as it was rather brittle
and incomplete.

This implementation involves quite a few changes all over the place
but finally works good enough for live and installer images.

Please pay attention to the versions of these packages:
- installer-feature-setup-plymouth (0.3.2-alt1+)
- branding-altlinux-sisyphus (20110706-alt2+ if used)
- plymouth (0.8.3-alt20.git20110406+)

See also:
- http://www.altlinux.org/Branding
- http://www.altlinux.org/Plymouth
2012-06-14 17:15:24 +03:00
Michael Shigorin
804daaa16b gear-store-tags 2012-05-28 22:15:59 +03:00
Michael Shigorin
ebeb52b5da 0.6.8-alt1
- minor bugfixes
2012-05-28 22:13:50 +03:00
Michael Shigorin
5c3d58b8e4 desktop: add glibc-locales, essentially
The more or less basic desktop appeared to lack
base locale support (starting with glibc-locales).
2012-05-26 15:10:20 +03:00
Michael Shigorin
860e20c62d lib/common.mk: avoid using uninitialized variables
It somehow managed to evade me that $(TMP) might be uninitialized;
definitely should be checked before stuffing into sed substitution
command.

NB: this could be done in pure make but my take was less readable.

Thanks shadowsbrother/gmail for hitting and reporting this.
2012-05-26 14:08:19 +03:00
Michael Shigorin
74e5734eae 80-make-initfs: optimize for newer make-initrd
legion@ implemented skipping depmod call, and that's several more
seconds for most of the images; let's shave these off if possible.
2012-05-25 16:55:54 +03:00
Michael Shigorin
3e7346f4e2 gear-store-tags 2012-05-21 21:30:37 +03:00
Michael Shigorin
128fc9d44d 0.6.7-alt1
- docs updates
2012-05-21 21:29:58 +03:00
Michael Shigorin
5dc8001a8a doc/features.txt: clarified the convention
It might be spottable but not immediately obvious that a feature
lives entirely in features.in/FEATURE and every target it provides
is described in the corresponding config.mk; thanks dkr@ for asking.
2012-05-21 21:04:00 +03:00
Michael Shigorin
8cc8d5ff36 doc/variables.txt: tweak CHECK description
It wasn't exactly obvious that the actual image build
isn't started with CHECK=1.
2012-05-21 21:04:00 +03:00
Michael Shigorin
d190e6ef1c Makefile: include ~/.mkimage/profile.mk as well
It appears that while splitting off main.mk we've lost
the ability to pass e.g. ARCHES via custom configuration;
thanks dkr@ for spotting this.
2012-05-21 21:04:00 +03:00
Michael Shigorin
9414bde4f5 added sub.in/{main,stage2}/lib/.gitignore
Whoops, forgot to feed placeholders for git to grok
the empty directories that are needed later...
2012-05-21 21:04:00 +03:00
Michael Shigorin
dc93c137d9 docs: more hints on features
It wasn't articulated clearly enough that features are strictly
incremental (while variables can be overridden).
2012-05-21 21:04:00 +03:00
Michael Shigorin
88481ecc81 live-razorqt: lightdm tweaks
lightdm-1.1+ handling had to be corrected
regarding the separate greeters.
2012-05-21 21:03:08 +03:00
Michael Shigorin
a304469699 vm: tweak virtualbox modules
virtualbox-addition modules need drm (see also #27344).
2012-05-16 15:17:57 +03:00
Michael Shigorin
695648f8b4 lib/check.mk: catch missing READMEs for features
`make check' is a bit more convenient than relying on my head...
2012-05-16 13:48:12 +03:00
Michael Shigorin
c42d635b55 features.in/{kernel,vm}: added READMEs
Shame on me, these shouldn't get forgotten in the first place.
2012-05-16 13:47:30 +03:00
Michael Shigorin
03f99d9ff2 gear-store-tags 2012-05-14 21:37:32 +03:00
94 changed files with 931 additions and 145 deletions

View File

@@ -1,5 +1,5 @@
Name: mkimage-profiles
Version: 0.6.6
Version: 0.7.3
Release: alt1
Summary: ALT Linux based distribution metaprofile
@@ -61,6 +61,26 @@ cp -a * %buildroot%mpdir
%doc README QUICKSTART
%changelog
* Mon Jul 09 2012 Michael Shigorin <mike@altlinux.org> 0.7.3-alt1
- arm builds
* Mon Jul 02 2012 Michael Shigorin <mike@altlinux.org> 0.7.2-alt1
- simply fixes
* Mon Jun 25 2012 Michael Shigorin <mike@altlinux.org> 0.7.1-alt1
- vm improvements and assorted tweaks/fixes
* Mon Jun 18 2012 Michael Shigorin <mike@altlinux.org> 0.7.0-alt1
- new features:
+ initial build-vm
+ plymouth
* Mon May 28 2012 Michael Shigorin <mike@altlinux.org> 0.6.8-alt1
- minor bugfixes
* Mon May 21 2012 Michael Shigorin <mike@altlinux.org> 0.6.7-alt1
- docs updates
* Mon May 14 2012 Michael Shigorin <mike@altlinux.org> 0.6.6-alt1
- build helpers refactored
- initial frontend support

View File

@@ -1,6 +0,0 @@
object 57f7b70900d8764dd39eb78b1281769edc971db8
type commit
tag v0.6.5
tagger Michael Shigorin <mike@altlinux.org> 1336421542 +0300
branding

View File

@@ -0,0 +1,6 @@
object b4560c7aee6082b1a8f33981ee5543339e4f1ddb
type commit
tag v0.7.2
tagger Michael Shigorin <mike@altlinux.org> 1341235133 +0300
simply fixes

View File

@@ -1 +1 @@
2875a11aad94e07a8a7183698f1481cb441e1c6d v0.6.5
f108c3daaab553777186eb3d12e6a850516417d4 v0.7.2

View File

@@ -2,12 +2,15 @@
# iterate over multiple goals/arches,
# collect proceedings
# preferences
-include $(HOME)/.mkimage/profiles.mk
# for immediate assignment
ifndef ARCHES
ifdef ARCH
ARCHES := $(ARCH)
else
ARCHES := $(shell arch | sed 's/i686/i586/')
ARCHES := $(shell arch | sed 's/i686/i586/; s/armv.*/arm/')
endif
endif
export ARCHES
@@ -23,7 +26,7 @@ endif
# recursive make considered useful for m-p
MAKE += -r --no-print-directory
DIRECT_TARGETS := clean distclean check help help/distro help/ve
DIRECT_TARGETS := clean distclean check help help/distro help/ve help/vm
.PHONY: $(DIRECT_TARGETS)
$(DIRECT_TARGETS):
@$(MAKE) -f main.mk $@
@@ -33,6 +36,9 @@ export NUM_TARGETS := $(words $(MAKECMDGOALS))
# for pipefail
SHELL = /bin/bash
# don't even consider remaking a configuration file
.PHONY: $(HOME)/.mkimage/profiles.mk
# real targets need real work
%:
@n=1; \

View File

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

19
README
View File

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

131
bin/tar2vm Executable file
View File

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

View File

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

View File

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

View File

@@ -9,7 +9,7 @@ distro/rescue: distro/.base use/rescue use/syslinux/ui/menu; @:
distro/live-systemd: distro/.base use/live/base use/systemd; @:
distro/.live-base: distro/.base use/live/base use/power/acpi/button; @:
distro/.live-desktop: distro/.base +live use/syslinux/ui/vesamenu; @:
distro/.live-desktop: distro/.base +live use/plymouth/live; @:
distro/.live-kiosk: distro/.base use/live/base use/live/autologin \
use/syslinux/timeout/1 use/cleanup +power
@@ -32,12 +32,13 @@ distro/live-install: distro/.live-base use/live/textinst; @:
distro/.livecd-install: distro/.live-base use/live/install; @:
distro/live-icewm: distro/.live-desktop use/live/autologin +icewm; @:
distro/live-razorqt: distro/.live-desktop +razorqt; @:
distro/live-tde: distro/.live-desktop use/live/ru +tde; @:
distro/live-razorqt: distro/.live-desktop use/live/autologin +razorqt; @:
distro/live-tde: distro/.live-desktop use/live/ru use/live/install +tde; @:
distro/live-plymouth: distro/.live-base use/plymouth/live; @:
distro/live-rescue: distro/live-icewm
@$(call add,LIVE_LISTS,$(call tags,rescue && (fs || live || x11)))
@$(call add,LIVE_LISTS, \
@$(call add,LIVE_LISTS,openssh \
$(call tags,(base || extra) && (archive || rescue || network)))
distro/live-webkiosk-mini: distro/.live-kiosk use/live/hooks use/live/ru
@@ -45,6 +46,12 @@ distro/live-webkiosk-mini: distro/.live-kiosk use/live/hooks use/live/ru
@$(call add,LIVE_PACKAGES,livecd-webkiosk)
@$(call add,CLEANUP_PACKAGES,'libqt4*' 'qt4*')
# NB: flash/java plugins are predictable security holes
distro/live-webkiosk-flash: distro/live-webkiosk-mini use/plymouth/live +vmguest
@$(call add,LIVE_PACKAGES,mozilla-plugin-adobe-flash)
@$(call add,LIVE_PACKAGES,mozilla-plugin-java-1.6.0-sun)
@$(call add,LIVE_PACKAGES,alsa-utils udev-alsa)
distro/live-webkiosk: distro/live-webkiosk-mini use/live/desktop; @:
distro/live-flightgear: distro/live-icewm use/live/sound use/x11/3d-proprietary
@@ -52,9 +59,13 @@ distro/live-flightgear: distro/live-icewm use/live/sound use/x11/3d-proprietary
@$(call try,HOMEPAGE,http://www.4p8.com/eric.brasseur/flight_simulator_tutorial.html)
distro/live-cinnamon: distro/.live-desktop use/live/autologin use/live/ru \
use/x11/cinnamon use/x11/3d-proprietary
use/x11/cinnamon use/x11/3d-proprietary; @:
distro/live-enlightenment: distro/.live-desktop use/live/autologin use/live/ru use/x11/3d-free
distro/live-mate: distro/.live-desktop use/live/nodm use/live/ru use/x11/3d-free
@$(call add,LIVE_LISTS,$(call tags,(desktop || mobile) && mate))
distro/live-enlightenment: distro/.live-desktop use/live/autologin \
use/live/ru use/x11/3d-free
@$(call add,LIVE_PACKAGES,enlightenment)
distro/live-gimp: distro/live-icewm use/x11/3d-free use/live/ru

View File

@@ -2,7 +2,7 @@
ifeq (distro,$(IMAGE_CLASS))
distro/.server-base: distro/.installer use/syslinux/ui/menu use/memtest
@$(call add,BASE_LISTS,server-base)
@$(call add,BASE_LISTS,server-base openssh)
distro/server-nano: distro/.server-base \
use/cleanup/x11-alterator use/bootloader/lilo
@@ -17,7 +17,8 @@ distro/server-mini: distro/.server-base use/cleanup/x11-alterator
$(call tags,base && (server || network || security || pkg)))
@$(call add,BASE_LISTS,$(call tags,extra (server || network)))
distro/server-systemd: distro/server-mini use/systemd use/bootloader/lilo; @:
distro/server-systemd: distro/server-mini use/systemd
@$(call set,KFLAVOURS,std-def)
distro/server-ovz: distro/server-mini use/install2/net use/hdt use/rescue \
use/firmware/server use/firmware/wireless use/power/acpi/button

View File

@@ -6,6 +6,6 @@ distro/live-simply: distro/.livecd-install use/slinux/full
@$(call add,THE_LISTS,slinux/live-install)
distro/simply: distro/.installer use/slinux/full
@$(call set,INSTALLER,desktop)
@$(call set,INSTALLER,simply-linux)
endif

13
conf.d/vm.mk Normal file
View File

@@ -0,0 +1,13 @@
# virtual machines
ifeq (vm,$(IMAGE_CLASS))
# NB: use/x11 employs some installer-feature packages
vm/icewm: vm/bare use/cleanup/installer use/x11/xdm +icewm; @:
vm/net: vm/bare use/vm-net/dhcp use/vm-ssh; @:
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

View File

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

View File

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

View File

@@ -10,7 +10,7 @@
- ARCH
+ задаёт целевую архитектуру образов
+ значение: пусто (по умолчанию авто), i586 или x86_64
+ значение: пусто (по умолчанию авто), i586, x86_64 или arm
+ см. ../lib/build.mk
- ARCHES
@@ -39,7 +39,7 @@
+ см. ../lib/log.mk
- CHECK
+ включает режим проверки сборки конфигурации
+ включает режим проверки сборки конфигурации (без сборки образа)
+ значение: пусто (по умолчанию) либо любая строка
+ см. ../lib/build.mk
@@ -76,6 +76,11 @@
+ NB: в силу специфики обработки передаётся только явно
+ см. ../Makefile, ../report.mk, ../lib/report.mk
- ROOTPW
+ устанавливает пароль root по умолчанию для образов виртуальных машин
+ значение: пусто (по умолчанию root) либо строка
+ см. ../features.in/build-vm/image-scripts.d/00root
- SAVE_PROFILE
+ сохраняет архив сгенерированного профиля в .disk/
+ значение: пусто (по умолчанию) либо любая строка

50
doc/pkglists.txt Normal file
View File

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

24
doc/vm.txt Normal file
View File

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

View File

@@ -30,6 +30,8 @@ endef
else
export BUILDDIR
include $(BUILDDIR)/distcfg.mk
# first rsync what's static, and make backups (*~) --

View File

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

View File

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

View File

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

View File

@@ -23,7 +23,6 @@ all: $(GLOBAL_DEBUG) prep copy-subdirs copy-tree run-scripts pack-image \
postprocess $(GLOBAL_CLEAN_WORKDIR)
prep: $(GLOBAL_DEBUG) dot-disk $(WHATEVER) imagedir
#prep: $(GLOBAL_DEBUG) dot-disk metadata imagedir
dot-disk:
@mkdir -p files/.disk

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -5,14 +5,15 @@ use/install2: use/stage2 sub/stage2/install2 use/metadata use/cleanup/installer
@$(call add,INSTALL2_PACKAGES,branding-$$(BRANDING)-alterator)
@$(call add,BASE_PACKAGES,branding-$$(BRANDING)-release)
@$(call add,BASE_LISTS,$(call tags,basesystem))
@$(call xport,BASE_BOOTLOADER)
use/install2/net: use/install2
@$(call add,INSTALL2_PACKAGES,curl)
# modern free xorg drivers for mainstream hardware requires KMS support
use/install2/kms:
@$(call set,STAGE1_KMODULES_REGEXP,drm.*)
use/install2/kms: use/stage2/kms
@$(call add,BASE_KMODULES_REGEXP,drm.*)
# see also use/vm/kvm/guest; qxl included in xorg pkglist
# see also use/vmguest/kvm; qxl included in xorg pkglist
use/install2/kvm:
@$(call add,INSTALL2_PACKAGES,spice-vdagent xorg-drv-qxl)

View File

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

View File

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

View File

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

View File

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

View File

@@ -9,6 +9,10 @@ use/live: use/stage2 sub/stage2/live
use/live/base: use/live use/syslinux/ui/menu
@$(call add,LIVE_LISTS,$(call tags,base && (live || network)))
# a very simplistic one
use/live/x11: use/live use/x11/xorg
@$(call add,LIVE_PACKAGES,xinit)
# optimized out: use/x11/xorg
use/live/desktop: use/live/base use/x11/wacom use/live/sound +vmguest +power
@$(call add,LIVE_LISTS,$(call tags,desktop && (live || network)))
@@ -26,9 +30,12 @@ use/live/textinstall: use/syslinux/localboot.cfg
# NB: there's an unconditional live/image-scripts.d/40-autologin script
# *but* it only configures some of the *existing* means; let's add one
# for the cases when there should be no display manager
use/live/autologin: use/live use/x11/xorg
@$(call add,LIVE_PACKAGES,autologin xinit)
# or another for the cases when there should be no display manager
use/live/autologin: use/live/x11
@$(call add,LIVE_PACKAGES,autologin)
use/live/nodm: use/live/x11
@$(call add,LIVE_PACKAGES,nodm)
use/live/hooks: use/live
@$(call add,LIVE_PACKAGES,livecd-run-hooks)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,6 +6,9 @@ METADIR := files/Metadata
# preparation targets of ../../build-distro/lib/build-distro.mk
WHATEVER += metadata
# handle these too
DOT_BASE += $(BASE_PACKAGES_REGEXP)
# args: name, suffix, command
define dump-THEM
if [ -n "$($(1)_$(2))" ]; then echo -e "\n## $(1)_$(2)"; $(3) $($(1)_$(2)); fi;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
label live
menu label ^LiveCD (no hard disk needed)
kernel alt0/vmlinuz
append initrd=alt0/full.cz fastboot live lowmem showopts automatic=method:cdrom ramdisk_size=@live_size@ stagename=live
append initrd=alt0/full.cz fastboot live lowmem showopts automatic=method:cdrom ramdisk_size=@live_size@ stagename=live vga=0x314 @bootargs@

View File

@@ -1,10 +1,10 @@
label linux
menu label ^Install ALT Linux
kernel alt0/vmlinuz
append initrd=alt0/full.cz changedisk fastboot showopts automatic=method:cdrom quiet=1 ramdisk_size=@altinst_size@ vga=0x314
append initrd=alt0/full.cz changedisk fastboot showopts automatic=method:cdrom ramdisk_size=@altinst_size@ vga=0x314 @bootargs@
label noapic
menu label ^Failsafe install
kernel alt0/vmlinuz
append initrd=alt0/full.cz changedisk lowmem noapic nolapic showopts ramdisk_size=@altinst_size@
append initrd=alt0/full.cz changedisk lowmem noapic nolapic showopts ramdisk_size=@altinst_size@ xdriver=vesa @bootargs@

View File

@@ -55,7 +55,7 @@ all: debug timeout
@echo $(SYSLINUX_FILES) > $(DSTDIR)/syslinux.list
# integerity check
timeout: copy
timeout: bootargs
@if [ "$(SYSLINUX_TIMEOUT)" -ge 0 ] 2>/dev/null; then \
TIMEOUT="$(SYSLINUX_TIMEOUT)"; \
else \
@@ -63,6 +63,18 @@ timeout: copy
fi; \
sed -i "s,@timeout@,$$TIMEOUT," $(DSTDIR)/*.cfg
# pass over additional parameters, if any
bootargs: clean
@if [ -n "$(STAGE2_BOOTARGS)" ]; then \
sed -i "s,@bootargs@,$(STAGE2_BOOTARGS)," $(DSTDIR)/*.cfg; \
fi; \
sed -i "s,@bootargs@,," $(DSTDIR)/*.cfg
clean: copy
@if [ "$(SYSLINUX_UI)" = gfxboot ]; then \
sed -i "s,\^,," $(DSTDIR)/*.cfg; \
fi
copy: prep
@cp -pLt $(DSTDIR) -- $(sort \
$(foreach C,$(SYSLINUX_CFG),$(call cfg,$(C))) \

View File

@@ -0,0 +1,4 @@
#!/bin/sh
# Don't allow systemd to set LANG.
echo 'LANG=' >/etc/locale.conf

View File

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

View File

@@ -0,0 +1,11 @@
use/vm-net:
@$(call add_feature)
@$(call add,THE_PACKAGES,etcnet)
use/vm-net/dhcp: use/vm-net
@$(call add,THE_PACKAGES,dhcpcd)
@$(call set,VM_NET,dhcp)
# need to further add VM_NET_IPV4ADDR and VM_NET_IPV4GW
use/vm-net/static: use/vm-net
@$(call set,VM_NET,static)

View File

@@ -0,0 +1,26 @@
ifdef BUILDDIR
include $(BUILDDIR)/distcfg.mk
all: dir = $(BUILDDIR)/files/etc/net/ifaces/eth0
all:
@write_static() { \
echo "$(VM_NET_IPV4ADDR)" > "$(dir)/ipv4address"; \
echo "default via $(VM_NET_IPV4GW)" > "$(dir)/ipv4route"; \
}; \
if [ -n "$(VM_NET)" ] && mkdir -p "$(dir)"; then \
case "$(VM_NET)" in \
dhcp) ;; \
static) write_static;; \
*) \
echo "** error: unknown value of $(VM_NET)" >&2; \
exit 1;; \
esac; \
{ \
echo "TYPE=eth"; \
echo "DISABLED=no"; \
echo "BOOTPROTO=$(VM_NET)"; \
} > "$(dir)/options"; \
fi
endif

View File

@@ -0,0 +1,6 @@
Эта фича предназначена для добавления в образ виртуальной машины
поддержки SSH: добавляется клиент и конфигурируется сервер
(требуется задание пути к существующему публичному ключу
посредством переменной SSH_KEY).
Фактически требует один из вариантов use/vm-net для осмысленности.

View File

@@ -0,0 +1,3 @@
use/vm-ssh:
@$(call add_feature)
@$(call add,THE_LISTS,openssh)

View File

@@ -0,0 +1,12 @@
ifdef BUILDDIR
include $(BUILDDIR)/distcfg.mk
# prepare the provided public SSH key to be carried over into the VM image
all: SSH_DIR = $(BUILDDIR)/files/root/.ssh
all:
@if [ -s "$(SSH_KEY)" ]; then \
install -pD "$(SSH_KEY)" "$(SSH_DIR)/authorized_keys"; \
fi
endif

View File

@@ -0,0 +1,5 @@
#!/bin/sh
# tighten up permissions just in case
[ ! -d /root/.ssh ] || chmod 700 /root/.ssh
[ ! -f /root/.ssh/authorized_keys ] || chmod 600 /root/.ssh/authorized_keys

View File

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

View File

@@ -1,12 +1,12 @@
+vmguest: use/vm/virtualbox/guest use/vm/kvm/guest; @:
+vmguest: use/vmguest/virtualbox use/vmguest/kvm; @:
use/vm/virtualbox/guest:
use/vmguest/virtualbox:
@$(call add_feature)
@$(call add,THE_KMODULES,virtualbox-addition)
@$(call add,THE_KMODULES,virtualbox-addition drm)
@$(call add,THE_PACKAGES,virtualbox-guest-additions)
# NB: only reasonable for X11-bearing images
use/vm/kvm/guest:
use/vmguest/kvm:
@$(call add_feature)
@$(call add,THE_PACKAGES,spice-vdagent)

View File

@@ -1,5 +1,5 @@
+icewm: use/x11/icewm; @:
+razorqt: use/x11/razorqt use/x11/lightdm; @:
+razorqt: use/x11/razorqt use/x11/lightdm/qt; @:
+tde: use/x11/tde use/x11/kdm; @:
use/x11/xorg:
@@ -27,11 +27,11 @@ use/x11/runlevel5: use/x11/xorg
### xdm: see also #23108
use/x11/xdm: use/x11/runlevel5
@$(call add,THE_PACKAGES,xdm installer-feature-no-xconsole)
@$(call add,THE_PACKAGES,xdm installer-feature-no-xconsole-stage3)
### : some set()-like thing might be better?
use/x11/lightdm: use/x11/runlevel5
@$(call add,THE_PACKAGES,lightdm)
use/x11/lightdm/qt use/x11/lightdm/gtk: use/x11/lightdm/%: use/x11/runlevel5
@$(call add,THE_PACKAGES,lightdm-$*-greeter)
use/x11/kdm: use/x11/runlevel5
@$(call add,THE_PACKAGES,kdebase-kdm)

View File

@@ -36,7 +36,7 @@ IMAGE_OUTFILE := $(IMAGE_NAME)-$(DATE)-$(ARCH).$(IMAGE_TYPE)
IMAGE_OUTPATH := $(IMAGE_OUTDIR)/$(IMAGE_OUTFILE)
IMAGE_RELPATH := $(IMAGE_SORTDIR:%=%/)$(IMAGE_OUTFILE)
IMAGE_RELDIR := $(IMAGE_OUTDIR:$(GLOBAL_BUILDDIR)/%=%)
IMAGE_LINK := $(IMAGE_NAME).$(IMAGE_TYPE)
IMAGE_LINK := $(IMAGE_NAME)-latest-$(ARCH).$(IMAGE_TYPE)
IMAGE_LINKPATH := $(IMAGEDIR)/$(IMAGE_LINK)
### multi-pack can be useful (think netinst iso/tree)
@@ -74,12 +74,14 @@ postprocess: | $(addprefix postprocess-,$(sort $(POSTPROCESS_TARGETS)))
@OUTSIZE="`ls -lh "$(IMAGE_OUTPATH)" | cut -f5 -d' '`"; \
echo "** image: $(IMAGE_OUTPATH) [$$OUTSIZE]" >&2 && \
echo "IMAGE_OUTPATH = $(IMAGE_OUTPATH)" && \
echo "IMAGE_OUTFILE = $(IMAGE_OUTFILE)" && \
ln -sf "$(IMAGE_RELPATH)" "$(IMAGE_LINKPATH)" && \
ln -sf "$(IMAGE_RELDIR)" "$(OUT_LINK)" && \
ln -sf "$(IMAGE_LINK)" "$(IMAGEDIR)/$(CURRENT_LINK).$(IMAGE_TYPE)"; \
if [ -n "$(GLOBAL_DEBUG)" ]; then \
cp -a build.log "$(IMAGE_OUTPATH).log"; \
cp -a distcfg.mk "$(IMAGE_OUTPATH).cfg"; \
mkdir -p "$(LOGDIR)"; \
cp -a build.log "$(LOGDIR)/$(IMAGE_OUTFILE).log"; \
cp -a distcfg.mk "$(LOGDIR)/$(IMAGE_OUTFILE).cfg"; \
fi
debug:

View File

@@ -2,7 +2,7 @@
PKGDIR := $(GLOBAL_BUILDDIR)/pkg
# duplicated from metaprofile makefiles for the sake of "local" builds
ARCH ?= $(shell arch | sed 's/i686/i586/')
ARCH ?= $(shell arch | sed 's/i686/i586/; s/armv.*/arm/')
DATE ?= $(shell date +%Y%m%d)
# prefix pkglist name with its directory to form a path (relative/absolute)
@@ -23,7 +23,8 @@ SPACE := $(NULL) # the officially documented way of getting a space
list2re = $(subst $(SPACE),|,$(strip $(1)))
# args: KMODULES, KFLAVOURS
kpackages = ^kernel-(image|modules-($(call list2re,$(1))))-($(call list2re,$(2)))$$
kpackages = $(and $(1),$(2), \
^kernel-(image|modules-($(call list2re,$(1))))-($(call list2re,$(2)))$$)
# arg: branding subpackages
branding = ^branding-$(BRANDING)-($(call list2re,$(1)))$$
branding = $(and $(1),^branding-$(BRANDING)-($(call list2re,$(1)))$$)

View File

@@ -20,8 +20,10 @@ LOWSPACE = 1024
# it's also nice to know how long and much it takes
START += time -f "%E %PCPU %Mk"
# /usr/bin/{i586,x86_64} are setarch(8) symlinks
ifneq (,$(wildcard $(subst :,/$(ARCH) ,$(PATH):)))
# /usr/bin/{i586,x86_64} are setarch(8) symlinks but arm is not
START += $(ARCH)
endif
# to be passed into distcfg.mk; suggestions are welcome
IMAGEDIR ?= $(shell \
@@ -33,6 +35,8 @@ IMAGEDIR ?= $(shell \
fi; \
)
LOGDIR ?= $(IMAGEDIR)
# actual build starter
# NB: our output MUST go into stderr to escape POSTPROC
build-image: profile/populate

View File

@@ -9,3 +9,9 @@ check:
| while read line; do \
echo "chmod 755 $$line"; \
done
@find features.in -maxdepth 1 -type d \
| while read dir; do \
if [ ! -s "$$dir/README" ]; then \
echo "$$dir: missing README"; \
fi; \
done

View File

@@ -7,10 +7,17 @@ BUILD_LOG = build.log
SYMLINK = build
# brevity postprocessor; not exported, for toplevel use only
SHORTEN = $(shell \
echo -n "| sed"; \
SHORTEN = $(shell FILTER=; \
if [ -s "$(SYMLINK)" ]; then \
echo -n " -e 's,$(BUILDDIR),$(SYMLINK),'"; \
FILTER=" -e 's,$(BUILDDIR),$(SYMLINK),'"; \
fi; \
if [ -n "$$TMP" ]; then \
FILTER="$$FILTER -e 's,$$TMP,\$$TMP,'"; \
fi; \
if [ -n "$$HOME" ]; then \
FILTER="$$FILTER -e 's,$$HOME,~,'"; \
fi; \
if [ -n "$$FILTER" ]; then \
echo -n "| sed $$FILTER"; \
fi; \
echo -n " -e 's,$(TMP),\$$TMP,' -e 's,$(HOME),~,'"; \
)

View File

@@ -36,6 +36,14 @@ define try_body
printf '%s ?= %s\n' '$(1)' '$(2)' >> "$(CONFIG)"; }
endef
# xport() requests a variable to be exported to the scripts
xport = $(and $(1),$(xport_body))
define xport_body
{ $(log_body); \
v='$(1:GLOBAL_%=%)'; \
printf 'export GLOBAL_%s = $$(%s)\n' "$$v" "$$v" >> "$(CONFIG)"; }
endef
# if the rule being executed isn't logged yet, log it
define log_body
{ [ -s "$(CONFIG)" ] && \

View File

@@ -6,7 +6,7 @@ define help_body
endef
else
define help_body
@echo '** available $(1) targets:'; \
echo '** available $(1) targets:'; \
columnize $(2)
endef
endif
@@ -14,11 +14,15 @@ endif
help = $(and $(2),$(help_body))
help/distro:
$(call help,distribution,$(sort $(DISTROS:distro/%=%)))
@$(call help,distribution,$(sort $(DISTROS:distro/%=%)))
help/ve:
@echo '** available virtual environment targets:'; \
columnize $(sort $(VES))
@[ -n "$(SPACE)" ] && echo; \
$(call help,virtual environment,$(sort $(VES)))
help: | help/distro help/space help/ve; @:
help/space:; @echo
help/vm:
@[ -n "$(SPACE)" ] && echo; \
$(call help,virtual machine,$(sort $(VMS)))
help: SPACE = 1
help: help/distro help/ve help/vm; @:

View File

@@ -6,5 +6,5 @@ endif
ifeq (i586,$(ARCH))
BIGRAM := std-pae
else
BUGRAM := std-def
BIGRAM := std-def
endif

View File

@@ -84,6 +84,7 @@ profile/bare: profile/init
@$(call try,MKIMAGE_PREFIX,/usr/share/mkimage)
@$(call try,GLOBAL_VERBOSE,)
@$(call try,IMAGEDIR,$(IMAGEDIR))
@$(call try,LOGDIR,$(LOGDIR))
@$(call try,BRANDING,altlinux-sisyphus)
@$(call set,IMAGE_INIT_LIST,+branding-$$(BRANDING)-release)
@if type -t git >&/dev/null && cd $(BUILDDIR); then \

View File

@@ -13,8 +13,7 @@ ve/bare: ve/.bare
@$(call add,BASE_PACKAGES,apt)
ve/generic: ve/.bare
@$(call add,BASE_PACKAGES,openssh-server openssh-blacklist openssh-clients)
@$(call add,BASE_LISTS,\
@$(call add,BASE_LISTS,openssh \
$(call tags,base && (server || network || security || pkg)))
ve/openvpn: ve/.bare

16
lib/vm.mk Normal file
View File

@@ -0,0 +1,16 @@
# step 2: build up virtual machine's configuration
ifndef MKIMAGE_PROFILES
$(error this makefile is designed to be included in toplevel one)
endif
ifeq (vm,$(IMAGE_CLASS))
vm/.bare: profile/bare
@$(call add,BASE_PACKAGES,interactivesystem lilo shadow-utils e2fsprogs)
@$(call set,KFLAVOURS,std-def)
vm/bare: vm/.bare
@$(call add,BASE_PACKAGES,apt)
endif

View File

@@ -34,15 +34,19 @@ include lib/*.mk
include conf.d/*.mk
include features.in/*/config.mk
# starts to look copypastey
DISTRO_TARGETS := $(shell sed -n 's,^\(distro/[^:.]\+\):.*$$,\1,p' \
lib/distro.mk $(wildcard conf.d/*.mk) | sort -u)
VE_TARGETS := $(shell sed -n 's,^\(ve/[^:.]\+\):.*$$,\1,p' \
lib/ve.mk $(wildcard conf.d/*.mk) | sort -u)
VM_TARGETS := $(shell sed -n 's,^\(vm/[^:.]\+\):.*$$,\1,p' \
lib/vm.mk $(wildcard conf.d/*.mk) | sort -u)
DISTROS := $(call addsuffices,$(DISTRO_EXTS),$(DISTRO_TARGETS))
VES := $(call addsuffices,$(VE_EXTS),$(VE_TARGETS))
IMAGES := $(DISTROS) $(VES)
VMS := $(call addsuffices,$(VM_EXTS),$(VM_TARGETS))
IMAGES := $(DISTROS) $(VES) $(VMS)
.PHONY: $(IMAGES) $(DISTRO_TARGETS) $(VE_TARGETS)
.PHONY: $(IMAGES) $(DISTRO_TARGETS) $(VE_TARGETS) $(VM_TARGETS)
.PHONY: debug everything help space
### duplicate but still needed

3
pkg.in/lists/openssh Normal file
View File

@@ -0,0 +1,3 @@
openssh-server
openssh-blacklist
openssh-clients

View File

@@ -4,8 +4,5 @@ vim-console
sfdisk
mdadm
openssh-server
openssh-clients
openssh-blacklist
screen
acpid

View File

@@ -28,15 +28,16 @@ thunar-volman-plugin
thunar-archive-plugin
#screensaver
gnome-screensaver
#gnome-screensaver
#gnome-screensaver-utils
xscreensaver
xscreensaver-frontend
xscreensaver-hacks-gl-
xscreensaver-modules-gl-
#samba
thunar-shares-plugin
xscreensaver-
xscreensaver-hacks-gl-
xscreensaver-modules-gl-
xfce4-wmdock-plugin-
xfce4-radio-plugin-
xfce4-genmon-plugin-
@@ -66,4 +67,3 @@ xfce4-mount-plugin
#xfce4-weather-plugin
xfce4-systemload-plugin
xfce4-cpugraph-plugin
#xfce4-xfapplet-plugin

View File

@@ -0,0 +1,20 @@
altlinux-freedesktop-menu-mate
mate-conf-gtk
mate-control-center
mate-desktop
mate-dialogs
mate-file-manager
mate-icon-theme
mate-keyring
mate-menus
mate-mime-data
mate-notification-daemon
mate-panel
mate-polkit
mate-session
#mate-session-manager
mate-settings-daemon
mate-themes
mate-vfs
mate-vfs-smb
mate-window-manager

View File

@@ -0,0 +1,18 @@
NetworkManager
NetworkManager-gnome
wpa_gui
rfkill
dbus-tools-gui
fonts-ttf-droid
xdg-user-dirs
#gnome-minimal
#gnome-mobile
ConsoleKit
ConsoleKit-x11
pam-ck-connector
notification-daemon
powermgmt-base
acpi
acpid
acpid-events-power
eeepc-acpi-scripts

View File

@@ -78,8 +78,6 @@ netlist
nfs-utils
ngrep
nmap
openssh-clients
openssh-server
p0f
postfix
rsync

View File

@@ -8,9 +8,6 @@ lftp
mailx
netcat
netlist
openssh-clients
openssh-server
openssh-blacklist
rsync
traceroute
vlan-utils

View File

@@ -8,6 +8,8 @@ BUILDDIR := $(shell sed -n 's/^.* BUILDDIR = \(.*\)/\1/p' "$(REPORT_PATH)")
BUILDLOG := $(BUILDDIR)/$(BUILD_LOG)
REPORTDIR := $(BUILDDIR)/reports
IMAGE_OUTPATH := $(shell sed -n 's/^IMAGE_OUTPATH = \(.*\)/\1/p' $(BUILDLOG))
IMAGE_OUTFILE := $(shell sed -n 's/^IMAGE_OUTFILE = \(.*\)/\1/p' $(BUILDLOG))
LOGDIR := $(shell sed -n 's/^LOGDIR = \(.*\)/\1/p' $(BUILDLOG))
# for a multi-image build there's no sense to refer to buildroot
# contained reports as these are very ephemeral between builds
@@ -17,7 +19,7 @@ endif
all: reports/targets reports/scripts
@if [ -n "$(IMAGE_OUTPATH)" ]; then \
cp -a $(REPORTDIR) $(IMAGE_OUTPATH).reports; \
cp -a "$(REPORTDIR)" "$(LOGDIR)/$(IMAGE_OUTFILE).reports"; \
fi
reports/prep:

View File

@@ -18,6 +18,7 @@ IMAGE_PACKAGES_REGEXP = $(THE_PACKAGES_REGEXP) \
$(call kpackages, \
$(THE_KMODULES) \
$(BASE_KMODULES) \
$(BASE_KMODULES_REGEXP) \
$(MAIN_KMODULES), \
$(KFLAVOURS))

0
sub.in/main/lib/.gitignore vendored Normal file
View File

View File

@@ -20,7 +20,7 @@ include $(MKIMAGE_PREFIX)/config.mk
include stage2cfg.mk
# requisite stuff
IMAGE_PACKAGES += $(SYSTEM_PACKAGES)
IMAGE_PACKAGES += $(SYSTEM_PACKAGES) $(STAGE2_PACKAGES)
# here we also try and come up with the stage1 kernel/modules, if any;
# no kernel flavour specified will result in no modules for stage1 vmlinuz
@@ -33,7 +33,8 @@ endif
# need kernel modules only (which require corresponding kernel-image);
# these go into work chroot; NB: no vmlinuz there (unless live-install)
IMAGE_PACKAGES_REGEXP += $(call kpackages, \
$(STAGE1_KMODULES) $(STAGE2_KMODULES), \
$(STAGE1_KMODULES) $(STAGE1_KMODULES_REGEXP) \
$(STAGE2_KMODULES) $(STAGE2_KMODULES_REGEXP), \
$(STAGE1_KFLAVOUR))
-include lib/*.mk

0
sub.in/stage2/lib/.gitignore vendored Normal file
View File