67 lines
1.6 KiB
Bash
67 lines
1.6 KiB
Bash
#!/bin/sh
|
|
|
|
header() {
|
|
printf "TIMEOUT %s\n" "${TIMEOUT}" > "${OUTFILE}"
|
|
printf "DEFAULT entry0\n" >> "${OUTFILE}"
|
|
printf "MENU TITLE Boot menu\n" >> "${OUTFILE}"
|
|
}
|
|
|
|
get_bootpath() {
|
|
echo ${1} | sed "s#${BOOTPART}/#/#"
|
|
}
|
|
|
|
add_kernel() {
|
|
ver=${1}
|
|
kernel=$(get_bootpath "/boot/vmlinux-${ver}")
|
|
initrd=$(get_bootpath "/boot/initramfs-${ver}.img")
|
|
devicetreedir=$(get_bootpath "/boot/dtbs/dtbs-${ver}")
|
|
fdt=$(get_bootpath "/boot/dtbs/dtbs-${ver}/${DTBPATH}")
|
|
cmdline="${CMDLINE}"
|
|
|
|
printf "LABEL entry%s\n" "${ENTRY}" >> "${OUTFILE}"
|
|
printf "\tMENU LABEL Void Linux Version %s\n" "${ver}" >> "${OUTFILE}"
|
|
printf "\tLINUX %s\n" "${kernel}" >> "${OUTFILE}"
|
|
if [ -e "${BOOTPART}/${initrd}" ]; then
|
|
printf "\tINITRD %s\n" "${initrd}" >> "${OUTFILE}"
|
|
fi
|
|
if [ -n "${USE_DEVICETREEDIR}" ]; then
|
|
printf "\tDEVICETREEDIR %s\n" "${devicetreedir}" >> "${OUTFILE}"
|
|
elif [ -n "${DTBPATH}" ] && [ -e "${BOOTPART}/${fdt}" ]; then
|
|
printf "\tFDT %s\n" ${fdt} >> "${OUTFILE}"
|
|
fi
|
|
if [ -n "${cmdline}" ]; then
|
|
printf "\tAPPEND %s\n" "${cmdline}" >> "${OUTFILE}"
|
|
fi
|
|
ENTRY=$(expr ${ENTRY} + 1)
|
|
}
|
|
|
|
main() {
|
|
if [ ! -d /boot/extlinux ]; then
|
|
rm ${OUTFILE}
|
|
exit 0
|
|
fi
|
|
|
|
if [ -e ${CONF} ]; then
|
|
. ${CONF}
|
|
fi
|
|
|
|
if [ -z "${CMDLINE}" ]; then
|
|
CMDLINE=$(cat /proc/cmdline)
|
|
fi
|
|
|
|
header
|
|
|
|
for kernel in $(ls /boot/vmlinu[xz]-* | sort -rV); do
|
|
ver=$(echo ${kernel} | sed "s#/boot/vmlinu[xz]-\(.*\)#\\1#")
|
|
echo "Add kernel ${ver}"
|
|
add_kernel ${ver}
|
|
done
|
|
mv ${OUTFILE} /boot/extlinux/extlinux.conf
|
|
}
|
|
|
|
CONF=/etc/default/extlinux
|
|
OUTFILE=$(mktemp)
|
|
BOOTPART=$(df -P /boot | tail -1 | awk '{ print $6 }')
|
|
ENTRY=0
|
|
main
|