f10220d428
Why I did it Update Nokia-7215-A1 platform to address UT and OC test failures. Update platform init and build files Microsoft ADO: 27111894 How I did it Identify failed test cases from OC run on arm64-nokia_ixs7215_52xb-r0 (Nokia-7215-A1) platform and fix bugs How to verify it Build a Marvell-arm64 target for Nokia-7215-A1 Run this image on arm64-nokia_ixs7215_52xb-r0 and verify all dockers are up and test basic commands like: show version show platform summary show platform syseeprom show platform fan show platform psustatus show platform firmware status show platform temperature show platform ssdhealth Verify ports are up using "show interface status" command Run unit tests and OC test cases.
249 lines
8.6 KiB
Plaintext
249 lines
8.6 KiB
Plaintext
# Copyright (C) Marvell Inc
|
|
|
|
# over ride default behaviour
|
|
|
|
echo "Preparing for installation ... "
|
|
|
|
# global defines
|
|
VAR_LOG=512
|
|
UBOOT_FW_DEFAULT=1
|
|
|
|
kernel_addr=0x1100000
|
|
kernel_version=6.1.0-11-2-arm64
|
|
kernel_fname="/boot/vmlinuz-$kernel_version"
|
|
initrd_fname="/boot/initrd.img-$kernel_version"
|
|
fit_fname="/boot/sonic_arm64.fit"
|
|
demo_volume_label=SONiC-OS
|
|
|
|
# global mount defines
|
|
demo_mnt=/tmp
|
|
|
|
if [ "$install_env" = "onie" ]; then
|
|
MACH_FILE="/etc/machine.conf"
|
|
else
|
|
MACH_FILE="/host/machine.conf"
|
|
fi
|
|
|
|
PLATFORM=`sed -n 's/^onie_platform=\(.*\)/\1/p' $MACH_FILE`
|
|
echo "Intalling SONiC from $install_env on Platform $PLATFORM"
|
|
|
|
PLATFORM_AC5X=0
|
|
PLATFORM_CN9131=0
|
|
|
|
case $PLATFORM in
|
|
arm64-nokia_ixs7215_52xb-r0) PLATFORM_7215_A1=1;
|
|
fdt_fname="/usr/lib/linux-image-${kernel_version}/marvell/7215-ixs-a1.dtb";
|
|
fit_conf_name="#conf_7215_a1";;
|
|
arm64-marvell_rd98DX35xx-r0) PLATFORM_AC5X=1;
|
|
fdt_fname="/usr/lib/linux-image-$kernel_version/marvell/ac5-98dx35xx-rd.dtb";
|
|
fit_conf_name="#conf_ac5x";;
|
|
arm64-marvell_rd98DX35xx_cn9131-r0) PLATFORM_CN9131=1;
|
|
fdt_fname="/boot/cn9131-db-comexpress.dtb";
|
|
fit_conf_name="#conf_cn9131";;
|
|
esac
|
|
|
|
if [ $PLATFORM_AC5X -eq 1 ]; then
|
|
fdt_addr=0x201000000
|
|
fit_addr=0x210000000
|
|
initrd_addr=0x206000000
|
|
|
|
FW_ENV_DEFAULT='/dev/mtd0 0x400000 0x10000 0x10000'
|
|
demo_part=2
|
|
mmc_bus="mmc0:0001"
|
|
elif [ $PLATFORM_7215_A1 -eq 1 ]; then
|
|
fit_addr=0x20000000
|
|
VAR_LOG=4096
|
|
FW_ENV_DEFAULT='/dev/mtd1 0x0 0x10000 0x10000'
|
|
demo_part=2
|
|
mmc_bus="mmc0:0001"
|
|
elif [ $PLATFORM_CN9131 -eq 1 ]; then
|
|
fdt_addr=0x1000000
|
|
fit_addr=0x8000000
|
|
initrd_addr=0x2000000
|
|
demo_part=2
|
|
FW_ENV_DEFAULT='/dev/mtd1 0x1F0000 0x10000 0x10000'
|
|
mmc_bus="mmc0:0001"
|
|
else
|
|
fdt_addr=0x1000000
|
|
fit_addr=0x8000000
|
|
initrd_addr=0x2000000
|
|
|
|
fdt_fname="/usr/lib/linux-image-$kernel_version/marvell/armada-7020-comexpress.dtb"
|
|
|
|
FW_ENV_DEFAULT='/dev/mtd1 0x0 0x10000 0x100000'
|
|
demo_part=1
|
|
mmc_bus="mmc0:aaaa"
|
|
fi
|
|
|
|
# Skip VID Header in UBIFS
|
|
LINUX_MISC_CMD='apparmor=1 security=apparmor usbcore.autosuspend=-1'
|
|
|
|
#Get block device
|
|
#Default block device is eMMC, if not look for usb storage
|
|
get_install_device()
|
|
{
|
|
for i in 0 1 2 ; do
|
|
if $(ls -l /sys/block/mmcblk$i/device 2>/dev/null | grep -q "$mmc_bus") ; then
|
|
echo "/dev/mmcblk$i"
|
|
blk_dev=/dev/mmcblk$i
|
|
echo "Selected mmc $blk_dev"
|
|
return 0
|
|
fi
|
|
done
|
|
|
|
echo "ERROR storage not found"
|
|
return 1
|
|
}
|
|
|
|
get_install_device
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: Unable to detect $blk_dev $demo_dev"
|
|
exit 1
|
|
fi
|
|
|
|
demo_dev=${blk_dev}p${demo_part}
|
|
|
|
remove_dev_partitions() {
|
|
echo "Remove all existing partitions starting partnum: ${demo_part} from ${blk_dev}"
|
|
local dev_to_install=${blk_dev}p
|
|
for p in $(seq ${demo_part} 9) ; do
|
|
if [[ -e ${dev_to_install}${p} ]]; then
|
|
echo "Removing partition ${dev_to_install}${p}"
|
|
sgdisk -d ${p} ${blk_dev} || true
|
|
fi
|
|
done
|
|
partprobe ${blk_dev}
|
|
}
|
|
|
|
create_demo_partition() {
|
|
# SD CARD
|
|
remove_dev_partitions
|
|
|
|
# Create sonic partition
|
|
sgdisk --new ${demo_part}:: \
|
|
--change-name=${demo_part}:${demo_volume_label} \
|
|
--typecode=${demo_part}:8300 -p ${blk_dev}
|
|
|
|
partprobe
|
|
}
|
|
|
|
create_partition() {
|
|
get_install_device
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: Unable to detect $blk_dev $demo_dev"
|
|
exit 1
|
|
fi
|
|
|
|
# Platform specific partition
|
|
create_demo_partition
|
|
}
|
|
|
|
mount_partition() {
|
|
# Make filesystem
|
|
echo "demo label: $demo_volume_label. $demo_dev..."
|
|
mkfs.ext4 -L $demo_volume_label $demo_dev
|
|
|
|
mount -t ext4 -o defaults,rw $demo_dev $demo_mnt || {
|
|
echo "Error: Unable to mount $demo_dev on $demo_mnt"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
prepare_boot_menu() {
|
|
echo "Sync up cache ..."
|
|
sync
|
|
echo "Setting up U-Boot environment..."
|
|
|
|
DTB_HAS_ENV_BLK=$(grep uboot-env /proc/mtd | sed -e 's/:.*$//')
|
|
if [ -c "/dev/$DTB_HAS_ENV_BLK" ]; then
|
|
PROC_ENV_FILE=$(find /proc/device-tree/ -name env_size)
|
|
if [ -n "$PROC_ENV_FILE" ]
|
|
then
|
|
UBOOT_ENV_SIZ="0x$(hd $PROC_ENV_FILE | awk 'FNR==1 {print $2 $3 $4 $5}')"
|
|
UBOOT_ENV_ERASE_SIZ="0x$(grep uboot-env /proc/mtd | awk '{print $3}')"
|
|
if [[ -n "$UBOOT_ENV_SIZ" && -n "$UBOOT_ENV_ERASE_SIZ" ]]
|
|
then
|
|
# Env info from DTB
|
|
FW_ENV_DTB="/dev/$DTB_HAS_ENV_BLK 0x00000000 $UBOOT_ENV_SIZ $UBOOT_ENV_ERASE_SIZ"
|
|
fi
|
|
fi
|
|
fi
|
|
if [ $UBOOT_FW_DEFAULT -eq 1 ]
|
|
then
|
|
echo $FW_ENV_DEFAULT > /etc/fw_env.config
|
|
echo "Using pre-configured uboot env"
|
|
fi
|
|
image_name=${image_dir}${kernel_fname}
|
|
initrd_name=${image_dir}${initrd_fname}
|
|
fdt_name=${image_dir}${fdt_fname}
|
|
fit_name=${image_dir}${fit_fname}
|
|
|
|
if [ "$install_env" = "onie" ]; then
|
|
FW_ARG="-f"
|
|
image_dir_old=""
|
|
image_name_old=""
|
|
initrd_name_old=""
|
|
fdt_name_old=""
|
|
fit_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)
|
|
fit_name_old=$(fw_printenv -n fit_name || true)
|
|
sonic_version_2=$(fw_printenv -n sonic_version_1 || true)
|
|
fi
|
|
|
|
# Set boot variables
|
|
fw_setenv ${FW_ARG} image_dir $image_dir > /dev/null
|
|
fw_setenv ${FW_ARG} image_name $image_name > /dev/null
|
|
fw_setenv ${FW_ARG} initrd_name $initrd_name > /dev/null
|
|
fw_setenv ${FW_ARG} fdt_name $fdt_name > /dev/null
|
|
fw_setenv ${FW_ARG} fit_name $fit_name > /dev/null
|
|
fw_setenv ${FW_ARG} sonic_version_1 $demo_volume_revision_label > /dev/null
|
|
fw_setenv ${FW_ARG} image_dir_old $image_dir_old > /dev/null
|
|
fw_setenv ${FW_ARG} image_name_old $image_name_old > /dev/null
|
|
fw_setenv ${FW_ARG} initrd_name_old $initrd_name_old > /dev/null
|
|
fw_setenv ${FW_ARG} fdt_name_old $fdt_name_old > /dev/null
|
|
fw_setenv ${FW_ARG} fit_name_old $fit_name_old > /dev/null
|
|
fw_setenv ${FW_ARG} sonic_version_2 $sonic_version_2 > /dev/null
|
|
BOOT1='echo " > Boot1: $sonic_version_1 - run sonic_image_1";echo;'
|
|
BOOT2='echo " > Boot2: $sonic_version_2 - run sonic_image_2";echo;'
|
|
BOOT3='echo " > Boot3: ONIE - run onie_boot";echo;'
|
|
BORDER='echo "---------------------------------------------------";echo;'
|
|
fw_setenv ${FW_ARG} print_menu $BORDER $BOOT1 $BOOT2 $BOOT3 $BORDER > /dev/null
|
|
|
|
fw_setenv ${FW_ARG} linuxargs "net.ifnames=0 loopfstype=squashfs loop=$image_dir/$FILESYSTEM_SQUASHFS systemd.unified_cgroup_hierarchy=0 varlog_size=$VAR_LOG ${ONIE_PLATFORM_EXTRA_CMDLINE_LINUX}" > /dev/null
|
|
fw_setenv ${FW_ARG} linuxargs_old "net.ifnames=0 loopfstype=squashfs loop=$image_dir_old/$FILESYSTEM_SQUASHFS systemd.unified_cgroup_hierarchy=0 varlog_size=$VAR_LOG ${ONIE_PLATFORM_EXTRA_CMDLINE_LINUX}" > /dev/null
|
|
sonic_bootargs_old='setenv bootargs root='$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,${baudrate} ${othbootargs} ${mtdparts} ${linuxargs_old}'
|
|
fw_setenv ${FW_ARG} sonic_bootargs_old $sonic_bootargs_old > /dev/null || true
|
|
sonic_boot_load_old=$(fw_printenv -n sonic_boot_load || true)
|
|
old_str="_old"
|
|
fw_setenv ${FW_ARG} sonic_boot_load_old "$sonic_boot_load_old$old_str" > /dev/null || true
|
|
|
|
fw_setenv ${FW_ARG} kernel_addr $kernel_addr > /dev/null
|
|
fw_setenv ${FW_ARG} fdt_addr $fdt_addr > /dev/null
|
|
fw_setenv ${FW_ARG} fit_addr $fit_addr > /dev/null
|
|
fw_setenv ${FW_ARG} fit_conf_name $fit_conf_name > /dev/null
|
|
fw_setenv ${FW_ARG} initrd_addr $initrd_addr > /dev/null
|
|
MMC_LOAD='ext4load mmc 0:'$demo_part' $fit_addr $fit_name'
|
|
fw_setenv ${FW_ARG} sonic_boot_load "$MMC_LOAD" > /dev/null
|
|
SONIC_BOOT_CMD='run sonic_bootargs; run sonic_boot_load; bootm $fit_addr${fit_conf_name}'
|
|
SONIC_BOOT_CMD_OLD='run sonic_bootargs_old; run sonic_boot_load_old; bootm $fit_addr${fit_conf_name}'
|
|
BOOTARGS='setenv bootargs root='$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,${baudrate} ${othbootargs} ${mtdparts} ${linuxargs}'
|
|
fw_setenv ${FW_ARG} sonic_bootargs $BOOTARGS > /dev/null
|
|
fw_setenv ${FW_ARG} sonic_bootcmd $SONIC_BOOT_CMD > /dev/null
|
|
fw_setenv ${FW_ARG} sonic_image_2 $SONIC_BOOT_CMD_OLD > /dev/null
|
|
fw_setenv ${FW_ARG} sonic_image_1 "$SONIC_BOOT_CMD" > /dev/null
|
|
fw_setenv ${FW_ARG} boot_next 'run sonic_image_1'> /dev/null
|
|
fw_setenv ${FW_ARG} bootcmd 'run print_menu; usb start; test -n "$boot_once" && run boot_once; run boot_next' > /dev/null
|
|
|
|
}
|
|
|
|
bootloader_menu_config() {
|
|
# Update uboot Environment
|
|
prepare_boot_menu
|
|
}
|
|
|