Rasberry pi 32-bit OS bullseye fails to boot (image via mender-convert)

I using this config in mender-convert:

# https://docs.mender.io/operating-system-updates-debian-family/variables


source configs/raspberrypi/uboot/include/raspberrypi4_config 

MENDER_CLIENT_VERSION=5.0.1  # needs tweaking of MENDER_APT_REPO_URL below!!!
MENDER_STORAGE_URL="https://downloads.mender.io"
MENDER_APT_REPO_URL="${MENDER_STORAGE_URL}/repos/debian"       

DEPLOY_IMAGE_NAME=roper-rpi-image-raspberrypi4-mender

MENDER_COMPRESS_DISK_IMAGE="lzma"
MENDER_ARTIFACT_COMPRESSION="lzma"

MENDER_STORAGE_TOTAL_SIZE_MB="6500"
MENDER_BOOT_PART_SIZE_MB="256"
IMAGE_ROOTFS_SIZE="-1"
IMAGE_ROOTFS_EXTRA_SPACE="0"
IMAGE_OVERHEAD_FACTOR="1.0"
MENDER_DATA_PART_SIZE_MB="128"
MENDER_DATA_PART_GROWFS="y"

MENDER_ENABLE_SYSTEMD="n"

I wrote the image to the micro SD-card.
The booting fails. It is in an endless loop, trying again and again

I see

mount: /boot: can't find in /etc/fstab.
EXT4-fs (mmcblk0p2): re-mounted. Quota mode: none.
sed: can't read /boot/cmdline.txt: No such file or directory
sed: can't read /boot/cmdline.txt: No such file or directory
grep: /boot/cmdline.txt: No such file or directory
mount: /boot: mount point not mounted or bad option.
cat: /sys/block/loop0//partition: No such file or directory

I’m converting the image with the newest mender-convert (version 5.1.0).

Do I need to add this to my config? →
MENDER_BOOT_PART_MOUNT_LOCATION="/boot"

Hi @user706,

Yes, depending on if you’re using bullseye and earlier or bookworm and later, different settings are required. This was a breaking change that Raspberry Pi OS bookworm introduced. You can see the correlated includes at mender-convert/configs/raspberrypi/uboot/debian/raspberrypi4_bullseye_32bit_config at master · mendersoftware/mender-convert · GitHub and mender-convert/configs/raspberrypi/uboot/debian/raspberrypi4_bookworm_32bit_config at master · mendersoftware/mender-convert · GitHub.

Your configuration should therefore either include mender-convert/configs/raspberrypi/include/pre_bookworm_config at master · mendersoftware/mender-convert · GitHub, or mender-convert/configs/raspberrypi/uboot/include/bookworm_config at master · mendersoftware/mender-convert · GitHub.

This adjusts the /boot mount path and if necessary a few other things.

Greetz,
Josef

Thanks!! Yes (I just realized it myself. )

Conversion is running. Keeping my fingers crossed.

1 Like

By the way, above in the config you can see

MENDER_CLIENT_VERSION=5.0.1

When I was using lastest and got client 5.0.3, I was running into this issue:

mender-update install file.mender resulted in

Is it true that for raspberry pi OS bullseye 32-bits, I need MENDER_CLIENT_VERSION=5.0.1 and that higher versions are only for 64 bit???

I can boot…

BUT: mender-grow-data.service failed!

● mender-grow-data.service - Mender service to grow data partition size
     Loaded: loaded (/etc/systemd/system/mender-grow-data.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Fri 2026-01-09 11:03:50 CET; 3h 51min ago
    Process: 234 ExecStart=/sbin/parted --fix --script /dev/mmcblk0 resizepart 4 100% (code=exited, status=1/FAILURE)
   Main PID: 234 (code=exited, status=1/FAILURE)
        CPU: 21ms

Jan 09 11:03:50 raspberrypi systemd[1]: Starting Mender service to grow data partition size...
Jan 09 11:03:50 raspberrypi parted[234]: /sbin/parted: unrecognized option '--fix'
Jan 09 11:03:50 raspberrypi parted[234]: Usage: /sbin/parted [-hlmsv] [-a<align>] [DEVICE [COMMAND [PARAMETERS]]...]
Jan 09 11:03:50 raspberrypi systemd[1]: mender-grow-data.service: Main process exited, code=exited, status=1/FAILURE
Jan 09 11:03:50 raspberrypi systemd[1]: mender-grow-data.service: Failed with result 'exit-code'.
Jan 09 11:03:50 raspberrypi systemd[1]: Failed to start Mender service to grow data partition size.

debian bullseye has an old parted that does not yet support the --fix flag.

Bug is here: mender-grow-data.service

--fix got added in this commit: fix: systemd_common_config: add --fix option to parted call · mendersoftware/mender-convert@ef68160 · GitHub

Perhaps better to have code like this:

ExecStart=/bin/sh -c "/sbin/parted --fix --script $(disk_get_device_base "${MENDER_STORAGE_DEVICE_BASE}") resizepart ${MENDER_DATA_PART_NUMBER} 100% >/dev/null 2>&1  ||   /sbin/parted --script $(disk_get_device_base "${MENDER_STORAGE_DEVICE_BASE}") resizepart ${MENDER_DATA_PART_NUMBER} 100%"
1 Like

Hi @user706,

We’re looking into variations of this particular implementation currently for other reasons. Yet for the bullseye compatibility, the distribution has already moved out of general support last year. There might be more corner cases and breaking points by now, sorry.

Greetz,
Josef

ok thanks.
This is the only break that I’ve found.

But with my workaround in the code (shown above) it works. (I can update old system to this new mender. I can then self-update again to same mender (just to check it works). etc.)

1 Like