[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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
slackwarearm:inst_sa64_bcm2711_rpi4 [2023/01/20 09:21 (UTC)] mozesslackwarearm:inst_sa64_bcm2711_rpi4 [2024/03/19 09:33 (UTC)] (current) mozes
Line 3: Line 3:
 ====== Installing Slackware on the Raspberry Pi 4 ====== ====== Installing Slackware on the Raspberry Pi 4 ======
  
- 
-<note warning>The Raspberry Pi's are **only** intended to run the vendor's own Linux distribution. 
- 
-As a consequence, the upstream mainline Linux Kernel in which support for the Raspberry Pi is fragile and prone to breaking without notice.  Slackware uses official upstream repositories/releases and has a no-patch policy.  As such, the recommendation of using the vendor's own Kernel fork is far outside the scope of Slackware. If you are considering purchasing a Raspberry Pi and have not yet done so, heed of this caution and you may wish to consider purchasing one of the other Hardware Models.  Over time the support for the Raspberry Pi will continue to appear in the main stream Kernel, and this message will (hopefully) be removed.</note> 
  
 ^  ^  ^ ^  ^  ^
 | Platform | AArch64/ARM64 |  | Platform | AArch64/ARM64 | 
 | Hardware Model |Raspberry Pi 4 | | Hardware Model |Raspberry Pi 4 |
-| Document Version | 1.01April 2022 |+| Document Version | 1.06Mar 2024 |
 | Author | Stuart Winter <mozes@slackware> | | Author | Stuart Winter <mozes@slackware> |
 | Contributors | Brenton Earl <el0226@slackware>  (R&D for the RPi4 Hardware Model)  | | Contributors | Brenton Earl <el0226@slackware>  (R&D for the RPi4 Hardware Model)  |
-| Acknowledgements | Exaga (guidance with hardware/accessories) | 
  
 +
 +<note warning>At the moment, only the Raspberry Pi 4 is officially supported. Please refrain from attempting to use this on other versions with the expectation that it will function correctly.</note>
  
 ==== Video Tutorial ==== ==== Video Tutorial ====
  
 This tutorial is also available in [[https://www.youtube.com/watch?v=J1fFfBHuRh8|video form]]. This tutorial is also available in [[https://www.youtube.com/watch?v=J1fFfBHuRh8|video form]].
 +
 +<note>The video tutorial demonstrates the original installation approach where the Slackware installation media was separate.  A single Slackware Installer image is provided that contains all of the media, so it's easier than shown in the video.</note>
  
 ==== Help / Support ==== ==== Help / Support ====
Line 27: Line 26:
 ==== Caveats ==== ==== Caveats ====
  
-== Raspberry Pi 3 support == 
- 
-Using the GUI on the Raspberry Pi 3 is not recommended due to the lack of RAM - the screen will typically freeze. 
-It is recommended that the Raspberry Pi 3 is used headless (remote access). 
  
 == Fragility due to upstream support == == Fragility due to upstream support ==
  
-Jan 2023: KDE is crashing on the RPi4We believe this is due to the Kernel. +The support within the proper [[https://kernel.org|Linux Kernel]] is fragile due to the development model of the Raspberry Pi company.  You may need to switch to the RPi Kernel fork for the best experience Instructions on how to do this are included in the post installation section of this document. 
-The same OS works without issue on the other Hardware Models.+
  
 ==== Installation Lifecycle ==== ==== Installation Lifecycle ====
Line 43: Line 38:
   - Acquiring all required hardware   - Acquiring all required hardware
   - Setup of the Raspberry Pi hardware   - Setup of the Raspberry Pi hardware
-  - Downloading the Slackware assets +  - Downloading and Verifying the Slackware assets
-  - Verifying the Slackware assets+
   - Writing the Slackware Installer to the Micro SD card   - Writing the Slackware Installer to the Micro SD card
-  - Writing the Slackware Installation Media to the USB flash drive 
   - Booting the Slackware Installer   - Booting the Slackware Installer
   - Installing Slackware   - Installing Slackware
Line 79: Line 72:
 | [[https://www.amazon.co.uk/gp/product/B06WWLCYC3|USB to SATA adapter]] | - | Required | Many models will work, but this one has been tested on many of this author's ARM hardware. | | | [[https://www.amazon.co.uk/gp/product/B06WWLCYC3|USB to SATA adapter]] | - | Required | Many models will work, but this one has been tested on many of this author's ARM hardware. | |
 | [[https://thepihut.com/products/usb-to-ttl-serial-cable|USB to Serial adapter]] | PL2303 chip.  Other models may work, but this one has been tested. If your model has the option to set voltages, ensure **3volts** is set! | Optional  | A USB to Serial/UART adapter is recommended if you want to access the console remotely, but is unnecessary if you only plan on using an HDMI monitor.  This document covers installing using an HDMI monitor - you can find information about connecting the Serial/UART adapter at the foot of this document| | [[https://thepihut.com/products/usb-to-ttl-serial-cable|USB to Serial adapter]] | PL2303 chip.  Other models may work, but this one has been tested. If your model has the option to set voltages, ensure **3volts** is set! | Optional  | A USB to Serial/UART adapter is recommended if you want to access the console remotely, but is unnecessary if you only plan on using an HDMI monitor.  This document covers installing using an HDMI monitor - you can find information about connecting the Serial/UART adapter at the foot of this document|
-| [[https://www.amazon.co.uk/SanDisk-Ultra-USB-Flash-Drive/dp/B00DQG9OZ2/|USB Flash Drive ('USB stick')]] | 8GB minimum capacity | Required | This will contain the Slackware Installation Media for use during the installation phase only. | +| [[https://www.amazon.co.uk/SanDisk-microSDHC-Adapter-Performance-SDSQUA4-032G-GN6MA/dp/B08GY9NYRM/|Micro SD Card]] | 16GB **minimum capacity**, Class 10 (fast speed) | Required | Initially used to boot the Slackware Installer, and subsequently transformed into Slackware's /boot partition.   |
-| [[https://www.amazon.co.uk/SanDisk-microSDHC-Adapter-Performance-SDSQUA4-032G-GN6MA/dp/B08GY9NYRM/|Micro SD Card]] | 8GB **minimum capacity**, Class 10 (fast speed) | Required | Initially used to boot the Slackware Installer, and subsequently transformed into Slackware's /boot partition.   |+
 | USB keyboard and mouse | Standard peripherals | Required | A USB keyboard and mouse are required for this Slackware installation guide but are not required for the running of the OS.  Slackware can also be installed headless (without a keyboard or monitor) over the Serial/UART or SSH (but this isn't documented). | | USB keyboard and mouse | Standard peripherals | Required | A USB keyboard and mouse are required for this Slackware installation guide but are not required for the running of the OS.  Slackware can also be installed headless (without a keyboard or monitor) over the Serial/UART or SSH (but this isn't documented). |
  
Line 102: Line 94:
 | NVME Storage Module | [[https://www.amazon.co.uk/Kingston-A2000-SA2000M8-500G-NVMe/dp/B07VXCFNVS|Kingston A2000 SSD 250G & 500GB models]]  | | NVME Storage Module | [[https://www.amazon.co.uk/Kingston-A2000-SA2000M8-500G-NVMe/dp/B07VXCFNVS|Kingston A2000 SSD 250G & 500GB models]]  |
 | USB to NVME M.2 adapter & enclosure | [[https://www.amazon.co.uk/LEMORELE-Enclosure-Thunderbolt-Compatible-Tool-Free/dp/B08TWWQ9ZS|LEMORELE M.2 NVMe SSD Enclosure USB C External PCIe B+M/M-Key SSD Caddy 10Gbp UASP USB 3.1 Gen 2 M2]] |  | USB to NVME M.2 adapter & enclosure | [[https://www.amazon.co.uk/LEMORELE-Enclosure-Thunderbolt-Compatible-Tool-Free/dp/B08TWWQ9ZS|LEMORELE M.2 NVMe SSD Enclosure USB C External PCIe B+M/M-Key SSD Caddy 10Gbp UASP USB 3.1 Gen 2 M2]] | 
- 
  
  
Line 110: Line 101:
 The setup documented here (2.5" SSD connected to a USB-to-Serial adapter for power and data) has proven stable for this author. The setup documented here (2.5" SSD connected to a USB-to-Serial adapter for power and data) has proven stable for this author.
  
-It is possible to create a 3rd partition on the Micro SD card ('MMC') which can house the Slackware OS.  However, this is not recommended due to the longevity of this type of storage - particularly if it has high I/O.+It is possible to create a 4th partition on the Micro SD card ('MMC') which can house the Slackware OS.  However, this is not recommended due to the longevity of this type of storage - particularly if it has high I/O. 
 +If you want to install the OS to the MMC card, it's preferable to use the [[https://slackware.uk/slackwarearm/platform/aarch64/bootware/installer/|''bare'' Slackware Installer image]] rather than the standard 'AiO' (All in One) Installer (which is what this Installation guide covers). 
 +Using the ''bare'' Installer means you will need to install over the network or from some locally attached storage. 
  
 === Computing / Network Environment === === Computing / Network Environment ===
Line 116: Line 110:
  
 ^ Item ^ Specification ^ Notes ^ ^ 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 Internetwrite the Slackware Installation media to the USB flash drive and Micro SD card.  |+| Host Computer: an Internet-connected computer running an existing Linux distribution | 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 and to write the Slackware Installation media to the Micro SD card.  |
  
 ===== Hardware Setup ===== ===== Hardware Setup =====
Line 233: Line 227:
 == Installing the Slackware ARM GPG key == == Installing the Slackware ARM GPG key ==
  
-The Slackware ARM GPG key will be used to verify the Bootware and Slackware Installation images.+The Slackware ARM GPG key will be used to verify your downloads.
  
 <code> <code>
 $ curl -sSL https://www.slackware.com/infra/keys/arm/GPG-KEY | gpg --import - $ curl -sSL https://www.slackware.com/infra/keys/arm/GPG-KEY | gpg --import -
 </code> </code>
 +
 +== Set the model of Raspberry Pi ==
 +
 +<note>The Raspberry Pi Slackware Installer images are identical, so if you have both the RPi3 & 4 you should only download one image.  If this changes, this message will be removed.</note>
 +
 +For the Raspberry Pi 3:
 +<code>$ HWM=bcm2837_rpi3</code>
 +
 +For the Raspberry Pi 4:
 +<code>$ HWM=bcm2711_rpi4</code>
  
 == Set the version of Slackware AArch64 to download == == Set the version of Slackware AArch64 to download ==
Line 246: Line 250:
 </code> </code>
  
-== Set the distribution server ==+== Set the Internet media distribution server ==
  
 If you are using a mirror server rather than the master Slackware ARM server, set it here. If you are using a mirror server rather than the master Slackware ARM server, set it here.
Line 255: Line 259:
 </code> </code>
  
 +== Download the Slackware Linux Installer ==
  
-== Download the Slackware Linux installer for the BCM2711 AArch64 platform == 
 <code> <code>
-rsync -PavL $SLKSRV/platform/aarch64/bootware/installer/slackwareaarch64-${SLKVER}/bcm2711_rpi4.sdimg_latest.img.xz . +rsync -PavL $SLKSRV/platform/aarch64/bootware/installer-aio/slackwareaarch64-${SLKVER}/${HWM}.img.xz.asc slkaio.img.xz.asc 
-rsync -PavL $SLKSRV/platform/aarch64/bootware/installer/slackwareaarch64-${SLKVER}/bcm2711_rpi4.sdimg_latest.img.xz.asc .+rsync -PavL $SLKSRV/platform/aarch64/bootware/installer-aio/slackwareaarch64-${SLKVER}/${HWM}.img.xz slkaio.img.xz
 </code> </code>
  
-//The Slackware Installer images are approximately 300MBytes in size.//+//The Slackware Installer images are approximately 5 GBytes in size.//
  
-== Download the Slackware tree verification tool == +== Verify the Slackware Installer image ==
-<code> +
-rsync -PavL $SLKSRV/platform/all/scripts . +
-</code> +
- +
-== Download the Slackware AArch64 tree ==+
  
-You will now download the Slackware distribution. This contains all of the software included within Slackware.+Verify the digital signature of the Slackware Installer:
  
 <code> <code>
-rsync \ +$ gpg --verify slkaio.img.xz.asc
-   --exclude '*/source/*'+
-   --delete -Prlvv \ +
-   $SLKSRV/slackwareaarch64-${SLKVER} .+
 </code> </code>
  
-//The Slackware distribution is approximately 4.5GBytes in size.//+<note>As the images are large, verification may take a minute or two.</note>
  
- 
-== Verify the assets == 
- 
-Verify the digital signature of the verification tool: 
-<code> 
-gpg --verify-files scripts/slacksigchk.sh.asc 
-</code> 
  
 The output will be similar to this.  You are looking for 'Good signature from Slackware ARM...' The output will be similar to this.  You are looking for 'Good signature from Slackware ARM...'
  
 <code> <code>
-gpg: assuming signed data in 'scripts/slacksigchk.sh'+gpg: assuming signed data in `slkaio.img.xz'
 gpg: Signature made Wed 24 Nov 2021 06:07:44 PM BST gpg: Signature made Wed 24 Nov 2021 06:07:44 PM BST
 gpg:                using RSA key F7ABB8691623FC33 gpg:                using RSA key F7ABB8691623FC33
Line 302: Line 291:
 </code> </code>
  
- 
-Verify the Bootware and Slackware tree: 
- 
-<code> 
-chmod 755 scripts/slacksigchk.sh 
-./scripts/slacksigchk.sh slackwareaarch64-${SLKVER} 
-</code> 
  
 <note warning>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 [[https://www.linuxquestions.org/questions/slackware-arm-108/|Slackware ARM forum]]</note> <note warning>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 [[https://www.linuxquestions.org/questions/slackware-arm-108/|Slackware ARM forum]]</note>
  
  
-===== Writing the Slackware assets to the Micro SD and USB stick =====+===== Writing the Slackware assets to the Micro SD =====
  
 === Elevate yourself to root === === Elevate yourself to root ===
Line 324: Line 306:
 $ su -   ## Note the hyphen - it's required $ su -   ## Note the hyphen - it's required
 </code> </code>
- 
  
  
Line 353: Line 334:
 </code> </code>
  
-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).+As you can see, //sdc// is 58 GBytes 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. If your Micro SD card has existing partitions, you will not see them surfaced in this list - use //lsblk -b// to view them.
Line 364: Line 345:
 <code> <code>
 # cd ~mozes/slackware ## Substitute with the path you noted earlier  # cd ~mozes/slackware ## Substitute with the path you noted earlier 
-# xzcat bcm2711_rpi4.sdimg_latest.img.xz /dev/sdc ## Substitute/dev/sdc with the correct block device+# xzcat slkaio.img.xz | dd status=progress bs=4M iflag=fullblock of=/dev/XXX ## Substitute/dev/XXX with the correct block device
 # sync # sync
 </code> </code>
Line 372: Line 353:
 You may now disconnect the USB adapter/remove the Micro SD card from the Host Computer. You may now disconnect the USB adapter/remove the Micro SD card from the Host Computer.
  
-=== Write the Slackware Installation Media to the USB stick === 
- 
-Now that the Micro SD card (and adapter) has been removed from your Linux Host Computer, we can begin setting up the USB stick to receive the Slackware Installation Media. 
- 
-== Insert the USB stick into the Linux Host Computer == 
- 
-Still as root, type //lsblk -d// 
-<code> 
-# lsblk -d 
-NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS 
-sda    8:0    0 465.8G  0 disk  
-sdb    8:16    28.6G  0 disk  
-</code> 
- 
-As you can see, the USB stick has appeared as //sdb// and is 28GB in size. 
- 
-<note warning>All data will now be erased from this USB stick!</note> 
- 
-== Create an ext4 file system on the USB stick == 
- 
-<code> 
-# mkfs.ext4 -FL SLKins /dev/sdb ## Substitute /dev/sdb with the appropriate one for your Host Computer 
-mke2fs 1.46.4 (18-Aug-2021) 
-[..] 
-Writing superblocks and filesystem accounting information: done    
-</code> 
- 
-<note tip>If your USB stick has existing partitions or file systems on it, you will receive warning messages - this is normal</note> 
- 
-== Mount the USB stick == 
- 
-<note tip>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.</note> 
- 
-<code> 
-# mount /dev/sdb /mnt/hd  
-</code> 
- 
-== Copy the Slackware Installation Media to the USB stick == 
- 
-<note important>Remember to change the mount point if you're not using /mnt/hd</note> 
- 
-<note tip>Your working directory should still be where you downloaded the Slackware assets into (which, following this Installation Guide, is /home/mozes/slackware)</note> 
-<code> 
-# rsync -Pav slackwareaarch64-* /mnt/hd/  
-</code> 
- 
-== Umount the USB stick == 
- 
-<code> 
-# umount /mnt/hd 
-# sync 
-</code> 
  
 == Logout from the root user == == Logout from the root user ==
Line 432: Line 361:
 # logout # logout
 </code> </code>
- 
  
 ===== Installing Slackware ===== ===== Installing Slackware =====
Line 448: Line 376:
 If you'd like to encrypt your storage, check the [[slackwarearm:disk_encryption_slackware_aarch64|Disk Encryption Guide]]. If you'd like to encrypt your storage, check the [[slackwarearm:disk_encryption_slackware_aarch64|Disk Encryption Guide]].
  
-== Begin installation ==+=== Begin installation ===
  
 <note warning> Disconnect any USB storage devices that aren't required for the OS installation</note>  <note warning> Disconnect any USB storage devices that aren't required for the OS installation</note> 
 +
 +
 +<note important>Due to bugs in the upstream Linux Kernel, the screen may blank every few seconds. This is normal and can be resolved by switching to the Raspberry PI Kernel fork (detailed later in this guide). </note>
 +
 +
  
 == Power on the Raspberry Pi 4 == == Power on the Raspberry Pi 4 ==
Line 474: Line 407:
  
 {{:slackwarearm:04-setkeymap_c.jpg?400|}} {{:slackwarearm:04-setkeymap_c.jpg?400|}}
 +
 +
 +== Font size ==
 +
 +If you're using a smaller monitor, such as one with a screen size less than 20 inches, it may be necessary to adjust the console font size to ensure that menus and other interface elements fit correctly on the screen.  If so, type this into the shell prompt:
 +
 +<code>setfont ter-v18n</code>
  
 == Set the date/time == == Set the date/time ==
Line 604: Line 544:
 == Select Source Media == == Select Source Media ==
  
-  * Insert the USB stick into one of the blue USB3 ports of the Raspberry Pi.+{{:slackwarearm:28-source-aio.png?400|}}
  
-{{:slackwarearm:28-sourcemediaselection-usbstick.jpg?400|}}+Press ENTER to say 'Yes'.
  
-Pick option //'2 - Install from a Slackware USB stick'//+If you would like to install from an alternate media source, pick 'No' and you will be presented with options to install over NFS, USB and HTTP amongst others.
  
-{{:slackwarearm:28-sourcemediaselection-usbstick-confirm.jpg?400|}} +Ordinarily you should always say 'Yes' unless you've been directed to do otherwise.
- +
-{{:slackwarearm:28-sourcemediaselection-usbstick-scanning.jpg?400|}} +
- +
-{{:slackwarearm:28-sourcemediaselection-usbstick-found.jpg?400|}}+
  
 == Package Series Selection == == Package Series Selection ==
Line 638: Line 574:
 If you plan on exclusively using an HDMI monitor, you should pick 'Yes'. If you plan on exclusively using an HDMI monitor, you should pick 'Yes'.
  
-<note tip>This setting can be reset to the default by editing /boot/extlinux/extlinux.conf and removing the 'console=' setting once the OS has booted</note>+<note tip>This setting can be reset to the default by editing /boot/extlinux/extlinux.conf and removing the 'console=' setting once the OS has booted.</note>
  
 {{:slackwarearm:36-consolebootsettings-rpi.jpg?400|}} {{:slackwarearm:36-consolebootsettings-rpi.jpg?400|}}
Line 700: Line 636:
  
 == Configure GUI Window Manager == == Configure GUI Window Manager ==
 +
  
 This author recommends using XFCE as it's light weight versus KDE. This author recommends using XFCE as it's light weight versus KDE.
 +
  
 {{:slackwarearm:56-ChooseWindowManager-xfce-selected.jpg?400|}} {{:slackwarearm:56-ChooseWindowManager-xfce-selected.jpg?400|}}
Line 717: Line 655:
 {{:slackwarearm:60-Setupmenu-EXITselected.jpg?400|}} {{:slackwarearm:60-Setupmenu-EXITselected.jpg?400|}}
  
-=== Disconnect the USB stick === 
- 
-{{:slackwarearm:61-unplugslackusbinstallmedia.jpg?400|}} 
- 
-You must now physically remove the USB stick that contains the Slackware Installation Media. 
  
 === Reboot into the Slackware OS === === Reboot into the Slackware OS ===
Line 763: Line 696:
 # logout # logout
 </code> </code>
 +
 +
 +=== NTP (Network Time Protocol) setup ===
 +
 +Even if your Raspberry Pi has an RTC (as documented in this guide), you may wish to configure it to [[https://docs.slackware.com/howtos:network_services:ntp|set time from an Internet NTP Server]].  The Raspberry Pi requires continuous Internet access for this to function.
  
  
Line 771: Line 709:
 This is documented [[https://www.slackbook.org/html/essential-sysadmin.html|here]]. This is documented [[https://www.slackbook.org/html/essential-sysadmin.html|here]].
  
-=== NTP (Network Time Protocol) setup ===+=== KDE fixups ===
  
-Even if your Raspberry Pi has an RTC (as documented in this guide), you may wish to configure it to [[https://docs.slackware.com/howtos:network_services:ntp|set time from an Internet NTP Server]].  The Raspberry Pi requires continuous Internet access for this to function.+If you are using KDE, you need to first adjust a setting. 
 + 
 +As your plebian user, **prior** to loading KDE, run this command. 
 + 
 +<note tip>This will disable the //Compositing// feature.  This is required when using the mainline Linux Kernel (as Slackware does).</note> 
 + 
 + 
 +<code> 
 +kwriteconfig5 --file kwinrc --group Compositing --key Enabled false 
 +</code> 
 + 
 +You may now start KDE.
  
  
Line 785: Line 734:
 reboot reboot
 </code> </code>
-===== Managing Slackware on the Raspberry Pi ===== 
  
-=== Keeping the Slackware OS up to date ===+ 
 + 
 +====== Managing Slackware on the Raspberry Pi ====== 
 + 
 +===== Keeping the Slackware OS up to date =====
  
 One of the preferred tools to keep your system up to date is [[slackware:slackpkg|slackpkg]]. One of the preferred tools to keep your system up to date is [[slackware:slackpkg|slackpkg]].
  
  
-<note tip>**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.</note>+<note tip>**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. If you make customisations to the OS InitRD (see below) these will automatically be re-incorporated during the upgrade process.</note>
  
-=== Loading Additional Linux Kernel Modules at Boot Time ===+ 
 + 
 +===== 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. 
 + 
 +<code> 
 +/etc/rc.d/rc.modules.local 
 +</code> 
 + 
 +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. 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).+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. 
 + 
 +<note important>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.</note>
  
 To load Kernel modules during the early boot sequence, read: To load Kernel modules during the early boot sequence, read:
Line 804: Line 772:
 </code> </code>
  
-As root, the easiest way is to create+As root, the easiest way to begin is by renaming the example script: 
 <code> <code>
 mv /boot/local/load_kernel_modules.post.sample /boot/local/load_kernel_modules.post mv /boot/local/load_kernel_modules.post.sample /boot/local/load_kernel_modules.post
 </code> </code>
  
-Then add the appropriate module loading commands to: /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. You can also add shell code here to initialise a peripheral - writing something to the peripheral's Kernel interface, for example.
  
-=== Customising the Slackware Linux Kernel ===+ 
 +===== Slackware repository partition ===== 
 + 
 +The Slackware Installer image contains a type ''ext4'' partition labeled ''SLKins_aio-pkgs'' from which the packages are installed.   
 + 
 +<code> 
 +root@slackware:~# mount LABEL=SLKins_aio-pkgs /mnt/zip 
 +root@slackware:~# cat /mnt/zip/README.txt  
 +This file system contains the Slackware repository that is used during the 
 +installation of Slackware. 
 + 
 +Once you've booted into your OS you can delete or change this partition if you 
 +wish, or perhaps you might like to retain it for future reference. 
 + 
 +root@slackware:~# 
 +</code> 
 + 
 +<note tip>Most users simply leave the partition alone, as it causes no issues.</note> 
 + 
 +===== Customising the Slackware Linux Kernel =====
  
 If you'd like to customise the Linux Kernel, the easiest way is to follow the [[slackwarearm:cstmz_kernel|HOWTO]] guide and use the Slackware ARM Kernel build script to create new packages. If you'd like to customise the Linux Kernel, the easiest way is to follow the [[slackwarearm:cstmz_kernel|HOWTO]] guide and use the Slackware ARM Kernel build script to create new packages.
Line 819: Line 807:
  
  
-=== Reducing Boot Time ===+===== 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. 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.
Line 848: Line 836:
  
  
-=== Managing the Raspberry Pi Firmware ===+===== Managing the Raspberry Pi Firmware =====
  
-<note warning>Do not use the 'rpi-update' script (found in other distributions) - this is unnecessary and is incompatible with Slackware.</note>+<note warning>Do not use the ''rpi-update'' script (found in other distributions) - this is unnecessary and is incompatible with Slackware.</note>
  
 The Raspberry Pi firmware is managed by the Slackware packages.  The Raspberry Pi firmware is managed by the Slackware packages. 
  
-== Bootware ==+=== Bootware ===
  
 The Raspberry Pi boots from a FAT partition on the Micro SD card. The Raspberry Pi boots from a FAT partition on the Micro SD card.
 This partition contains the closed-source proprietary boot loader, firmware and various other assets it requires. This partition contains the closed-source proprietary boot loader, firmware and various other assets it requires.
-It is mounted within the Slackware OS under /boot/platform/hwm_bw (on other distributions these files reside within /boot).+It is mounted within the Slackware OS under ''/boot/platform/hwm_bw'' (on other distributions these files reside within /boot).
  
-These assets are provided and managed by the Slackware package 'a/hwm-bw-raspberrypi'.+These assets are provided and managed by the Slackware package ''a/hwm-bw-raspberrypi''.
  
 <note tip>Simply upgrading to the latest available Slackware packages will update this firmware.</note> <note tip>Simply upgrading to the latest available Slackware packages will update this firmware.</note>
  
  
-== Firmware for the EEPROM ==+=== Firmware for the EEPROM ===
  
-The Slackware package 'a/hwm-bw-raspberrypi' contains the available firmware that can be programmed to the Raspberry Pi's EEPROM.+The Slackware package ''a/hwm-bw-raspberrypi'' contains the available firmware that can be programmed to the Raspberry Pi's EEPROM.
  
-You also need to have the 'a/rpi-userland' package installed.+You also need to have the ''a/rpi-userland'' package installed.
  
 <note tip>This firmware update requires manual action - see below</note> <note tip>This firmware update requires manual action - see below</note>
Line 895: Line 883:
 <note tip>The EEPROM tool configuration file is: ''/etc/rpi-eeprom-update'' By default we're using firmware from the "critical" (most stable and well-tested) release channel, but you can change it within that configuration file.</note> <note tip>The EEPROM tool configuration file is: ''/etc/rpi-eeprom-update'' By default we're using firmware from the "critical" (most stable and well-tested) release channel, but you can change it within that configuration file.</note>
  
-== Raspberry Pi SoC/IP Core Firmware ==+=== Raspberry Pi SoC/IP Core Firmware ===
  
-The firmware for the peripherals on the Raspberry Pi Hardware Models is contained within the Slackware 'a/kernel-firmware' package.+The firmware for the peripherals on the Raspberry Pi Hardware Models is contained within the Slackware ''a/kernel-firmware'' package.
  
 <note tip>Simply upgrading to the latest available Slackware packages will update this firmware.</note> <note tip>Simply upgrading to the latest available Slackware packages will update this firmware.</note>
  
-=== Using Device Tree Overlays ===+===== Using Device Tree Overlays =====
  
 [[https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README|Device Tree Overlays]] can be configured within the Raspberry Pi's Native Boot Loader configuration file: ''/boot/platform/hwm_bw/config.txt'' [[https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README|Device Tree Overlays]] can be configured within the Raspberry Pi's Native Boot Loader configuration file: ''/boot/platform/hwm_bw/config.txt''
Line 907: Line 895:
  
 <note tip>Note: The Raspberry Pi's Native Boot Loader configuration is outside of the management of the Slackware OS so you need not be concerned with any automatic modifications.</note> <note tip>Note: The Raspberry Pi's Native Boot Loader configuration is outside of the management of the Slackware OS so you need not be concerned with any automatic modifications.</note>
 +
 +=== Raspberry Pi 3: Enabling Blue Tooth ===
 +
 +<note>This does **not apply** to Raspberry Pi 4.</note>
 +
 +The Raspberry Pi 3 requires that the serial connection be disabled in order to use Blue Tooth.
 +
 +To do this you need to edit one setting:
 +
 +== Elevate yourself to 'root' ==
 +
 +<code>$ su -</code>
 +
 +== Configure the UART setting ==
 +
 +<code>
 +$ nano /boot/config.txt
 +</code>
 +
 +Find the line: ''enable_uart=1''
 +
 +Change it to: ''enable_uart=0''
 +
 +Save the file and reboot.
 +
 +===== Switching to the Raspberry Pi Kernel fork =====
 +
 +The Raspberry Pi's are only intended to run the vendor's own Linux distribution, or to run as an 'Appliance' using the Raspberry Pi Linux Kernel fork.
 +
 +As a consequence, the upstream mainline Linux Kernel in which support for the Raspberry Pi is fragile and prone to breaking without notice. Slackware uses official upstream repositories/releases and has a no-patch policy. As such, the recommendation of using the vendor's own Kernel fork is far outside the scope of Slackware.
 +
 +Over time the fixes and new features for the Raspberry Pi will continue to appear in the main stream Kernel.
 +However, if you are facing instability or need some specific feature that isn't yet available in the mainline official Linux Kernel, Slackware [[slackwarearm:cstmz_kernel_rpi|provides replacement Kernel packages]] that are built from the Raspberry Pi's Linux Kernel fork.
 +
 +<note>Switching to the Raspberry Pi Kernel fork packages is **not** a recommendation, just an option for users who face instability.</note>
 +
 +
 +===== 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 [[slackwarearm:sft-repos|use the build scripts from SlackBuilds.org]].
 +
  
  
Line 935: Line 966:
 Once wired up, connect the USB end of the adapter into your Linux Host Computer, and use the following command. Once wired up, connect the USB end of the adapter into your Linux Host Computer, and use the following command.
  
-<note tip>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).</note>+<note tip>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'').</note>
  
 <code> <code>
Line 946: Line 977:
  
 ^  Issue    ^  Work around   ^ Notes ^ ^  Issue    ^  Work around   ^ Notes ^
-Poor X11 performance  |   None presently | [[https://github.com/raspberrypi/firmware/issues/1688#issuecomment-1022254361|Bug report]]Presently the required drivers ('VC4') is not in the mainline Linux Kernel.  Will keep track upstream. |+General fragility/instability | [[slackwarearm:cstmz_kernel_rpi|Transition to the Raspberry Pi Kernel fork packages]]  |  |
  
 ===== Contributing to the Slackware ARM project ===== ===== Contributing to the Slackware ARM project =====
 slackwarearm:inst_sa64_bcm2711_rpi4 ()