[import]
authorMatthias Förste <foerste@schlittermann.de>
Thu, 24 Apr 2014 15:06:47 +0200
changeset 0 3b7e719d2eb9
child 1 d98e470eeaf7
[import]
README
fstab.ex
mkiusgrml
--- /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