2013-07-04 08:41:29 +02:00
|
|
|
#!/usr/bin/env bash
|
2008-12-06 19:12:19 +01:00
|
|
|
# Created by Tobias Powalowski <tpowa@archlinux.org>
|
|
|
|
# Settings
|
|
|
|
APPNAME=$(basename "${0}")
|
|
|
|
CONFIG=""
|
|
|
|
TARNAME=""
|
2021-08-09 09:45:41 +02:00
|
|
|
|
2021-09-10 09:56:40 +02:00
|
|
|
export TEMPDIR=$(mktemp -d tarball-helper.XXXX)
|
2008-12-06 19:12:19 +01:00
|
|
|
|
|
|
|
usage ()
|
|
|
|
{
|
|
|
|
echo "${APPNAME}: usage"
|
|
|
|
echo " -c=CONFIG Use CONFIG file"
|
|
|
|
echo " -t=TARNAME Generate a tar image instead of an iso image"
|
|
|
|
echo " -h This message."
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
[ "$1" == "" ] && usage
|
|
|
|
|
|
|
|
while [ $# -gt 0 ]; do
|
|
|
|
case $1 in
|
|
|
|
-c=*|--c=*) CONFIG="$(echo $1 | awk -F= '{print $2;}')" ;;
|
|
|
|
-t=*|--t=*) TARNAME="$(echo $1 | awk -F= '{print $2;}')" ;;
|
|
|
|
-h|--h|?) usage ;;
|
|
|
|
*) usage ;;
|
|
|
|
esac
|
|
|
|
shift
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ "${TARNAME}" = "" ]; then
|
|
|
|
echo "ERROR: No image name specified, please use the -t 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}"
|
2010-08-25 16:59:45 +02:00
|
|
|
export BOOTDIRNAME="boot/syslinux"
|
2008-12-06 19:12:19 +01:00
|
|
|
|
2021-09-10 09:56:40 +02:00
|
|
|
[ "${BOOTMESSAGE}" = "" ] && export BOOTMESSAGE=$(mktemp bootmessage.XXXX)
|
|
|
|
[ "${OPTIONSBOOTMESSAGE}" = "" ] && export OPTIONSBOOTMESSAGE=$(mktemp optionsbootmessage.XXXX)
|
2008-12-06 19:12:19 +01:00
|
|
|
|
|
|
|
# begin script
|
2012-02-06 14:44:34 +01:00
|
|
|
mkdir -p "${TEMPDIR}/${BOOTDIRNAME}/"
|
2010-06-02 21:00:52 +02:00
|
|
|
# prepare syslinux bootloader
|
2013-07-04 21:54:15 +02:00
|
|
|
install -m755 /usr/lib/syslinux/bios/isolinux.bin ${TEMPDIR}/${BOOTDIRNAME}/isolinux.bin
|
|
|
|
for i in /usr/lib/syslinux/bios/*; do
|
2010-12-11 01:19:51 +01:00
|
|
|
[ -f $i ] && install -m644 $i ${TEMPDIR}/${BOOTDIRNAME}/$(basename $i)
|
2010-06-02 18:55:24 +02:00
|
|
|
done
|
2010-06-02 21:00:52 +02:00
|
|
|
install -m644 /usr/share/hwdata/pci.ids ${TEMPDIR}/${BOOTDIRNAME}/pci.ids
|
2010-06-02 23:34:23 +02:00
|
|
|
install -m644 $BACKGROUND ${TEMPDIR}/${BOOTDIRNAME}/splash.png
|
2008-12-06 19:12:19 +01:00
|
|
|
|
|
|
|
# Use config file
|
2010-08-25 15:58:09 +02:00
|
|
|
echo ":: Creating syslinux.cfg ..."
|
|
|
|
if [ "${SYSLINUXCFG}" = "" ]; then
|
|
|
|
echo "No syslinux.cfg file specified, aborting ..."
|
2008-12-06 19:12:19 +01:00
|
|
|
exit 1
|
|
|
|
else
|
2010-06-02 23:34:23 +02:00
|
|
|
sed "s|@@PROMPT@@|${PROMPT}|g;s|@@TIMEOUT@@|${TIMEOUT}|g;s|@@KERNEL_BOOT_OPTIONS@@|${KERNEL_BOOT_OPTIONS}|g" \
|
2010-08-25 15:58:09 +02:00
|
|
|
${SYSLINUXCFG} > ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg
|
|
|
|
[ ! -s ${TEMPDIR}/${BOOTDIRNAME}/syslinux.cfg ] && echo "No syslinux.cfg found" && exit 1
|
2008-12-06 19:12:19 +01:00
|
|
|
fi
|
|
|
|
# generate initramdisk
|
2021-08-09 08:51:33 +02:00
|
|
|
echo ":: Calling mkinitcpio CONFIG=${MKINITCPIO_CONFIG} ..."
|
2008-12-06 19:12:19 +01:00
|
|
|
echo ":: Creating initramdisk ..."
|
2021-08-09 09:45:41 +02:00
|
|
|
mkinitcpio -c ${MKINITCPIO_CONFIG} -k ${ALL_kver} -g ${TEMPDIR}/boot/initrd.img
|
|
|
|
echo ":: Using ${ALL_kver} as image kernel ..."
|
|
|
|
install -m644 ${ALL_kver} ${TEMPDIR}/boot/vmlinuz
|
2010-09-29 11:23:06 +02:00
|
|
|
install -m644 ${BOOTMESSAGE} ${TEMPDIR}/${BOOTDIRNAME}/boot.msg
|
|
|
|
install -m644 ${OPTIONSBOOTMESSAGE} ${TEMPDIR}/${BOOTDIRNAME}/options.msg
|
2008-12-06 19:12:19 +01:00
|
|
|
[ ! -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
|
|
|
|
if ! [ "${TARNAME}" = "" ]; then
|
|
|
|
echo ":: Creating tar image ..."
|
|
|
|
[ -e ${TARNAME} ] && rm ${TARNAME}
|
|
|
|
tar cfv ${TARNAME} ${TEMPDIR} > /dev/null 2>&1 && echo ":: tar Image succesfull created at ${TARNAME}"
|
|
|
|
fi
|
2021-09-10 09:56:40 +02:00
|
|
|
# clean directory
|
2008-12-06 19:12:19 +01:00
|
|
|
rm -r ${TEMPDIR}
|
2021-09-10 09:56:40 +02:00
|
|
|
rm ${BOOTMESSAGE}
|
|
|
|
rm ${OPTIONSBOOTMESSAGE}
|