#!/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=${2:-conf.krebsco.de/arch_autoinstall} 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 "auto_url is $auto_url" 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 <> /root/.zshrc< /krebs/autoinstall </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_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 \ -output "${outdir}/${outfile}" \ "$isodir"