Package: grub-pc
Version: 1.98~20091210-1
Tags: patch
hi!
i just received the grub-pc upgrade, to find out that /etc/grub/05_debian_theme
now sources /usr/share/desktop-base/grub_background.sh, obviously expecting the
grub background image ($WALLPAPER) and grub menu colors ($COLOR_NORMAL and
$COLOR_HIGHLIGHT) to be set in there. but grub_background.sh doesn't exist.
neither as a file, nor as something i was able to find documented somewhere in
the package.
also, for configuration issues, i guess variables like these are (and should
be) usually set in /etc/default/grub (like the readme says. and while we're at
it, all variables in there have the prefix GRUB_, which is generally a very
good idea i guess)?
i don't understand the rationale of /usr/share/desktop-base/grub_background.sh,
but even if it's a good idea as some sort of hook, then even if WALLPAPER was
set in /etc/default/grub, it would be overwritten in any case. to prevent this,
i guess the best solution would be to remove the hardcoded default values from
that file, and simply set them as default values in /etc/default/grub resp.
/usr/share/grub/default/grub.
while i was at it i also added the following variables to be able to configure
grub-menu-passwords:
GRUB_SUPERUSERS="user1 user2 ..."
GRUB_PASSWORD_user1="cryptstring"
...
(can be configured in /etc/default/grub, changed 00_header and grub-mkconfig to
handle them)
the attached patches do the following:
- leave grub_background.sh sourcing as it is (assuming it makes some sense),
just removing the part setting hardcoded defaults if the file doesn't exist
- rename the variable names to GRUB_ prefixed names as used throughout
/etc/default/grub
- add the defaults (as formerly hardcoded in 05_debian_theme) to the default
config (/usr/share/grub/default/grub)
- add user/password variables
- make variable names known to grub-mkconfig
kind regards,
Chris
--- /etc/grub.d/00_header 2009-12-18 14:52:04.000000000 +0100
+++ /etc/grub.d/00_header.x 2009-12-18 14:41:58.000000000 +0100
@@ -41,6 +41,18 @@ cat << EOF
set default=${GRUB_DEFAULT}
EOF
+if [ "x${GRUB_SUPERUSERS}" != "x" ] ; then
+ cat << EOF
+set superusers="${GRUB_SUPERUSERS}"
+EOF
+ for i in ${GRUB_SUPERUSERS}; do
+ eval "GRUB_PASSWORD=\$GRUB_PASSWORD_$i"
+ cat << EOF
+password ${i} ${GRUB_PASSWORD}
+EOF
+ done
+fi
+
case ${GRUB_TERMINAL_INPUT}:${GRUB_TERMINAL_OUTPUT} in
serial:* | *:serial)
if ! test -e ${grub_prefix}/serial.mod ; then
--- /etc/grub.d/05_debian_theme 2009-12-10 00:47:36.000000000 +0100
+++ /etc/grub.d/05_debian_theme.x 2009-12-18 14:23:42.000000000 +0100
@@ -6,10 +6,6 @@ source /usr/lib/grub/grub-mkconfig_lib
f=/usr/share/desktop-base/grub_background.sh
if test -e ${f} ; then
source ${f}
-else
- WALLPAPER="/usr/share/images/desktop-base/moreblue-orbit-grub.png"
- COLOR_NORMAL="black/black"
- COLOR_HIGHLIGHT="magenta/black"
fi
set_blue_theme()
@@ -23,7 +19,7 @@ EOF
# check for usable backgrounds
use_bg=false
if [ "$GRUB_TERMINAL_OUTPUT" = "gfxterm" ] ; then
- for i in /boot/grub/`basename ${WALLPAPER}` ${WALLPAPER} ; do
+ for i in /boot/grub/`basename ${GRUB_BACKGROUND_IMAGE}` ${GRUB_BACKGROUND_IMAGE} ; do
if is_path_readable_by_grub $i ; then
bg=$i
case ${bg} in
@@ -46,8 +42,8 @@ if ${use_bg} ; then
cat << EOF
insmod ${reader}
if background_image `make_system_path_relative_to_its_root ${bg}` ; then
- set color_normal=${COLOR_NORMAL}
- set color_highlight=${COLOR_HIGHLIGHT}
+ set color_normal=${GRUB_COLOR_NORMAL}
+ set color_highlight=${GRUB_COLOR_HIGHLIGHT}
else
EOF
fi
--- /usr/share/grub/default/grub 2009-12-10 00:47:36.000000000 +0100
+++ /usr/share/grub/default/grub.x 2009-12-18 14:37:44.000000000 +0100
@@ -20,3 +20,7 @@ GRUB_CMDLINE_LINUX=""
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_LINUX_RECOVERY="true"
+
+GRUB_BACKGROUND_IMAGE="/usr/share/images/desktop-base/moreblue-orbit-grub.png"
+GRUB_COLOR_NORMAL="black/black"
+GRUB_COLOR_HIGHLIGHT="magenta/black"
--- /usr/sbin/grub-mkconfig 2009-12-18 14:26:49.000000000 +0100
+++ /usr/sbin/grub-mkconfig.x 2009-12-18 14:47:09.000000000 +0100
@@ -224,7 +224,14 @@ export GRUB_DEFAULT \
GRUB_DISABLE_LINUX_UUID \
GRUB_DISABLE_LINUX_RECOVERY \
GRUB_GFXMODE \
- GRUB_DISABLE_OS_PROBER
+ GRUB_BACKGROUND_IMAGE \
+ GRUB_COLOR_NORMAL \
+ GRUB_COLOR_HIGHLIGHT \
+ GRUB_DISABLE_OS_PROBER \
+ GRUB_SUPERUSERS
+for i in ${GRUB_SUPERUSERS}; do
+ eval "export GRUB_PASSWORD_$i"
+done
if test "x${grub_cfg}" != "x"; then
rm -f ${grub_cfg}.new