Spis treści

Slackware ARM project web site | Forum | Slackware ARM development documentation | Slackware ARM installation guides

Installing Slackware: Paravirtualization on Apple Silicon within VMWare Fusion hypervisor

Platform AArch64/ARM64
Hardware Model macOS / Apple Silicon
Document Version 1.01, Apr 2025
Author Stuart Winter <mozes@slackware>

Video Tutorial

This tutorial is also available in video form.

Other Virtualization Platforms

If you'd prefer to use UTM, see the Installation Guide.

Supporting the Slackware ARM Project

If you like what we're doing here, please consider becoming a patron.

Download the Slackware Linux AArch64 Installer ISO image

The '$' prefixes in the commands indicates the shell prompt - it's not to be typed/copied

Open a shell/terminal on the Mac:

Prepare a directory to hold the downloaded assets

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

Set the version of Slackware AArch64 to download

At the time of writing, the only version available is 'current'.

$ SLKVER=current

Set the Internet media distribution server

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

Download the Slackware Linux Installer

$ 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.

Verify the Slackware Installer image

Since GPG is not provided on MacOS by default, the easiest way to verify the images is using the MD5 hash.

Hash method

These MD5 sums are examples - the images you download will have different hashes
$ 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.

GPG method

GnuGPG is not installed in MacOS by default

If you have GPG installed, verify the digital signature of the Slackware Installer.

Installing the Slackware ARM GPG key

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
As the images are large, verification may take a minute or two.

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 see 'BAD signature' you should re-download as it may have become corrupt. If this doesn't help, drop a note to the Slackware ARM forum

Download and Install VMWare Fusion

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)

Creating the Virtual Machine within VMWare Fusion

The Settings window should open. If not, open it like so:

Within the VM Settings window:

Return to the VM's Settings window by clicking Show All at the top of the Settings window.

A full installation of Slackware requires approximately 25GB

Additional VMWare Fusion VM Settings

There are other settings that you may wish to experiment with, such as the graphics settings.

Other settings haven't been tested - if they work, let us know on the forum
Sharing

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.

Booting the Slackware Installer

The system will boot into a menu.

You may press 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.

Networking is not required to install Slackware - the packages are contained within the ISO

Select a Key Map

If you are not using a US key map, select the appropriate key map for you:

Beginning the Setup

You will be presented with a shell prompt:

Creating the Partition Table

You need to create the partition table for the OS and your data to live on.

Open the fdisk Tool

In this guide, we’ll create a simple partition scheme. You’re free to customise the layout as needed, but make sure to set the disk label to GPT and create a 100MB EFI partition as the first partition.
fdisk /dev/nvme0n1

Create a GPT Disk Label

As we're using an EFI system, we'll create a 100MB EFI partition first

Type g and press ENTER:

Create a 100MB UEFI Partition

Set the partition type to uefi:

Create the Swap Partition

For the 2nd partition we'll create a 4GB Swap partition.

Set the partition type to Swap:

Create the root Partition

This partition will house the OS and your data and will fill the remainder of the allocated storage:

Save the Partition Layout

The partition layout must now be saved.

Begin the Installation

You may now begin the Slackware installation process.

At the shell, type the command setup and press ENTER

Installation Essentials

We'll now perform the initial setup steps:

You can pick a different file system type if you wish

* Press ''ENTER'' to close the information dialog box:

Selecting the Installation Media

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.

Selecting the Packages

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.

Installation begins

The packages will now install. This takes approximately 10 minutes.

In-built Entertainment

If you're short of things to occupy yourself whilst the packages install, you can play the bundled bricktick game!

Read the on-screen instructions and begin playing!

When you've had enough, and would like to check on the status of the installation:

Post Installation Configuration

Once the packages have completed installing, there are some post configuration actions:

Mouse Configuration

Network Configuration

Automatically starting Services

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.

You can run this script again within the OS

Virtual Console Font Configuration

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.

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.

Time Zone Configuration

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:

You can jump sections within the menu by pressing the letter that corresponds to your region. For example, to select Europe/London, I can press e then use the DOWN arrow keys to locate the final entry

Configure the Default "vi" Editor

Select the implementation of the vi editor that you prefer. This is the default that will be used to edit crontabs and so forth.

You can override the default editor by setting the environment variable $EDITOR within your shell profile

Configure the Window Manager for X

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.

Set the root Password

Complete the Setup

Boot Slackware

The system will reboot into the GRUB boot loader menu.

Login as root

You can now login as root and perform some post installation tasks.

Post Installation Configuration

There are a few post-installation configuration tasks to complete.

Add a plebeian user

You should add a plebeian (non-root) user using the adduser tool.

This is documented here.

Starting X

Once you have added your plebeian user, you can login to another virtual console:

Managing Slackware

Keeping the Slackware OS up to date

One of the preferred tools to keep your system up to date is slackpkg.

Upgrading the Kernel: In Slackware AArch64, you simply upgrade the Kernel packages and reboot - no manual steps are required

Loading Additional Linux Kernel Modules within the OS Proper

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.

Loading Additional Linux Kernel Modules early in the boot sequence

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.

Usually you won't need to load modules early in the boot sequence. See the previous section about loading modules from within the OS Proper.

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.

Starting Services at Boot Time

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

Manually change the permissions

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

Use ''pkgtool''

root@slackware:# pkgtool

Starting a Graphical Login Manager by Default

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

Customising the Slackware Linux Kernel

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.

Reducing Boot Time

This section isn’t relevant for virtualized platforms, as the OS boots extremely quickly. However, it’s included here for completeness, as it appears in the guides for other hardware models.

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.

os-initrd-mgr has a safety check to only proceed when the running Kernel and incoming Kernel are at the same major version and patch level.

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.

If at any point you want to revert to the generic OS InitRD, simply reinstall the a/kernel package (and unset the setting if you configured it in /etc/os-initrd-mgr.conf).

Installing extra Software

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.

Useful Guides and Resources

Known Issues and Feature Gaps

More details on the development Road Map here.