blob: 048d925aaf53c1211fddf84e08aa702e4a2ef8e0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
#! /bin/sh
# Created by Tobias Powalowski <tpowa@archlinux.org>
# Rebranded for Parabola by André Silva <emulatorman@parabola.nu>
# 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}
|