[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.
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
slackwarearm:inst_sa64_bcm2711_rpi4 [2023/01/20 09:22 (UTC)] – mozes | slackwarearm:inst_sa64_bcm2711_rpi4 [2024/03/11 16:20 (UTC)] – mozes | ||
---|---|---|---|
Line 3: | Line 3: | ||
====== Installing Slackware on the Raspberry Pi 4 ====== | ====== Installing Slackware on the Raspberry Pi 4 ====== | ||
- | |||
- | <note warning> | ||
- | |||
- | As a consequence, | ||
- | |||
- | 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. | ||
^ ^ ^ | ^ ^ ^ | ||
| Platform | AArch64/ | | Platform | AArch64/ | ||
| Hardware Model |Raspberry Pi 4 | | | Hardware Model |Raspberry Pi 4 | | ||
- | | Document Version | 1.01, April 2022 | | + | | Document Version | 1.06, Mar 2024 | |
| Author | Stuart Winter < | | Author | Stuart Winter < | ||
| Contributors | Brenton Earl < | | Contributors | Brenton Earl < | ||
| Acknowledgements | Exaga (guidance with hardware/ | | Acknowledgements | Exaga (guidance with hardware/ | ||
+ | |||
+ | <note warning> | ||
==== Video Tutorial ==== | ==== Video Tutorial ==== | ||
This tutorial is also available in [[https:// | This tutorial is also available in [[https:// | ||
+ | |||
+ | < | ||
==== Help / Support ==== | ==== Help / Support ==== | ||
Line 29: | Line 27: | ||
==== 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 RPi4. We believe this is due to the Kernel. | + | The support within |
- | The same OS works without issue on the other Hardware Models. | + | |
==== Installation Lifecycle ==== | ==== Installation Lifecycle ==== | ||
Line 45: | Line 39: | ||
- Acquiring all required hardware | - Acquiring all required hardware | ||
- Setup of the Raspberry Pi hardware | - Setup of the Raspberry Pi hardware | ||
- | - Downloading | + | - Downloading |
- | - 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 81: | Line 73: | ||
| [[https:// | | [[https:// | ||
| [[https:// | | [[https:// | ||
- | | [[https:// | + | | [[https:// |
- | | [[https:// | + | |
| 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 104: | Line 95: | ||
| NVME Storage Module | [[https:// | | NVME Storage Module | [[https:// | ||
| USB to NVME M.2 adapter & enclosure | [[https:// | | USB to NVME M.2 adapter & enclosure | [[https:// | ||
- | |||
Line 112: | Line 102: | ||
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 (' | + | It is possible to create a 4th partition on the Micro SD card (' |
+ | If you want to install the OS to the MMC card, it's preferable to use the [[https:// | ||
+ | Using the '' | ||
=== Computing / Network Environment === | === Computing / Network Environment === | ||
Line 118: | Line 111: | ||
^ 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. | + | | 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. |
===== Hardware Setup ===== | ===== Hardware Setup ===== | ||
Line 235: | Line 228: | ||
== Installing the Slackware ARM GPG key == | == Installing the Slackware ARM GPG key == | ||
- | The Slackware ARM GPG key will be used to verify | + | The Slackware ARM GPG key will be used to verify |
< | < | ||
$ curl -sSL https:// | $ curl -sSL https:// | ||
</ | </ | ||
+ | |||
+ | == Set the model of Raspberry Pi == | ||
+ | |||
+ | < | ||
+ | |||
+ | For the Raspberry Pi 3: | ||
+ | < | ||
+ | |||
+ | For the Raspberry Pi 4: | ||
+ | < | ||
== Set the version of Slackware AArch64 to download == | == Set the version of Slackware AArch64 to download == | ||
Line 248: | Line 251: | ||
</ | </ | ||
- | == 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 257: | Line 260: | ||
</ | </ | ||
+ | == Download the Slackware Linux Installer == | ||
- | == Download the Slackware Linux installer for the BCM2711 AArch64 platform == | ||
< | < | ||
- | rsync -PavL $SLKSRV/ | + | $ rsync -PavL $SLKSRV/ |
- | rsync -PavL $SLKSRV/ | + | $ rsync -PavL $SLKSRV/ |
</ | </ | ||
- | //The Slackware Installer images are approximately | + | //The Slackware Installer images are approximately |
- | == Download | + | == Verify |
- | < | + | |
- | rsync -PavL $SLKSRV/ | + | |
- | </ | + | |
- | + | ||
- | == Download the Slackware AArch64 tree == | + | |
- | You will now download | + | Verify |
< | < | ||
- | rsync \ | + | $ gpg --verify slkaio.img.xz.asc |
- | --exclude ' | + | |
- | | + | |
- | | + | |
</ | </ | ||
- | //The Slackware distribution is approximately 4.5GBytes in size.// | + | < |
- | |||
- | == Verify the assets == | ||
- | |||
- | Verify the digital signature of the verification tool: | ||
- | < | ||
- | gpg --verify-files scripts/ | ||
- | </ | ||
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...' | ||
< | < | ||
- | gpg: assuming signed data in ' | + | 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 304: | Line 292: | ||
</ | </ | ||
- | |||
- | Verify the Bootware and Slackware tree: | ||
- | |||
- | < | ||
- | chmod 755 scripts/ | ||
- | ./ | ||
- | </ | ||
<note warning> | <note warning> | ||
- | ===== 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 326: | Line 307: | ||
$ su - ## Note the hyphen - it's required | $ su - ## Note the hyphen - it's required | ||
</ | </ | ||
- | |||
Line 355: | Line 335: | ||
</ | </ | ||
- | As you can see, //sdc// is 58GBytes | + | As you can see, //sdc// is 58 GBytes |
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 366: | Line 346: | ||
< | < | ||
# cd ~mozes/ | # cd ~mozes/ | ||
- | # xzcat bcm2711_rpi4.sdimg_latest.img.xz | + | # xzcat slkaio.img.xz |
# sync | # sync | ||
</ | </ | ||
Line 374: | Line 354: | ||
You may now disconnect the USB adapter/ | You may now disconnect the USB adapter/ | ||
- | === 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// | ||
- | < | ||
- | # lsblk -d | ||
- | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS | ||
- | sda 8:0 0 465.8G | ||
- | sdb 8:16 | ||
- | </ | ||
- | |||
- | As you can see, the USB stick has appeared as //sdb// and is 28GB in size. | ||
- | |||
- | <note warning> | ||
- | |||
- | == Create an ext4 file system on the USB stick == | ||
- | |||
- | < | ||
- | # 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: | ||
- | </ | ||
- | |||
- | <note tip>If your USB stick has existing partitions or file systems on it, you will receive warning messages - this is normal</ | ||
- | |||
- | == Mount the USB stick == | ||
- | |||
- | <note tip>The mount point '/ | ||
- | |||
- | < | ||
- | # mount /dev/sdb / | ||
- | </ | ||
- | |||
- | == Copy the Slackware Installation Media to the USB stick == | ||
- | |||
- | <note important> | ||
- | |||
- | <note tip>Your working directory should still be where you downloaded the Slackware assets into (which, following this Installation Guide, is / | ||
- | < | ||
- | # rsync -Pav slackwareaarch64-* / | ||
- | </ | ||
- | |||
- | == Umount the USB stick == | ||
- | |||
- | < | ||
- | # umount /mnt/hd | ||
- | # sync | ||
- | </ | ||
== Logout from the root user == | == Logout from the root user == | ||
Line 434: | Line 362: | ||
# logout | # logout | ||
</ | </ | ||
- | |||
===== Installing Slackware ===== | ===== Installing Slackware ===== | ||
Line 450: | Line 377: | ||
If you'd like to encrypt your storage, check the [[slackwarearm: | If you'd like to encrypt your storage, check the [[slackwarearm: | ||
- | == Begin installation == | + | === Begin installation |
<note warning> Disconnect any USB storage devices that aren't required for the OS installation</ | <note warning> Disconnect any USB storage devices that aren't required for the OS installation</ | ||
+ | |||
+ | |||
+ | <note important> | ||
+ | |||
+ | |||
== Power on the Raspberry Pi 4 == | == Power on the Raspberry Pi 4 == | ||
Line 606: | Line 538: | ||
== Select Source Media == | == Select Source Media == | ||
- | * Insert the USB stick into one of the blue USB3 ports of the Raspberry Pi. | + | {{: |
- | {{: | + | Press ENTER to say ' |
- | Pick option //'2 - Install | + | If you would like to install |
- | {{: | + | Ordinarily you should always say ' |
- | + | ||
- | {{: | + | |
- | + | ||
- | {{: | + | |
== Package Series Selection == | == Package Series Selection == | ||
Line 640: | Line 568: | ||
If you plan on exclusively using an HDMI monitor, you should pick ' | If you plan on exclusively using an HDMI monitor, you should pick ' | ||
- | <note tip>This setting can be reset to the default by editing / | + | <note tip>This setting can be reset to the default by editing / |
{{: | {{: | ||
Line 702: | Line 630: | ||
== 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. | ||
+ | |||
{{: | {{: | ||
Line 719: | Line 649: | ||
{{: | {{: | ||
- | === Disconnect the USB stick === | ||
- | |||
- | {{: | ||
- | |||
- | 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 765: | Line 690: | ||
# logout | # logout | ||
</ | </ | ||
+ | |||
+ | |||
+ | === 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:// | ||
Line 773: | Line 703: | ||
This is documented [[https:// | This is documented [[https:// | ||
- | === 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: | + | If you are using KDE, you need to first adjust a setting. |
+ | |||
+ | As your plebian user, **prior** | ||
+ | |||
+ | <note tip>This will disable the //Compositing// feature. | ||
+ | |||
+ | |||
+ | < | ||
+ | kwriteconfig5 --file kwinrc --group Compositing --key Enabled false | ||
+ | </ | ||
+ | |||
+ | You may now start KDE. | ||
Line 787: | Line 728: | ||
reboot | reboot | ||
</ | </ | ||
- | ===== 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: | One of the preferred tools to keep your system up to date is [[slackware: | ||
- | <note tip> | + | <note tip> |
- | === Loading Additional Linux Kernel Modules | + | |
+ | |||
+ | ===== Loading Additional Linux Kernel Modules | ||
+ | |||
+ | Often Kernel modules for discovered hardware will be automatically loaded, but occasionally you will need to manually configure the loading of some modules. | ||
+ | |||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | This file is a shell script that is run as one of the last steps before the OS has fully booted. | ||
+ | |||
+ | Configuration files within the directory ''/ | ||
+ | |||
+ | ===== 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) |
+ | |||
+ | <note important> | ||
To load Kernel modules during the early boot sequence, read: | To load Kernel modules during the early boot sequence, read: | ||
Line 806: | Line 766: | ||
</ | </ | ||
- | As root, the easiest way is to create | + | As root, the easiest way to begin is by renaming the example script: |
< | < | ||
mv / | mv / | ||
</ | </ | ||
- | Then add the appropriate module loading commands to: / | + | Then add the appropriate module loading commands to: '' |
You can also add shell code here to initialise a peripheral - writing something to the peripheral' | You can also add shell code here to initialise a peripheral - writing something to the peripheral' | ||
- | === Customising the Slackware Linux Kernel === | + | |
+ | ===== Slackware repository partition ===== | ||
+ | |||
+ | The Slackware Installer image contains a type '' | ||
+ | |||
+ | < | ||
+ | root@slackware: | ||
+ | root@slackware: | ||
+ | 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: | ||
+ | </ | ||
+ | |||
+ | <note tip>Most users simply leave the partition alone, as it causes no issues.</ | ||
+ | |||
+ | ===== Customising the Slackware Linux Kernel | ||
If you'd like to customise the Linux Kernel, the easiest way is to follow the [[slackwarearm: | If you'd like to customise the Linux Kernel, the easiest way is to follow the [[slackwarearm: | ||
Line 821: | Line 801: | ||
- | === 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 850: | Line 830: | ||
- | === Managing the Raspberry Pi Firmware === | + | ===== Managing the Raspberry Pi Firmware |
- | <note warning> | + | <note warning> |
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 / | + | It is mounted within the Slackware OS under '' |
- | These assets are provided and managed by the Slackware package ' | + | These assets are provided and managed by the Slackware package |
<note tip> | <note tip> | ||
- | == Firmware for the EEPROM == | + | === Firmware for the EEPROM |
- | The Slackware package ' | + | The Slackware package |
- | You also need to have the ' | + | You also need to have the '' |
<note tip>This firmware update requires manual action - see below</ | <note tip>This firmware update requires manual action - see below</ | ||
Line 897: | Line 877: | ||
<note tip>The EEPROM tool configuration file is: ''/ | <note tip>The EEPROM tool configuration file is: ''/ | ||
- | == 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 ' | + | The firmware for the peripherals on the Raspberry Pi Hardware Models is contained within the Slackware |
<note tip> | <note tip> | ||
- | === Using Device Tree Overlays === | + | ===== Using Device Tree Overlays |
[[https:// | [[https:// | ||
Line 909: | Line 889: | ||
<note tip> | <note tip> | ||
+ | |||
+ | === Raspberry Pi 3: Enabling Blue Tooth === | ||
+ | |||
+ | < | ||
+ | |||
+ | 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 ' | ||
+ | |||
+ | < | ||
+ | |||
+ | == Configure the UART setting == | ||
+ | |||
+ | < | ||
+ | $ nano / | ||
+ | </ | ||
+ | |||
+ | Find the line: '' | ||
+ | |||
+ | Change it to: '' | ||
+ | |||
+ | Save the file and reboot. | ||
+ | |||
+ | ===== Switching to the Raspberry Pi Kernel fork ===== | ||
+ | |||
+ | The Raspberry Pi's are only intended to run the vendor' | ||
+ | |||
+ | As a consequence, | ||
+ | |||
+ | 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: | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ===== Installing extra Software ===== | ||
+ | |||
+ | Slackware comes with a good base of software applications, | ||
+ | |||
+ | The best way to add new software is to [[slackwarearm: | ||
+ | |||
Line 937: | Line 960: | ||
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 / | + | <note tip>This assumes that there are no other similar adapters occupying |
< | < | ||
Line 948: | Line 971: | ||
^ Issue ^ Work around | ^ Issue ^ Work around | ||
- | | Poor X11 performance | + | | General fragility/ |
===== Contributing to the Slackware ARM project ===== | ===== Contributing to the Slackware ARM project ===== |