#!/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" 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 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" 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 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" #genisoimage -l -r -J -V "ARCH_$(date +%Y%m)" \ # -b isolinux/isolinux.bin -no-emul-boot \ # -boot-load-size 4 -boot-info-table -c isolinux/boot.cat \ # -o "$outdir/$outfile" "$isodir" 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"