Skip to content

Commit 8f3c5ef

Browse files
[warm-reboot] Add support to pass extra kernel cmdline parameters (#3192)
Signed-off-by: Pavan Naregundi <[email protected]>
1 parent 9677447 commit 8f3c5ef

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

scripts/fast-reboot

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -380,27 +380,42 @@ function setup_reboot_variables()
380380
{
381381
# Kernel and initrd image
382382
HWSKU=$(show platform summary --json | python -c 'import sys, json; print(json.load(sys.stdin)["hwsku"])')
383+
CURR_SONIC_IMAGE=$(sonic-installer list | grep "Current: " | cut -d ' ' -f 2)
383384
NEXT_SONIC_IMAGE=$(sonic-installer list | grep "Next: " | cut -d ' ' -f 2)
384385
IMAGE_PATH="/host/image-${NEXT_SONIC_IMAGE#SONiC-OS-}"
386+
if [ "$NEXT_SONIC_IMAGE" = "$CURR_SONIC_IMAGE" ]; then
387+
if [[ -f ${DEVPATH}/${PLATFORM}/installer.conf ]]; then
388+
. ${DEVPATH}/${PLATFORM}/installer.conf
389+
fi
390+
else
391+
tmp_dir=`mktemp -d`
392+
mount -o ro $IMAGE_PATH/fs.squashfs $tmp_dir
393+
if [[ -f $tmp_dir/${DEVPATH}/${PLATFORM}/installer.conf ]]; then
394+
. $tmp_dir/${DEVPATH}/${PLATFORM}/installer.conf
395+
fi
396+
umount $tmp_dir
397+
rm -rf $tmp_dir
398+
fi
399+
385400
if grep -q aboot_platform= /host/machine.conf; then
386401
if is_secureboot; then
387402
KERNEL_IMAGE=""
388403
BOOT_OPTIONS="SONIC_BOOT_TYPE=${BOOT_TYPE_ARG} secure_boot_enable=1"
389404
else
390405
KERNEL_IMAGE="$(ls $IMAGE_PATH/boot/vmlinuz-*)"
391-
BOOT_OPTIONS="$(cat "$IMAGE_PATH/kernel-cmdline" | tr '\n' ' ') SONIC_BOOT_TYPE=${BOOT_TYPE_ARG}"
406+
BOOT_OPTIONS="$(cat "$IMAGE_PATH/kernel-cmdline" | tr '\n' ' ') ${KEXEC_LOAD_EXTRA_CMDLINE_LINUX} SONIC_BOOT_TYPE=${BOOT_TYPE_ARG}"
392407
fi
393408
INITRD=$(echo $KERNEL_IMAGE | sed 's/vmlinuz/initrd.img/g')
394409
elif grep -q onie_platform= /host/machine.conf; then
395410
if [ -r /host/grub/grub.cfg ]; then
396411
KERNEL_OPTIONS=$(cat /host/grub/grub.cfg | sed "/$NEXT_SONIC_IMAGE'/,/}/"'!'"g" | grep linux)
397412
KERNEL_IMAGE="/host$(echo $KERNEL_OPTIONS | cut -d ' ' -f 2)"
398-
BOOT_OPTIONS="$(echo $KERNEL_OPTIONS | sed -e 's/\s*linux\s*/BOOT_IMAGE=/') SONIC_BOOT_TYPE=${BOOT_TYPE_ARG}"
413+
BOOT_OPTIONS="$(echo $KERNEL_OPTIONS | sed -e 's/\s*linux\s*/BOOT_IMAGE=/') ${KEXEC_LOAD_EXTRA_CMDLINE_LINUX} SONIC_BOOT_TYPE=${BOOT_TYPE_ARG}"
399414
INITRD=$(echo $KERNEL_IMAGE | sed 's/vmlinuz/initrd.img/g')
400415
# Handle architectures supporting Device Tree
401416
elif [ -f /sys/firmware/devicetree/base/chosen/bootargs ]; then
402417
KERNEL_IMAGE="$(ls $IMAGE_PATH/boot/vmlinuz-*)"
403-
BOOT_OPTIONS="$(cat /sys/firmware/devicetree/base/chosen/bootargs | sed 's/.$//') SONIC_BOOT_TYPE=${BOOT_TYPE_ARG}"
418+
BOOT_OPTIONS="$(cat /sys/firmware/devicetree/base/chosen/bootargs | sed 's/.$//') ${KEXEC_LOAD_EXTRA_CMDLINE_LINUX} SONIC_BOOT_TYPE=${BOOT_TYPE_ARG}"
404419
INITRD=$(echo $KERNEL_IMAGE | sed 's/vmlinuz/initrd.img/g')
405420
406421
# If initrd is a U-Boot uImage, remove the uImage header

0 commit comments

Comments
 (0)