Offgrid internet-in-a-box project - Part two
In part one of this project, I detailed why I’m building a low-power offgrid and offline internet-in-a-box, and what hardware I chose. Short version, I like inventing scenarios and then have fun building computers for it. I chose a Lenovo Ideapad 110s laptop for a less complicated setup and its low power usage compared to a mini PC and an (old) RPI.
After selecting the hardware, I set out to find the right distro for it. I have some goals:
- Be Debian-based. This build includes hosting an entire archive of the stable
aptrepo using aptly. It is a critical part of my build to be able to install additional packages and programs without access to the internet. - Low RAM usage. The laptop only has 2 GB of RAM and I don’t want a lot wasted just running the OS.
- Storage space used by the OS needs to be low. There is only a 32 GB emmc flash drive as root. I want it to take up as little room as possible.
- Offline first. This rules out “cloud native” distros like Nix, Silverblue, and other immutable distros. Not only do they use a ton of RAM, but constant, high speed internet access is a core part of the experience. Yes, you can run them offline and yes you could build offline solutions. Not worth the effort.
My distro choice
No surprises here, but I went with minimal Debian 12 with OpenBox. I tested other distros, including MX Linux, AntiX, and BunsonLabs. All performed well on the hardware, but had many papercuts that made me uncomfortable using them in a machine that needs to be as stable as possible. More notes on these later in the post.
These are the reasons why I chose stock Debian.
Obviously, a stock, minimal Debian install will work perfectly with aptly. After installing the OS and setting up aptly, I as able to modify sources.list to point to locahost and install whatever I wanted. Since it is a stock Debian install, there aren’t any third-party repos that have apps integrated into the OS.
Next is RAM usage. Using Debian with OpenBox idles around 500 MB of RAM, leaving as much as possible to running programs. That being said, working with OpenBox is a pain in the ass and I’m still making tweaks to make it easier to use.
For storage space, after the initial setup the OS was using just under 6 GB of storage. The other distros I tested used much more than this.
Once a Debian system is setup it can run offline for years and years and never once complain. Now, essentially all Linux distros are this way, so this isn’t much of a feat. The difference is Debian is the most stable distro because it moves so slowly. This is why it is the choice for several popular distros to build ontop of it. I wanted the most boring and slow moving distro available.
Notes on the other options
I tested several alternatives, focusing on distros that are built run great on low end and old hardware. One of the best things about desktop Linux is that there are so many fantastic options for whatever you want to make.
Not all of them I tested were Debian-based so I could make sure I wasn’t missing out on anything.
Here are some rough notes on them.
Archcraft
This is what I already had installed on the laptop from previous testing. I like Archcraft and in scenarios I want a rolling distro, this will be my choice.
- Will not work with
aptly, obviously, which immediately rules it out. - Low RAM usage. It uses OpenBox with heavy customization and even with that, it idles around 500 MB of RAM, which is quite impressive.
- It is very pretty and a well designed desktop experience. I enjoy using Archcraft, it is just not the right choice for this build.
- I am not confident enough using Arch-based distros. Plus, I exclusively use Debian around the house, so I didn’t want something different on this machine. My workflows, tooling, and experience is all with Debian.
- I had several weird errors with the top bar. The menus have a ton of customization out of the box, including managing music. I had graphical errors that caused the menu to flicker and menu items to be unintelligible. I think this is an issue with the hardware I chose to run it on.
BunsonLabs
I immediately fell in love with BunsonLabs Linux. It is a spiritual successor to Crunchbang Linux and, in my opinion, is a better implementation than Crunchbang++ which is also a successor.
BunsonLabs uses OpenBox as the DE with customizations to make using it easier. The out-of-box experience is great and runs well on this hardware. This is another distro I need to go back to later as I can see running this as my primary workstation OS.
- RAM usage is around 700 MB, which isn’t bad. Storage space was around 9 GB. Both of these would be workable on this laptop.
- It uses several third-party repos, which is ultimately the reason why I steered away from it. Since I will use
aptlyas the sole repo, I am concerned I will install conflicting packages to the custom packages from their own repo that will break BunsonLabs functionality. This may not be the case, but I can’t take the risk. - A lot of bloat installed that I would want to clean up. I can see why people like to install a desktop that has all the core apps already installed. But, this build is completely custom and I want to start with as little as possible.
MX Linux
I am so conflicted about this distro. MX Linux bills itself as a mid-weight distro and is the base for some other lightweight options. I gave their Fluxbox edition a spin and at first liked it. It has a small footprint, 700 MB-ish RAM usage and feels like a polished distro.
The problem I had with MX is similar to a problem I have with Linux Mint. They are too opinionated. With Linux Mint they get weird about snap and intentionally block them. This is a weird hill to die on. With MX, they have a shim for systemd and it is installed, but not the primary init system. Again, another weird hill to die on.
By not having systemd as default, it made me do a ton of workarounds for some of my preferred services. It also broke snapd and I have a handful of snaps I like to use. I am not interested in working around someone else’s weird hangups and finding permanent workarounds when I can just use stock Debian and not have to worry about it.
AntiX Linux
AntiX is essentially a re-spin of MX Linux and I really wanted to like it. When it is installed and using the IceWM desktop it only uses about 300 MB of RAM. It was fast on the hardware and I’m sure if I spent time learning their configuration, I could tweak it to what I want.
But, holy shit is it a weird distro. Obviously, since it is based on MX, it has the same systemd issues. In fact, it is even more ramped up because they specifically advertise it is a systemd-free distro.
Additionally, it has a ridiculous amount of packages installed by default. Yes, there are alternative editions that narrow down the final install. There are multiple GUI packages for everything and it took me forever just to figure out what most of them are for.
There is nothing inherently bad about AntiX. It installs fine, runs fast, and offers a complete desktop. The only way I can describe it is… weird. Good for the people who like it, I guess.
Endless OS
I don’t have anything nice to say here, except their goals are completely different than my project. It would make sense that a distro like Endless would work perfectly for a project that is trying to be offline first.
The only notes I’ll add here since I don’t have anything nice to say about Endless OS is that I fucking hate immutable distros. I try to be amicable about it, but I don’t understand the appeal.
I know, let’s pick a distro that is a complete pain in the ass to use and obtuse about everything, abstract away features of your operating system because the dev thinks “people don’t know how to use computers”, and struggle with “why can’t X app access Y data”. If the future of Linux is immutable, I’ll leave Linux for something else.
The only thing worse than using an immutable OS is that people who do use them won’t shut the fuck up about them.
Luckily, the Linux ecosystem is vast and there are a lot of people who are like me.
Up next
The next post will be about how I configured the system, the base packages installed, and how I’m using aptly plus archived flatpaks for offgrid installs. I also need to put together a post about the data I am accessing, which might come before the system post.
- - - - -
Did you like this post? Give it an upvote by clicking on the arrows below! Sending me an upvote is like you and I giving each other a high five.
🙏 😎
Thank you for reading! If you would like to comment on this post you can start a conversation on the Fediverse. Message me on Mastodon at @cinimodev@masto.ctms.me. Or, you may email me at blog.discourse904@8alias.com. This is an intentionally masked email address that will be forwarded to the correct inbox.If you enjoy the random stuff I write here, post to Mastodon, or watch on YouTube, and are feeling generous, I am open to tips of Ko-fi.