One after the other, Linux distributions are dropping 32-bit support. Or, to be accurate, they drop support for the Intel x86 32-bit architecture (IA-32). Indeed, computers based on x86_64 hardware (x86-64) are superior in every way to their 32-bits counterpart: they are more powerful, run faster, are more compact, and more energy efficient. Not mentioning their price has considerably decreased in just a few years.
If you have the opportunity to switch to 64 bits, do it. But, to quote a mail I received recently from Peter Tribble, author of Tribblix: “[… ] in the developed world we assume that we can replace things; in some parts of the developing world older IA-32 systems are still the norm, with 64-bit being rare.”
It was a premise of the open source movement to make software accessible to everyone everywhere. It’s unfortunate we forget sometimes it also means people running obsolete hardware. Including that “old computer,” you had thrown away a few years ago. Of course, we can question the merits of running a Pentium- or 80486-based computer in the 21st century. But merely considering the IA-32 architecture as a thing of the past would be ignoring another niche, well alive this one: embedded systems.
32-bit Linux distributions and other open source OSes
So, whether it is to revive an old desktop computer, to keep a venerable server running or to design a brand new but constrained Internet of Things (IoT) device, let’s see now which FOSS operating systems are still supporting the IA-32 architecture today.
Tribblix
Kernel |
illumos (Solaris) |
Reference |
Linux is not the only free operating system. Of course, you know that. But do you know about Solaris? If you read me regularly, you may have learned a thing or two in a previous article. I mention that because even when running 32-bit hardware, you can still enjoy an illumos based distribution with Tribblix. Perfect for server work!
Of course, and it will be that case for all other operating systems mentioned here, even if the OS is working on your IA-32 system, that does not mean each an every application can run. Unfortunately, application developers are also dropping support for the 32-bit x86 architecture. But that’s another story.
FreeBSD
Kernel |
FreeBSD |
Userland |
BSD |
Reference |
FreeBSD still supports i386 architecture as “tier 1“. In the FreeBSD vocabulary that means it’s fully supported and production ready. Definitely another option for your server. Since FreeBSD supports SMP nicely (multi-chip, multi-core and/or hyperthreading designs) it can be valuable if you can find an old Xeon “Prestonia” or “Gallatin” server on the second (or third) hand market.
I assume FreeBSD remains usable for desktop usages. But even if you can run FreeBSD on CPU as old as the 80486, remember that modern GUI applications tend to be very demanding in term of processor performances and memory.
Speaking of memory, by enabling PAE support, FreeBSD should be able to address more than 4GB of RAM. Something I would like to hear about in the comment section if you run such configuration!
OpenBSD
Kernel |
BSD |
Reference |
OpenBSD still supports all “CPUs compatible with the Intel 80486 or better, with Intel-compatible hardware floating point support”.
OpenBSD support for i386 is mostly on par with FreeBSD support. In fact, some OpenBSD drivers are adapted from FreeBSD (and NetBSD). Others were written specifically for OpenBSD. So if you run somewhat exotic devices, I encourage you to try the three “big” BSD flavors to determine which one has the best support for your hardware.
Hey, wait a minute, I said the three BSD flavors? I just forgot to speak about NetBSD!
NetBSD
Kernel |
BSD |
Reference |
NetBSD is not left behind concerning i386 support. In fact, it can support a wider range of motherboards than OpenBSD since NetBSD will run “on PCI-Express, PCI, and CardBus systems, as well as older hardware with PCMCIA, VL-bus, EISA, MCA, and ISA (AT-bus) interfaces, with or without math coprocessors.”
Especially interesting for IA-32-based appliances looking for an OS upgrade.
Debian
Kernel |
Linux 4.9 |
Userland |
GNU |
Reference |
Let’s leave now the BSD realm to enter the Linux territory. While Ubuntu recently dropped IA-32 support, it’s base project, Debian, is still supporting that architecture. A priori as long as it will be supported upstream in the Linux kernel.
To quote the Debian project:
Nearly all x86-based (IA-32) processors still in use in personal computers are supported. This also includes 32-bit AMD and VIA (former Cyrix) processors, and processors like the Athlon XP and Intel P4 Xeon.
However, Debian GNU/Linux stretch will not run on 586 (Pentium) or earlier processors.
That means modern Debian distributions limit their support to slightly more recent hardware than *BSD distributions. Is it a problem? Well, it depends on what device you have. But I’m not sure so many of us still have an 80486-based computer in working condition. Or are we?
MX Linux
Kernel |
Linux 3.16 (Debian Jessie) |
Userland |
GNU |
Reference |
https://mxlinux.org/user_manual_mx16/mxum.html#toc-Subsection-1.3 |
To quote the official website, MX Linux “is a midweight OS designed to combine an elegant and efficient desktop with simple configuration, high stability, solid performance and medium-sized footprint.”
If you’re looking for a Debian based Linux distribution, stable, easy to install and setup, with a smooth learning curve, and working on legacy hardware— then MX Linux is the distribution to try. It is especially a good choice when you want to “resuscitate” an old Windows laptop and at the same time convince your husband/wife of the merits of Linux.
MX-16 (the current up to date version) is based on Debian Jessie, hence still supporting the i486 processor, while its support was dropped in Debian Stretch (the current “stable” Debian version). Worth mentioning MX Linux is using the lightweight Xfce4 desktop environment, and it is systemd-free, something that could convince some of you to use it. Speaking of concerns or philosophical objections concerning systemd, worth mentioning Devuan now.
Devuan
Kernel |
Linux 3.16 (Debian Jessie) |
Userland |
GNU |
Reference |
Do you know Devuan, the “systemd-free” port of Debian? Like many derived projects, it will still support the IA-32 architecture as long as it will be supported upstream. Like MX Linux I mentioned above, Devuan lags a little bit behind the Debian release cycle. Here again, the current stable version of Devuan is based on Debian Jessie (old stable version), which is not a bad thing in our case since that means we still have support for i486 here too.
CentOS
Kernel |
Linux 4.11 |
Userland |
GNU |
Reference |
While Red Hat only supports x86-64 architectures, it’s free & community supported counterpart CentOS does support other architectures, including IA-32, through the AltArch special interest group.
It’s only by the hard work and dedication of volunteers that we have the opportunity to run CentOS on IA-32. And Red-Had does not make particular efforts to ease the port of RHEL to legacy or constrained hardware. Johnny Hughes, Software Engineer for the CentOS Project, was kind enough to share some figures with me:
I was able to get an install every time at 1536 MB. At 1408 MB it
worked almost every time (1 fail in 6 attempts). At 1280 MB, I had
problems almost all the time using the GUI installer. I was able to get a minimum install at 1280 MB in text-based installer mode. All fails at 1024 MB (text and GUI).
Concretely you can run an already installed CentOS system on an i686 or superior CPU, with as low as 256MB RAM. Something that makes it especially suitable to use on single board computers or IoT devices running an IA-32 SoC (like the Intel Quark SoC). But on RAM constrained hardware, you will not be able to use the standard installer. So you will have to find another solution to bootstrap a base system, like directly copying a pre-installed 32-bits image on your target.
Slackware
Kernel |
Linux 4.4 |
Reference | |
Userland |
GNU |
Slackware is probably the oldest Linux distribution still maintained, with an initial release dating back to 1993. For a long time, Slackware was an IA-32 only distribution, with 64 bits supports dating only to 2009.
But not only Slackware does still support the IA-32 architecture— but if you buy the CD from the official store (which is a good idea to support the project), you will ONLY get IA-32 binary images.
To me, this is a sign the developers’ continuous dedication to the x86_32 architecture. If Slackware benefits from a good reputation, as the opposite of the other distributions above, I don’t remember having ever used Slackware myself on an IA-32 system. If you have tested it yourself, please don’t hesitate to give your feedback in the comment section.
Tiny Core Linux
Kernel |
Linux 4.8 |
Userland | |
Reference |
For more advanced users, and if you’re not afraid of looking under the hood, you can try Tiny Core Linux. Tiny Core Linux follows a goal inherited from the now dormant Damn Small Linux project: being able to run Linux with a minimal footprint.
As a distinctive feature, TCL is entirely contained in a compressed cpio archive that populates the initial RAM disk upon booting the Linux kernel. Running from RAM, Tiny Core Linux is very fast and allows to boot diskless systems over the network through PXE. Perfect for a legacy system with broken disks— well, I mean: for “diskless” systems.
According to the documentation, Tiny Core Linux can run x86 CPU starting with the 80486 and 46MB of RAM for the GUI version (28MB for Micro Core, the “text-only” version). I don’t have any experience with TCL either, so I let you check those assertions. Once again, the comment section will be the best place to share the results of your experiments!
Alpine Linux
Kernel |
Linux 4.4 (hardened) |
Userland |
Busybox |
Reference |
Speaking of low footprint distributions, let’s talk about Alpine Linux. If you’re looking for a “small, simple, secure” Linux distribution, this is the one to investigate. Worth mentioning its qualities made it a popular choice for container-based applications (aka Docker).
But for what is interesting us today, it is also a viable option to run on a legacy and constrained hardware. I’m not sure I would use it as a base system for a desktop computer (I’m not even sure you can do that— easily, I mean) but to run a server, it would be perfect. Something that may or may not have importance for you, Alpine Linux is not using systemd, but OpenRC init system, initially written for Gentoo. And that gives me a perfect transition…
Gentoo
Kernel |
Linux 4.12 |
Userland |
GNU |
Reference |
As the opposite of the Linux distributions I described above, Gentoo is a source distribution. That means the “natural” way of using it is to let the package manager download the source code of the software to install, then compile it specifically for your computer before installation. Other distributions were binary distributions that download a pre-compiled and somewhat “generic” version of the software.
Like other source distributions, it raises a chicken and egg problem: how to install Gentoo if you don’t have it already installed? The solution is to bootstrap your system by downloading first a minimal pre-compiled tarball image of Gentoo containing the kernel and the base tools, then rebuild it for your hardware from that generic binary image. This is not the most user-friendly way of doing. Especially for home users. But, assuredly, this is an excellent way to get each and every drop of power available from a legacy hardware.
And the other 32-bit Linux distributions?
Well, I’m not a “distro hopper,” so I only mentioned here the OS I used myself or that I heard good feedback from trusted acquaintances.
But, many other distributions claim support for IA-32. And I encourage you to mention those I missed in the comment section. Some of them are niche projects. Others are popular, like the lightweight Peppermint OS or Bodhi Linux. However, the problem is many of them are derived distributions and thus are at the mercy of strategic choices upstream. Like Arch Linux dropping 32-bit support or Canonical gradually disengaging itself from the IA-32 market by no longer using its resources to test and compile the desktop version of Ubuntu. Letting that at the charge of the derived project community if they can/want/need it.
Speaking of that, I can mention here the Arch Linux 32 project which aims at maintaining i686 support alive for Arch Linux users now it was dropped upstream.
In the same vein, the Manjaro 32 project was born to continue providing the popular Manjaro Arch Linux derivative for IA-32 users.
Certainly, all those projects, large or small, need our respect and support, even if we are not all directly users of the IA-32 architecture. Because the abandon of the 32-bits x86 architecture reveals an interesting paradox of the Linux world: with its increasing popularity, we tend to forget sometimes Linux is not only a desktop operating system. While it’s true you cannot buy a new IA-32 “computer,” many SoCs based on that architecture are still manufactured, especially for the IoT and embedded devices market. I assume the Kernel will continue supporting that platform for many years. But will we still have a distribution to put on top of that 32-bits kernel?