91 lines
2.0 KiB
Plaintext
91 lines
2.0 KiB
Plaintext
|
#!/bin/bash
|
||
|
#scrit to set onie boot modes from NOS
|
||
|
# modes supported rescue/install/uninstall
|
||
|
|
||
|
VERBOSE=no
|
||
|
ONIEPATH="/mnt/onie-boot"
|
||
|
|
||
|
unset ONIE_MODE
|
||
|
|
||
|
function set_onie_boot()
|
||
|
{
|
||
|
# If reboot to ONIE is requested, set the ONIE boot mode (update/install/uninstall/rescue)
|
||
|
# and reboot.
|
||
|
|
||
|
# Exit if not superuser
|
||
|
if [[ "$EUID" -ne 0 ]]; then
|
||
|
echo "This command must be run as root" >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Mount ONIE partition if not already mounted
|
||
|
if ! grep -qs '/mnt/onie-boot ' /proc/mounts; then
|
||
|
mkdir -p ${ONIEPATH}
|
||
|
mount LABEL=ONIE-BOOT ${ONIEPATH} || ERR=$?
|
||
|
if [[ ${ERR} -ne 0 ]]; then
|
||
|
VERBOSE=yes debug "Failed to mount ONIE partition."
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# Set mode
|
||
|
${ONIEPATH}/onie/tools/bin/onie-boot-mode -o ${ONIE_MODE} || ERR=$?
|
||
|
if [[ ${ERR} -ne 0 ]]; then
|
||
|
VERBOSE=yes debug "Failed to set ONIE boot mode. Ensure that mode is valid"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Set next boot to ONIE
|
||
|
grub-editenv /host/grub/grubenv set next_entry=ONIE || ERR=$?
|
||
|
if [[ ${ERR} -ne 0 ]]; then
|
||
|
VERBOSE=yes debug "Failed to set next boot to ONIE."
|
||
|
exit 1
|
||
|
fi
|
||
|
echo "next boot mode set to onie - ${ONIE_MODE}"
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
function debug()
|
||
|
{
|
||
|
if [[ x"${VERBOSE}" == x"yes" ]]; then
|
||
|
echo `date` $@
|
||
|
fi
|
||
|
logger "$@"
|
||
|
}
|
||
|
|
||
|
|
||
|
SCRIPT=$0
|
||
|
|
||
|
function show_help_and_exit()
|
||
|
{
|
||
|
echo "Usage ${SCRIPT} [options]"
|
||
|
echo " This script will set modes in onie rescue/uninstall/install."
|
||
|
echo " "
|
||
|
echo " Available options:"
|
||
|
echo " -h, -? : getting this help"
|
||
|
echo " -o [mode] : boot into ONIE"
|
||
|
|
||
|
exit 0
|
||
|
}
|
||
|
|
||
|
function parse_options()
|
||
|
{
|
||
|
while getopts "h?vo:" opt; do
|
||
|
case $opt in
|
||
|
h|\? )
|
||
|
show_help_and_exit
|
||
|
;;
|
||
|
o )
|
||
|
ONIE_MODE=$OPTARG
|
||
|
set_onie_boot
|
||
|
;;
|
||
|
v )
|
||
|
VERBOSE=yes
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
}
|
||
|
|
||
|
parse_options $@
|