This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
tsg-tsg-os-buildimage/rootconf/sysroot-lib/onie/common-blkdev

39 lines
1.3 KiB
Bash

# -*- shell-script -*-
# Copyright (C) 2015 Curt Brune <curt@cumulusnetworks.com>
# Copyright (C) 2015-2016 david_yang <david_yang@accton.com>
#
# SPDX-License-Identifier: GPL-2.0
# Common block device definitions for the DEMO OS
demo_mnt="/boot"
# Configure UEFI / Boot Loader to load ONIE GRUB at the next boot.
# This is a one-shot event, reverting to the regular boot after one
# iteration.
set_onie_next_boot()
{
if [ ! -d "$demo_mnt/grub" ] ; then
# Do nothing if no GRUB installed in demo partition
return 0
fi
if [ -d "/sys/firmware/efi/efivars" ] ; then
# For the UEFI case we set the UEFI variable "BootNext" to
# select ONIE as the next OS to boot. The "BootNext" variable
# is only used once by the firmware, after which the permanent
# "BootOrder" variable is used.
local boot_num=$(efibootmgr -v| grep "ONIE:" | grep "HD" | awk '{ print $1 }')
boot_num=${boot_num#Boot}
# Remove trailing '*'
boot_num=${boot_num%\*}
if [ -n "$boot_num" ] ; then
efibootmgr --quiet --bootnext $boot_num && return
echo "ERROR: Problems setting UEFI BootNext variable"
fi
fi
# Fall back to using GRUB chainload method
grub2-reboot --boot-directory="$demo_mnt" ONIE
}