sonic-buildimage/platform/broadcom/sonic-platform-modules-dell/common/onie_mode_set

91 lines
2.0 KiB
Plaintext
Raw Normal View History

#!/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 $@