Summary
Building a Radxa E20C image with Docker and Tailscale selected fails during OpenWrt ImageBuilder image creation:
Error: Selected packages exceed device storage
error: ext4_allocate_best_fit_partial: failed to allocate 4654 blocks, out of space?
RuntimeError: Selected packages exceed device storage
The physical target devices have 16 GB eMMC, so this appears to be the generated OpenWrt rootfs/image size, not actual device capacity.
Repro Steps
- Open Sensorbox.
- Choose
Radxa E20C.
- Add an Orb deployment token.
- Set a root password.
- Enable
Install to onboard eMMC.
- Add a Tailscale auth key.
- Enable
Install Docker.
- Build image.
Actual Result
Build fails while creating root.ext4:
Build failed.
Error: Selected packages exceed device storage
imagebuilder_status=failed
Pseudo file "dev" exists in source filesystem "/builder/build_dir/target-aarch64_generic_musl/root-rockchip/dev".
Ignoring, exclude it (-e/-ef) to override.
error: ext4_allocate_best_fit_partial: failed to allocate 4654 blocks, out of space?
make[3]: *** [/builder/include/image.mk:426: /builder/build_dir/target-aarch64_generic_musl/linux-rockchip_armv8/root.ext4] Error 1
make[2]: *** [Makefile:288: build_image] Error 2
make[1]: *** [Makefile:185: _call_image] Error 2
make: *** [Makefile:357: image] Error 2
RuntimeError: Selected packages exceed device storage
Expected Result
Radxa E20C builds intended for onboard eMMC should generate a rootfs large enough for the selected package set, especially when Docker/Compose and Tailscale are selected.
Observed Details
The failing ASU request had:
"target": "rockchip/armv8",
"profile": "radxa_e20c",
"version": "25.12.2",
"packages": [
"micrond",
"umdns",
"sudo",
"tcpdump",
"ip-full",
"orb",
"tailscale",
"dockerd",
"docker",
"docker-compose"
],
"diff_packages": false,
"rootfs_size_mb": null
ImageBuilder then created a small ext4 rootfs:
Creating filesystem with parameters:
Size: 109051904
Block size: 4096
Blocks: 26624
That is about 104 MiB, while the package install reported:
OK: 278.5 MiB in 156 packages
So the failure makes sense: the generated ext4 rootfs is much smaller than the selected package payload.
Build Environment
Self-hosted Sensorbox instance:
- Host:
ranch
- OS: openSUSE Tumbleweed
- Deployment style: rootless Podman services managed by pyinfra
- Sensorbox URL:
http://ranch:8089/
- Podman socket used by ASU worker:
/run/user/1000/podman/podman.sock
- Public/build store path:
/opt/stacks/sensorbox/public
- ASU image:
localhost/sensorbox/asu:orb-patches
- OpenWrt ImageBuilder image:
ghcr.io/openwrt/imagebuilder:rockchip-armv8-v25.12.2
- Target:
rockchip/armv8
- Profile:
radxa_e20c
- OpenWrt version:
25.12.2
Relevant services:
sensorbox nginx selector
asu-server
asu-worker
redis
openwrt-builder
Possible Fix
Sensorbox likely needs a recipe-level way to request a larger rootfs for eMMC/SD-card devices.
For Radxa E20C, something like this would be reasonable:
Then the ASU build request should include:
ASU already appears to support rootfs_size_mb and maps it to ImageBuilder ROOTFS_PARTSIZE, but Sensorbox currently submits rootfs_size_mb: null for this flow.
A good Sensorbox-side solution would avoid requiring users to manually tune this when the recipe already knows the device has large eMMC storage.
Prior Closed PR References
These are included only as references for the maintainer to inspect; they were closed and should not be merged as-is:
Summary
Building a Radxa E20C image with Docker and Tailscale selected fails during OpenWrt ImageBuilder image creation:
The physical target devices have 16 GB eMMC, so this appears to be the generated OpenWrt rootfs/image size, not actual device capacity.
Repro Steps
Radxa E20C.Install to onboard eMMC.Install Docker.Actual Result
Build fails while creating
root.ext4:Expected Result
Radxa E20C builds intended for onboard eMMC should generate a rootfs large enough for the selected package set, especially when Docker/Compose and Tailscale are selected.
Observed Details
The failing ASU request had:
ImageBuilder then created a small ext4 rootfs:
That is about 104 MiB, while the package install reported:
So the failure makes sense: the generated ext4 rootfs is much smaller than the selected package payload.
Build Environment
Self-hosted Sensorbox instance:
ranchhttp://ranch:8089//run/user/1000/podman/podman.sock/opt/stacks/sensorbox/publiclocalhost/sensorbox/asu:orb-patchesghcr.io/openwrt/imagebuilder:rockchip-armv8-v25.12.2rockchip/armv8radxa_e20c25.12.2Relevant services:
sensorboxnginx selectorasu-serverasu-workerredisopenwrt-builderPossible Fix
Sensorbox likely needs a recipe-level way to request a larger rootfs for eMMC/SD-card devices.
For Radxa E20C, something like this would be reasonable:
Then the ASU build request should include:
ASU already appears to support
rootfs_size_mband maps it to ImageBuilderROOTFS_PARTSIZE, but Sensorbox currently submitsrootfs_size_mb: nullfor this flow.A good Sensorbox-side solution would avoid requiring users to manually tune this when the recipe already knows the device has large eMMC storage.
Prior Closed PR References
These are included only as references for the maintainer to inspect; they were closed and should not be merged as-is: