Browse code

add script to make base image for PLD Linux

https://www.pld-linux.org/packages/docker

Signed-off-by: Elan Ruusamäe <glen@pld-linux.org>

Elan Ruusamäe authored on 2016/05/31 15:08:06
Showing 1 changed files
1 1
new file mode 100755
... ...
@@ -0,0 +1,73 @@
0
+#!/bin/sh
1
+#
2
+# Generate a minimal filesystem for PLD Linux and load it into the local docker as "pld".
3
+# https://www.pld-linux.org/packages/docker
4
+#
5
+set -e
6
+
7
+if [ "$(id -u)" != "0" ]; then
8
+	echo >&2 "$0: requires root"
9
+	exit 1
10
+fi
11
+
12
+image_name=pld
13
+
14
+tmpdir=$(mktemp -d ${TMPDIR:-/var/tmp}/pld-docker-XXXXXX)
15
+root=$tmpdir/rootfs
16
+install -d -m 755 $root
17
+
18
+# to clean up:
19
+docker rmi $image_name || :
20
+
21
+# build
22
+rpm -r $root --initdb
23
+
24
+set +e
25
+install -d $root/dev/pts
26
+mknod $root/dev/random c 1 8 -m 644
27
+mknod $root/dev/urandom c 1 9 -m 644
28
+mknod $root/dev/full c 1 7 -m 666
29
+mknod $root/dev/null c 1 3 -m 666
30
+mknod $root/dev/zero c 1 5 -m 666
31
+mknod $root/dev/console c 5 1 -m 660
32
+set -e
33
+
34
+poldek -r $root --up --noask -u \
35
+	--noignore \
36
+	-O 'rpmdef=_install_langs C' \
37
+	-O 'rpmdef=_excludedocs 1' \
38
+	vserver-packages \
39
+	bash iproute2 coreutils grep poldek
40
+
41
+# fix netsharedpath, so containers would be able to install when some paths are mounted
42
+sed -i -e 's;^#%_netsharedpath.*;%_netsharedpath /dev/shm:/sys:/proc:/dev:/etc/hostname;' $root/etc/rpm/macros
43
+
44
+# no need for alternatives
45
+poldek-config -c $root/etc/poldek/poldek.conf ignore systemd-init
46
+
47
+# this makes initscripts to believe network is up
48
+touch $root/var/lock/subsys/network
49
+
50
+# cleanup large optional packages
51
+remove_packages="ca-certificates"
52
+for pkg in $remove_packages; do
53
+	rpm -r $root -q $pkg && rpm -r $root -e $pkg --nodeps
54
+done
55
+
56
+# cleanup more
57
+rm -v $root/etc/ld.so.cache
58
+rm -rfv $root/var/cache/hrmib/*
59
+rm -rfv $root/usr/share/man/man?/*
60
+rm -rfv $root/usr/share/locale/*/
61
+rm -rfv $root/usr/share/help/*/
62
+rm -rfv $root/usr/share/doc/*
63
+rm -rfv $root/usr/src/examples/*
64
+rm -rfv $root/usr/share/pixmaps/*
65
+
66
+# and import
67
+tar --numeric-owner --xattrs --acls -C $root -c . | docker import - $image_name
68
+
69
+# and test
70
+docker run -i -u root $image_name /bin/echo Success.
71
+
72
+rm -r $tmpdir