UBIFS error: zstd is not compiled in

Hi folks,

I am trying to get OpenWrt running on my GLInet AR750S (Slate), but have been experiencing an unusual error - it keeps forgetting my configuration changes.

Turns out, this is because my ubifs is not being mounted, because zstd is apparently not available.

root@OpenWrt:~# dmesg | grep -i ubi
[    0.361470] 0x000000000000-0x000008000000 : "ubi"
[    1.966693] UBI: auto-attach mtd0
[    1.970194] ubi0: attaching mtd0
[    4.014538] ubi0: scanning is finished
[    4.044109] ubi0: attached mtd0 (name "ubi", size 128 MiB)
[    4.049824] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    4.056938] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    4.063954] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    4.071147] ubi0: good PEBs: 1023, bad PEBs: 1, corrupted PEBs: 0
[    4.077446] ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128
[    4.084910] ubi0: max/mean erase counter: 9/4, WL threshold: 4096, image sequence number: 362494844
[    4.094255] ubi0: available PEBs: 0, total reserved PEBs: 1023, PEBs reserved for bad PEB handling: 19
[    4.103960] ubi0: background thread "ubi_bgt0d" started, PID 367
[    4.112353] block ubiblock0_0: created from ubi0:0(rootfs)
[    4.118074] ubiblock: device ubiblock0_0 (rootfs) set to be root filesystem
[   13.661601] UBIFS (ubi0:1): Mounting in unauthenticated mode
[   13.667516] UBIFS error (ubi0:1 pid 521): 0x8024ba68: 'compressor "zstd" is not compiled in
[   13.680720] UBIFS (ubi0:1): Mounting in unauthenticated mode
[   13.686607] UBIFS error (ubi0:1 pid 519): 0x8024ba68: 'compressor "zstd" is not compiled in
[   13.696282] mount_root: failed to mount -t ubifs /dev/ubi0_1 /tmp/overlay: No error information
[   14.036361] UBIFS (ubi0:1): Mounting in unauthenticated mode
[   14.042273] UBIFS error (ubi0:1 pid 526): 0x8024ba68: 'compressor "zstd" is not compiled in
[   14.058064] mount_root: switching to ubifs overlay
[   14.063214] mount_root: switching to ubifs failed - fallback to ramoverlay

I do see that I have 1 bad PEB, but that doesn’t seem to be the root problem.

This is using the latest https://downloads.openwrt.org/releases/24.10.4/targets/ath79/nand/openwrt-24.10.4-ath79-nand-glinet_gl-ar750s-nor-squashfs-sysupgrade.bin or https://downloads.openwrt.org/releases/24.10.4/targets/ath79/nand/openwrt-24.10.4-ath79-nand-glinet_gl-ar750s-nor-nand-squashfs-sysupgrade.bin

What is interesting to me is that the “nor-squashfs” bin still tries to use the nand for its ubifs, which is unexpected:

[    0.526122] spi-nor spi0.0: w25q128 (16384 Kbytes)
[    0.531135] 5 fixed-partitions partitions found on MTD device spi0.0
[    0.537706] Creating 5 MTD partitions on "spi0.0":
[    0.542667] 0x000000000000-0x000000040000 : "u-boot"
[    0.548652] 0x000000040000-0x000000050000 : "u-boot-env"
[    0.555003] 0x000000050000-0x000000060000 : "art"
[    0.560765] 0x000000060000-0x000000460000 : "kernel"
[    0.566743] 0x000000460000-0x000001000000 : "nor_reserved"

I would expect the rootfs and overlayfs to be in the nor_reserved space, not on the nand?

Huh, ok, that’s weird. Flashing the nor-nand image after the nor image results in an apparently working system. Reboots, and the changed root password is still present.

Any ideas why a) zstd is not built in for the nor image, or b) why the nor image is still trying to use the nand flash?