diff options
Diffstat (limited to 'ship')
| -rw-r--r-- | ship/lib/iso | 7 | ||||
| -rwxr-xr-x | ship/src/remaster_arch_filehooker | 106 | ||||
| -rwxr-xr-x | ship/src/remaster_arch_shack_installstick | 34 | 
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" | 
