Slackware ARM project web site | Forum | Slackware ARM development documentation | Slackware ARM installation guides
Platform | AArch64/ARM64 |
Hardware Model | macOS / Apple Silicon |
Document Version | 1.01, Apr 2025 |
Author | Stuart Winter <mozes@slackware> |
This tutorial is also available in video form.
If you'd prefer to use UTM, see the Installation Guide.
If you like what we're doing here, please consider becoming a patron.
Open a shell/terminal on the Mac:
Applications
→ Utilities
We'll download the Slackware Linux distribution into a directory named 'slackware'.
$ cd ## this returns to the root of your home directory $ mkdir slackware $ cd slackware
At the time of writing, the only version available is 'current'.
$ SLKVER=current
If you are using a mirror server rather than the master Slackware ARM server, set it here. The format is: <hostname>::<rsync module name>
$ SLKSRV=ftp.arm.slackware.com::slackwarearm
$ rsync -PavL $SLKSRV/platform/aarch64/bootware/installer-aio/slackwareaarch64-${SLKVER}/aarch64_generic.iso.asc slk-aarch64_generic.iso.asc $ rsync -PavL $SLKSRV/platform/aarch64/bootware/installer-aio/slackwareaarch64-${SLKVER}/aarch64_generic.iso.md5 slk-aarch64_generic.iso.md5 $ rsync -PavL $SLKSRV/platform/aarch64/bootware/installer-aio/slackwareaarch64-${SLKVER}/aarch64_generic.iso slk-aarch64_generic.iso
The Slackware Installer images are approximately 5 GBytes in size.
Since GPG is not provided on MacOS by default, the easiest way to verify the images is using the MD5 hash.
$ openssl md5 -r slk-aarch64_generic.iso ; cat slk-aarch64_generic.iso.md5 380d7a8a06dc575e2d4e3140725f7a12 *slk-aarch64_generic.iso 380d7a8a06dc575e2d4e3140725f7a12
Manually verify that the MD5 sums match.
If you have GPG installed, verify the digital signature of the Slackware Installer.
The Slackware ARM GPG key can be used to verify your downloads.
If you are able to verify the GPG signatures, you can download and import the GPG key like this:
$ curl -sSL https://www.slackware.com/infra/keys/arm/GPG-KEY | gpg --import -
$ gpg --verify slk-aarch64_generic.iso.asc
The output will be similar to this. You are looking for 'Good signature from Slackware ARM…'
gpg: assuming signed data in `slk-aarch64_generic.iso' gpg: Signature made Mon 24 Mar 2025 06:07:44 PM GMT gpg: using RSA key F7ABB8691623FC33 gpg: Good signature from "Slackware ARM (Slackware ARM Linux Project) <mozes@slackware.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 36D3 7609 2F12 9B6B 3D59 A517 F7AB B869 1623 FC33
If you do not already have VMWare Fusion Professional installed, download the macOS version and install it.
VMWare Fusion Professional is free for personal use. You will need to create an account, agree to various licences and so on before you can download it.
Version of VMWare Fusion Professional tested: 13.6.3 (24585314)
Virtual Machine Library
:Create a custom virtual machine
Continue
Linux
Other Linux 6.x kernel 64-bit Arm
Continue
Create a new virtual disk
Continue
Customize Settings
Save
The Settings
window should open. If not, open it like so:
Settings…
Within the VM Settings
window:
Processors & Memory
4GB
Show All
(at the top of the window) to return to the main Settings
windowCD/DVD (SATA)
Connect CD/DVD Drive
Choose a disc or disc image…
Open
Return to the VM's Settings
window by clicking Show All
at the top of the Settings
window.
Hard Disk (NVMe)
35GB
Apply
Show All
at the top left of the VM Settings
window to return to the main settingsSettings
windowThere are other settings that you may wish to experiment with, such as the graphics settings.
The Sharing
feature (making directories on the host macOS available within the guest VM) requires a package open-vm-tools. This is not currently packaged within Slackware, and it requires some additional dependencies. For a discussion on this subject, see this forum thread.
Sharing works seamlessly out of the box with UTM, so you might prefer to use it if you'd rather not go through the process of getting open-vm-tools
set up.
Play
icon within the VM windowThe system will boot into a menu.
e
to edit any of the boot loader settings if you wish - which may be useful if using the Installer as a rescue environment
Press ENTER
on the menu item Install Slackware on all supported Hardware Models
The system will boot within a couple of seconds, and will attempt to acquire an IP address via DHCP. If no DHCP server is available, this will take a little longer to time out.
You need to create the partition table for the OS and your data to live on.
fdisk /dev/nvme0n1
n
and press ENTER
ENTER
for both the “partition number” and “First sector”+100M
Set the partition type to uefi
:
t
and press ENTER
uefi
and press ENTER
For the 2nd partition we'll create a 4GB Swap partition.
n
and press ENTER
ENTER
for the “partition number”ENTER
for the “First sector”+4G
Set the partition type to Swap
:
t
and press ENTER
ENTER
for the “partition number”swap
and press ENTERThis partition will house the OS and your data and will fill the remainder of the allocated storage:
n
and press ENTER
ENTER
for the “partition number”ENTER
for the “First sector”ENTER
for the “Last sector” You may now begin the Slackware installation process.
At the shell, type the command setup
and press ENTER
We'll now perform the initial setup steps:
ADDSWAP
and press ENTER
ENTER
to accept the default offeredNo
to scanning for bad blocksENTER
to accept the default partition suggested for use as the root partition.ENTER
to format the partitionENTER
to pick the suggested file system type:* Press ''ENTER'' to close the information dialog box:
ENTER
to format the EFI partition:ENTER
to close the information dialog box:This edition of the Slackware AArch64 Installer contains the full set of Slackware packages.
Whilst other media installation (locally mounted directory, NFS, HTTP and others) can be selected by choosing No
, the recommendation is to accept the defaults, installing the packet set bundled with the Slackware Installer.
Slackware packages are organised into loose groups called “series.” If you're an experienced Slackware user, you can customize which series to install. However, to keep things simple and avoid potential issues with dependencies (as Slackware does not manage them automatically), it's recommended to install all packages—at least for the initial setup.
ENTER
to proceedENTER
to accept the suggested prompting mode
If you're short of things to occupy yourself whilst the packages install, you can play the bundled bricktick
game!
alt
key and press the RIGHT arrow
key.ENTER
bricktick
and press ENTER
Read the on-screen instructions and begin playing!
When you've had enough, and would like to check on the status of the installation:
alt
key and press the LEFT arrow
key.Once the packages have completed installing, there are some post configuration actions:
ENTER
to configure the networkexample.com
No
in response to configuring a VLAN ID:Network Manager
ENTER
on both dialog boxes to proceed
Slackware uses the System-V init system, which uses a collection of rc
(run control
) scripts to control which daemons (services) start at boot time.
You can use the UP
and DOWN
arrow keys to move through the menu and press SPACE
bar to select or de-select any services.
In this example, we're selecting the rc.rpc
service as we want to mount NFS shares.
While optional, selecting a console font is recommended—otherwise, the default text may appear quite small and hard to read.
It's generally best to choose the font currently used by the installer, though you're free to select any font you prefer.
LEFT
arrow key to move the selection to Yes
and press ENTER
t
to jump to the fonts named 't', and the DOWN
arrow to locate the font ter-728b
If you like this font, type 1
and press ENTER
. If you'd prefer to use a different font, type 2
and press ENTER
to return to the font selection menu.
If you'd like to select a specific time zone (rather than UTC
), select NO
and press ENTER
Select the appropriate time zone for your locale:
Europe/London
, I can press e
then use the DOWN
arrow keys to locate the final entry
ENTER
to select the time zone
Select the implementation of the vi
editor that you prefer. This is the default that will be used to edit crontabs
and so forth.
$EDITOR
within your shell profile
ENTER
to choose the default of vim
Select the window manager of your choice. KDE and Xfce are both solid options when running under paravirtualization, but you may prefer one of the classic lightweight window managers if you’re looking for a more minimal setup.
ENTER
to set the root passwordENTER
ENTER
There are a few post-installation configuration tasks to complete.
You should add a plebeian (non-root) user using the adduser
tool.
This is documented here.
Once you have added your plebeian user, you can login to another virtual console:
ALT
key and press the RIGHT
arrow keystartx
and press ENTER
One of the preferred tools to keep your system up to date is slackpkg.
Often Kernel modules for discovered hardware will be automatically loaded, but occasionally you will need to manually configure the loading of some modules.
/etc/rc.d/rc.modules.local
This file is a shell script that is run as one of the last steps before the OS has fully booted. You can enter modprobe
commands here to load the specific modules you require.
Configuration files within the directory /lib/modprobe.d/
can be used to configure the parameters of the modules. Existing files within that directory serve as reference examples should you need them.
There are a number of peripherals that may require Kernel modules loading early on in the boot sequence. An example of this would be RTCs (Real Time Clocks) or storage controllers that are required to access the file systems on which the OS lives.
To load Kernel modules during the early boot sequence, read:
/boot/local/README.txt
As root, the easiest way to begin is by renaming the example script:
mv /boot/local/load_kernel_modules.post.sample /boot/local/load_kernel_modules.post
Then add the appropriate module loading commands to: /boot/local/load_kernel_modules.post
You can also add shell code here to initialise a peripheral - writing something to the peripheral's Kernel interface, for example.
During the installation, you configured which services to start at boot time.
You can start or disable other services either manually or by using pkgtool
As root
:
root@slackware:# cd /etc/rc.d
To enable CUPS:
root@slackware:/etc/rc.d# chmod +x rc.cups
To disable CUPS:
root@slackware:/etc/rc.d# chmod -x rc.cups
root@slackware:# pkgtool
Setup
from the menu and press ENTER
services
and press ENTER
ENTER
If you prefer to use a graphical login manager, you can configure the default runlevel as 4:
su - sed -i 's?id:3:?id:4:?g' /etc/inittab reboot
If you'd like to customise the Linux Kernel, the easiest way is to follow the HOWTO guide and use the Slackware AArch64 Kernel build script to create new packages.
Slackware AArch64 ships with a generic OS InitRD (Operating System Initial RAM Disk - the environment that prepares the machine to boot the Operating System Proper), so as to support a wide range of Hardware Models.
However, this isn't the optimal setup once the Slackware OS has been installed because the generic OS InitRD typically exceeds 40MB, which in some cases can add a couple of seconds to the boot time whilst it's loaded from the SD card.
The os-initrd-mgr
(Operating System Initial RAM Disk Manager) tool has an option to synchronize the OS InitRD's Kernel modules with only those presently loaded within the Operating System.
To do this:
$ su -c 'os-initrd-mgr --sync-loaded-kmods' - # note the final -
This option isn't the default, but you can make it so by following the instructions within /etc/os-initrd-mgr.conf.sample
This way when you upgrade the Kernel packages in the order described above, it'll automatically synchronize the modules.
For example, when running Linux 5.17.1, upgrading to 5.17.2 will work; but an upgrade of Linux 5.17.1 → 5.18.1 will require a reboot then to run os-initrd-mgr again to re-sync.
a/kernel
package (and unset the setting if you configured it in /etc/os-initrd-mgr.conf
).
Slackware comes with a good base of software applications, but there are plenty more available in the Open Source Ecosystem.
The best way to add new software is to use the build scripts from SlackBuilds.org.
More details on the development Road Map here.