The Liminix project is creating a Nix-based OpenWrt-style embedded Linux system for configuring consumer wifi routers. We use the Nix language for congruent configuration management, and packages from the Nix package system.
Planned features include
seamless management of configuration and secrets across a network of Liminix devices
robust dependency-based service/process management so that a device can respond usefully when hardware or network connectivity changes.
To receive occasional updates about Liminix you can join the email@example.com mailing list
Omnia dicta fortiora si dicta Latina
Most of my Liminix time in January I spent working on the Turris Omnia installer that I described last month (last year, whatever) and now it works. There are some instructions and I’ve made a video in which I demonstrate what should happen if you follow them. What’s kind of neat about doing it this way is that we are able to use the Turris Schnapps system in Liminix for snapshot and rollback support.
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.
Since the last update I have added UBIFS for the Belkin RT3200 (and other devices with larger flash chips), and started an Arm 32 bit port which runs on QEMU and boots (though doesn’t yet do much after booting) on the Turris Omnia. But then I got a little bit sidetracked into improving (read: replacing) the story for upgrading a router once it has Liminix running. (Blatting a new image onto the flash while the system is running from that same flash device is not a good idea. The best case scenario is that the flash write succeeds and then the system wedges solid, but I can’t see any guarantee it wouldn’t crash earlier)
This week: I have landed the WIP port for the Belkin RT3200. It’s not finished - nothing flashable yet - but I have cleaned up sufficient of the initial hacks that it can go to
mainwithout breaking the MIPS machines.
Progress on Liminix ARM support. The device I’m starting with is the Belkin RT3200 (also known as Linksys E8450) which seems to be a reasonably featureful piece of kit, and which I snagged for a very good price on the Bay of E.
Q: What’s updoc?
Longer than expected
Given that it’s a month since the last update, one might reasonably - and correctly - surmise that chopping around modules and services is taking longer to sort out than I’d anticipated it would.
Full service wash
Once upon a time I wrote
Time to tidy up
Last week I wrote:
We didn't start the fire(wall)
nftables or fn stable
Hadn’t realised it had been so long since I last updated this, but progress has been slow lately.
This week^Wfortnight I’ve added a
liminix-rebuildcommand. It uses
min-copy-closureto copy the systemConfiguration closure onto the device, then copies the
activatebinary (and some other bits) into
/persist. Then it reboots the device, and the next time it comes up it will run the new activate.
Shortly after all the work to reduce system closure size last time, I tried adding the necessary packages to support
nix-copy-closureand saw it start building a complete C++ system with Boost. My fears that this would lead to quite a large increase in the system size were, it turned out, entirely founded.
Erase and rewind
Late update this week, and it’s little more than “hey, I’m still alive”. I’ve been a bit under the weather and spending my discretionary computer time on playing GP Bikes instead of getting anything useful done.
Some assembly required
tl;dr Premature optimization in the rootfs of my emu
Writes of way
It ought to work, anyway. Next week maybe I can talk about it in the past tense and not the future conditional.
Nothing to write /home about
This week in Liminix: a change in the plan. Much to think about, nothing to show
We've got mail
As you’ll see if you’re reading this on www.liminix.org (but not if you’re using the RSS feed) we’re now on version 0.2 of the web site. I’ve starting to add a bit more structure beyond the blog entries and would draw your attention particularly to:
This week: I made a video, then I went on a tangent.
MT vessels: make some noise
tl;dr MT300N-v2 and MT300A are both implemented
Ready for action
Last week I said I was going to spend this week on fixing the 5GHz wireless suport and then put the GL-AR750 away and start working on some other device. Some of that happened …
tl;dr for this week: I can browse the internet on an Android phone connected by wifi to my Liminix test device :-)
This week in Liminix: am happy to report that the rewritten PHRAM/tftpboot stuff almost worked first time, and the delta between first and second time was just a simple syntax error. The GL-AR750 boots :-)
on multiple fronts
This week I have been dabbling on multiple fronts.
I am pleased and proud to announce that Liminix has been awarded a grant from the NGI Zero Entrust fund administered by the NLnet Foundation - the overall objective being to turn it from something that runs my home internet into something that could run other people’s (yours? if you’re reading this, you’re probably the target audience) home/small office internet as well.
subscribe via RSS