The Slackware ARM / AArch64 Linux Project slackware.com
Home

Introduction

Releases

Installation

Change Logs
[RSS feeds]

Development Model

Build Farm Status

Contact/Support

Twitter

YouTube

Funding & Donations

Introduction


Slackware Linux

Slackware is one of the Grandfathers of the Linux/Open Source ecosystem and is one of the oldest distributions that is actively developed. It's a unique distribution in many ways: Slackware presents a modern Linux/GNU software package set, yet retains its heritage of a classic Unix-style Operating System environment.

The distribution itself is easy to understand, as the entire OS management suite and boot process is written in Unix shell code with good inline documentation. This also is a testament to the power of the Unix shell!

It's rare in the Open Source ecosystem to have the entire OS design and development be chiefly the work of an individual - the project's creator, Patrick Volkerding. This provides a level of consistency and stability in the user experience that is not seen in other distributions, and means that there are no politics involved (which is great for Slackers!).

There is also a video introduction to Slackware's history.

Slackware ARM / AArch64 History

Slackware ARM began in 2002 by Stuart Winter - Slackware's ARM Platform Architect and Developer - and was given the name "ARMedslack". The name was later changed to "Slackware ARM / AArch64" when the project became the official port for the ARM platform.

Project Goals

The Slackware ARM / AArch64 project's goals are those of its creator and naturally evolve over time.
Personal Goals
  • Provide interesting and fun technical challenges to work on as a hobby project, that also keeps this author's hands on technology and on a Unix-style Operating System
  • Develop and maintain the ARM port of Slackware with like-minded individuals
  • As an education tool (served through the channels of documentation and the YouTube content)
Technical Goals
Some of these goals also pose as requirements, but given the nature of the Open Source Ecosystem and the state of the mainline/upstream support of the ARM and AArch64 platforms generally, combined with support for particular Hardware Models, they are stated as goals.
  • Have the experience of using the Slackware Operating System as close as possible to that on the x86
  • The installation of the Slackware Operating System is via the regular Slackware Installer
  • Use the mainline Linux Kernel (with limited patching)
  • Add only software packages that are necessary to support the Platform generally, or to support specific Hardware Models. Packages will additionally be added if they are required as part of the process of building the Operating System itself on the Platform (which is standard Slackware practice).
  • The absence of software packages is because they either cannot be made to build, or because they are exclusively for the x86/64 platforms (the most common example are boot loaders, or drivers for the X11 window system that support hardware that doesn't exist on the ARM/AArch64 platforms.)
  • Follow the industry and community standards for the boot process across all supported Hardware Models

Timeline of Major Events

The original goal of providing a full Slackware port for ARM desktop machines - initially targeting the Acorn StrongARM RiscPC. This goal was achieved when Slackware ARM 11.0 was released - which provided installation to a RiscPC using the regular Slackware Installer.

At the start of 2007, Slackware ARM 11.0 was released. This marked the first stable release of the port whose primary architecture was the RiscPC. Unfortunately the RiscPC kernel support was unmaintained (at this point the RiscPC platform was over 10 years old), so this was the first and last release to support original target – the RiscPC.

On the 2nd April 2009 Patrick Volkerding knighted "ARMedslack" as an official port of Slackware. From this time on, ARMedslack began to be renamed to "Slackware ARM" in all places and was completely renamed for the release of Slackware 14.0.

In June 2009 Slackware ARM 12.2 was released. This release was the first to include a new hardware platform: The Marvell SheevaPlug, which had only been released to market a few months before. Up until this point, all of the Slackware ARM trees used the "old" or ("legacy") ABI. Some main stream software was no longer compiling or running correctly on the old ABI since it had been superceded by the Version 4+ EABI. A decision was made to make Slackware ARM 12.2 the last release to use the "old" ABI.

In July 2009 work began on creating a new ARM port from scratch - compiled to use the Version4+ EABI. After a few months of intensive development and modifications to the Slackware ARM tree, this work was released in Slackware "-current" form in September 2009. The first release of an EABI Slackware ARM was with version 13.1. There was no release of Slackware ARM 13.0 as the new EABI port, whilst almost complete at the release of Slackware 13.0 x86, had had no testing outside of the labs.

In August 2016, the software floating port (referred to above as "Version 4+ EABI", but more recently referred to as "soft float" or "software floating point" since all of the previous ABI distinctions have long gone from the memory of the community, and in most cases was never there) was retired (Slackware ARM 14.2 remains supported until shortly after 15.0 is released) and was replaced with a 32-bit hardware floating point port (commonly referred to as "hard float"). This is once again a new ABI, and had to be built from the ground up - making it the third complete port of Slackware to the ARM architecture. Of course, at this point, all of the distribution build system was in place, and the hardware far faster than years ago, henceforth the port only took a few months from start to release. This new port was principally because the Software floating point was no longer supported by the main stream distributions, since all of the new hardware had hardware FPU and the upstream development was only focusing on the new hardware. It became obvious that the software FPU port would become a difficult place to maintain a full Slackware port within. The hardware FPU port has a minimum target of ARMv7a.

In December 2020, work began on porting Slackware to the 64-bit ARM architecture (known as 'AArch64'), with the initial Hardware Model targets being the PINE64's RockPro64 and Pinebook Pro. It was functionally complete by May 2021, and has many improvements over the ARM port - particularly in regards to the management and enablement of new Hardware Models by the Slackware ARM community. Additionally, the boot and installation processes were improved significantly - making the installation process far easier and more streamlined.

Today

The primary goal for Slackware ARM and AArch64 is always to provide as much as possible a full port Slackware x86 (some packages have not been built since they are x86 only, whilst some have been added for to support ARM platforms). The primary Hardware Model targets are suitably equipped ARM netbook/laptop or a device to which the full complement of HIDs can be attached, enabling it to assume the role of a regular-use desktop machine or a network-attached server. However, many users find Slackware suitable for other purposes including embedded systems, but those use cases are beyond the scope of the Slackware ARM / AArch64 project.

Slackware ARM / AArch64 build infrastructure

Initially Slackware ARM was developed using a cross-development platform called "Scratchbox" which enabled the packages to be built in a pseudo native ARM environment on a fast X86 machine. After enough of the system was built, compilation switched to native builds on two StrongARM 287MHz (overclocked from 200 & 233MHz) RiscPCs.

The primary development machines have changed as the available hardware has progressed. An Iyonix, SheevaPlugs, TrimSlice Pro, Banana Pi's have all been used to build the distribution.

Today Slackware ARM is built natively on a collection of Orange Pis and Banana Pi's. Slackware AArch64 is built natively on a collection of RockPro64's. distcc to leveraged to improve the time to delivery, distributing the builds to x86/64 cores running the Slackware ARM / AArch64 x-toolchain.