netbsd* | openbsd*)
# Because /boot is used for the boot block in NetBSD and OpenBSD, use /grub
# instead of /boot/grub.
- grub_prefix=`echo /grub | sed ${transform}`
+ GRUB_PREFIX=`echo /grub | sed ${transform}`
;;
*)
# Use /boot/grub by default.
- grub_prefix=`echo /boot/grub | sed ${transform}`
+ GRUB_PREFIX=`echo /boot/grub | sed ${transform}`
;;
esac
exit 1
fi
-mkdir -p ${grub_prefix}
+mkdir -p ${GRUB_PREFIX}
-if test -e ${grub_prefix}/device.map ; then : ; else
+if test -e ${GRUB_PREFIX}/device.map ; then : ; else
${grub_mkdevicemap}
fi
for x in ${GRUB_TERMINAL_OUTPUT}; do
if [ "x${x}" = "xgfxterm" ]; then
# If this platform supports gfxterm, try to use it.
- if ! test -e ${grub_prefix}/gfxterm.mod ; then
+ if ! test -e ${GRUB_PREFIX}/gfxterm.mod ; then
if [ "x$termoutdefault" != "x1" ]; then
echo "gfxterm isn't available on your platform" >&2 ; exit 1
fi
fi
# FIXME: this should do something smarter than just loading first
# video backend.
- GRUB_VIDEO_BACKEND=$(head -n 1 ${grub_prefix}/video.lst || true)
+ GRUB_VIDEO_BACKEND=$(head -n 1 ${GRUB_PREFIX}/video.lst || true)
if [ -z "${GRUB_VIDEO_BACKEND}" ] ; then
if [ "x$termoutdefault" != "x1" ]; then
echo "No suitable backend could be found for gfxterm." >&2 ; exit 1
GRUB_FS \
GRUB_FONT_PATH \
GRUB_PRELOAD_MODULES \
- GRUB_VIDEO_BACKEND
+ GRUB_VIDEO_BACKEND \
+ GRUB_PREFIX
# These are optional, user-defined variables.
export GRUB_DEFAULT \
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
-grub_prefix=`echo /boot/grub | sed ${transform}`
-locale_dir=`echo /boot/grub/locale | sed ${transform}`
+locale_dir=`echo ${GRUB_PREFIX}/locale | sed ${transform}`
grub_lang=`echo $LANG | cut -d _ -f 1`
. ${libdir}/grub/grub-mkconfig_lib
done
if [ "x$serial" = x1 ]; then
- if ! test -e ${grub_prefix}/serial.mod ; then
+ if ! test -e ${GRUB_PREFIX}/serial.mod ; then
echo "Serial terminal not available on this platform." >&2 ; exit 1
fi
EOF
fi
+ # Load video drivers, which may be needed to allow the loader to program
+ # modes for the kernel.
+ # TODO: Other kernels may need the same mode programming, especially on
+ # EFI. Should we move this somewhere more generic?
+ for module in $(cat ${GRUB_PREFIX}/video.lst); do
+ cat << EOF
+ insmod $module
+EOF
+ done
+
if [ -z "${prepare_boot_cache}" ]; then
prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
fi