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 announce@liminix.org mailing list
Recent news
-
Log off
I missed doing a blog update in September, but I did make a video demonstrating using an external source for secrets management. With a new better microphone, too, so the audio is less awful.
-
Secret Service
What I have lately been working on in Liminix is adding the ability to have it use an external source for secrets instead of baking them into the image.
-
A surfiet of services
It feels like a while since I wrote one of these, but this might be because [checks post history] it has indeed been a while since I wrote one of these. Sorry about that. It’s been a bit of a slog.
-
No, U dev
This week in Liminix: also, last week and for several weeks preceding, it has been all about the “device database”.
-
Trigger happy
The Turris Omnia has been running “the internet” for my family for most of a month (uptime says 27 days) and after some initial teething trouble I have had no complaints.
-
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.
-
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.
-
Arms length
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)
-
Arms race
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
main
without breaking the MIPS machines. -
To Arms
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.
-
updoc
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)
tl;dr:
-
nftables or fn stable
Hadn’t realised it had been so long since I last updated this, but progress has been slow lately.
-
Update update
This week^Wfortnight I’ve added a
liminix-rebuild
command. It usesmin-copy-closure
to copy the systemConfiguration closure onto the device, then copies theactivate
binary (and some other bits) into/persist
. Then it reboots the device, and the next time it comes up it will run the new activate. -
Copying copy-closure
Shortly after all the work to reduce system closure size last time, I tried adding the necessary packages to support
nix-copy-closure
and 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:
-
Side quest
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 …
-
Order, Order
tl;dr for this week: I can browse the internet on an Android phone connected by wifi to my Liminix test device :-)
-
Tunnel Vision
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.
-
Taking stock
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