1ce2b50143
Why I did it After sonic-install install a new image, print_menu is set echo without any data. No image info between Hit any key to stop autoboot: 0 and Start USB Board configuration detected: Net: | port | Interface | PHY address | |--------|-----------|--------------| No ethernet found. Hit any key to stop autoboot: 0 (Re)start USB... USB0: Port (usbActive) : 0 Interface (usbType = 2) : USB EHCI 1.00 scanning bus 0 for devices... 3 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found How I did it The fw_setenv print_menu is missing the double quotes. That causes the value is truncated. Using double quotes to in the environment setting. How to verify it Install new image with this fix. And reboot the system. The following section should be shown: Signed-off-by: mlok <marty.lok@nokia.com>
273 lines
12 KiB
Plaintext
273 lines
12 KiB
Plaintext
# Copyright (C) Marvell Inc
|
|
|
|
# over ride default behaviour
|
|
|
|
echo "Preparing for installation ... "
|
|
|
|
# global defines
|
|
kernel_addr=0x1100000
|
|
fdt_addr=0x2800000
|
|
fdt_high=0x28fffff
|
|
initrd_addr=0x2900000
|
|
|
|
kernel_fname="/boot/vmlinuz-5.10.0-18-2-armmp"
|
|
initrd_fname="/boot/initrd.img-5.10.0-18-2-armmp"
|
|
fdt_fname="/boot/armada-385-ET6448M_4G_Nand.dtb"
|
|
|
|
if [ "$install_env" = "onie" ]; then
|
|
MACH_FILE="/etc/machine.conf"
|
|
else
|
|
MACH_FILE="/host/machine.conf"
|
|
fi
|
|
# armhf-marvell_et6448m_52x-r0 - Platform = Et6448M
|
|
# armhf-nokia_ixs7215_52x-r0 - Platform = Nokia IPD6448M
|
|
PLATFORM=`sed -n 's/^onie_platform=\(.*\)/\1/p' $MACH_FILE`
|
|
echo "Intalling SONiC from $install_env on Platform $PLATFORM"
|
|
|
|
# global mount defines
|
|
if [ "$PLATFORM" = "armhf-marvell_et6448m_52x-r0" ]; then
|
|
demo_dev=ubi0
|
|
mtd_dev=/dev/$(cat /proc/mtd | grep "SONIC" | grep -o "mtd[0-9]")
|
|
mtd_num=$(echo $mtd_dev | grep -o "[0-9]")
|
|
|
|
fdt_fname="/boot/armada-385-ET6448M_4G_Nand.dtb"
|
|
|
|
BOOTARGS='setenv bootargs root='$demo_dev' rw rootwait ubi.mtd='$mtd_num' rootfstype=ubifs panic=1 console=ttyS0,115200 ${othbootargs} ${mtdparts} ${linuxargs}'
|
|
UBI_LOAD='run ubi_sonic_boot_mount_ubi; ubifsload $kernel_addr $image_name;ubifsload $fdt_addr $fdt_name; ubifsload $initrd_addr $initrd_name'
|
|
BOOTARGS_OLD='setenv bootargs root='$demo_dev' rw rootwait ubi.mtd='$mtd_num' rootfstype=ubifs panic=1 console=ttyS0,115200 ${othbootargs} ${mtdparts} ${linuxargs_old}'
|
|
UBI_LOAD_OLD='run ubi_sonic_boot_mount_ubi; ubifsload $kernel_addr $image_name_old;ubifsload $fdt_addr $fdt_name_old; ubifsload $initrd_addr $initrd_name_old'
|
|
UBIBOOTCMD='run ubi_sonic_boot_bootargs; run ubi_sonic_boot_load; test -n "$boot_once" && setenv boot_once "" && saveenv; bootz $kernel_addr $initrd_addr $fdt_addr'
|
|
UBIBOOTCMD_OLD='run ubi_sonic_boot_bootargs_old; run ubi_sonic_boot_load_old; test -n "$boot_once" && setenv boot_once "" && saveenv; bootz $kernel_addr $initrd_addr $fdt_addr'
|
|
LINUX_MISC_CMD='apparmor=1 security=apparmor usbcore.autosuspend=-1'
|
|
|
|
elif [ "$PLATFORM" = "armhf-nokia_ixs7215_52x-r0" ]; then
|
|
demo_dev=sda2
|
|
|
|
fdt_fname="/boot/armada-385-ipd6448m.dtb"
|
|
|
|
BOOTARGS='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,${baudrate} ${othbootargs} ${mtdparts} ${linuxargs}'
|
|
UBI_LOAD='scsi init; ext4load scsi 0:2 $kernel_addr $image_name; ext4load scsi 0:2 $fdt_addr $fdt_name; ext4load scsi 0:2 $initrd_addr $initrd_name'
|
|
BOOTARGS_OLD='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,${baudrate} ${othbootargs} ${mtdparts} ${linuxargs_old}'
|
|
UBI_LOAD_OLD='scsi init; ext4load scsi 0:2 $kernel_addr $image_name_old; ext4load scsi 0:2 $fdt_addr $fdt_name_old; ext4load scsi 0:2 $initrd_addr $initrd_name_old'
|
|
UBIBOOTCMD='run ubi_sonic_boot_bootargs; run ubi_sonic_boot_load; test -n "$boot_once" && setenv boot_once "" && saveenv; bootz $kernel_addr $initrd_addr $fdt_addr'
|
|
UBIBOOTCMD_OLD='run ubi_sonic_boot_bootargs_old; run ubi_sonic_boot_load_old; test -n "$boot_once" && setenv boot_once "" && saveenv; bootz $kernel_addr $initrd_addr $fdt_addr'
|
|
LINUX_MISC_CMD='apparmor=1 security=apparmor usbcore.autosuspend=-1'
|
|
|
|
else
|
|
echo "Unsupported Platform $PLAFORM"
|
|
exit 2
|
|
fi
|
|
demo_mnt=/tmp
|
|
FW_ENV_DEFAULT='/dev/mtd0 0x00500000 0x80000 0x100000 8'
|
|
UBOOT_FW_DEFAULT=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 [ -n "$FW_ENV_DTB" ]
|
|
then
|
|
echo $FW_ENV_DTB > /etc/fw_env.config
|
|
echo "Found uboot env offset in device tree"
|
|
UBOOT_ENV_CRC=$(fw_printenv 2>&1 | grep -c 'Warning: Bad CRC') || true
|
|
if [ "$UBOOT_ENV_CRC" -eq 0 ]
|
|
then
|
|
echo "Uboot env offset in device tree is valid"
|
|
UBOOT_FW_DEFAULT=0
|
|
fdt_fname="/boot/armada-385-ET6448M_4G_Nand_r2019.dtb"
|
|
else
|
|
echo "Uboot env offset in device tree is NOT valid"
|
|
UBOOT_FW_DEFAULT=1
|
|
fi
|
|
fi
|
|
if [ $UBOOT_FW_DEFAULT -eq 1 ]
|
|
then
|
|
echo $FW_ENV_DEFAULT > /etc/fw_env.config
|
|
echo "Using pre-configured uboot env"
|
|
fi
|
|
if [ "$PLATFORM" = "armhf-nokia_ixs7215_52x-r0" ]; then
|
|
FW_ENV_DEFAULT='/dev/mtd0 0x00100000 0x10000 0x10000'
|
|
echo $FW_ENV_DEFAULT > /etc/fw_env.config
|
|
echo "Using pre-configured uboot env for armhf-nokia_ixs7215_52x-r0"
|
|
fi
|
|
|
|
image_name=${image_dir}${kernel_fname}
|
|
initrd_name=${image_dir}${initrd_fname}
|
|
fdt_name=${image_dir}${fdt_fname}
|
|
|
|
if [ "$install_env" = "onie" ]; then
|
|
FW_ARG="-f"
|
|
image_dir_old=""
|
|
image_name_old=""
|
|
initrd_name_old=""
|
|
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)
|
|
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} 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} 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;'
|
|
if [ "$PLATFORM" = "armhf-nokia_ixs7215_52x-r0" ]; then
|
|
BOOT3='echo " > Boot3: ONIE - run onie_bootcmd";echo;'
|
|
else
|
|
BOOT3='echo " > Boot3: ONIE - run onie_nand_boot";echo;'
|
|
fi
|
|
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_SIZE loglevel=4 ${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_SIZE loglevel=4" > /dev/null
|
|
|
|
# Set boot configs
|
|
fw_setenv ${FW_ARG} kernel_addr $kernel_addr > /dev/null
|
|
fw_setenv ${FW_ARG} fdt_addr $fdt_addr > /dev/null
|
|
fw_setenv ${FW_ARG} fdt_high $fdt_high > /dev/null
|
|
fw_setenv ${FW_ARG} initrd_addr $initrd_addr > /dev/null
|
|
fw_setenv ${FW_ARG} mtdids 'nand0=armada-nand' > /dev/null
|
|
if [ $UBOOT_FW_DEFAULT -eq 1 ]
|
|
then
|
|
fw_setenv ${FW_ARG} mtdparts 'mtdparts=armada-nand:10m(U-Boot)ro,20m@10m(ONIE),-(SONIC)' > /dev/null
|
|
else
|
|
fw_setenv ${FW_ARG} mtdparts 'mtdparts=armada-nand:4m(uboot)ro,5m@5m(uboot-env),20m@10m(ONIE),-(SONIC)' > /dev/null
|
|
fi
|
|
if [ "$PLATFORM" = "armhf-nokia_ixs7215_52x-r0" ]; then
|
|
fw_setenv ${FW_ARG} mtdparts 'mtdparts=spi0.0:4m(boot),-(spi-rootfs)' > /dev/null
|
|
fi
|
|
fw_setenv ${FW_ARG} ubi_sonic_boot_mount_ubi 'ubi part SONIC; ubifsmount ubi0' > /dev/null
|
|
fw_setenv ${FW_ARG} ubi_sonic_boot_bootargs "$BOOTARGS" > /dev/null
|
|
fw_setenv ${FW_ARG} ubi_sonic_boot_load "$UBI_LOAD" > /dev/null
|
|
fw_setenv ${FW_ARG} sonic_image_1 "$UBIBOOTCMD" > /dev/null
|
|
fw_setenv ${FW_ARG} ubi_sonic_boot_bootargs_old "$BOOTARGS_OLD" > /dev/null
|
|
fw_setenv ${FW_ARG} ubi_sonic_boot_load_old "$UBI_LOAD_OLD" > /dev/null
|
|
fw_setenv ${FW_ARG} sonic_image_2 "$UBIBOOTCMD_OLD" > /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
|
|
|
|
}
|
|
|
|
create_ubi_partition() {
|
|
ubidetach /dev/ubi_ctrl -d 0 2>/dev/null || true
|
|
|
|
trap_push "${onie_bin} ubidetach -d 0 /dev/ubi_ctrl || true"
|
|
echo -en "Format mtd partition '$mtd_dev' "
|
|
ubiformat $mtd_dev -y -q || {
|
|
echo "Failed"
|
|
}
|
|
|
|
#attaches MTD devices (which describe raw flash) to UBI and creates corresponding UBI devices; ('-m 2' --> mtd2)
|
|
echo -en "ubiattach mtd '$mtd_num' "
|
|
ubiattach /dev/ubi_ctrl -m $mtd_num || {
|
|
echo "Failed"
|
|
}
|
|
|
|
#creates UBI volumes on UBI devices
|
|
ubimkvol /dev/$demo_dev -N $demo_dev -s 3900MiB
|
|
}
|
|
|
|
create_gpt_partition() {
|
|
blk_dev="/dev/sda"
|
|
demo_part=$(sgdisk -p $blk_dev | grep -e "$demo_volume_label" | awk '{print $1}')
|
|
# ONIE partition size 168MB
|
|
onie_part_size=168
|
|
|
|
if [ -z "$demo_part" ] ; then
|
|
# Partition Does NOT Exists
|
|
echo "SONIC label [$demo_volume_label] is NOT found in Partition"
|
|
echo "Proceeding to create partition"
|
|
|
|
attr_bitmask="0x0"
|
|
|
|
sgdisk --new=${demo_part}::+${onie_part_size}MB \
|
|
--attributes=${demo_part}:=:$attr_bitmask \
|
|
--change-name=${demo_part}:$demo_volume_label $blk_dev \
|
|
|| {
|
|
echo "Warning: The first trial of creating partition failed, trying the largest aligned available block of sectors on the disk"
|
|
begin=$(sgdisk -F $blk_dev)
|
|
end=$(sgdisk -E $blk_dev)
|
|
sgdisk --new=${demo_part}:$begin:$end \
|
|
--attributes=${demo_part}:=:$attr_bitmask \
|
|
--change-name=${demo_part}:$demo_volume_label $blk_dev
|
|
} || {
|
|
echo "Error: Unable to create partition $demo_part on $blk_dev"
|
|
exit 1
|
|
}
|
|
partprobe || true
|
|
else
|
|
# Partition Exists
|
|
echo "Partition exists $demo_part on $blk_dev"
|
|
fi
|
|
|
|
# Make filesystem
|
|
mkfs.ext4 -L $demo_volume_label /dev/$demo_dev
|
|
}
|
|
|
|
create_partition() {
|
|
# Platform speicific partition
|
|
if [ "$PLATFORM" = "armhf-marvell_et6448m_52x-r0" ]; then
|
|
echo "Doing UBI partition"
|
|
create_ubi_partition
|
|
else
|
|
echo "Doing GPT partition"
|
|
create_gpt_partition
|
|
fi
|
|
}
|
|
|
|
mount_partition() {
|
|
|
|
demo_mnt=$(mktemp -d) || {
|
|
echo "Error: Unable to create file sstem mount point"
|
|
exit 1
|
|
}
|
|
|
|
echo "Mounting $demo_dev on $demo_mnt "
|
|
if [ "$PLATFORM" = "armhf-marvell_et6448m_52x-r0" ]; then
|
|
trap_push "${onie_bin} umount /dev/ubi0_0|| true"
|
|
mount -t ubifs /dev/ubi0_0 $demo_mnt || {
|
|
echo "mount -t ubifs /dev/ubi0_0 $demo_mnt Failed"
|
|
exit 1
|
|
}
|
|
else
|
|
trap_push "${onie_bin} umount /dev/sda2|| true"
|
|
mount -t ext4 /dev/sda2 $demo_mnt || {
|
|
echo "mount -t ext4 /dev/sda2 $demo_mnt Failed"
|
|
exit 1
|
|
}
|
|
fi
|
|
}
|
|
|
|
bootloader_menu_config() {
|
|
# Update uboot Environment
|
|
prepare_boot_menu
|
|
}
|