[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!


May 2021 - work in progress

Exposition: RockPro64 - Direct Integration into Slackware AArch64

This exposition also covers Slackware ARM (32bit ARMv7), although at present (May 2021) AArch64 is wider ranging with regard to the plugin development model. Coverage of Hardware Model Direct Integration ARM will be arranged at a later date.

In general, the new or changed assets (scripts, config files, etc.) have extensive documentation that provides purpose and context, and the code is annotated where appropriate. As such, this exposition document acts more as an index.

Bootware

The boot loader employed on the RockPro64 and PineBook Pro is U-Boot.

Trusted Firmware-A (ARM Trusted Firmware)

The ARM Trusted Firmware is embedded within the supplied U-Boot loader, and aren't used by the end-user directly. However, some platforms require the Trusted Firmware to boot a Kernel.

The single build script is used to produce the trusted firmware assets for all supported Hardware Models.

Asset(s) Description
ATF binariesATF for RK3399
Build script Builds the Trusted Firmware for supported Hardware Models

U-Boot Boot Loader

U-Boot configured to boot from SPI Flash

U-Boot configured to boot from SD Card

Built and available but not used for either the Operating System Installation nor Operating System Proper. The image can be written to an SD Card as a header and booted, but U-Boot would fail to boot sometimes after changes to the /boot filesystem, so it was unsuitable as a solution.

Boot Media

* OS and Installer Bootware for SD cards

Slackware Operating System

Kernel

Kernel Configuration

All Hardware Models are supported by a single generic Kernel.
Package Series Package Asset Src
k kernel-source configs/config-armv8 Slackware AArch64 generic Kernel configuration
Change Management Process
Email the new Kernel configuration to the Slackware ARM devel mailing list with a summary of what the changes were for.

Kernel Patches

Generally once a set of patches are available for a Hardware Model, they will continue to apply to the particular Linux Kernel release that they were developed against. In this author's experience, unless the OS becomes unstable as a result of any of that patch set, that patch set can remain for many months without maintenance. It is not expected that Hardware Model Custodians are continually providing patches for the same Kernel major release. If it's an absolute requirement to continually update the patch set, then this Hardware Model is not a suitable candidate for Direct Integration support within Slackware ARM/AArch64 (although it certainly may become one at a later date once the support has matured).
Change Management Process
Provide the origin of the patch set (one or more URLs - https, git, etc.) and they will be retrieved from there.

Operating System Initial RAM Disk ('OS Initrd')

Kernel Module Loader

The Kernel Module Loader is a shared resource with the Slackware Installer. The assets are stored within the Kernel source directory.

The Kernel Module Loader is responsible for loading software drivers (in the form of Kernel Modules) for a variety of common hardware, plus hardware for specific Hardware Models. The goal of the Kernel Module Loader is to load just enough drivers to access the storage upon which the Operating System resides, at which point the boot process can transition to loading the Operating System, which provides a far greater array of hardware support than is required within the early stages of booting Linux and the Slackware OS.

Each Hardware Model typically requires some specific software drivers to light up the hardware. The RockPro64's examples act as templates for all Hardware Models.

Asset Description
k/SlkOS-initrd-overlay/load_kernel_modules.scr/platform/aarch64/rk3399Kernel Module Configuration script for RK3399 Hardware Models (including RockPro64, PineBook Pro)
For the settings, view the script directly (see the table above)
Change Management Process
Email the new configuration to the Slackware ARM devel mailing list, or provide a URL from which it may be obtained.

Hardware Model Firmware

Package Series Package Asset Src
a kernel-firmware platform/aarch64/rk3399/rk3399 Firmware packaging script helper
platform/aarch64/rk3399/get-firmware.sh Script to retrieve firmware assets
platform/aarch64/rk3399/assets/* Firmware assets
Change Management Process
Provide the origin of the patch set (one or more URLs - https, git, etc.) and they will be retrieved from there.
Licences must be included

Serial Console System Login

This is a hard requirement

To enable a TTY that presents a OS login prompt, which enables system access via the Serial adapter. All Hardware Models must support this.

Package Series Package Asset changed Src
a sysvinit-scripts /install/doinst.sh Install script additions

The additions script has inline documentation.

Change Management Process
This is a simple script and should not be made more complex, because this code typically never changes, thus modularising it serves no utility. Please email a diff to the Slackware ARM devel mailing list and it will be applied

Local Console (HDMI video, USB Keyboard / Mouse )

Console Video Display

Set within the Kernel Module Loader. Variable name..

X11/Xorg Window System

Uses existing fbturbo driver package. No changes required.

Slackware Installer

Automatic Handling of the OS /boot Partition

/usr/lib/setup/armedslack-SeTpartitions

Installing the Boot Loader onto SPI Flash

/usr/lib/setup/armedslack-spi-flash

Disabling Filesystem Checks

If the Hardware Model does not have a battery-backed RTC (Real Time Clock), the Hardware Model will boot with a date that passed many years ago (in some cases the year will be 1970, which is the Epoch of UNIX). The affect of this is such that the filesystem checks will run every single time the system boots, because the last mount time will be significantly different from present date (assuming that the system time was corrected (usually via an NTP time sync) at boot).

Hardware Model Status
RockPro64 Not required

Should the Hardware Model not have an RTC, there is a change to make within the Slackware Installer. /usr/lib/setup/armedslack-nofscheck

Installation Documentation

* board support documentation and YT video url * board-specific documentation - docs.slackware.com * devel list - explanation. Not to develop Slackware, but for develpoment changes for ARM/AArch64 specifically. If the ARM/AArch64 build scripts have bugs or could be adjusted to better support ARM (e.g. with a configuration option to improve performance), subscribe to the list if not alreadt, and send the suggestion here. * management

 slackwarearm:development_di_rk3399 ()