diff options
Diffstat (limited to 'libre/mkpxelinux-parabola/mkpxelinux')
-rwxr-xr-x | libre/mkpxelinux-parabola/mkpxelinux | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/libre/mkpxelinux-parabola/mkpxelinux b/libre/mkpxelinux-parabola/mkpxelinux new file mode 100755 index 000000000..35e946f82 --- /dev/null +++ b/libre/mkpxelinux-parabola/mkpxelinux @@ -0,0 +1,91 @@ +#! /bin/sh +# Created by Tobias Powalowski <tpowa@archlinux.org> +# Rebranded for Parabola by André Silva <emulatorman@parabola.nu> +# Settings +APPNAME=$(basename "${0}") +CONFIG="/etc/mkpxelinux.conf" + +usage () +{ + echo "${APPNAME}: usage" + echo"" + echo " -d=INSTALLDIR Your INSTALLDIR overwrites config default" + echo " -c=CONFIG Use CONFIG file. default: /etc/mkpxelinux.conf" + echo " -h This message." + exit 1 +} + +[ "$1" == "" ] && usage && exit 1 + +while [ $# -gt 0 ]; do + case $1 in + -c=*|--c=*) CONFIG="$(echo $1 | awk -F= '{print $2;}')" ;; + -d=*|--d=*) CUSTOMINSTALLDIR="$(echo $1 | awk -F= '{print $2;}')" ;; + -h|--h|?) usage ;; + *) usage ;; + esac + shift +done + +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 + +! [ "${CUSTOMINSTALLDIR}" = "" ] && INSTALLDIR=${CUSTOMINSTALLDIR} + +if [ "${INSTALLDIR}" = "" ]; then + echo "ERROR: No INSTALLDIR name specified, please use the -d option" + exit 1 +fi + +if ! [ $UID -eq 0 ]; then + echo "ERROR: only works when run as root!" + exit 1 +fi + +! [ -e ${INSTALLDIR} ] && echo "No ${INSTALLDIR} found!" && exit 1 +export TEMPDIR=${NFSROOTDIR} +export INSTALLDIR=${INSTALLDIR} +export RUNPROGRAM="${APPNAME}" +[ "${BOOTMESSAGE}" = "" ] && export BOOTMESSAGE=$(mktemp /tmp/bootmessage.XXXX) +[ "${OPTIONSBOOTMESSAGE}" = "" ] && export OPTIONSBOOTMESSAGE=$(mktemp /tmp/optionsbootmessage.XXXX) +export USEKERNEL=${VERSION} +# begin script +# create default +echo ":: Creating pxelinux default config file ..." +mkdir -p ${INSTALLDIR}/pxelinux.cfg +if [ "${PXELINUX_DEFAULT}" = "" ]; then + [ -e ${INSTALLDIR}/pxelinux.cfg/default ] && rm ${INSTALLDIR}/pxelinux.cfg/default + echo "prompt ${PROMPT}" >> ${INSTALLDIR}/pxelinux.cfg/default + echo "timeout ${TIMEOUT}" >> ${INSTALLDIR}/pxelinux.cfg/default + echo "display boot.msg" >> ${INSTALLDIR}/pxelinux.cfg/default + echo "F1 boot.msg" >> ${INSTALLDIR}/pxelinux.cfg/default + echo "F2 options.msg" >> ${INSTALLDIR}/pxelinux.cfg/default + echo "default parabola" >> ${INSTALLDIR}/pxelinux.cfg/default + echo "label parabola" >> ${INSTALLDIR}/pxelinux.cfg/default + echo "kernel vmlinuz" >> ${INSTALLDIR}/pxelinux.cfg/default + echo "append initrd=initrd.img ${KERNEL_BOOT_OPTIONS}" >> ${INSTALLDIR}/pxelinux.cfg/default +else + sed "s|@@PROMPT@@|${PROMPT}|g;s|@@TIMEOUT@@|${TIMEOUT}|g;s|@@KERNEL_BOOT_OPTIONS@@|${KERNEL_BOOT_OPTIONS}|g" \ + ${PXELINUX_DEFAULT} > ${INSTALLDIR}/pxelinux.cfg/default +fi +[ ! -s ${INSTALLDIR}/pxelinux.cfg/default ] && echo "No pxelinux default config found" && exit 1 +echo ":: Calling mkinitcpio CONFIG=${MKINITCPIO_CONFIG} KERNEL=${VERSION} ..." +# generate initramdisk +echo ":: Creating initramdisk ..." + mkinitcpio -c ${MKINITCPIO_CONFIG} -k ${VERSION} -g ${INSTALLDIR}/initrd.img +echo ":: Using ${KERNEL} as image kernel ..." + install -m644 ${KERNEL} ${INSTALLDIR}/vmlinuz +echo ":: Installing message files to ${INSTALLDIR} ..." + install -m644 ${BOOTMESSAGE} ${INSTALLDIR}/boot.msg + install -m644 ${OPTIONSBOOTMESSAGE} ${INSTALLDIR}/options.msg + [ ! -s ${INSTALLDIR}/boot.msg ] && echo 'ERROR:no boot.msg found, aborting!' && exit 1 + [ ! -s ${INSTALLDIR}/options.msg ] && echo 'ERROR:no options.msg found, aborting!' && exit 1 +echo ":: Installing PXELINUX to ${INSTALLDIR} ..." + install -m644 /usr/lib/syslinux/bios/pxelinux.0 ${INSTALLDIR}/pxelinux.0 && echo "Installation completed." |