Rpi3: cannot switch boot partition based on the mender_* u-boot variables

I am unable to switch the boot partition using the parameters that are described in the Integration Checklist.

When I set:

mender_boot_part=3
mender_boot_part_hex=3

I still get booted into partition 2.

Given the same paramters (mender_boot_part=3), when I execute the commands contained in boot.scr at the u-boot command prompt manually:

fdt addr {fdt_addr} && fdt get value bootargs /chosen bootargs** **run mender_setup** **mmc dev {mender_uboot_dev}
load {mender_uboot_root} {kernel_addr_r} /boot/uImage
bootm {kernel_addr_r} - {fdt_addr}

I still get booted into mender_boot_part 2 (instead of mender_boot_part 3).

I inspected bootargs after mender_setup:

bootargs=8250.nr_uarts=1 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 dwc_otg.lpm_enable=0 console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait

and it contains the wrong root (it should have been p3).

Q1: Where does this get set?

I went ahead and modified bootargs so as to point to the desired root partition, and the system hangs at the “Starting kernel …” message from U-Boot. This I understand even less.

Q2: Is there any resource that describes in more detail how the U-Boot integration mechanism works?

Out distribution is based on OpenEmbedded/Yocto thud. We are using a Raspberry Pi 3 B for this test. It includes the meta-mender-raspberrypi layer, as well as meta-mender-demo and meta-mender-core.

Maybe it is worth mentioning that we are using a MACHINE name different than “raspberrypi3”; also we are using a PREEMPT_RT kernel.

What is the content of your cmdlinet.txt file on the boot partition?

This might a problem unless you inherit the rpi override. This one,

Thanks for pointing this out! I just verified that SOC_FAMILY="rpi" since in our MACHINE definition we require conf/machine/include/rpi-base.inc.

# cat cmdline.txt dwc_otg.lpm_enable=0 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait

We found a solution: apparently the linux kernel was not being bbappended by meta-mender-raspberrypi. We now require recipes-kernel/linux/linux-raspberrypi-mender.inc directly and it works! :slight_smile:

1 Like

Thanks for reporting back