[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

This is an old revision of the document!


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

Installing Slackware on the Pinebook Pro

Document name inst_sa64_cur_rk3399_pinebookpro
Document purpose Document the installation of Slackware Linux onto the Hardware Model: Pinebook Pro
Version 1.00, Jan 2022
Author Stuart Winter <mozes@slackware>
Collaborators Brenton Earl <el0226@slackware> (R&D for the initial integration work)

Help / Support

Please post questions to the Slackware ARM forum.

Video Tutorial

This tutorial is also available in video form.

Installation Lifecycle

The Installation consists of a number of stages:

  1. Acquiring all required hardware
  2. Downloading the Slackware assets
  3. Writing the Initialisation Bootware to the Micro SD card
  4. Writing the Slackware Installation Media to the USB flash drive
  5. Setup of the Pinebook Pro hardware
  6. Initialising the Pinebook Pro with the Bootware
  7. Writing the Slackware Installer to the Micro SD card
  8. Booting the Slackware Installer
  9. Installing Slackware
  10. Completing the installation
  11. Booting the Slackware OS
  12. OS configuration

Requirements

Hardware

Item Specification Required? Notes
Pinebook Pro Single specification Required The Pinebook Pro laptop
Micro SD Card 8GB minimum capacity, Class 10 (fast speed), good quality make Required Initially used to boot the Slackware Installer, and subsequently transformed into Slackware's /boot partition
USB Multi-Card Reader Must accept Micro SD cards Required Used to write the Bootware on your host Linux computer. This isn't required if your host computer has a Micro SD card reader.
NVME Storage Module Minimum useful size (contains OS and user data): 30GB Required Kingston A2000 SSD 250G & 500GB models have proved reliable.
Pinebook Pro NVMe SSD Interface Adapter The specific model for the Pinebook Pro Required This houses the NVME Storage Module
USB Flash Drive (a.k.a. 'USB stick') 8GB minimum capacity Required This will contain the Slackware Installation Media for use during the installation phase only.
Serial console adapter 3.5“ audio jack wired version Optional This is useful for debugging during development, but its use precludes the ability to enable sound on the laptop. Most users will not use the Serial adapter.
Pinebook Pro USB-C Docking Deck The specific model for the Pinebook Pro Optional, but Recommended The Pinebook Pro has no onboard Ethernet, and this docking station can be used to provide a range of additional peripherals.
Hardware Assembly Tools
Item Notes
Phillips/cross-head screw driver The head size needs to fit the screws in the Pinebook Pro case. This is used to remove the base in order to set up the hardware.
Note about the eMMC

From the factory, your PinebookPro contains an eMMC storage module. During the development of Slackware AArch64, it was found that the life span of these storage modules is short which makes them inappropriate for housing an Operating System. Whilst it's possible to use eMMC with Slackware, this documented installation process does not provide a supported path and the eMMC should be removed.

Computing / Network Environment

Item Specification Notes
Host Computer: an Internet-connected computer running an existing Linux distribution Preferably a full installation of Slackware x86/64, but any distribution that can provide the required Python environment and HTTP server module. The Host Computer needs approximately 5GB free storage to download the required software assets. You must be able to obtain root access to this Host computer. This will be used to download the Slackware distribution from the Internet, write the Slackware Installation media to the USB flash drive and Micro SD card.

Hardware Setup

In this section we'll prepare the physical aspects of the Pinebook Pro to receive Slackware Linux. There are seven distinct parts to this phase:

  1. Unscrew the case
  2. Disable eMMC (and remove storage module)
  3. Enable Sound (disabling Serial console)
  4. Securely attach NVME to NVME adapter
  5. Connect NVME adapter to the main board
  6. Securely attach NVME adapter within the Pinebook Pro's case
  7. Screw case back together

Remove the base cover from the Pinebook Pro

Turn the Pinebook Pro over, and remove all screws

Turn the Pinebook Pro back over to reveal the motherboard and interior

Disable booting from eMMC and remove the eMMC storage module

From the factory, the Pinebook Pro will be provided with an eMMC storage module configured to be enabled. During the development of Slackware AArch64, it was found that the life span of these storage modules is short which makes them inappropriate for housing an Operating System. Whilst it's possible to use eMMC with Slackware, this documented installation process does not provide a supported path and the eMMC must be disabled.

Move the eMMC control switch into the **down** position.
It's recommended to remove the eMMC storage module (as can be seen in the image) as it won't be used for Slackware and may become loose over time. It's also recommended to retain the eMMC with the original Linux distribution should you require it at some point in the future. If you prefer to keep the eMMC storage here, it must be disabled.

To remove it, gently lift it up and out with your fingers.

Ensure Sound is enabled

This control switch dictates the usage of the 3.5” audio jack port. However, if you are debugging or developing, you may wish to use the Serial adapter - in which case, set this switch into the 'up' position.

Since this is a laptop, most people will want to enable sound: ensure that the switch is in the 'down' position (as shown in the image)

Assemble the NVME adapter and storage module

Connect the ribbon cable to the NVME adapter.

Insert the NVME storage module into the adapter interface:

Secure the NVME storage module to the adapter with a nut and bolt (ensure that the nut and bolt do not exceed the height of the storage module, otherwise the case won't close!)

Secure the NVME adapter within the Pinebook Pro's case using the three screws:

Connect the NVME adapter ribbon to the Pinebook Pro's motherboard:

Disconnect the battery bypass cable

The battery bypass cable must be disconnected whilst the battery is attached.

Completing the Hardware Setup

The hardware set up is now complete and should look like this:

Screw the Pinebook Pro's case back together

The hardware setup is complete.

Software and Network Environment Setup

In this section, we'll prepare the Linux Host Computer to receive and download the Slackware assets required for the installation.

Downloading the Slackware Linux AArch64 Distribution and Installation Assets

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

Open a shell on the Linux Host Computer.

Prepare a directory to hold and serve the Slackware Distribution

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
Determine where you are within the Host Computer's Filesystem
$ pwd
/home/mozes/slackware
Note the directory location returned - you'll need this later

Installing the Slackware ARM GPG key

The Slackware ARM GPG key will be used to verify the Bootware and Slackware Installation images.

$ curl -sSL https://www.slackware.com/infra/keys/arm/GPG-KEY | gpg --import -

Set the version of Slackware AArch64 to download

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

$ SLKVER=current

Set the 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 Bootware

Note the period/full stop after the rsync commands - this instructs rsync to download to the current directory (it's not punctuation!)

The U-Boot Boot Loader that will be installed onto the SPI flash:

rsync -PavL $SLKSRV/platform/aarch64/bootware/recovery/rk3399/flash-spi-pinebookpro.img.xz .
rsync -PavL $SLKSRV/platform/aarch64/bootware/recovery/rk3399/flash-spi-pinebookpro.img.xz.asc .

The Bootware (recovery/initialisation) images are approximately 400KBytes in size.

Download the Slackware Linux installer for the RK3399 AArch64 platform

rsync -PavL $SLKSRV/platform/aarch64/bootware/installer/slackwareaarch64-${SLKVER}/rk3399_generic.sdimg_latest.img.xz .
rsync -PavL $SLKSRV/platform/aarch64/bootware/installer/slackwareaarch64-${SLKVER}/rk3399_generic.sdimg_latest.img.xz.asc .

The Slackware Installer images are approximately 300MBytes in size.

Download the Slackware tree verification tool

rsync -PavL $SLKSRV/platform/all/scripts .

Download the Slackware AArch64 tree

You will now download the Slackware distribution. This contains all of the software included within Slackware.

rsync \
   --exclude '*/source/*' \
   --delete -Prlvv \
   $SLKSRV/slackwareaarch64-${SLKVER} .

The Slackware distribution is approximately 4.5GBytes in size.

Verify the assets

Verify the digital signature of the verification tool:

gpg --verify-files scripts/slacksigchk.sh.asc

The output will be similar to this. You are looking for 'Good signature from Slackware ARM…'

gpg: assuming signed data in 'scripts/slacksigchk.sh'
gpg: Signature made Wed 24 Nov 2021 06:07:44 PM BST
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
Verify the Bootware and Slackware tree:
chmod 755 scripts/slacksigchk.sh
./scripts/slacksigchk.sh slackwareaarch64-${SLKVER}
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

Write the Initialisation Bootware to the SD Card

Slackware stores the U-Boot Boot Loader firmware within the SPI flash of the Hardware Models that use the RK3399 SoC (including the Pinebook Pro, RockPro64 et al).

In this step, we'll write the Boot Loader firmware to the same Micro SD card that will later be used to contain the Slackware Installer, and subsequently the Slackware OS' /boot partition. If you have multiple Micro SD cards available, you may prefer to use separate SD cards; but this document assumes the availability of a single Micro SD card.

Elevate yourself to root

On your Host Computer, obtain root:

The # prefix indicates that you're using the root user - it's not to be typed in!
$ su -   ## Note the hyphen - it's required
Check what block devices are present

Prior to inserting the Micro SD Card into the USB adapter, we need to see what's already present within the OS so that we can easily locate our Micro SD card:

# lsblk -d
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0 465.8G  0 disk 

As you can see, this Host Computer there is a single storage device - sda.

Now insert the Micro SD card into your USB Card Reader and connect the adapter to a free USB port on the Host Computer.

Run lsblk again:
# lsblk -d
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 465.8G  0 disk
sdc      8:32   1    58G  0 disk
sdd      8:48   1     0B  0 disk

As you can see, sdc is 58GBytes in size. This is the Micro SD card (in this example, it's labeled as '64GB' on the exterior of Micro SD card).

If your Micro SD card has existing partitions, you will not see them surfaced in this list - use lsblk -b to view them.

You'll also observe the presence of sdd - often the USB adapter itself obtains a block device. You can ignore this as it's 0Bytes.

Write the Bootware Initialisation Image to the Micro SD Card

Still as the root user, we'll switch to the home directory into which the the Slackware assets have been downloaded (see earlier steps):

# cd ~mozes/slackware/  ## Replace with the correct directory name 

Write the Bootware Initialisation Image to the device identified as our Micro SD card. You'll then exit the root shell, returning to your usual standard user environment:

All data on this Micro SD Card will be erased! Ensure you have inserted the correct card!
# dd if=/dev/zero of=/dev/sdc count=10 bs=1M    ## Replace /dev/sdc with the correct block device (presented above by the lsblk tool) on your Host Computer
# xzcat flash-spi-pinebookpro.img.xz > /dev/sdc  ## Replace /dev/sdc with the correct block device (presented above by the lsblk tool) on your Host Computer
# sync
Remove the Micro SD card from the Host Computer

Now that we've written the Bootware Initialisation Image to the Micro SD card, you need to remove it from the Host Computer.

Perform a sanity check

Perform a sanity check to ensure that the block device list no longer displays the devices we were using. This type of check is essential to ensure that you don't accidentally write to the wrong block storage device.

# lsblk -d
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0 465.8G  0 disk 

The block devices assigned to the Micro SD card are no longer present, so we are safe to proceed.

Keep the root shell open as we'll be using it again in the subsequent steps.

Installing the Boot Loader to SPI flash

You MUST remove any USB devices (peripherals, storage) before proceeding. This is because when USB peripherals are connected, it has been observed that the flashing process tends to hang.

You need to perform this one-time step to flash a Slackware version of the U-Boot Boot Loader to the SPI flash of the Pinebook Pro.

If you reinstall Slackware you do not need to repeat this step, as long as the Slackware version of U-Boot remains within the SPI flash.
  1. Connect the power to the Pinebook Pro
  2. Disconnect any peripherals (including the Pinebook Pro docking station) from the Pinebook Pro.
  3. Insert the Micro SD card into the Pinebook Pro's Micro SD slot (right hand side, below the 3.5“ audio jack port)
  4. Open the lid
  5. Power on the Pinebook Pro: hold down the Power button (top right of keyboard) for 3 seconds

After a few seconds, you should see a message appearing on the screen - instructing you that the process will begin in 10 seconds' time, and to release the SPI jumper. In most cases you can simply wait until the process begins.

Once the process completes, hold the power button for approximately 8 seconds. The PinebookPro will power off.

Any issues with installing to SPI flash

Even if there's an existing distribution that has installed a Boot Loader to the SPI flash, the Slackware Micro SD card Recovery/Initialisation image should boot and work as described above. However, it depends how the boot loader that's currently occupying the SPI flash is configured - it may not boot the SD card. In which case you'll need to bypass the SPI flash.

Bypass SPI flash - method 1

There is a 'Recovery' button on the Pinebook Pro's main board (requires dissassembling) that will 'mask out' the SPI flash temporarily, thus preventing any Boot Loader stored on the SPI flash from executed.

  1. Insert the Slackware Recovery/Initialisation Micro SD card into the Pinebook Pro's Micro SD slot
  2. Press and hold 'recovery' button.
  3. Quickly press 'reset' button.
  4. Release 'recovery' button after about 3 seconds

If this doesn't work, you may need to try a few times or try alternative methods (see below).

Bypass SPI flash - method 2

This thread on the Slackware ARM LinuxQuestions forum contains instructions to bypass the SPI flash to enable booting the SD Card.

Bypass SPI flash - more information

The Pine64 Wiki provides more information about working with the SPI flash and is the source of the instructions for method 1 above.

Write the Slackware Installer image onto the MicroSD card

Now that the Boot Loader has been installed to the PinebookPro's SPI flash, we will install the Slackware Installer image onto the same MicroSD card.

  • Remove the MicroSD card from the PinebookPro
  • Insert the MicroSD card back into the Host Computer (as in the earlier section)
Run lsblk again:

Now that we have re-inserted the Micro SD Card into the Linux Host Computer, we need to check which block device it has been assigned.

In this guide you'll see that it's the same as previously (which is to be expected, although you must check!)

# lsblk -d
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 465.8G  0 disk
sdc      8:32   1    58G  0 disk
sdd      8:48   1     0B  0 disk

Write the Slackware Installer to the Micro SD card

Enter the directory into which the Slackware assets were downloaded previously:
The # prefix indicates that you're using the root user - it's not to be typed in!
Still as root on your Linux Host Computer:
# cd ~mozes/slackware  ## Replace with the correct directory
# xzcat rk3399_generic.sdimg_latest.img.xz > /dev/sdc ## Replace /dev/sdc with the correct block device
# sync
Remove the MicroSD card from the Host Computer

You may now disconnect the USB adapter from the Host Computer and remove the MicroSD card.

Run lsblk again to confirm that the block device assigned to the Micro SD card is no longer present:

# lsblk -d
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0 465.8G  0 disk 
Write the Slackware Installation Media to the USB flash drive

Now that the Micro SD card (and adapter) has been removed from your Linux Host Computer, we can begin setting up the USB flash drive to receive the Slackware Installation Media.

  • Insert the USB flash drive into the Linux Host Computer
Still as root, list the block devices
# lsblk -d
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0 465.8G  0 disk 
sdb    8:16   1  28.6G  0 disk 

As you can see, the USB flash drive has appeared as sdb and is 28GB in size.

All data will now be erased from this USB flash drive!
Create an ext4 file system on the USB flash drive
# mkfs.ext4 -FL SLKins /dev/sdb ## Use the correct block device for your Host Computer here!
mke2fs 1.46.4 (18-Aug-2021)
[..]
Writing superblocks and filesystem accounting information: done   
If your USB flash drive has existing partitions or file systems on it, you will receive warning messages - this is normal
Mount the USB flash drive
# mount /dev/sdb /mnt/hd # Replace /dev/sdb with the block device assigned to the USB flash drive on your Host Computer
The mount point '/mnt/hd' is a valid mount point for Slackware, but other Linux distributions may require using a different path. If you're using /mnt/hd already, pick a different mount point.
Copy the Slackware Installation Media to the USB flash drive
Remember to change the mount point if you're not using /mnt/hd
Your USB flash drive should have a minimum of 5GB spare capacity to receive the Slackware Installation Media
Your working directory should still be where you downloaded the Slackware assets into (which, following this Installation Guide, is /home/mozes/slackware)
# rsync -Pav slackwareaarch64-* /mnt/hd/ 
Umount the USB flash drive
# umount /mnt/hd
# sync
Logout from the root user
# logout

You no longer require the Host Computer.

Installing Slackware

To proceed, you must have:

  • Assembled the PinebookPro as documented above
  • Connected the Docking station
  • Optionally connected the Ethernet cable, and have a DHCP server serving the network from which the PinebookPro can obtain an IP address (used if you prefer to install over the network and/or obtain time via NTP)
  • Inserted the Micro SD card containing the Slackware Installer into the PinebookPro's MicroSD card slot
Encrypted storage

If you'd like to encrypt your storage, check the Disk Encryption Guide.

Begin installation
Disconnect any USB storage devices that aren't required for the OS installation
Power on the PinebookPro

Press the Power Button for aproximately two seconds

After a few seconds, the you will see the following on screen:

It takes several seconds to load and boot the installer, and it may take several seconds more for any further output to appear on the screen.

The process of obtaining an IP address via DHCP can also delay the ability to interact with the Installer. If you don't have wired Ethernet available, this will add approximately 10 seconds delay to the Installer being available.

Once networking has been setup (or timed out), you will be presented with a prompt.

Press **ENTER**

Set the keymap

Set the date/time

If you have Internet access available, you may wish to sync the date via NTP. If not, you can skip this.

# ntpdate rolex.ripe.net
# hwclock -w

Setup disk partitions

For this installation a basic partitioning scheme will be created.

Partition number Device name Size Purpose
1 /dev/nvme0n1p1 4GB Swap
2 /dev/nvme0n2p2 Rest of storage OS root ('/') partition
/boot will reside on the Micro SD card and is automatically configured by the Slackware Installer

Open fdisk against the /dev/nvme0n1 block device (which will be your primary storage, and in these instructions is the NVME you screwed inside the laptop in the previous section).

fdisk /dev/nvme0n1

Clear an existing partition table: Press 'o' to clear the partition table

Create the Swap partition:

Type 'n' for new partition:

Type 'p' for primary partition type:

Press ENTER for the 'First sector'

Type '+4G' for the 'Last Sector'/size:

Change the partition type to 'Swap'. Type 't' then hex code '82':

Create the partition for the root filesystem ('/'):

Type 'n' for new partition. Press ENTER to accept the defaults - this will create partition 2 as the maximum size available.

Type 'a' to mark the root partition (number 2) as bootable Type '2' to select partition 2.

Type 'p' to print to view the partition table.

Type 'w' to write the partition table:

fdisk will now exit.

Load the Setup menu

Setup Swap partition

Select and format the partition for the OS' root file system

Boot Loader Configuration

The Installer will configure the Boot Loader and the OS' /etc/fstab automatically:

On the ARM platform, the Swap and root file systems are addressed by labels (see above: 'LABEL=') where as on x86/64 it's addressed by a direct reference to the block device (e.g. /dev/sda).

The swap partitions are labeled 'SLKswap<x>', the root file system 'SLKroot', and the /boot partition 'SLKboot'.

The rationale behind this divergence is that on x86 the root file system is typically on a storage bus (SCSI, SATA, ATA), where the physical configuration (which port the storage is connected to) of the storage rarely changes. This can be the case on ARM, but it's generally to a lesser extent and the root file system may be connected to a hot-plug bus such as USB. This lends itself to the risk of device re-ordering across boot cycles (e.g. /dev/sda becomes /dev/sdb), causing boot failure.

Please be aware that the Slackware Installer only labels the swap and root file system. Therefore you are advised to manually label the file systems and modify the OS /etc/fstab accordingly. If you have only a single storage device and don't plan on adding more, you can use the settings that the Slackware Installer configures.

Select Source Media
  • Insert the USB flash drive into USB port of the Pinebook Pro.

Pick option '2 - Install from a Slackware USB stick'

Package Series Selection

You can now choose the package sets to install. The recommendation is to install everything. A full Slackware installation will occupy approximately 15GB.

If you do not plan to use the graphical window manager such as KDE, you should de-select it.

Pick the 'terse' option:

The packages will begin installing:

Configure the Console Settings
This setting can be reset to the default by editing /boot/extlinux/extlinux.conf and removing the 'console=' setting once the OS has booted

If you plan on using the UART/'Serial' console, you should select 'No' here.

If you plan on exclusively the Pinebook Pro's LCD panel, you should pick 'Yes'.

Install the Boot Loader to SPI flash

If this is the first time you have installed Slackware, you must flash the Boot Loader. The initial Boot Loader flash performed earlier in these instructions typically contains an older version of the Boot Loader, where as the version packaged within the Installer contains the latest tested version.

Remove the Slackware Installer from the SD card

The Micro SD card is transformed from being the Slackware Installer into the Slackware OS's /boot partition. At this stage, if the installation has worked for you (at certain points in the Slackware installer you are past the point of no return) you can delete the Installer. However, if something has gone wrong you can reset the PinebookPro and reboot the installer without having to re-deploy the Slackware Installer image from your Linux Host Computer.

Generally you should say 'Yes' here.

You may be tempted to retain the Slackware Installer, but note that the Installer contains Linux Kernel modules for the Kernel that the Installer was originally shipped with. This means that as soon as you upgrade the Slackware Kernel package, the Installer will fail to boot. The option to retain the Installer is present purely because on a number of occasions, this author only realised that the installation was incorrectly performed upon completion, and needed to reinstall. Retaining the Installer avoids the requirement to re-deploy the image to the SD card.
Post Installation Configuration

The Slackware Installer will walk you through the standard Slackware setup. The on-screen instructions will suffice.

Select a Console Font

It's recommended for the RockPro64 and Pinebook Pro that a larger console font is configured.

The recommended font is 'ter-732b.psf'. This is the font used within the Installer.

Continue Post Installation Configuration

Configure GUI Window Manager

This author recommends using XFCE as it's light weight versus KDE.

Continue Post Installation Configuration

Slackware Setup Complete

Disconnect the USB flash drive

You must now physically remove the USB flash drive that contains the Slackware Installation Media.

Choose Power off.

However, if you are planning on setting up RAID or need to customise the Operating System Initial RAM Disk, you should select 'Shell', then power off once ready.

The reason to power off rather than reboot is because upon rebooting, once the Kernel opens the display, the screen becomes corrupt. Powering off between boots is a work-around.
Using the post installation shell

The Slackware OS will be found within '/mnt'. You can use the 'os-initrd-mgr' tool (Video tutorial).

Booting the Slackware OS

The Slackware Installer will have powered off the Pinebook Pro.

Hold down the Pinebook Pro's power button for threee seconds to turn it back on.

After you see the messages from the Boot Loader, the Pinebook Pro's LCD panel will not present any messages for approximately 1 minute. Please wait until the login prompt appears.
If you see vertical lines and green/yellow colours appearing on the screen after the Kernel boots, please hold down the power button for a few seconds to turn it off. This is a known issue that happens from warm boots.
Login to the Slackware OS

You may now login as 'root', using the password you set within the installer.

Post Installation Configuration

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

Initial Time/Date Sync

If Internet access is available to the PineBook Pro, prior to proceeding with any further setup, you may wish to set the time now as a one-off event:

Elevate yourself to root and use ntpdate:

$ su - 
# ntpdate rolex.ripe.net  # or pick your favourite NTP server
# hwclock -w # writes the date to the RTC
# logout

Add a plebeian user

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

This is documented here.

NTP (Network Time Protocol) setup

If your PineBook Pro has continuous Internet access, you may wish to configure it to sync time from an Internet NTP Server.

LCD panel brightness level

The LCD brightness level is controlled statically during boot. By default it'll set the maximum brightness, which is '4000'. The lowest realistically that this author can read is 1000.

To change the brightness level:

As root, edit the Hardware Model run control configuration file:

# vi /etc/rc.d/rc.platform.conf # or substitute 'vi' for your favourite editor

Within that configuration you'll find examples. Uncomment, set accordingly and reboot.

Use a graphical login manager

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

Managing Slackware on the Pinebook Pro

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 x86/64 manual steps are required after upgrading the Kernel packages. In Slackware ARM, you simply upgrade the Kernel packages and 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 ARM Kernel build script to create new packages.

Reducing Boot Time

Slackware ARM 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 250MB, which in some cases can add several 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 -
To have this setting persist across Kernel upgrades, you must upgrade the a/kernel-modules package before a/kernel. If not, it'll revert to the generic OS InitRD until you next reboot. If you are using slackpkg to manage upgrades, this is handled for you.

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

Suspend to RAM

To suspend, in a console its fast to test by running “loginctl suspend”.

The sleep button works. Upon waking up just tap the power button opening and closing the lid does the same.

Using the Serial/UART adapter

If you'd like to use a UART/Serial console, you'll need to adjust the switch that toggles Sound vs UART (you'll find this annotated in earlier sections of this document), and connect the adapter (details are in the Hardware requirements section above).

You can then connect the USB end of the adapter into your Linux Host Computer, and use the following command.

The USB→UART/Serial adapter connects to the Pinebook Pro's headphones socket.
screen -T screen-256color /dev/ttyUSB0 115200
This assumes that there are no other similar adapters occupying /dev/ttyUSB0. If so, you will need to adjust the device name accordingly (e.g. perhaps /dev/ttyUSB1).

Known Limitations / Bugs

Issue Work around Notes
No hibernate None Not supported upstream
No suspend None A patch existed for Linux 5.15. Will keep an eye out for a new one
USB-C peripherals sometimes don't work Turn the USB-C connector 180 degrees and re-insert it Some USB-C peripherals (Network adapters in particular) are only detected when in a particular physical orientation. This may be due to the connector or socket being dirty or containing dust. Ensure everything is clean.
Sound state (despite being saved) doesn't persist across boots None yet This used to work until Linux 5.17. Will look into it

Exploring

Hibernate

The ARM Trusted Firmware firmware does not support the deep sleep / hibernate functions yet. https://github.com/ARM-software/arm-trusted-firmware/search?q=hibernate

We use the Open Source U-boot firmware, with Trusted Firmware - ARM integration.

Hibernation changes for elogin.conf (once upstream support available)

#AllowHibernation=yes
#AllowSuspendThenHibernate=yes
#AllowHybridSleep=yes
If set those to "no"  they will not show up in the menus of xfce and kde.

Slackware Installer:
- The rk3399 helper script is primed to set resume= within extlinux.conf, once support is available.

Resume points to the swap partition that hibernate uses to save the system and reload the system.
https://docs.slackware.com/howtos:slackware_admin:hibernation?s[]=hibernate

There is an option in the logind.conf to set up hybrid sleep, where sleep then hibernation is activated.

https://forum.manjaro.org/t/hibernate-on-pinebook-pro/18045

Boot from NVME - drop requirement for booting from uSD card

The Slackware AArch64 installation boots from the Micro SD card because it's the most portable method (across Hardware Models). However, it'd be ideal if the Pinebook Pro could boot from a partition on the NVME.

This requires mainline U-Boot to support it (no patches!), and some work on the installer to support it. Notes: * Need to considre how the installer handles 'SLKboot' (SD card). Do we need to rename it to SLKinst and handle renaming it again to SLKboot on the PbPro and all other HWMs? Possibly not. Needs more thought

Contributing to the Slackware ARM project

There are a plethora of ARM devices on the market which requires initial R&D and continuous testing. If you'd like to help Slackware support more ARM boards, please check out the documentation explaining how to get involved.

Supporting / Sponsoring the Slackware ARM project

Maintenance of the Slackware ARM port takes not only a lot of time, but also has financial costs such as the on-going use of electricity, Internet hosting and purchasing and maintenance of ARM hardware.

Once you find yourself enjoying using the ARM port of Slackware, please take a few moments to show your appreciation through sponsorship.

 slackwarearm:inst_sa64_rk3399_pinebookpro ()