summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ship/lib/iso7
-rwxr-xr-xship/src/remaster_arch_filehooker106
-rwxr-xr-xship/src/remaster_arch_shack_installstick34
3 files changed, 132 insertions, 15 deletions
diff --git a/ship/lib/iso b/ship/lib/iso
new file mode 100644
index 00000000..0776d796
--- /dev/null
+++ b/ship/lib/iso
@@ -0,0 +1,7 @@
+get_volid(){
+ #returns the volume id of the iso given
+ # is needed for remastering the archlinux iso
+
+ #punani install genisoimage
+ isoinfo -d -i "${1?path to iso must be given}" | grep "^Volume id:" | cut -d: -f 2 |xargs
+}
diff --git a/ship/src/remaster_arch_filehooker b/ship/src/remaster_arch_filehooker
new file mode 100755
index 00000000..54f0b082
--- /dev/null
+++ b/ship/src/remaster_arch_filehooker
@@ -0,0 +1,106 @@
+#!/bin/sh
+#@include core
+#@include iso
+#@mainifyme
+
+## TODO: provide a parameter which defines what to be done in the new iso root
+set -efu
+isofile=${1:-archlinux-2013.06.01-dual.iso}
+outfile=$(basename ${isofile%.iso}.krebs.iso)
+info "outfile will be at $outfile"
+bdir=${bdir:-$HOME/build/arch}
+isodir=$bdir/iso
+isomnt=$bdir/isomount
+rootdir=$bdir/root
+outdir=$bdir/out
+auto_url=conf.krebsco.de/filehooker_install
+info "bdir is at $bdir"
+[ ! -e "$isofile" ] && die "$isofile does not exist."
+esudo "$@"
+arch_label="$(get_volid "$isofile")"
+info "Arch iso label is ${arch_label}"
+
+
+info "cleanup root dir"
+rm -rf $bdir
+mkdir -p $isomnt $rootdir
+info "mounting isofile ($isofile)"
+if is_root;then
+ mount -t iso9660 -o loop,ro $isofile $isomnt
+else
+ die 'we are not root enough to mount the iso.'
+fi
+defer "info 'unmounting $isomnt';umount $isomnt"
+
+info "copying from '$isomnt' to '$isodir'"
+cp -a "$isomnt" "$isodir"
+defer "info 'removing $isodir';rm -rf $isodir"
+info "extracting root-image squashfs"
+# we will not touch the kernel ... yet
+
+for arch in x86_64 i686;do
+ info "unpacking $isomnt/arch/$arch/root-image.fs.sfs"
+ mkdir -p "$outdir/$arch"
+ defer "info 'removing $outdir/$arch';rm -rf $outdir/$arch"
+ mkdir -p "$rootdir/$arch"
+ defer "info 'removing $rootdir/$arch';rm -rf $rootdir/$arch"
+ unsquashfs -f -d "$outdir/$arch" "$isodir/arch/$arch/root-image.fs.sfs"
+
+ mount "$outdir/$arch/root-image.fs" "$rootdir/$arch"
+ defer "info 'unmounting $rootdir/$arch';umount $rootdir/$arch||info 'not mounted'"
+
+ info "Starting of the rootdir verkrepelung"
+ # do the magic here
+ arch-chroot $rootdir/$arch <<EOF
+ cat >> /root/.zshrc<<EOL
+cat << EOD
+This is the Krebs Autoinstaller, we will do all the right things.
+Just Wait until everything finished.
+
+- Make sure that RJ45 is connected
+- you can bail out of the progress at any time with CTRL-C
+
+ /krebs/autoinstall <install-disk (/dev/sdx)>
+EOD
+# /krebs/autoinstall
+EOL
+
+ : \${1?\$0 <install-disk (/dev/sdx)>}
+ mkdir /krebs
+ cat > /krebs/autoinstall <<EOL
+internet() { ping -w 1 google.de >/dev/null 2>&1; }
+while ! internet;do
+ echo "no Internet yet, waiting ..."
+ sleep 3
+done
+
+echo "Grabbing current version of install-script from $auto_url"
+echo
+echo "AGENTS ARE GOOOOOOOOOOO!"
+curl $auto_url 2>/dev/null | sh -s "\\\$@"
+EOL
+chmod 755 /krebs/autoinstall
+EOF
+ info "deleting old squashfs"
+ rm "$isodir/arch/$arch/root-image.fs.sfs"
+ info "creating squashfs at $isodir/arch/$arch/root-image.fs.sfs"
+ umount "$rootdir/$arch"
+ mksquashfs "$outdir/$arch/root-image.fs" "$isodir/arch/$arch/root-image.fs.sfs"
+done
+
+info "creating Iso Image"
+rm -f "${outdir}/${outfile}"
+xorriso -as mkisofs \
+ -iso-level 3 \
+ -full-iso9660-filenames \
+ -volid "ARCH_201311" \
+ -appid "Shackspace Krebs Installer" \
+ -publisher "Shackspace/Krebs" \
+ -preparer "prepared by krebs" \
+ -eltorito-boot isolinux/isolinux.bin \
+ -eltorito-catalog isolinux/boot.cat \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -isohybrid-mbr ${isomnt}/isolinux/isohdpfx.bin \
+ -output "${outdir}/${outfile}" \
+ "$isodir"
+
diff --git a/ship/src/remaster_arch_shack_installstick b/ship/src/remaster_arch_shack_installstick
index 5ac29473..364e1958 100755
--- a/ship/src/remaster_arch_shack_installstick
+++ b/ship/src/remaster_arch_shack_installstick
@@ -1,23 +1,26 @@
#!/bin/sh
#@include core
+#@include iso
#@mainifyme
## TODO: provide a parameter which defines what to be done in the new iso root
set -efu
-isofile=${1:-archlinux-2013.06.01-dual.iso}
-outfile=$(basename ${isofile%.iso}.krebs.iso)
+isofile="${1:-archlinux-2013.06.01-dual.iso}"
+outfile="$(basename "${isofile%.iso}".krebs.iso)"
info "outfile will be at $outfile"
-bdir=${bdir:-$HOME/build/arch}
-isodir=$bdir/iso
-isomnt=$bdir/isomount
-rootdir=$bdir/root
-outdir=$bdir/out
-auto_url=euer.krebsco.de/filepimp_installer
+bdir="${bdir:-$HOME/build/arch}"
+isodir="$bdir/iso"
+isomnt="$bdir/isomount"
+rootdir="$bdir/root"
+outdir="$bdir/out"
+echo "$outdir/$outfile"
+auto_url=euer.krebsco.de/arch_autoinstall
info "bdir is at $bdir"
[ ! -e "$isofile" ] && die "$isofile does not exist."
+arch_label="$(get_volid "$isofile")"
+info "Arch iso label is ${arch_label}"
esudo "$@"
-
#punani install genisoimage
@@ -26,17 +29,18 @@ rm -rf $bdir
mkdir -p $isomnt $rootdir
info "mounting isofile ($isofile)"
if is_root;then
- mount -t iso9660 -o loop,ro $isofile $isomnt
+ mount -t iso9660 -o loop,ro "$isofile" "$isomnt"
else
die 'we are not root enough to mount the iso.'
fi
-defer "info 'unmounting $isomnt';umount $isomnt"
+defer "info 'unmounting $isomnt';umount \"$isomnt\""
info "copying from '$isomnt' to '$isodir'"
cp -a "$isomnt" "$isodir"
defer "info 'removing $isodir';rm -rf $isodir"
+
info "extracting root-image squashfs"
-# we will not touch the kernel ... yet
+
for arch in x86_64 i686;do
info "unpacking $isomnt/arch/$arch/root-image.fs.sfs"
@@ -51,7 +55,7 @@ for arch in x86_64 i686;do
info "Starting of the rootdir verkrepelung"
# do the magic here
- arch-chroot $rootdir/$arch <<EOF
+ arch-chroot "$rootdir/$arch" <<EOF
cat >> /root/.zshrc<<EOL
cat << EOD
This is the Krebs Autoinstaller, we will do all the right things.
@@ -96,14 +100,14 @@ rm -f "${outdir}/${outfile}"
xorriso -as mkisofs \
-iso-level 3 \
-full-iso9660-filenames \
- -volid "ARCH_201311" \
+ -volid "$arch_label" \
-appid "Shackspace Krebs Installer" \
-publisher "Shackspace/Krebs" \
-preparer "prepared by krebs" \
-eltorito-boot isolinux/isolinux.bin \
-eltorito-catalog isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
- -isohybrid-mbr ${isomnt}/isolinux/isohdpfx.bin \
+ -isohybrid-mbr "${isomnt}/isolinux/isohdpfx.bin" \
-output "${outdir}/${outfile}" \
"$isodir"