A lot of time and digital ink is dedicated to talking about features, new capabilities and ease of use. This week I want to go in another direction and talk about minimal Linux distributions, projects with low resource requirements and small (less than 100MB) installation media. Some people have limited Internet connections and/or lower-end equipment and this week I want to explore some of the distributions which are designed to require as few resources as possible.
* * * * *
When talking about minimal Linux distributions, I think it makes sense to begin with Tiny Core Linux. Tiny Core is about as small as a Linux distribution can get. Tiny Core 7.1 is designed to be small and fast, running in memory with either a bare bones command line interface or a very minimal desktop environment, depending on which edition we use. Persistent storage and add-on packages can be set up as needed.
Tiny Core is available in three editions. The Core edition is a 11MB download and offers users just a stripped down text console interface. Some basic UNIX utilities are included, without manual pages. The user is automatically signed into an account called tc and we can perform administrative actions through the sudo utility without a password. The Core edition uses about 9MB of RAM when running live in memory and boots almost instantly. The second edition is called TinyCore. It is a 16MB download and features a minimal desktop with a settings panel and graphical package manager. The TinyCore edition uses around 19MB of RAM and boots to a desktop environment on my computer within three seconds. There is a third version of the distribution, CorePlus, which is larger and provided as an installation image.
When running Tiny Core Linux, we can download and install extra applications and services as needed and I found there is a fairly good selection to be had in the project's repositories. Tiny Core runs in memory and this means the core system gets reset each time we boot it. Add-on packages and our data files can be stored on persistent media for long-term use. Tiny Core is somewhat unusual for a Linux distribution in that it does not feature many command line tools or services, including OpenSSH. The distribution runs on version 4.2 of the Linux kernel.
Tiny Core, as the name suggests, is very small and offers minimal features, but the project provides tools for enabling add-ons. The on-line documentation is a bit sparse, but there is an accompanying book which explores ways in which Tiny Core can be useful and utilized in building projects and services.
* * * * *
A close relation to Tiny Core Linux is Nanolinux. The Nanolinux distribution is based on Tiny Core and features more desktop applications. Nanolinux 1.3 is provided as a 18MB download and ships with version 3.16 of the Linux kernel.
When I tried to boot Nanolinux, the system displayed a handful of errors which said "permission denied", though permission to what was not immediately clear. The expected graphical session failed to launch and, instead, I was dropped to a command line interface. From the command line I was able to use the "tc" user account and the same tools that were available in the Tiny Core Linux "Core" edition. Nanolinux, when sitting at the command line, used 44MB of RAM and ran an older version of the Linux kernel. Otherwise, the experience was much the same as running the most minimal Tiny Core edition.
* * * * *
RancherOS is perhaps the most unusual project on today's list of small distributions. RancherOS presents us with an operating system which has just enough components to run Docker containers. Everything on the system, including background services, then runs inside Docker containers. This makes the system highly modular.
I downloaded the 41MB ISO file for RancherOS 0.7.1. The distribution's live disc took about 15 seconds to load to a text console. The system automatically logs us in as a regular user (called rancher) and we can perform administrative tasks with sudo. The live disc uses about 100MB of RAM and automatically connects to the local network. Unlike Tiny Core and Nanolinux, Rancher ships with OpenSSH and the secure shell service runs in the background.
We can run RancherOS as a live distribution, but to explore the power of the system we will want to install the operating system. RancherOS does not have an installer in the traditional sense, but there are a series of commands we can run to install the distribution to our hard disk. The install process downloads a handful of files and takes over the local hard disk. The GRUB boot loader is installed for us too.
The installed version of RancherOS provides us with a minimal command line interface that runs OpenSSH and version 4.4 of the Linux kernel. Additional services and components can be installed in Docker containers. These installations tend to happen quickly and the RancherOS documentation lays out the steps we need to take to set up and run these add-on containers.
RancherOS feels to me to be more like a foundation on which we can build than a traditional operating system. We can build just about anything we want on top of the very minimal operating system, using Docker containers to isolate and manage the services we need.
* * * * *
For people who are looking for a desktop distribution which balances size with features, one attractive option is SliTaz GNU/Linux. The SliTaz Rolling edition is available as a 50MB download and comes equipped with an Openbox-powered desktop featuring LXDE components.
The SliTaz distribution can be run from a live CD, but it can also be installed as a regular stand-alone distribution. In addition, SliTaz can be installed on an existing Windows partition, allowing the two operating systems to co-exist. SliTaz has an unusual installer which looks and acts like web-based documentation that happens to have prompts where we can enter configuration settings. This approach may seem odd, but the steps are well explained at each turn and there are only a few places where we need to provide information.
SliTaz boots to a graphical interface by default and makes it fairly easy to set up additional user accounts. The distribution provides us with a small selection of desktop applications, including the Midori web browser, multimedia players, a document viewer, the Transmission bittorrent client, a text editor, a simple spreadsheet app and a calculator. There are also some system administration tools like the GParted partition manager. In the background, SliTaz runs version 3.2 of the Linux kernel.
SliTaz Rolling -- The default desktop (full image size: 272kB, resolution: 1366x768 pixels)
All of the software included with SliTaz uses up about 300MB of disk space and, when sitting in an Openbox session, the distribution used about 120MB of RAM. This may seem a bit heavy compared to other distributions covered in this article, but SliTaz provides a lot of conveniences and a more familiar desktop environment with those extra megabytes.
SliTaz does feature a graphical package manager, though it looks as though most packages available to the distribution are already installed. We can manually check for future software updates through the package manager too. All in all, I think SliTaz is the most friendly desktop distribution among the ones covered in this list.
* * * * *
Alpine Linux is a distribution designed with embedded and server scenarios in mind. Alpine can run on Raspberry Pi computers as well as x86 powered desktops, servers and laptops. The download media for the x86 build of Alpine Linux 3.4.6 is 81MB in size.
The live media boots almost instantly to a text console where we can sign into the live disc as the root user without a password. As with Tiny Core Linux, Alpine provides us with the Busybox command line utilities and no manual pages. The live disc uses about 20MB of memory.
The Alpine distribution can be installed in one of three modes: diskless mode, where we run the distribution from read-only media; data mode where we run Alpine from a live disc and write data to a USB thumb drive or hard disk partitions; and "sys" mode which acts like a more traditional operating system where the system and data are written to a hard drive. I opted to experiment with the "sys" mode. The installer, called setup-alpine, uses a text interface, gathering a little data about our keyboard's layout and network settings and we are asked to provide a root password. The installer also asks which background services we would like to run. Most of the time we can simply press Enter at each prompt as the installer provides us with good default options. Something I appreciate about Alpine's installer is it warns us multiple times before it overwrites an existing partition, choosing to err on the side of caution.
While Alpine can be used with a desktop environment, by default the installed operating system boots to a text console. The system runs version 4.4 of the Linux kernel and consumes relatively little in the way of resources, using 300MB of disk space and 20MB of RAM.
Alpine has one of the nicer command line package managers available (of the distributions mentioned in this article). The package manager, called APK, is fairly straight forward in its syntax and makes it easy to set up additional services.
Perhaps my favourite characteristic of Alpine, and what made this distribution stand out during my trial, was the documentation. Alpine has a fairly detailed wiki which covers installation methods, package management, setting up desktop environments and other key tasks. I felt the wiki was well organized and I think this sort of documentation is key in a distribution with a strong focus on the command line. While SliTaz and Tiny Core have graphical environments we can discover with a few minutes of clicking the mouse, Alpine makes itself accessible through clear documentation.
* * * * *
During my whirlwind tour of these small Linux distributions, a few things stood out. One was that there is a lot of variety in the tiny end of the Linux ecosystem. Apart from Nanolinux, which was based on Tiny Core, each distribution listed here has a very distinct style. If I had extended this trial to include slightly larger (but also small) distributions like Puppy Linux and antiX, we would continue to see a surprising amount of diversity, which tends not to be reflected in the larger, more mainstream distributions.
There were some common factors though. When trimming down a distribution, it seems removing local manual (man) pages is one common way to shrink the installation media. I have mixed feelings about this. Most people using tiny distributions probably already know their way around a command line, but when dealing with a minimal interface documentation becomes an important factor. Busybox also seems to be a favourite component of small distributions, replacing the more commonly used GNU userland utilities.
Finally, I think it is worth noting that small distributions have so far avoided adopting systemd as the preferred init software. The systemd suite of utilities offers some enticing features, but at the cost of additional resource requirements. I sometimes get asked which distributions are still free of systemd, and low-resource projects are a good place to look.