# Artifact install failed - "No match between boot and root partitions"

**URL:** <https://hub.mender.io/t/artifact-install-failed-no-match-between-boot-and-root-partitions/7793>\
**Category:** General Discussions\
**Tags:** yocto\
**Created:** [May 24, 2025, 2:57pm UTC](https://hub.mender.io/t/artifact-install-failed-no-match-between-boot-and-root-partitions/7793 "2025-05-24T14:57:07Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rani13958](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/rani13958/32/2479_2.png) [@Rani13958](https://hub.mender.io/u/Rani13958)\
**Post date:** [May 24, 2025, 2:57pm UTC](https://hub.mender.io/t/artifact-install-failed-no-match-between-boot-and-root-partitions/7793/1 "2025-05-24T14:57:07Z")

</div>

Hi Mender community,

I’m working on integrating **Mender OTA** into a **Toradex Apalis iMX8** board using the Yocto-based image `tdx-reference-multimedia-image` (Toradex Yocto 5.7 / kirkstone). The image builds successfully and I can deploy it via the Mender server, but the **update fails during installation** with the following log:  
info: Running Mender client version: 3.5.3  
info: State transition: update-fetch [Download\_Enter] → update-store [Download\_Enter]  
info: No public key was provided for authenticating the artifact  
info: Output (stderr) from command “fw\_printenv”: Cannot read environment, using default  
info: Output (stderr) from command “fw\_printenv”: Cannot read default environment from file  
error: Artifact install failed: Payload: can not install Payload: Apalis-iMX8\_Reference-Multimedia-Image.ext4: No match between boot and root partitions.: exit status 243

What I have configured:

# Enable Mender features

MENDER\_FEATURES\_ENABLE:append = " mender-uboot mender-image mender-image-sd"  
MENDER\_FEATURES\_DISABLE:append = " mender-grub mender-image-uefi"

# Mender Artifact info

MENDER\_ARTIFACT\_NAME = “scooter-v1.0”

# Mender and Toradex Tezi integration

INHERIT += “mender-toradex”  
IMAGE\_CLASSES += “image\_type\_mender\_tezi”  
IMAGE\_FSTYPES:append = " mender\_tezi"  
IMAGE\_FSTYPES:remove = " teziimg"

# Remove files from boot partition that are loaded by Mender

# from the root partitions; this allows the files to be updated OTA

#IMAGE\_BOOT\_FILES:remove:mender-uboot = “zImage ${KERNEL\_DEVICETREE} overlays.txt overlays/\*;overlays/”

MENDER\_IMAGE\_BOOTLOADER\_BOOTSECTOR\_OFFSET = “0”  
DISTRO\_FEATURES:append = " systemd"  
VIRTUAL-RUNTIME\_init\_manager = “systemd”  
DISTRO\_FEATURES\_BACKFILL\_CONSIDERED = “sysvinit”  
VIRTUAL-RUNTIME\_initscripts = “”

# Settings for apalis-imx8

MENDER\_IMAGE\_BOOTLOADER\_BOOTSECTOR\_OFFSET:apalis-imx8 = “0”  
MENDER\_BOOT\_PART\_SIZE\_MB:apalis-imx8 = “64”  
OFFSET\_SPL\_PAYLOAD:apalis-imx8 = “”  
MENDER\_STORAGE\_DEVICE:apalis-imx8 = “/dev/mmcblk0”  
MENDER\_STORAGE\_TOTAL\_SIZE\_MB:apalis-imx8 = “4096”  
KERNEL\_DEVICETREE:apalis-imx8 = “freescale/imx8qm-apalis-v1.1-ixora-v1.2.dtb”  
MENDER\_BOOT\_PART = “${MENDER\_STORAGE\_DEVICE\_BASE}1”  
MENDER\_DATA\_PART = “${MENDER\_STORAGE\_DEVICE\_BASE}4”  
MENDER\_ROOTFS\_PART\_A = “${MENDER\_STORAGE\_DEVICE\_BASE}2”  
MENDER\_ROOTFS\_PART\_B = “${MENDER\_STORAGE\_DEVICE\_BASE}3”  
MENDER\_UBOOT\_AUTO\_CONFIGURE = “1”

# Append the Mender provided bootargs to tdxargs

# the Toradex boot.scr will overwrite bootargs so we stash the context in tdxargs

MENDER\_UBOOT\_POST\_SETUP\_COMMANDS:append = " ; setenv tdxargs ${tdxargs} ${bootargs}; "

# Make sure the Toradex boot script finds the overlays and overlays.txt file in

# the /boot directory of the rootfs partition

MENDER\_UBOOT\_POST\_SETUP\_COMMANDS:append = " ; setenv overlays\_file /boot/overlays.txt ; setenv overlays\_prefix boot/overlays/ "

# serveur

MENDER\_SERVER\_URL = “[https://eu.hosted.mender.io](https://eu.hosted.mender.io)”  
MENDER\_TENANT\_TOKEN = “my-server-token”  
MENDER\_DEMO\_HOST\_IP\_ADDRESS = “my-adress-ip”

bitbake -e confirms correct values:

```
MENDER_BOOT_PART="/dev/mmcblk0p1"

MENDER_ROOTFS_PART_A="/dev/mmcblk0p2"

MENDER_ROOTFS_PART_B="/dev/mmcblk0p3"

MENDER_DATA_PART="/dev/mmcblk0p4"

```

The problem:

```
When an OTA update is triggered, it downloads the artifact correctly.

But it fails during the installation step with this error:

```

Payload: can not install Payload: … No match between boot and root partitions.

Also, fw\_printenv gives errors:

Cannot read environment, using default  
Cannot read default environment from file

My goal:

```
Get artifact updates to apply correctly on the Apalis iMX8.

Ensure U-Boot is Mender-compatible and that fw_env.config is configured properly.

Resolve the “No match between boot and root partitions” error.

```

Any help or guidance would be greatly appreciated!

---

<div class="post-metadata">

**Author:** ![TheYoctoJester](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/theyoctojester/32/1444_2.png) [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Post date:** [May 27, 2025, 8:55am UTC](https://hub.mender.io/t/artifact-install-failed-no-match-between-boot-and-root-partitions/7793/2 "2025-05-27T08:55:58Z")

</div>

Hi @Rani13958,

The problem you first need to solve is

```auto
info: Output (stderr) from command “fw_printenv”: Cannot read environment, using default
info: Output (stderr) from command “fw_printenv”: Cannot read default environment from file

```

As long as reading the `u-boot` environment from the running Linux instance fails, doing A/B updates is not possible.

Things to check:

- is `/etc/fw_env.config file` present? If yes, does the content match the `u-boot` configuration?
- if you stop during the boot process to access the `u-boot` console, how does the environment look like? Can you show the output of `printenv`?
- make sure that the `mender-setup` script within the `u-boot` environment runs before boot
- make sure that the resulting boot partition is accordingly passed to the kernel command line.

Greetz,  
Josef

---

<div class="post-metadata">

**Author:** ![Rani13958](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/rani13958/32/2479_2.png) [@Rani13958](https://hub.mender.io/u/Rani13958)\
**Post date:** [May 27, 2025, 9:18am UTC](https://hub.mender.io/t/artifact-install-failed-no-match-between-boot-and-root-partitions/7793/3 "2025-05-27T09:18:13Z")

</div>

hi @TheYoctoJester

-Yes, the file `/etc/fw_env.config` is present.

-here is the output of the printenv:  
“board\_rev=v1.0 boot\_a\_script=load ${devtype} ${devnum}:${distro\_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr} boot\_extlinux=sysboot ${devtype} ${devnum}:${distro\_bootpart} any ${scriptaddr} ${prefix}${boot\_syslinux\_conf} boot\_net\_usb\_start=usb start boot\_prefixes=/ /boot/ boot\_script\_dhcp=boot.scr boot\_scripts=boot.scr.uimg boot.scr boot\_syslinux\_conf=extlinux/extlinux.conf boot\_targets=mmc1 mmc2 mmc0 usb0 dhcp bootcmd=run distro\_bootcmd bootcmd\_dhcp=devtype=dhcp; run boot\_net\_usb\_start; if dhcp ${scriptaddr} ${boot\_script\_dhcp}; then source ${scriptaddr}; fi; bootcmd\_mmc0=devnum=0; run mmc\_boot bootcmd\_mmc1=devnum=1; run mmc\_boot bootcmd\_mmc2=devnum=2; run mmc\_boot bootcmd\_usb0=devnum=0; run usb\_boot bootcount=1 bootdelay=1 bootlimit=1 commit\_atf=3c1583b commit\_mkimage=3bfcfccb commit\_scfw=6638c032 commit\_secofw=c9de51c0 console=ttyLP1 cpu=armv8 distro\_bootcmd=for target in ${boot\_targets}; do run bootcmd\_${target}; done eth1addr=00:14:2d:fd:2e:a8 ethaddr=00:14:2d:ed:2e:a8 fastboot\_dev=mmc0 fdt\_addr\_r=0x9d400000 fdt\_board=eval fdtcontroladdr=fd676b30 fdtfile=imx8qm-apalis-v1.1-ixora-v1.2.dtb initrd\_addr=0x83800000 initrd\_high=0xffffffffffffffff ipaddr=192.168.10.2 kernel\_addr\_r=0x95400000 kernel\_comp\_addr\_r=0xf0000000 kernel\_comp\_size=0x08000000 loadaddr=0x95400000 loadm4image\_0=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${m4\_0\_image} loadm4image\_1=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${m4\_1\_image} m4\_0\_image=m4\_0.bin m4\_1\_image=m4\_1.bin m4boot\_0=run loadm4image\_0; dcache flush; bootaux ${loadaddr} 0 m4boot\_1=run loadm4image\_1; dcache flush; bootaux ${loadaddr} 1 mender\_altbootcmd=if test ${mender\_boot\_part} = 2; then setenv mender\_boot\_part 3; setenv mender\_boot\_part\_hex 3; else setenv mender\_boot\_part 2; setenv mender\_boot\_part\_hex 2; fi; setenv upgrade\_available 0; saveenv; run mender\_setup”

---

<div class="post-metadata">

**Author:** ![TheYoctoJester](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/theyoctojester/32/1444_2.png) [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Post date:** [May 27, 2025, 10:09am UTC](https://hub.mender.io/t/artifact-install-failed-no-match-between-boot-and-root-partitions/7793/4 "2025-05-27T10:09:51Z")

</div>

Hi @Rani13958,

Judging from that, the Mender setup scripts are not included in the boot process. See the documentation at [Manual U-Boot integration | Mender documentation](https://docs.mender.io/operating-system-updates-yocto-project/board-integration/bootloader-support/u-boot/manual-u-boot-integration#integration-points).

As inspiration you can look at the patches in [meta-mender-community/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot at kirkstone · mendersoftware/meta-mender-community · GitHub](https://github.com/mendersoftware/meta-mender-community/tree/kirkstone/meta-mender-toradex-nxp/recipes-bsp/u-boot-distro-boot), as from what I can tell the Toradex boards primarily use the `boot.scr` mechanisms.

Greetz,  
Josef

---

<div class="post-metadata">

**Author:** ![Rani13958](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/rani13958/32/2479_2.png) [@Rani13958](https://hub.mender.io/u/Rani13958)\
**Post date:** [June 3, 2025, 2:10pm UTC](https://hub.mender.io/t/artifact-install-failed-no-match-between-boot-and-root-partitions/7793/5 "2025-06-03T14:10:32Z")

</div>

Hi @theyoctojester

Thanks a lot for your feedback!

After further investigation, I believe the issue is not related to missing manual U-Boot integration, but rather due to a mismatch between the BSP version I’m using and the supported versions in `meta-mender-community`.

Currently, I’m working with **Toradex BSP 6.7.0** on an Apalis iMX8. However, in `meta-mender-community/meta-mender-toradex-nxp/recipes-bsp/u-boot/files/`, I only found patches for `toradex-bsp-6.0.0` and `6.2.0`. This likely means no bootloader integration patch is being applied for 6.7.0.

Here’s the key error from the device log:

root@apalis-imx8-15543976:~# cat /data/validation.log  
INFO: **main** :Mender validation script started 2018-03-09 12:46:17.655055  
INFO: **main** :loading device configuration…  
INFO: **main** :reading file /etc/mender/mender.conf  
INFO: **main** :reading file /var/lib/mender/mender.conf  
INFO: **main** :loading persistent state…  
INFO: **main** :…state and config ready.  
INFO: **main** :mount identification - ‘/’: b302, ‘None’: None, ‘None’: None, result is root\_undefined  
INFO: **main** :starting evaluation of step None  
INFO: **main** :using configuration:  
INFO: **main** :resulting in {  
“InventoryPollIntervalSeconds”: 5,  
“RetryPollIntervalSeconds”: 30,  
“ServerURL”: “[https://eu.hosted.mender.io](https://eu.hosted.mender.io)”,  
“TenantToken”: “secret-token”,  
“UpdateControlMapBootExpirationTimeSeconds”: 45,  
“UpdateControlMapExpirationTimeSeconds”: 90,  
“UpdatePollIntervalSeconds”: 5,  
“RootfsPartA”: “/dev/mmcblk0p2”,  
“RootfsPartB”: “/dev/mmcblk0p3”  
}  
INFO: **main** :initializing persistent state…  
INFO: **main** :resulting in {  
“SetCmd”: “fw\_setenv”,  
“PrintCmd”: “fw\_printenv”,  
“RootfsPartA”: “/dev/mmcblk0p2”,  
“RootfsPartB”: “/dev/mmcblk0p3”,  
“PartitionNumberA”: “2”,  
“PartitionNumberB”: “3”,  
“step”: “none”  
}  
INFO: **main** :ending evaluation of step None  
INFO: **main** :proceeding to next step from none  
INFO: **main** :new step is init  
INFO: **main** :starting prepartion of step init  
INFO: **main** :gathering some system information  
INFO: **main** :uname -a: Linux apalis-imx8-15543976 5.15.148-6.7.0-devel+git.bfdbfb2c85fb #1 SMP PREEMPT Thu Jun 20 15:59:41 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux  
INFO: **main** :/etc/os-release:  
ID=tdx-xwayland  
NAME=“TDX Wayland with XWayland”  
VERSION=“6.7.0-devel-20250403130929+build.0 (kirkstone)”  
VERSION\_ID=6.7.0-devel-20250403130929-build.0  
PRETTY\_NAME=“TDX Wayland with XWayland 6.7.0-devel-20250403130929+build.0 (kirkstone)”  
DISTRO\_CODENAME=“kirkstone”

INFO: **main** :ending prepartion of step init  
INFO: **main** :Mender validation script started 2018-03-09 12:46:34.539332  
INFO: **main** :loading device configuration…  
INFO: **main** :reading file /etc/mender/mender.conf  
INFO: **main** :reading file /var/lib/mender/mender.conf  
INFO: **main** :loading persistent state…  
INFO: **main** :…state and config ready.  
INFO: **main** :mount identification - ‘/’: b302, ‘/dev/mmcblk0p2’: b302, ‘/dev/mmcblk0p3’: b303, result is root\_a  
INFO: **main** :starting evaluation of step init  
INFO: **main** :ending evaluation of step init  
INFO: **main** :proceeding to next step from init  
INFO: **main** :new step is test\_switch  
INFO: **main** :starting prepartion of step test\_switch  
INFO: **main** :failed to set mender\_boot\_part  
INFO: **main** :failed to set boot partition root\_b  
INFO: **main** :ending prepartion of step test\_switch  
INFO: **main** :BOOTLOADER VALIDATION: FAILURE - failed to set boot partition root\_b

The board does successfully connect to the Mender server, but it **rejects any artifact updates** with the above bootloader validation failure.

Do you think adding a proper `toradex-bsp-6.7.0` patch to the `meta-mender-toradex-nxp` layer would be the right approach here?

Thanks again!  
Ranim

---

<div class="post-metadata">

**Author:** ![TheYoctoJester](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/theyoctojester/32/1444_2.png) [@TheYoctoJester](https://hub.mender.io/u/TheYoctoJester)\
**Post date:** [June 3, 2025, 6:23pm UTC](https://hub.mender.io/t/artifact-install-failed-no-match-between-boot-and-root-partitions/7793/6 "2025-06-03T18:23:33Z")

</div>

Hi @Rani13958,

Yup, adding a matching patchset is the way to go in my opinion.

Greetz,  
Josef
