--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README Thu Apr 24 15:06:47 2014 +0200
@@ -0,0 +1,9 @@
+Wir nehmen ein fertiges grml ISO Image, mounten dieses, legen ein aufs drüber,
+mounten die squashfs und legen dort auch jeweils ein aufs drüber damit wir
+Änderungen vornehmen können. Die Änderungen sind:
+ * ssh zu den default boot Optionen hinzufügen
+ * ssh-keys-schlittermann & apt-keys-schlittermann installieren
+
+Das skript geht davon aus, daß mountpoints wie in fstab.ex angelegt wurden. Für
+das remastering wird etwas doppelt so viel Platz wie für das Image benötigt
+(aufs muß sich die Änderungen irgendwo merken).
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/fstab.ex Thu Apr 24 15:06:47 2014 +0200
@@ -0,0 +1,12 @@
+# /etc/fstab: static file system information.
+#
+
+# [..]
+
+# grml remastering
+/usr/local/share/imagefiles/grml/grml96-full_2014.03.iso /media/grml/cd auto defaults,noauto 0 0
+none /media/grml/rw aufs defaults,noauto,br:/media/grml/diff:/media/grml/cd 0 0
+/media/grml/rw/live/grml32-full/grml32-full.squashfs /media/grml/32/squashfs squashfs defaults,noauto 0 0
+none /media/grml/32/rw aufs defaults,noauto,br:/media/grml/32/diff:/media/grml/32/squashfs 0 0
+/media/grml/rw/live/grml64-full/grml64-full.squashfs /media/grml/64/squashfs squashfs defaults,noauto 0 0
+none /media/grml/64/rw aufs defaults,noauto,br:/media/grml/64/diff:/media/grml/64/squashfs 0 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mkiusgrml Thu Apr 24 15:06:47 2014 +0200
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+GRML_NAME='grml96-ius'
+
+SIGNER='mfoerste'
+MKISOFS='genisoimage'
+BOOT_ARGS='-no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat'
+ISOLINUX='rw/boot/isolinux'
+SQUASHFS_OPTS="-b 256k -comp xz -noappend"
+
+OLDDIR=$(pwd)
+cd /media/grml
+
+# mount the various fs
+for M in {cd,rw,{32,64}/{squashfs,rw}}; do mount $M; done
+
+# some variables
+ISO_INPUT=$(mount |grep /media/grml/cd | cut -d' ' -f1)
+ISO_OUTPUT="${ISO_INPUT/grml96/$GRML_NAME}"
+VERSION="${ISO_INPUT##*grml*_}"
+VERSION="${VERSION%%.iso}"
+
+for BITS in 32 64; do
+
+ # update isolinux config
+ sed -i -r '/^\s+append\s/ { s/\s+ssh(=\S*)?//g; s/$/ ssh/ }' "${ISOLINUX}/grml${BITS}_full_default.cfg"
+
+ # update squashfs
+ cd ${BITS}/rw
+ mount -o bind /dev/ dev/
+ mount -t proc none proc/
+ mount -t devpts none dev/pts/
+ mkdir -p run/resolvconf
+ cp -a /etc/resolv.conf run/resolvconf
+ export http_proxy=http://aptproxy:9999
+ cat >etc/apt/sources.list.d/schlittermann.list <<EOL
+deb http://apt.schlittermann.de stable main contrib non-free
+EOL
+ chroot . apt-get -o Acquire::Languages='none' update
+ chroot . apt-get -y --force-yes install schlittermann-ssh-keys schlittermann-apt-keys
+ chroot . apt-get clean
+ chroot . bash -c 'rm -f /var/lib/apt/lists/*{Packages,Sources,_{,In}Release,_Translation-*} /var/lib/apt/lists/partial/*'
+ umount {dev{/pts,},proc}
+ cd ../..
+ SQUASHFS_DIR="rw/live/grml${BITS}-full"
+ SQUASHFS_FILE="${SQUASHFS_DIR}/grml${BITS}-full.squashfs"
+ SQUASHFS_TMP=$(mktemp --tmpdir=${SQUASHFS_DIR})
+ SQUASHFS_EXCLUDE=$(mktemp --tmpdir=${SQUASHFS_DIR})
+ cat >$SQUASHFS_EXCLUDE <<EOSE
+run/*
+var/run/*
+var/lock/*
+.bash_history
+EOSE
+ SQUASHFS_OPTS="${SQUASHFS_OPTS} -ef $SQUASHFS_EXCLUDE -wildcards"
+ mksquashfs ${BITS}/rw/ $SQUASHFS_TMP $SQUASHFS_OPTS
+ chmod ugo=r $SQUASHFS_TMP
+ umount ${BITS}/{rw,squashfs}
+ rm -rf ${BITS}/diff/{,.wh..wh.}*
+ mv $SQUASHFS_TMP $SQUASHFS_FILE
+done
+
+# build new iso
+$MKISOFS -V "${GRML_NAME} ${VERSION}" -input-charset 'utf-8' -publisher 'internet & unix support schlittermann | schlittermann.de' -l -r -J $BOOT_ARGS -no-pad -o "${ISO_OUTPUT}" rw
+umount {rw,cd}
+rm -rf diff/{,.wh..wh.}*
+
+# sign new iso
+SIGN_TEMP=$(mktemp)
+
+chown $SIGNER: $SIGN_TEMP
+# -E -H helps if you have the correct GPG_AGENT_INFO environment variable set
+sudo -E -H -s -u "${SIGNER}" <<EOC
+cd ${ISO_OUTPUT%/*}
+sha1sum "${ISO_OUTPUT##*/}" | gpg --sign --clearsign >$SIGN_TEMP
+EOC
+
+chown root: $SIGN_TEMP
+chmod go=r $SIGN_TEMP
+mv $SIGN_TEMP "$ISO_OUTPUT.sha1.asc"
+
+cd $OLDDIR