sonic-buildimage/platform/broadcom/sonic-platform-modules-dell/common/onie_mode_set
srideepDell dd322270cb [DellEMC]: utility to set onie modes from NOS (#3860)
This common utility would set next boot option as onie mode and
when reboot is triggered it would reboot the box into that specific onie mode.

Current support modes are rescue/install/uninstall
2019-12-10 15:13:25 -08:00

91 lines
2.0 KiB
Bash
Executable File

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