The Turris Omnia basically works. It looks a lot more like a grown-up computer than the other devices we’ve previously seen - for example, the storage is MMC not raw flash (so we can use block filesystems like btrfs, ext4fs etc), and the bus is PCI (meaning it’s enumerable, we don’t need to put the network devices in the device tree). The WiFi chipsets are both ones we’ve seen before. All in all, the port has been quite smooth so far.

Smooth except for the small but (some would say) crucial lacuna that there’s not yet a sensible way to install it without a serial connection. This might be considered less of a problem for this device than some others, because opening the case doesn’t void the warranty. But still, non-optimal.

Also since I last wrote, Liminix has gained (although not yet merged) a port to another MIPS device, the Zyxel NWA50AX. This is thanks to Raito Bezarius, and it brought to light that I’d broken the tftpboot memory reservation thing for MIPS in the course of enabling it for Aarch64. Oops. So, after only a week of wrestling with U-boot and QEMU this functionality is now under CI test on all architectures.

I mention that now because all that U-Boot wrangling gave me the idea for a case-closed install for the Omnia. The Omnia has a quite slick U-Boot config with eleventy different rescue/recovery modes, and also (unlike many cheap MIPS devices) has the U-Boot environment set up properly so that changes to environment variables persist from one boot to the next. This means we can boot the vendor rescue system, which is stored on a separate NOR flash, and then use fw_setenv to change the bootcmd variable so that it boots a recovery image from TFTP or from a USB stick. Once we’re running Liminix we can do any needed repartioning/reformatting of the MMC, then mount the real root filesystem on /mnt and install the production system using min-copy-closure. If the device owner later decides they want to return to Turris OS, the multitudinous rescue modes are still available.

Well, that’s the plan, at least. It needed a small change to min-copy-closure so that it can install to a non-root prefix (e.g /mnt) which necessitated yet another several-day bout of learning about QEMU, now I just have to create the recovery config and then test it and find all the ways it breaks. Happy New Year.