#! /bin/sh -e # grub-mkconfig helper script. # Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc. # # GRUB is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # GRUB is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GRUB. If not, see . transform="s,x,x," prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib grub_prefix=`echo /boot/grub | sed ${transform}` locale_dir=`echo /boot/grub/locale | sed ${transform}` grub_lang=`echo $LANG | cut -d _ -f 1` . ${libdir}/grub/grub-mkconfig_lib # Do this as early as possible, since other commands might depend on it. # (e.g. the `loadfont' command might need lvm or raid modules) for i in ${GRUB_PRELOAD_MODULES} ; do echo "insmod $i" done if [ "x${GRUB_DEFAULT}" = "x" ] ; then GRUB_DEFAULT=0 ; fi if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then GRUB_DEFAULT='${saved_entry}' ; fi if [ "x${GRUB_TIMEOUT}" = "x" ] ; then GRUB_TIMEOUT=5 ; fi if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=640x480 ; fi cat << EOF if [ -s \$prefix/grubenv ]; then load_env fi set default="${GRUB_DEFAULT}" if [ \${prev_saved_entry} ]; then set saved_entry=\${prev_saved_entry} save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi function savedefault { if [ -z \${boot_once} ]; then saved_entry=\${chosen} save_env saved_entry fi } function recordfail { set recordfail=1 if [ -n \${have_grubenv} ]; then if [ -z \${boot_once} ]; then save_env recordfail; fi; fi } EOF case ${GRUB_TERMINAL_INPUT}:${GRUB_TERMINAL_OUTPUT} in serial:* | *:serial) if ! test -e ${grub_prefix}/serial.mod ; then echo "Serial terminal not available on this platform." >&2 ; exit 1 fi if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then grub_warn "Requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used." GRUB_SERIAL_COMMAND=serial fi echo "${GRUB_SERIAL_COMMAND}" ;; esac case x${GRUB_TERMINAL_INPUT} in x) # Just use the native terminal ;; x*) cat << EOF if terminal_input ${GRUB_TERMINAL_INPUT} ; then true ; else # For backward compatibility with versions of terminal.mod that don't # understand terminal_input terminal ${GRUB_TERMINAL_INPUT} fi EOF ;; esac case x${GRUB_TERMINAL_OUTPUT} in xgfxterm) # Make the font accessible prepare_grub_to_access_device `${grub_probe} --target=device ${GRUB_FONT_PATH}` cat << EOF if loadfont `make_system_path_relative_to_its_root ${GRUB_FONT_PATH}` ; then set gfxmode=${GRUB_GFXMODE} insmod gfxterm insmod ${GRUB_VIDEO_BACKEND} if terminal_output gfxterm ; then true ; else # For backward compatibility with versions of terminal.mod that don't # understand terminal_output terminal gfxterm fi EOF if [ x$GRUB_THEME != x ] && [ -f $GRUB_THEME ] \ && is_path_readable_by_grub $GRUB_THEME; then echo "Found theme: $GRUB_THEME" >&2 prepare_grub_to_access_device `${grub_probe} --target=device $GRUB_THEME` | sed -e "s/^/ /" cat << EOF insmod gfxmenu set theme=(\$root)`make_system_path_relative_to_its_root $GRUB_THEME` set menuviewer=gfxmenu EOF fi cat << EOF fi EOF ;; x) # Just use the native terminal ;; x*) cat << EOF if terminal_output ${GRUB_TERMINAL_OUTPUT} ; then true ; else # For backward compatibility with versions of terminal.mod that don't # understand terminal_output terminal ${GRUB_TERMINAL_OUTPUT} fi EOF ;; esac # Gettext variables and module if [ "x${LANG}" != "xC" ] ; then prepare_grub_to_access_device $(${grub_probe} --target=device ${locale_dir}) cat << EOF set locale_dir=(\$root)$(make_system_path_relative_to_its_root ${locale_dir}) set lang=${grub_lang} insmod gettext EOF fi cat << EOF if [ \${recordfail} = 1 ]; then set timeout=-1 else set timeout=${GRUB_TIMEOUT} fi EOF # Play an initial tune if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then cat << EOF insmod play play ${GRUB_INIT_TUNE} EOF fi