#!/bin/bash set -e if [ ! "${3}" ]; then printf "$0 xorriso_cmd dir_in image_out [--clean]\n" exit 1; fi XOR=${1} DIR=${2} IMG=${3} RES="${IMG}.iso ${IMG}.new ${IMG}.md5 ${IMG}.jigdo ${IMG}.template" # remove cruft from previous runs # rm -f ${RES} # grab an MBR # dd if=some.iso bs=1K count=32 of=somembr.sysarea # create FAT partition # /sbin/mkfs.msdos -n Bla -C fatpart.fat 8192 # create MD5 list in base64 format jigdo-gen-md5-list ${DIR} > ${IMG}.md5 # build the command - general section CMD="${XOR} \ -as mkisofs \ -o ${IMG}.iso \ -R \ -V ISOJIGDO \ -partition_offset 16 \ -J -joliet-long \ " # boot section #if [ "${5}" -a "${6}" ]; then #CMD+=\ # -b boot/isolinux/isolinux.bin \ # $5 # -c boot/boot.cat \ # $6 # -no-emul-boot -boot-load-size 4 -boot-info-table \ # -isohybrid-mbr somembr.sysarea \ # TODO: figure out where to grab one # -partition_offset 16 \ # -append_partition 2 0x01 fatpart.fat \ #fi # jigdo section CMD+="\ -jigdo-template-compress gzip \ -checksum_algorithm_iso md5,sha1,sha256,sha512 \ -checksum_algorithm_template md5,sha1,sha256,sha512 \ -jigdo-jigdo ${IMG}.jigdo \ -jigdo-template ${IMG}.template \ -jigdo-map Debian=${DIR} \ -md5-list ${IMG}.md5 \ -jigdo-min-file-size 1024 \ " CMD+="${DIR}" # run it echo -e "$0: creating iso & jigdo representations:\n$CMD\n" ${CMD} # create another one from jigdo files jigit-mkimage \ -t ${IMG}.template \ -j ${IMG}.jigdo \ -m Debian=${DIR} \ -o ${IMG}.new # diff'em diff ${IMG}.iso ${IMG}.new # sort out the cruft if [ "${4}" == "--clean" ]; then rm -f ${RES} printf "removed: %s\n" ${RES} else printf "left: %s\n" ${RES} fi