# Troubleshooting Rootfs-image Updates on a Compulab Iot-Link Device (nxp imx93)

**URL:** <https://hub.mender.io/t/troubleshooting-rootfs-image-updates-on-a-compulab-iot-link-device-nxp-imx93/8041>\
**Category:** General Discussions\
**Tags:** yocto, nxp\
**Created:** [October 9, 2025, 5:36am UTC](https://hub.mender.io/t/troubleshooting-rootfs-image-updates-on-a-compulab-iot-link-device-nxp-imx93/8041 "2025-10-09T05:36:11Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![greg-blackcurrent](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@greg-blackcurrent](https://hub.mender.io/u/greg-blackcurrent)\
**Post date:** [October 9, 2025, 5:36am UTC](https://hub.mender.io/t/troubleshooting-rootfs-image-updates-on-a-compulab-iot-link-device-nxp-imx93/8041/1 "2025-10-09T05:36:11Z")

</div>

Hi all,

I’m currently trying to get `rootfs-image` updates working on a Compulab IoT Link device [1]. Which uses a NXP Imx93.

[1] [IOT-LINK Industrial IoT Gateway | Compulab](https://www.compulab.com/products/iot-gateways/iot-link-industrial-iot-gateway/)

The vendor has a mender repo [2] which I’m using as a starting point, it uses this bsp [3], which is based on NXP’s imx bsp.

[2] [GitHub - compulab-yokneam/meta-mender-compulab: Mender Layer for CompuLab Boards](https://github.com/compulab-yokneam/meta-mender-compulab/tree/scarthgap-nxp)

[3] [GitHub - compulab-yokneam/meta-bsp-imx9 at iot-link-1.0](https://github.com/compulab-yokneam/meta-bsp-imx9/tree/iot-link-1.0)

The device chain loads from uboot into Grub. Mender is configured to use Grub.

When I install a rootfs-image update:

- The device successfully downloads this into the passive partition.

- Then reboots, but after rebooting remains in the original partition.

So the update fails with:

“Update Module output (stderr): Mounted root does not match boot loader environment (/dev/mmcblk0p3)!”

I think the rootfs-image script is working correctly, and detecting the problem, which is that the device doesn’t boot into the new partition. I’ve verified this by adding extra logging to the rootfs-image update script.

I’ve checked that `grub-mender-grubenv-set` and `grub-mender-grubenv-print` persist the values across a reboot.

So I suspect there’s a problem in the Yocto build with the mender grub integration. It’s not respecting the mender grub boot variables.

I’d really appreciate any ideas on where to look to help track this down. Which yocto recipes/packages/repos should I be looking at? Are there any docs I’ve missed?

Cheers,  
Greg

---

<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:** [October 9, 2025, 1:06pm UTC](https://hub.mender.io/t/troubleshooting-rootfs-image-updates-on-a-compulab-iot-link-device-nxp-imx93/8041/2 "2025-10-09T13:06:51Z")

</div>

Hi @greg-blackcurrent,

Thanks for reaching out!  
This sounds like persisting the variables works, but they are not actually taken into account in the booting process.  
For a very high level test, can you try to follow the integration checklist at [Integration checklist | Mender documentation](https://docs.mender.io/client-installation/integration-checklist)? If you feel like it, there is also an automated version of it provided at [meta-mender-community/meta-mender-validation/recipes-mender/bootloader-validation/bootloader-validation\_0.1.bb at scarthgap · mendersoftware/meta-mender-community · GitHub](https://github.com/mendersoftware/meta-mender-community/blob/scarthgap/meta-mender-validation/recipes-mender/bootloader-validation/bootloader-validation_0.1.bb), documented at [Mender-validation: automatic integration checking](https://hub.mender.io/t/mender-validation-automatic-integration-checking/7218).

Which `MENDER_FEATURES` are set in the build? Do you have a way to inspect the GRUB boot process to check if the Mender integration gets used correctly?

Greetz,  
Josef

---

<div class="post-metadata">

**Author:** ![greg-blackcurrent](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@greg-blackcurrent](https://hub.mender.io/u/greg-blackcurrent)\
**Post date:** [October 10, 2025, 4:31am UTC](https://hub.mender.io/t/troubleshooting-rootfs-image-updates-on-a-compulab-iot-link-device-nxp-imx93/8041/3 "2025-10-10T04:31:21Z")

</div>

Cheers! The integration checklist is really helpful.

It looks like the bootloader is misconfigured in the vendors example build. They’ve configured Mender to use grub. But their u-boot bootloader is skipping grub and booting straight into the rootfs partition.

I’ve reached out to their support. Hopefully they’ll be able to shed some more light on the situation.

---

<div class="post-metadata">

**Author:** ![greg-blackcurrent](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@greg-blackcurrent](https://hub.mender.io/u/greg-blackcurrent)\
**Post date:** [October 11, 2025, 1:15am UTC](https://hub.mender.io/t/troubleshooting-rootfs-image-updates-on-a-compulab-iot-link-device-nxp-imx93/8041/4 "2025-10-11T01:15:18Z")

</div>

Ok, I’ve successfully got updates working. Here’s some notes for anyone else who winds up here.

Updates work correctly if you ignore the final instruction in the meta-compulab-mender readme. Note, I’m still working through this with the vendor. So hopefully they’ll update their readme or build.

The instruction is:

- Stop in U-boot, remove the installation media and issue:

```auto
env default -a; saveenv; reset

```

This sets the u-boot bootcmd to:

```auto
bootcmd=run bsp_bootcmd; run distro_bootcmd

```

However Mender updates work correctly if the bootcmd uses distro\_bootcmd. Which is what it is set to after flashing.

```auto
bootcmd=run distro_bootcmd

```
