diff --git a/platform/marvell-armhf/platform.conf b/platform/marvell-armhf/platform.conf index d39ad66dee..23a191adf7 100644 --- a/platform/marvell-armhf/platform.conf +++ b/platform/marvell-armhf/platform.conf @@ -118,11 +118,42 @@ prepare_boot_menu() { fdt_name_old="" sonic_version_2="None" else - image_dir_old=$(fw_printenv -n image_dir || true) - image_name_old=$(fw_printenv -n image_name || true) - initrd_name_old=$(fw_printenv -n initrd_name || true) - fdt_name_old=$(fw_printenv -n fdt_name || true) - sonic_version_2=$(fw_printenv -n sonic_version_1 || true) + eval running_version="$(cat /proc/cmdline | sed -n 's/^.*loop=\/*image-\(\S\+\)\/.*$/\1/p')" + current_boot_next=$(fw_printenv -n boot_next || true) + running_sonic_image=1 + if [ "$current_boot_next" = "run sonic_image_1" ]; then + # boot_next=run sonic_image_1 + sonic_version_2=$(fw_printenv -n sonic_version_2 || true) + if test "${sonic_version_2#*$running_version}" != "$sonic_version_2" + then + running_sonic_image=2 + else + running_sonic_image=1 + fi + else + # boot_next=run sonic_image_2 + sonic_version_1=$(fw_printenv -n sonic_version_1 || true) + if test "${sonic_version_1#*$running_version}" != "$sonic_version_1" + then + running_sonic_image=1 + else + running_sonic_image=2 + fi + fi + + if [ $running_sonic_image -eq 1 ]; then + image_dir_old=$(fw_printenv -n image_dir || true) + image_name_old=$(fw_printenv -n image_name || true) + initrd_name_old=$(fw_printenv -n initrd_name || true) + fdt_name_old=$(fw_printenv -n fdt_name || true) + sonic_version_2=$(fw_printenv -n sonic_version_1 || true) + else + image_dir_old=$(fw_printenv -n image_dir_old || true) + image_name_old=$(fw_printenv -n image_name_old || true) + initrd_name_old=$(fw_printenv -n initrd_name_old || true) + fdt_name_old=$(fw_printenv -n fdt_name_old || true) + sonic_version_2=$(fw_printenv -n sonic_version_2 || true) + fi fi # Set boot variables