Artifact update error: Failed to read the current active partition: No match between boot and root partitions

Success!

FriendlyELEC NanoPi R1 is now Mender-capable. I am able to update rootfs with Mender Artifact, and also verified automatic rollback with faulty Artifact upload.

https://tracker.mender.io/browse/MEN-3970 was the cause of the failure, but was fixed in 2.3.1 (and 2.4.1). As mentioned in previous post, I need to use 2.3.1 because of Ubuntu 16.04. and libssl1.0

Final fixes that made everything work:

  • Specified mender-client version in mender-convert: MENDER_CLIENT_VERSION="2.3.1"
  • Some fixes to MENDER_LOAD_KERNEL_AND_FDT to ensure reboot (mender_try_to_recover) on dtb/kernal load failure.

The tinal MENDER_LOAD_KERNEL_AND_FDT looks like this:

# define MENDER_LOAD_KERNEL_AND_FDT                                                         \
    "if test \"${fdt_addr_r}\" != \"\"; then \n"                                            \
    "    if load ${mender_uboot_root} ${fdt_addr_r} /boot/${mender_dtb_name}; then \n"      \
    "        fdt addr ${fdt_addr_r}; \n"                                                    \
    "        fdt set mmc${boot_mmc} boot_device <1>; \n"                                    \
    "    else \n"                                                                           \
    "        echo \"Unable to load /boot/${mender_dtb_name} from ${mender_uboot_root}\" \n" \
    "        run mender_try_to_recover; \n"                                                 \
    "    fi; \n"                                                                            \
    "else \n"                                                                               \
    "    run mender_try_to_recover; \n"                                                     \
    "fi; \n"                                                                                \
    "if load ${mender_uboot_root} ${kernel_addr_r} /boot/${mender_kernel_name}; then; \n"   \
    "else \n"                                                                               \
    "    echo \"Unable to load /boot/${mender_kernel_name} from ${mender_uboot_root}\" \n"  \
    "    run mender_try_to_recover; \n"                                                     \
    "    reset; \n"                                                                         \
    "fi; \n"
#endif
1 Like