Raspberry Pi

Compared: Raspberry Pi OS vs. Armbian vs. Debian GNU/Linux

Many programmers may have the same question: Is Armbian just another flavor of Debian GNU/Linux, or is it something completely different? What are the differences between Raspberry Pi OS, Armbian, and Debian? In this article, we will discuss the Armbian, Debian, and Raspberry Pi operating systems in detail, including a comparison between these different systems.

Fruity Awakening

In 2012, Raspberry Pi popularized the single-board computers (SBC) class for the general public. Back then, anyone with knowledge about devices like the RouterBOARD from Mikrotik [9] or the ALIX Board from PC Engines [11] was seen as exotic. Today, it is impossible to imagine everyday existence without these powerful mini-computers. You can find these devices everywhere — in wifi routers, weather stations, home automation devices, and fine dust measuring instruments. These devices are run with specially adapted Linux or BSD distributions, of which Armbian and RaspberryPi OS are only two representatives of many.

‘Armbian’ is an artificial word that combines the words ‘ARM,’ for the corresponding RISC processor architecture [3], and the last two syllables, ‘bian,’ from ‘Debian.’ This makes it very clear what sets Armbian apart from Debian GNU/Linux; unlike Debian, Armbian is focused and optimized for the ARM architecture.

Moreover, while the Debian GNU/Linux distribution supports a variety of hardware architectures, including ARM7 (32 bit) [4] and ARM8, the Armbian distribution focuses only on a wide range of ARM-based development boards. From the project website, you can download distribution images for the Orange Pi [5], the Cubieboard [6],

and the Asus Tinkerboard [7], among other images. Cubian [12], a fork of Debian GNU/Linux for the Cubieboard, seems no longer to be maintained, as the last release dates back to 2014.

Raspberry Pi OS [8] is the official operating system of the Raspberry Pi Foundation [17] for their SBCs. Initially, it was named Raspbian, for the Raspbian project [15] on which it is based. The Raspberry Pi Foundation later added another package repository with partially closed source software to their images. The Raspbian project never published its own images, but instead always referred to the images of the Raspberry Pi Foundation. The foundation eventually added their own desktop flavor and many more customizations, reaching far beyond Raspbian’s rebuilding and minimal patching of Debian packages. To clearly distinguish between the Raspbian project and the Raspberry Pi Foundation derivative, the latter was renamed to Raspberry Pi OS in 2019.

Compared to Armbian, the Raspbian project and Raspberry Pi OS follow an opposite approach: these distributions rely on dozens of contributors to focus on a single SBC platform. Based on the 32-bit ‘armhf’ version of Debian GNU/Linux, it is meant to run on all versions of the Raspberry Pi board but is not designed to work on any other ARM SBCs. The Raspberry Pi 3 and 4 hardware can run 64-bit operating systems. Meanwhile, the Raspberry Pi OS always runs 32-bit, with the exception of the Linux kernel, which can be a 64-bit kernel. Some packages made specifically for the Raspberry Pi OS are also available for the Intel architecture (32- and 64-bit variants) and can even run on a normal desktop PC running Debian GNU/Linux.

For a limited time only, there are also (unofficial) Debian GNU/Linux images offered for the Raspberry Pi family of SBCs [16]. The main difference to the Raspberry Pi OS is that the images for those Raspberry Pi systems, capable of running a 64-bit OS (Raspberry Pi 3 and 4), also contain a 64-bit OS (‘arm64’ in Debian); while the other images run the 32-bit ‘armhf’ (Raspberry Pi 2) or ‘armel’ (Raspberry Pi 1 and Zero) architectures. The latter two differ from the ‘armhf’ packages provided by Raspbian and Raspberry Pi OS. Historically, several distributions, including Debian GNU/Linux and Fedora, decided on a minimum set of CPU instructions [19] needed for the ‘armhf’ architecture. The first Raspberry Pi OS was published shortly afterward and supported all but one of the required CPU instructions.

So, there were two options: either 1) use the much slower but not optimized ‘armel’ architecture, as Debian GNU/Linux still does for Raspberry Pi 1 and 0, or 2) redefine the ‘armhf’ architecture. Debian GNU/Linux did not want to do the second option, as this option would deviate from what had already been decided and implemented. This was the moment when the Raspbian project was born: the Debian Developer Peter Green (also known by the tag plugwash in IRC) recompiled all ‘armhf’ Debian packages for Raspberry Pi 1 CPUs (back then, only Raspberry Pi 1 existed) with the single CPU instruction missing. This is also the reason why you cannot mix Debian’s ‘armhf’ and Raspbian’s ‘armhf’ releases.

Image Size

The installation images offered by the three projects are quite different. Armbian requires you to select a category (such as General, IOT, NAS, Networking, or Desktop) and the SBC, first. Next, you will choose the corresponding image offered with either the 4.9 or 5.9 Linux kernel for oldstable (previous release), stable (current release), and testing (upcoming release). The image size is between 270 and 600 M. Each image file can be retrieved as a direct download or via BitTorrent from the project website. Updating an existing Armbian installation is done using the same instructions as those used for maintaining Debian GNU/Linux.

In contrast, the options for Raspberry Pi OS are a bit more limited. Raspberry Pi requires you to choose between OS Lite, OS with desktop, and OS with desktop and recommended software. All images are equipped with the 32-bit version of a 5.4 Linux kernel. The image size varies from 440 M to 3 G. Downloading the image can be done directly, as a torrent data stream, or via the Raspberry Pi Imager, a GUI-based setup tool available for Windows, macOS, and Ubuntu. As with Armbian, updating an existing version of Raspberry Pi is done using the same instructions as those used for maintaining Debian GNU/Linux.

The RaspberryPi Imager

Finally, for most devices, including most ARM devices, Debian GNU/Linux offers a variety of ready-made installer images, including a basic setup, a tiny image for network-based installation, different desktop variants that fit on one CD or DVD, live CDs, and even a set of full CD/DVD images. Though these images are not ready-to-run images, they contain the Debian Installer, a minimal OS that is solely for performing the OS installation. The live images run directly from a read-only installation also contain the Debian Installer.

The image size is between 250 M and 3 G. Downloading an image is possible as a direct download or via BitTorrent. The regular Debian packaging commands are used to update an existing installation.

This is not so for the Raspberry Pi operating system. In fact, there are no official Debian GNU/Linux images for Rasberry Pi. There are, however, unofficial ready-to-run images (no installer images) with Debian GNU/Linux for Raspberry Pi, made by the same developers behind the official (but “non-free”) Raspberry Pi firmware packages in Debian GNU/Linux [16].

First, you will decide between daily built images based on the most current packages in Debian GNU/Linux 10 Buster (the current stable release at the time of writing this article) or “tested” images that are guaranteed to run. In comparison to the Raspberry Pi OS, which offers images that work on all Raspberry Pi boards, with this distribution, you have to choose which Raspberry Pi board will contain the image. The images for the Raspberry Pi 1 and Raspberry Pi 0 (not 0W) operating systems are roughly the same, as they use more or less the same CPU and have no Wi-Fi components. Depending on that, you also get different OS architectures; namely, ‘armel’ for Raspberry Pi 1, 0, and 0W; the original ‘armhf’ for Raspberry Pi 2; and ‘arm64’ for Raspberry Pi 3 and 4.

Supported Devices

Regarding supported platforms and devices, the three projects go in slightly different directions. For Armbian, the device information for every supported SBC can be found at the Armbian website. This is accompanied by a list of tested third-party hardware to ensure that all hardware components work well together. Overall, Armbian supports several different ARM SBCs, but it does not support the Raspberry Pi family of SBCs.

For Raspberry Pi OS, device information for every Raspberry Pi version is available online, at the Raspberry Pi website. And, of course, Raspberry Pi OS provides support for all Raspberry Pi devices.

For Debian GNU/Linux, the information is organized in a wiki, sorted by OS architecture, with specialized sections for more specific information. Debian currently supports nine OS architectures officially (of which three are for ARM devices). Debian also builds its packages and installer images for 13 further OS architectures that are not officially supported, running under the label ‘Debian Ports’ [21].

Development

Furthermore, the methods by which each of the three Linux distributions are developed differ significantly. Armbian and Debian GNU/Linux are community-based projects. For Armbian, the corresponding GitHub project page is key. Debian GNU/Linux uses its own distributed infrastructure that allows for development of the Linux distribution from all over the world.

Meanwhile, Raspberry Pi OS is maintained by the non-profit Raspberry Pi Foundation as an in-house project. Contributions to the Raspberry Pi Foundation can be made via the Raspberry Pi Forum [20]. The Raspbian project is largely a recompilation of the Debian packages created for Raspberry Pi and does not seem to have a big community of its own. The outdated Raspbian website [16] often refers users to either of the Debian GNU/Linux or Raspberry Pi Foundation websites.

Licensing

Armbian is licensed under GPL2, whereas both Raspberry Pi OS and Debian GNU/Linux use a mix of licenses, including GPL and others. The Raspberry Pi OS image “with recommended software” contains several “free-to-use” commercial software packages, most of which are limited demo versions. The plan is of these free package offerings is to hook users so that they buy that software for their other computers.

Also, some firmware blobs needed for Raspberry Pi and other ARM SBCs are only available as “binary only,” i.e., without source code. In the software world, these software packages are considered “non-free.” The previously mentioned unofficial Debian images for Raspberry Pi contain Debian’s “non-free” repository, enabled by default because it includes the ‘raspi-firmware’ software package.

Software Packages and Setup

Armbian describes itself as a “Lightweight Debian or Ubuntu based Linux distribution specialized for ARM development boards.” It comes as a ready-to-run image optimized for memory flash devices, such as NAND, SATA, eMMC, and USB. Both SSH and DHCP services are activated right from the start. A wireless adapter supports DHCP (if present), but this feature needs to be enabled by the user. This allows for an easy setup to connect this system to your router or create an individual access point. XFCE is used as the Desktop Environment [18].

XFCE on Armbian

To increase execution speed for code and data and minimize I/O operations, several functionalities have been transferred to work as much as possible from memory. For example, the log2ram service keeps log files in the memory and saves them to the disk daily and on shutdown [13]. Disk caches are kept in the memory for ten minutes using the option “commit=600” in the directory configuration in the file /etc/fstab [14].

As previously noted, the Raspberry Pi OS targets the different Raspberry Pi models, which started out with quite limited hardware components. To deal with these limitations as a Desktop Environment, the default setup starts a modified LXDE Desktop named PIXEL (Pi Improved X-windows Environment Lightweight), which is also available from the Raspberry Pi Foundation for Intel-based Linux PCs.

The PIXEL Desktop Environment

By default, a user named “pi” with the password “raspberry” exists, and the SSH service is disabled for this user. You can enable it for a single boot up by editing the file config.txt on the first partition. It is strongly advised to change the password immediately after the first login. Only then can you can enable the SSH service permanently to avoid well-known default passwords accessible via SSH.

Debian’s unofficial Raspberry Pi images also come wired with the network enabled by default via DHCP, but the Wi-Fi does not come pre-configured, as of this writing. Another difference with Raspberry Pi OS images is that there is no normal user, just a root user with no password and the SSH root login disabled. Setting the root password or an SSH public key for root login in advance is supported by editing “sysconf.txt” on the first partition. These settings are wiped after they have been applied to the booted system to avoid leakage of the plain text password.

Currently, the option to configure access to a Wi-Fi network is in the planning stages. Future versions of Raspberry Pi OS images will come equipped with this feature.

Conclusion

The programming community has been using Debian GNU/Linux and Armbian in production-like environments without fail for many years; for example, a CubieTruck as a mobile collaboration platform (“mobile cloud”). Devices with Raspberry Pi OS have been used in experimental stages, and we were very happy about them, too. It is a great pleasure to have access to such small, reliable, affordable, and powerful machines. We wish to have more time to explore them in even more detail.

Links and References

[1] The Debian GNU/Linux project, https://www.debian.org/
[2] The Armbian project, https://www.armbian.com/
[3] ARM, Wikipedia, https://en.wikipedia.org/wiki/ARM_architecture
[4] ARM7, Wikipedia, https://en.wikipedia.org/wiki/ARM7
[5] Orange Pi, http://www.orangepi.org/
[6] Cubieboard, http://cubieboard.org/
[7] Tinkerboard, https://www.asus.com/us/Single-Board-Computer/Tinker-Board/
[8] Raspberry Pi OS, https://www.raspberrypi.org/software/operating-systems/
[9] Mikrotik, https://mikrotik.com/
[10] Frank Hofmann: Zwergenaufstand. Das Cubietruck im Alltagstest, RaspberryPi Geek 04/2016, https://www.raspberry-pi-geek.de/ausgaben/rpg/2016/04/das-cubietruck-im-alltagstest/
[11] PC Engines, https://www.pcengines.ch/
[12] Cubian, http://cubian.org/
[13] Log2Ram, https://github.com/azlux/log2ram
[14] Advantages/disadvantages of increasing “commit” in fstab, https://unix.stackexchange.com/questions/155784/advantages-disadvantages-of-increasing-commit-in-fstab
[15] Raspbian Project, https://www.raspbian.org/
[16] Unofficial Debian images for the Raspberry Pi SBC family, https://raspi.debian.net/
[17] RaspberryPi Foundation, https://www.raspberrypi.org/about/
[18] XFCE, https://xfce.org/
[19] “armhf” on Wikipedia, https://en.wikipedia.org/wiki/ARM_architecture#VFP
[20] RaspberryPi Forum, https://www.raspberrypi.org/forums/
[21] Debian Ports, https://www.ports.debian.org/

About the authors

Frank Hofmann works on the road – preferably from Berlin (Germany), Geneva (Switzerland), and Cape Town (South Africa) – as a developer, trainer, and author for magazines like Linux-User and Linux Magazine.

Axel Beckert works as a Linux system administrator and specialist for network security with the central IT services of ETH Zurich. He is also a volunteer with the Debian GNU/Linux distribution, Linux User Group Switzerland (LUGS), Hackerfunk radio show and podcast, and various open-source projects.

Hofmann and Beckert have also authored a Debian package management book

(http://www.dpmb.org).

About the author

Frank Hofmann

Frank Hofmann is an IT developer, trainer, and author and prefers to work from Berlin, Geneva and Cape Town. Co-author of the Debian Package Management Book available from dpmb.org.