dd322270cb
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
91 lines
2.0 KiB
Bash
Executable File
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 $@
|