I am currently on the trial plan to integrate our project with hosted Mender to use delta upgrades.
- Our project targets Pi4 (and Pi3), using Yocto kirkstone and read-only rootfs.
- mender-client version 3.5.3
- mender-binary-delta version 1.5.0
- The storage is partitioned into 2 x 7.3GB rootfs partitions and a 15G data partition. We actually only use about 776MB of space on the rootfs according to df.
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 24576 106495 81920 40M c W95 FAT32 (LBA)
/dev/mmcblk0p2 106496 15409151 15302656 7.3G 83 Linux
/dev/mmcblk0p3 15409152 30711807 15302656 7.3G 83 Linux
/dev/mmcblk0p4 30711808 62333951 31622144 15.1G 83 Linux
I have created a rootfs artifact versioned 7.7.93-83802 (252MB)
The rootfs artifact was flashed to the target devices. Since I’m coming from a pre-kirkstone era, I also did a mender install of the bootstrap artifact.
I made some changes to our source and made a new artifact versioned 7.7.93-84332. (252MB)
I generated a delta artifact using
./mender-binary-delta-generator -o v7.7.93.84332-deltafrom-v7.7.93.83802.mender sf-rpi-image-7.7.93.83802-raspberrypi4.mender sf-rpi-image-7.7.93.84332-raspberrypi4.mender
This created an artifact of 1017KB. I uploaded this to hosted.mender.io.
I created a deployment to install this delta to the target devices. The deployment started fine, downloading the artifact, but after a couple of minutes the deployment failed. I can post the full logs, however, the most log-worthy is:
2024-07-26 02:39:05 +0000 UTC info: Output (stderr) from command "/usr/share/mender/modules/v3/mender-binary-delta": Running flash tool with args: mender-flash -i - -o /dev/mmcblk0p2 -s 7834959872
2024-07-26 02:42:11 +0000 UTC info: Output (stderr) from command "/usr/share/mender/modules/v3/mender-binary-delta": running with decoder args: xdelta3 -9 -f -d -c -s /dev/mmcblk0p3 streams/sf-rpi-image-7.7.93.84332-raspberrypi4.ext4.delta
2024-07-26 02:42:12 +0000 UTC info: Output (stderr) from command "/usr/share/mender/modules/v3/mender-binary-delta": Input/output error: Reached size of the destination volume, source too big.
2024-07-26 02:42:12 +0000 UTC info: Output (stderr) from command "/usr/share/mender/modules/v3/mender-binary-delta": xdelta3: write failed: /dev/stdout: Broken pipe
2024-07-26 02:42:12 +0000 UTC info: Output (stderr) from command "/usr/share/mender/modules/v3/mender-binary-delta": Failed to apply the delta, err: 1
2024-07-26 02:42:12 +0000 UTC info: Output (stderr) from command "/usr/share/mender/modules/v3/mender-binary-delta": FlashTool returned error: 1
I do not see how the source could be too big since mmcblk0p2 has exactly the same number of sectors as mmcblk0p3.