2007-06-23 Robert Millan <rmh@aybabtu.com>
* util/update-grub_lib.in (font_path): New function. Determine wether a font file can be found and, if so, echo the GRUB path to it. * util/update-grub.in: Handle multiple terminals depending on user input, platform availability and font file presence. Propagate variables of our findings to /etc/grub.d/ children. * util/grub.d/00_header.in: Handle multiple terminals, based on environment setup by update-grub.
This commit is contained in:
parent
73167f1dc5
commit
6193defe9f
4 changed files with 84 additions and 16 deletions
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2007-06-23 Robert Millan <rmh@aybabtu.com>
|
||||||
|
|
||||||
|
* util/update-grub_lib.in (font_path): New function. Determine wether
|
||||||
|
a font file can be found and, if so, echo the GRUB path to it.
|
||||||
|
|
||||||
|
* util/update-grub.in: Handle multiple terminals depending on user
|
||||||
|
input, platform availability and font file presence. Propagate
|
||||||
|
variables of our findings to /etc/grub.d/ children.
|
||||||
|
|
||||||
|
* util/grub.d/00_header.in: Handle multiple terminals, based on
|
||||||
|
environment setup by update-grub.
|
||||||
|
|
||||||
2007-06-23 Robert Millan <rmh@aybabtu.com>
|
2007-06-23 Robert Millan <rmh@aybabtu.com>
|
||||||
|
|
||||||
* conf/i386-pc.rmk (pkgdata_MODULES): Add serial.mod.
|
* conf/i386-pc.rmk (pkgdata_MODULES): Add serial.mod.
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
prefix=@prefix@
|
prefix=@prefix@
|
||||||
exec_prefix=@exec_prefix@
|
exec_prefix=@exec_prefix@
|
||||||
libdir=@libdir@
|
libdir=@libdir@
|
||||||
|
platform=@platform@
|
||||||
|
|
||||||
# for convert_system_path_to_grub_path()
|
# for convert_system_path_to_grub_path()
|
||||||
. ${libdir}/grub/update-grub_lib
|
. ${libdir}/grub/update-grub_lib
|
||||||
|
@ -33,23 +34,27 @@ set timeout=${GRUB_TIMEOUT}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ "x${GRUB_DRIVE}" = "x" ] ; then : ; else
|
if [ "x${GRUB_DRIVE}" = "x" ] ; then : ; else
|
||||||
cat << EOF
|
echo "set root=${GRUB_DRIVE}"
|
||||||
set root=${GRUB_DRIVE}
|
|
||||||
EOF
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prefer system path for space reasons (/boot/grub might be a very small
|
if [ "x${GRUB_FONT_PATH}" = "x" ] ; then : ; else
|
||||||
# partition in case of OpenFirmware, etc).
|
echo "font ${GRUB_FONT_PATH}"
|
||||||
for i in /usr/share/grub/unifont.pff /boot/grub/unifont.pff ; do
|
fi
|
||||||
if grub_path=`convert_system_path_to_grub_path $i` ; then
|
|
||||||
cat << EOF
|
|
||||||
|
|
||||||
font ${grub_path}
|
case ${platform}:${GRUB_TERMINAL} in
|
||||||
|
pc:gfxterm) cat << EOF
|
||||||
set gfxmode=640x480
|
set gfxmode=640x480
|
||||||
insmod gfxterm
|
insmod gfxterm
|
||||||
insmod vbe
|
insmod vbe
|
||||||
terminal gfxterm
|
|
||||||
EOF
|
EOF
|
||||||
break
|
;;
|
||||||
|
*:serial)
|
||||||
|
if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then
|
||||||
|
echo "Warning, requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used." >&2
|
||||||
|
GRUB_SERIAL_COMMAND=serial
|
||||||
fi
|
fi
|
||||||
done
|
echo "${GRUB_SERIAL_COMMAND}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "terminal ${GRUB_TERMINAL}"
|
||||||
|
|
|
@ -27,11 +27,12 @@ sysconfdir=@sysconfdir@
|
||||||
grub_prefix=`echo /boot/grub | sed ${transform}`
|
grub_prefix=`echo /boot/grub | sed ${transform}`
|
||||||
grub_cfg=${grub_prefix}/grub.cfg
|
grub_cfg=${grub_prefix}/grub.cfg
|
||||||
update_grub_dir=${sysconfdir}/grub.d
|
update_grub_dir=${sysconfdir}/grub.d
|
||||||
|
platform=@platform@
|
||||||
|
|
||||||
grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
|
grub_mkdevicemap=${sbindir}/`echo grub-mkdevicemap | sed ${transform}`
|
||||||
grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
|
grub_probe=${sbindir}/`echo grub-probe | sed ${transform}`
|
||||||
|
|
||||||
# for convert_system_path_to_grub_path()
|
# for convert_system_path_to_grub_path(), font_path()
|
||||||
. ${libdir}/grub/update-grub_lib
|
. ${libdir}/grub/update-grub_lib
|
||||||
|
|
||||||
if [ "x$UID" = "x" ] ; then
|
if [ "x$UID" = "x" ] ; then
|
||||||
|
@ -89,12 +90,42 @@ if test -f ${sysconfdir}/default/grub ; then
|
||||||
. ${sysconfdir}/default/grub
|
. ${sysconfdir}/default/grub
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# if ${GRUB_TERMINAL} is set, check it has a sane value. if undefined,
|
||||||
|
# fallback to our default
|
||||||
|
case ${platform}:${GRUB_TERMINAL} in
|
||||||
|
pc:) GRUB_TERMINAL=gfxterm ;;
|
||||||
|
pc:console | pc:serial) ;;
|
||||||
|
ieee1275:) GRUB_TERMINAL=ofconsole ;;
|
||||||
|
ieee1275:ofconsole) ;;
|
||||||
|
*:) GRUB_TERMINAL=console ;;
|
||||||
|
*:*) echo "Invalid terminal \"${GRUB_TERMINAL}\"" >&2 ; exit 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# check for terminals that require fonts
|
||||||
|
case ${GRUB_TERMINAL} in
|
||||||
|
gfxterm)
|
||||||
|
if GRUB_FONT_PATH=`font_path` ; then : ; else
|
||||||
|
# fallback to console
|
||||||
|
GRUB_TERMINAL=console
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# does our terminal support utf-8 ?
|
||||||
|
case ${platform}:${GRUB_TERMINAL} in
|
||||||
|
*:gfxterm) ;;
|
||||||
|
*:*)
|
||||||
|
# make sure all our children behave in conformance with ascii..
|
||||||
|
export LANG=C
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
# These are defined in this script, export them here so that user can
|
# These are defined in this script, export them here so that user can
|
||||||
# override them.
|
# override them.
|
||||||
export GRUB_DEVICE GRUB_FS GRUB_DRIVE GRUB_DRIVE_BOOT GRUB_DRIVE_BOOT_GRUB
|
export GRUB_DEVICE GRUB_FS GRUB_DRIVE GRUB_DRIVE_BOOT GRUB_DRIVE_BOOT_GRUB GRUB_FONT_PATH
|
||||||
|
|
||||||
# These are optional, user-defined variables.
|
# These are optional, user-defined variables.
|
||||||
export GRUB_DEFAULT GRUB_TIMEOUT GRUB_DISTRIBUTOR GRUB_CMDLINE_LINUX
|
export GRUB_DEFAULT GRUB_TIMEOUT GRUB_DISTRIBUTOR GRUB_CMDLINE_LINUX GRUB_TERMINAL GRUB_SERIAL_COMMAND
|
||||||
|
|
||||||
exec > ${grub_cfg}.new
|
exec > ${grub_cfg}.new
|
||||||
chmod 444 ${grub_cfg}.new
|
chmod 444 ${grub_cfg}.new
|
||||||
|
|
|
@ -89,3 +89,23 @@ convert_system_path_to_grub_path ()
|
||||||
|
|
||||||
echo ${drive}${relative_path}
|
echo ${drive}${relative_path}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
font_path ()
|
||||||
|
{
|
||||||
|
if [ "x${GRUB_FONT_PATH}" = "x" ] ; then : ; else
|
||||||
|
echo "${GRUB_FONT_PATH}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prefer system path for space reasons (/boot/grub might be a very small
|
||||||
|
# partition in case of OpenFirmware, etc).
|
||||||
|
for i in /usr/share/grub/unifont.pff /boot/grub/unifont.pff ; do
|
||||||
|
if path=`convert_system_path_to_grub_path $i` ; then
|
||||||
|
GRUB_FONT_PATH="${path}"
|
||||||
|
echo "${GRUB_FONT_PATH}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue