#! /bin/sh # Created by Tobias Powalowski # Rebranded for Parabola by André Silva # Settings APPNAME=$(basename "${0}") CONFIG="/etc/mkisolinux.conf" GENIMG="" BURN="0" BLANK="0" TARNAME="" export TEMPDIR=$(mktemp -d /tmp/mkisolinux.XXXX) usage () { echo "${APPNAME}: usage" echo " -g=IMAGE Generate a ISO image as IMAGE" echo " -c=CONFIG Use CONFIG file. default: /etc/mkisolinux.conf" echo " -B Burn the ISO image after creation" echo " -b Blanking media first" echo " -h This message." exit 1 } [ "$1" == "" ] && usage while [ $# -gt 0 ]; do case $1 in -c=*|--c=*) CONFIG="$(echo $1 | awk -F= '{print $2;}')" ;; -g=*|--g=*) GENIMG="$(echo $1 | awk -F= '{print $2;}')" ;; -B|--B) BURN="1" ;; -b|--b) BLANK="1" ;; -t=*|--t=*) TARNAME="$(echo $1 | awk -F= '{print $2;}')" ;; -h|--h|?) usage ;; *) usage ;; esac shift done if [ "${TARNAME}" = "" -a "${GENIMG}" = "" ]; then echo "ERROR: No image name specified, please use the -g option" exit 1 fi if [ ! -f "${CONFIG}" ]; then echo "config file '${CONFIG}' cannot be found, aborting..." exit 1 fi . "${CONFIG}" # export for mkinitcpio [ -n "${APPENDBOOTMESSAGE}" ] && export APPENDBOOTMESSAGE [ -n "${APPENDOPTIONSBOOTMESSAGE}" ] && export APPENDOPTIONSBOOTMESSAGE export RUNPROGRAM="${APPNAME}" export BOOTDIRNAME="boot/syslinux" [ "${BOOTMESSAGE}" = "" ] && export BOOTMESSAGE=$(mktemp /tmp/bootmessage.XXXX) [ "${OPTIONSBOOTMESSAGE}" = "" ] && export OPTIONSBOOTMESSAGE=$(mktemp /tmp/optionsbootmessage.XXXX) [ "${ISONAME}" = "" ] && export ISONAME=$(mktemp /tmp/isoname.XXXX) export USEKERNEL=${VERSION} # begin script mkdir -p ${TEMPDIR}/${BOOTDIRNAME}/ # prepare syslinux install -m755 /usr/lib/syslinux/isolinux.bin ${TEMPDIR}/${BOOTDIRNAME}/isolinux.bin for i in /usr/lib/syslinux/*.c32; do install -m644 $i ${TEMPDIR}/${BOOTDIRNAME}/$(basename $i) done install -m644 /usr/share/hwdata/pci.ids ${TEMPDIR}/${BOOTDIRNAME}/pci.ids # create syslinux.cfg echo ":: Creating syslinux.cfg ..." if [ "${ISOLINUXCFG}" = "" ]; then [ -e ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg ] && rm ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg echo "prompt ${PROMPT}" >> ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg echo "timeout ${TIMEOUT}" >> ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg echo "display boot.msg" >> ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg echo "F1 boot.msg" >> ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg echo "F2 options.msg" >> ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg echo "default parabola" >> ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg echo "label parabola" >> ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg echo "kernel /boot/vmlinuz" >> ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg echo "append initrd=/boot/initrd.img ${KERNEL_BOOT_OPTIONS}" >> ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg else sed "s|@@PROMPT@@|${PROMPT}|g;s|@@TIMEOUT@@|${TIMEOUT}|g;s|@@KERNEL_BOOT_OPTIONS@@|${KERNEL_BOOT_OPTIONS}|g" \ ${ISOLINUXCFG} > ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg fi [ ! -s ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg ] && echo "No syslinux.cfg found" && exit 1 echo ":: Calling mkinitcpio CONFIG=${MKINITCPIO_CONFIG} KERNEL=${VERSION} ..." # generate initramdisk echo ":: Creating initramdisk ..." mkinitcpio -c ${MKINITCPIO_CONFIG} -k ${VERSION} -g ${TEMPDIR}/boot/initrd.img echo ":: Using ${KERNEL} as image kernel ..." install -m644 ${KERNEL} ${TEMPDIR}/boot/vmlinuz install -m644 ${BOOTMESSAGE} ${TEMPDIR}/${BOOTDIRNAME}/boot.msg install -m644 ${OPTIONSBOOTMESSAGE} ${TEMPDIR}/${BOOTDIRNAME}/options.msg [ ! -s ${TEMPDIR}/${BOOTDIRNAME}/boot.msg ] && echo 'ERROR:no boot.msg found, aborting!' && exit 1 [ ! -s ${TEMPDIR}/${BOOTDIRNAME}/options.msg ] && echo 'ERROR:no options.msg found, aborting!' && exit 1 # create image echo ":: Creating ISO image ..." [ -e ${GENIMG} ] && rm ${GENIMG} [ -s "${ISONAME}" ] && ISONAME=$(cat $ISONAME) || ISONAME="Parabola GNU/Linux-libre" mkisofs -RlDJLV "${ISONAME}" -b boot/syslinux/isolinux.bin -c boot/syslinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table -o ${GENIMG} ${TEMPDIR}/ > /dev/null 2>&1 \ && echo ":: ISO Image succesfull created at ${GENIMG}" # burning/blanking image if [ "$BLANK" = "1" ]; then echo ":: Blanking media DEVICE=${DEVICE}, BLANKMODE=${BLANKMODE}, SPEED=${SPEED} ..." cdrecord dev=${DEVICE} speed=${SPEED} blank=${BLANKMODE} > /dev/null 2>&1 && echo ":: Successfull." fi if [ "$BURN" = "1" ]; then echo ":: Burning ISO image DEVICE=${DEVICE}, SPEED=${SPEED} ..." cdrecord dev=${DEVICE} speed=${SPEED} -eject ${GENIMG} > /dev/null 2>&1 && echo ":: Successfull." fi # clean /tmp rm -r ${TEMPDIR}