The return of Slackware ARM as a 32-bit hard float port

As of Wednesday, August 24, 2016, Slackware ARM is out of retirement and ready to power your modern ARM devices. The Slackware ARM maintainer has made the decision to pick up development again and go ahead with a hard float port. It was announced three months ago that a hard float port was in the works, and today it’s powering my Raspberry Pi 2. Unfortunately the hard float release has been mostly ignored by the mainstream teach sites, but it’s definitely on top of my list. Get up to date with the latest development at arm.slackware.com.

Slackware ARM hard float
Slackware ARM hard float on the RPi2

I’ve only had a few days of experience with the Slackware ARM -current hard float port, but it has delivered on everything I’ve come to expect from Slackware. I’m currently running Xfce on the RPi2 and performance has been pretty impressive. Not even Firefox was able to grind the system to a halt the way it used to. Anyhow, compiling software on the RPi2 is still painful (think WebKit), but installing and upgrading stock packages feels much snappier.

I used the Slackware miniroot + raspbian boot installation method. Instructions are available at docs.slackware.com. Post installation, you might find that you need the libidn package, and you probably also want gnupg for slackpg before installing the package series. Get the additional packages by searching PACKAGES.TXT.

Watch a quick demo of the Slackware ARM -current hard float port on the RPi2 here.

A quick update regarding my Slackware ARM on the Raspberry Pi 3 project

After four months of hosting this WordPress blog on a RPi3 I have yet to experience a single issue. No filesystem errors, no kernel oops’s and no hard freezes. Definitely an enjoyable change of pace from the preceding twelve months of hosting this site on a Raspberry Pi 2.

I’ve not been doing any overclocking whatsoever on this device and I believe that to be the decisive factor when it comes to improved stability. My old RPi2 is pretty much useless at this point and I’m guessing it simply got burned out before its time. As for storage, I’m still using a SanDisk MicroSDHC Ultra UHS-I 32GB card.

Slackware 14.2
Slackware Linux 14.2

I have also (at least for now) halted the process of moving this website to a cloud based VPS after learning that Slackware ARM is moving ahead with a hard float port.

Nor is there currently any indication that the support for Slackware ARM 14.2 (soft float) will be dropped any time soon.

Configuring ELILO with a generic kernel on Slackware 14.2

Configuring and using a generic kernel on EFI-based platforms with ELILO is pretty much an identical exercise to using LILO with legacy systems. Slackware provides you with a mkinitrd generator script to assist in making an initrd image to boot your system.

As an example, on my system the generator script suggests the following mkinitrd command to build an initrd (initial ramdisk).

root@slackdom:~# /usr/share/mkinitrd/mkinitrd_command_generator.sh
# A suitable 'mkinitrd' command will be:
mkinitrd -c -k 4.4.15 -f ext4 -r /dev/sda6 -m xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:jbd2:mbcache:ext4 -u -o /boot/initrd.gz

The rather excessive list of modules I got in return was a result of having a USB keyboard attached. I checked the script since it didn’t make any sense to me (based on the drivers I was using), and I noticed that the script will return a hard coded list of drivers if it detects an attached USB keyboard. Anyhow, since I didn’t need those drivers I simply used the following command to add support for the ext4 filsystem:

mkinitrd -c -k 4.4.15 -f ext4 -r /dev/sda6 -m jbd2:mbcache:ext4 -u -o /boot/initrd.gz

Please be aware that if you have an encrypted root partition you will have to add support for your USB keyboard. However, the ELILO menu still works without the drivers as it’s managed by the UEFI firmware at that point.

The next step is moving the initrd image and the generic kernel to the EFI partition. On my system the path is /boot/efi/EFI/Slackware/

cp /boot/initrd.gz /boot/efi/EFI/Slackware/
cp /boot/vmlinuz-generic-4.4.15 /boot/efi/EFI/Slackware/

Lastly, I’ll configure ELILO with the option to boot either the generic or the huge kernel. I’ll stick with the generic kernel as default.

# /boot/efi/EFI/Slackware/elilo.conf

default = generic
prompt
chooser = simple
delay = 100
timeout = 100

# huge kernel
image = vmlinuz
  root = /dev/sda6
  read-only
  append = "resume=/dev/sdb4"
  label = huge
  description = "Slackware 64 huge 4.4.15"

# generic kernel
image = vmlinuz-generic-4.4.15
  root = /dev/sda6
  read-only
  append = "resume=/dev/sdb4"
  initrd = initrd.gz
  label = generic
  description = "Slackware 64 generic-4.4.15"

See ELILO: EFI Linux Boot for config options.

ELILO - Slackware 14.2
Hit tab for the boot menu and select your preferred kernel.