161 lines
5.0 KiB
Bash
161 lines
5.0 KiB
Bash
#! /bin/sh
|
|
#
|
|
# Set a default boot entry for VAS_EBOOT, for the next boot only.
|
|
# Copyright (C) 2004,2009 Free Software Foundation, Inc.
|
|
#
|
|
# VAS_EBOOT 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.
|
|
#
|
|
# VAS_EBOOT 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 VAS_EBOOT. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Initialize some variables.
|
|
prefix=@prefix@
|
|
exec_prefix=@exec_prefix@
|
|
bindir=@bindir@
|
|
sbindir=@sbindir@
|
|
sysconfdir="@sysconfdir@"
|
|
PACKAGE_NAME=@PACKAGE_NAME@
|
|
PACKAGE_VERSION=@PACKAGE_VERSION@
|
|
datarootdir="@datarootdir@"
|
|
datadir="@datadir@"
|
|
if [ "x$pkgdatadir" = x ]; then
|
|
pkgdatadir="${datadir}/@PACKAGE@"
|
|
fi
|
|
|
|
self=`basename $0`
|
|
|
|
VasEBoot_editenv=${bindir}/@VasEBoot_editenv@
|
|
VasEBoot_probe=${sbindir}/@VasEBoot_probe@
|
|
rootdir=
|
|
bootdir=
|
|
VasEBootdir=`echo "/@bootdirname@/@VasEBootdirname@" | sed 's,//*,/,g'`
|
|
|
|
export TEXTDOMAIN=@PACKAGE@
|
|
export TEXTDOMAINDIR="@localedir@"
|
|
|
|
. "${pkgdatadir}/VasEBoot-mkconfig_lib"
|
|
|
|
# Usage: usage
|
|
# Print the usage.
|
|
usage () {
|
|
gettext_printf "Usage: %s [OPTION] MENU_ENTRY\n" "$self"
|
|
gettext "Set the default boot menu entry for VAS_EBOOT, for the next boot only."; echo
|
|
print_option_help "-h, --help" "$(gettext "print this message and exit")"
|
|
print_option_help "-V, --version" "$(gettext "print the version information and exit")"
|
|
dirmsg="$(gettext_printf "expect VAS_EBOOT images under the directory DIR/%s instead of the %s directory" "@VasEBootdirname@" "$VasEBootdir")"
|
|
print_option_help "--boot-directory=$(gettext "DIR")" "$dirmsg"
|
|
echo
|
|
gettext "MENU_ENTRY is a number, a menu item title or a menu item identifier. Please note that menu items in
|
|
submenus or sub-submenus require specifying the submenu components and then the
|
|
menu item component. The titles should be separated using the greater-than
|
|
character (>) with no extra spaces. Depending on your shell some characters including > may need escaping. More information about this is available
|
|
in the VAS_EBOOT Manual in the section about the 'default' command. "; echo
|
|
echo
|
|
gettext "NOTE: In cases where VAS_EBOOT cannot write to the environment block, such as when it is stored on an MDRAID or LVM device, the chosen boot menu entry will remain the default even after reboot. "; echo
|
|
echo
|
|
gettext "Report bugs to <bug-VasEBoot@gnu.org>."; echo
|
|
}
|
|
|
|
argument () {
|
|
opt=$1
|
|
shift
|
|
|
|
if test $# -eq 0; then
|
|
gettext_printf "%s: option requires an argument -- \`%s'\n" "$self" "$opt" 1>&2
|
|
exit 1
|
|
fi
|
|
echo $1
|
|
}
|
|
|
|
# Check the arguments.
|
|
while test $# -gt 0
|
|
do
|
|
option=$1
|
|
shift
|
|
|
|
case "$option" in
|
|
-h | --help)
|
|
usage
|
|
exit 0 ;;
|
|
-V | --version)
|
|
echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}"
|
|
exit 0 ;;
|
|
|
|
# Accept for compatibility
|
|
--root-directory)
|
|
rootdir=`argument $option "$@"`; shift ;;
|
|
--root-directory=*)
|
|
rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
|
|
|
|
--boot-directory)
|
|
bootdir=`argument $option "$@"`; shift;;
|
|
--boot-directory=*)
|
|
bootdir=`echo "$option" | sed 's/--boot-directory=//'` ;;
|
|
|
|
-*)
|
|
gettext_printf "Unrecognized option \`%s'\n" "$option" 1>&2
|
|
usage
|
|
exit 1
|
|
;;
|
|
*)
|
|
if test "x$entry" != x; then
|
|
gettext "More than one menu entry?" 1>&2
|
|
echo >&2
|
|
usage
|
|
exit 1
|
|
fi
|
|
entry="${option}" ;;
|
|
esac
|
|
done
|
|
|
|
if test "x$entry" = x; then
|
|
gettext "Menu entry not specified." 1>&2
|
|
echo >&2
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$bootdir" ]; then
|
|
# Default bootdir if bootdir not initialized.
|
|
bootdir=/@bootdirname@
|
|
|
|
if [ -n "$rootdir" ] ; then
|
|
# Initialize bootdir if rootdir was initialized.
|
|
bootdir=${rootdir}/@bootdirname@
|
|
fi
|
|
fi
|
|
|
|
VasEBootdir=`echo "${bootdir}/@VasEBootdirname@" | sed 's,//*,/,g'`
|
|
|
|
abstractions=`$VasEBoot_probe --target=abstraction ${VasEBootdir}/VasEBootenv`
|
|
for abstraction in $abstractions; do
|
|
case "$abstraction" in
|
|
diskfilter | lvm)
|
|
gettext_printf "\nWARNING: Detected VAS_EBOOT environment block on $abstraction device\n"
|
|
gettext_printf "%s will remain the default boot entry until manually cleared with:\n" "${entry}"
|
|
gettext_printf " VasEBoot-editenv ${VasEBootdir}/VasEBootenv unset next_entry\n\n"
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Restore saved_entry if it was set by previous version
|
|
prev_saved_entry=`$VasEBoot_editenv ${VasEBootdir}/VasEBootenv list | sed -n 's/^prev_saved_entry=//p'`
|
|
if [ "$prev_saved_entry" ]; then
|
|
$VasEBoot_editenv ${VasEBootdir}/VasEBootenv set saved_entry="$prev_saved_entry"
|
|
$VasEBoot_editenv ${VasEBootdir}/VasEBootenv unset prev_saved_entry
|
|
fi
|
|
|
|
$VasEBoot_editenv ${VasEBootdir}/VasEBootenv set next_entry="$entry"
|
|
|
|
# Bye.
|
|
exit 0
|