Yule boot
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.