[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_rk3399_rockpro64 [2022/07/02 07:42 (UTC)] mozesslackwarearm:inst_sa64_rk3399_rockpro64 [2024/03/19 09:34 (UTC)] (current) mozes
Line 7: Line 7:
 | Platform | AArch64/ARM64 |  | Platform | AArch64/ARM64 | 
 | Hardware Model |Rock Pro64 | | Hardware Model |Rock Pro64 |
-| Document Version | 1.00Dec 2021 |+| Document Version | 1.04Mar 2024 |
 | Author | Stuart Winter <mozes@slackware> | | Author | Stuart Winter <mozes@slackware> |
 | Contributors | Brenton Earl <el0226@slackware> (R&D for the RK3399 Hardware Models)| | Contributors | Brenton Earl <el0226@slackware> (R&D for the RK3399 Hardware Models)|
- 
  
  
Line 17: Line 16:
 This tutorial is also available in [[https://www.youtube.com/watch?v=uXAL9jz-yaA|video form]]. This tutorial is also available in [[https://www.youtube.com/watch?v=uXAL9jz-yaA|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>
  
 Pine64 also provide unboxing and setup [[https://www.pine64.org/rockpro64/|videos]] which you may find useful. Pine64 also provide unboxing and setup [[https://www.pine64.org/rockpro64/|videos]] which you may find useful.
Line 30: Line 30:
  
   - Acquiring all required hardware   - Acquiring all required hardware
-  - Setting up local environment to support the installation over the network 
   - Downloading and verifying the Slackware assets   - Downloading and verifying the Slackware assets
   - Writing the Initialisation Bootware to the Micro SD card   - Writing the Initialisation Bootware to the Micro SD card
Line 48: Line 47:
  
 ^ Item ^ Specification ^ Notes ^ ^ Item ^ Specification ^ Notes ^
-| [[https://www.pine64.org/rockpro64/|RockPro64]] | 4GB version The RockPro64 (2GB version may work but hasn't been tested) |+| [[https://www.pine64.org/rockpro64/|RockPro64]] | 2GB RAM or 4GB RAM model -|
 | [[https://pine64.com/product/rockpro64-12v-5a-eu-power-supply/|RockPro64 Power Supply ('PSU')]] | Pine64's own | There is a cheaper alternative, but this version is recommended.  Note that the link here is for the EU version - a US version is also available in the Pine64 store | | [[https://pine64.com/product/rockpro64-12v-5a-eu-power-supply/|RockPro64 Power Supply ('PSU')]] | Pine64's own | There is a cheaper alternative, but this version is recommended.  Note that the link here is for the EU version - a US version is also available in the Pine64 store |
-| [[https://www.amazon.co.uk/SanDisk-Extreme-Performance-Supports-Graphics/dp/B089M5KV4Y|Micro SD Card]] | 8GB **minimum capacity**, Class 10 (fast speed), good quality make | Used as Slackware's /boot partition |+| [[https://www.amazon.co.uk/SanDisk-Extreme-Performance-Supports-Graphics/dp/B089M5KV4Y|Micro SD Card]] | 16GB **minimum capacity**, Class 10 (fast speed), good quality make | Used as Slackware's /boot partition |
 | [[https://www.amazon.co.uk/UGREEN-Adapter-Windows-Surface-Chromebook/dp/B01EFPX9XA|USB Multi-Card Reader]] | Must accept Micro SD cards | Used to write the Bootware on your host Linux computer.  This isn't required if your host computer has a Micro SD card reader. | | [[https://www.amazon.co.uk/UGREEN-Adapter-Windows-Surface-Chromebook/dp/B01EFPX9XA|USB Multi-Card Reader]] | Must accept Micro SD cards | Used to write the Bootware on your host Linux computer.  This isn't required if your host computer has a Micro SD card reader. |
 | [[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: This document covers installing using an HDMI monitor (you can find information about the Serial/UART adapter at the foot of this document), but a USB to Serial/UART adapter is recommended if you want to access the Boot Loader and Linux tty (serial line) remotely. The serial adapter is also required for developers needing to debug the boot process. | | [[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: This document covers installing using an HDMI monitor (you can find information about the Serial/UART adapter at the foot of this document), but a USB to Serial/UART adapter is recommended if you want to access the Boot Loader and Linux tty (serial line) remotely. The serial adapter is also required for developers needing to debug the boot process. |
 | Jumper or Dupont cable | See images below | This is to bridge the pins required for initial firmware deployment and/or Hardware Model recovery| | Jumper or Dupont cable | See images below | This is to bridge the pins required for initial firmware deployment and/or Hardware Model recovery|
-| [[https://www.amazon.co.uk/gp/product/B06WWLCYC3|USB to SATA adapter]] | Many models will work, but this one has been tested. | For a simple installation you require either storage attached to a USB interface, or using the SATA PCI card (see below).| 
-| [[https://pine64.com/product/pcie-to-dual-sata-iii-interface-card/|PCIe to dual SATA 3.0 Interface Card]] | PINE64's own| You can use this or the USB to SATA adapter (see row above)| 
-| [[https://www.amazon.co.uk/MZHOU-Adapter-Marvell-chipset-without/dp/B07NT1PWGW|PCIe to quad SATA 3.0 Interface Card]]| MZHOU / Marvell chipset | If you would like to use SATA storage, this is the **recommended** interface card |  
-| [[https://www.amazon.co.uk/Kingston-SA400S37-240G-Solid-State/dp/B01N5IB20Q|SATA storage / SSD]] | The Kingston-SA400S37-240G has thoroughly proved itself in the Slackware ARM build infrastructure - most build machines use these, but any SSD or spinning hard disk should work | Will contain the Operating System. You can install to other storage, but this documentation covers this particular configuration only. | 
 | [[https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module/|Wifi and Bluetooth module]] | Pine64's own | Optional | | [[https://pine64.com/product/rockpro64-1x1-dual-band-wifi-802-11ac-bluetooth-5-0-module/|Wifi and Bluetooth module]] | Pine64's own | Optional |
 | [[https://pine64.com/product/rockpro64-10mm-low-profile-heatsink-with-fan/|Heat sink and CPU fan]] | Pine64's own | Either a heat sink or fan are required.  Some of the cases have built-in heat sinks, so check the options | | [[https://pine64.com/product/rockpro64-10mm-low-profile-heatsink-with-fan/|Heat sink and CPU fan]] | Pine64's own | Either a heat sink or fan are required.  Some of the cases have built-in heat sinks, so check the options |
Line 63: Line 58:
 | [[https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa/|Real Time Clock ('RTC') battery holder]] | Pine64's own | An RTC is used to keep the time when the Hardware Model is powered down. This is recommended but optional.  Time can also be set via NTP once the OS has booted. | | [[https://pine64.com/product/rtc-backup-battery-holder-2-x-aaa/|Real Time Clock ('RTC') battery holder]] | Pine64's own | An RTC is used to keep the time when the Hardware Model is powered down. This is recommended but optional.  Time can also be set via NTP once the OS has booted. |
  
 +
 +== Hardware: Storage ==
 +
 +This table provides a list of options that have been tested with Slackware AArch64 on the RockPro64 - you only need one storage controller.
 +
 +^ Item ^ Specification ^ Notes ^
 +| [[https://www.amazon.co.uk/gp/product/B06WWLCYC3|USB to SATA adapter]] | Many models will work, but this one has been tested. | For a simple installation you require either storage attached to a USB interface, or using a SATA PCIe card (see below).|
 +| [[https://www.amazon.co.uk/dp/B099ZCXJLQ?psc=1&ref=ppx_yo2ov_dt_b_product_details|PCIe dual port SATA 3.0 Interface Card]] | JMICRON+JMB582 | Recommended 2-port SATA card |
 +| [[https://www.amazon.co.uk/MZHOU-Adapter-Marvell-chipset-without/dp/B07NT1PWGW|PCIe quad port SATA 3.0 Interface Card]]| MZHOU / Marvell chipset | Recommended 4-port SATA card | 
 +| [[https://www.amazon.co.uk/Kingston-SA400S37-240G-Solid-State/dp/B01N5IB20Q|SATA storage / SSD]] | The Kingston-SA400S37-240G has thoroughly proved itself in the Slackware ARM build infrastructure - most build machines use these, but any SSD or spinning hard disk should work | Will contain the Operating System. You can install to other storage, but this documentation covers this particular configuration only. |
 +
 +<note important>PINE64 have their [[https://pine64.com/product/pcie-to-dual-sata-iii-interface-card/|own dual port PCIe SATA controller]] but two of them have failed for this author, and as such cannot be recommended.  For SATA it's recommended to use one of the two controllers in the table above.</note>
 +
 +<note important>When selecting a USB to SATA adapter it's best to choose one that is powered externally rather than from the USB port.</note>
  
 === Notes on storage setup === === Notes on storage setup ===
Line 81: Line 90:
  
 ^ 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 Internetand serve the RockPro64 client to install Slackware over the LAN (Local Area Network). +| 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 write the Slackware Installer to the Micro SD card.  |
-| Network DHCP server | Provide an IP address and routing information for the RockPro64 to be able to contact the Linux Host Computer (to download the Slackware tree) and the Internet (to set date via NTP) | This document expects the RockPro64 to be able to obtain an IP address via DHCP over the LAN.  However, you can also manually configure an IP address once the Slackware Installer has booted (note that a lack of DHCP server will stall the Installer by several seconds).  You could also copy the Slackware media to a USB stick and install from there.  This is outside of the scope of this document, however [[https://docs.slackware.com/howtos:network_services:dhcp_server_via_dnsmasq|this document]] describes how to set up a simple DHCP service on Slackware. |+
  
-<note tip>Most home routers equipped with Ethernet ports provide a DHCP server which should suffice for this setup</note> 
  
 ===== Hardware Setup ===== ===== Hardware Setup =====
Line 109: Line 116:
  
   * Connect the CPU fan or heat sink   * Connect the CPU fan or heat sink
 +
 +
 +<note tip>If you prefer hardware rather than software control for the fan over software, check out [[https://youtu.be/z8z1xO3pJA0|this video]].</note>
 +
 +
   * Connect the Wifi & Bluetooth module (optional)   * Connect the Wifi & Bluetooth module (optional)
   * Connect the storage (the image shows the USB-to-SATA adapter, but you may use the PCI card). If using the USB adapter, connect it to the **blue USB3.0 port**.   * Connect the storage (the image shows the USB-to-SATA adapter, but you may use the PCI card). If using the USB adapter, connect it to the **blue USB3.0 port**.
Line 167: Line 179:
 </code> </code>
  
-== Set the distribution server ==+== Set the Hardware Model == 
 + 
 +<code>$ HWM=rk3399_generic</code> 
 + 
 +=== 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 182: Line 198:
 The U-Boot Boot Loader that will be installed onto the SPI flash: The U-Boot Boot Loader that will be installed onto the SPI flash:
 <code> <code>
-rsync -PavL $SLKSRV/platform/aarch64/bootware/recovery/rk3399/flash-spi-rockpro64.img.xz . +rsync -PavL $SLKSRV/platform/aarch64/bootware/recovery/rk3399/flash-spi-rockpro64.img.xz . 
-rsync -PavL $SLKSRV/platform/aarch64/bootware/recovery/rk3399/flash-spi-rockpro64.img.xz.asc .+rsync -PavL $SLKSRV/platform/aarch64/bootware/recovery/rk3399/flash-spi-rockpro64.img.xz.asc .
 </code> </code>
  
 //The Bootware (recovery/initialisation) images are approximately 400KBytes in size.// //The Bootware (recovery/initialisation) images are approximately 400KBytes in size.//
  
-== Download the Slackware Linux installer for the RK3399 AArch64 platform == +=== Download the Slackware Linux Installer ===
-<code> +
-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 . +
-</code> +
- +
-//The Slackware Installer images are approximately 300MBytes in size.//+
  
-== Download the Slackware tree verification tool == 
 <code> <code>
-rsync -PavL $SLKSRV/platform/all/scripts .+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-aio/slackwareaarch64-${SLKVER}/${HWM}.img.xz slkaio.img.xz
 </code> </code>
  
-== Download the Slackware AArch64 tree ==+//The Slackware Installer images are approximately 5 GBytes in size.//
  
-You will now download the Slackware distribution. This contains all of the software included within Slackware.+=== Verify the Downloads ===
  
-<code> +<code>$ gpg --verify-files *.asc</code>
-rsync \ +
-   --exclude '*/source/*'+
-   --delete -Prlvv \ +
-   $SLKSRV/slackwareaarch64-${SLKVER} . +
-</code> +
- +
-//The Slackware distribution is approximately 4.5GBytes in size.// +
- +
- +
-== 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 should be similar to this:
 <code> <code>
-gpg: assuming signed data in 'scripts/slacksigchk.sh+gpg: assuming signed data in `flash-spi-rockpro64.img.xz
-gpg: Signature made Wed 24 Nov 2021 06:07:44 PM BST +gpg: Signature made Fri 27 Jan 2023 08:53:24 AM -00 using RSA key ID 1623FC33 
-gpg:                using RSA key F7ABB8691623FC33 +gpgGood signature from "Slackware ARM (Slackware ARM Linux Project) <mozes@slackware.com>" 
-gpg: Good signature from "Slackware ARM (Slackware ARM Linux Project) <mozes@slackware.com>" [unknown]+gpgWARNING: 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 
 +gpg: assuming signed data in `slkaio.img.xz' 
 +gpg: Signature made Thu 19 Jan 2023 08:34:27 PM -00 using RSA key ID 1623FC33 
 +gpg: Good signature from "Slackware ARM (Slackware ARM Linux Project) <mozes@slackware.com>"
 gpg: WARNING: This key is not certified with a trusted signature! gpg: WARNING: This key is not certified with a trusted signature!
 gpg:          There is no indication that the signature belongs to the owner. 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 Primary key fingerprint: 36D3 7609 2F12 9B6B 3D59  A517 F7AB B869 1623 FC33
-</code> 
- 
- 
-Verify the Bootware and Slackware tree: 
- 
-<code> 
-chmod 755 scripts/slacksigchk.sh 
-./scripts/slacksigchk.sh slackwareaarch64-${SLKVER} 
 </code> </code>
  
Line 307: Line 298:
  
 <code> <code>
-# 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 +# dd if=/dev/zero of=/dev/XXX count=10 bs=1M    ## Replace /dev/XXX with the correct block device (presented above by the lsblk tool) on your Host Computer 
-# xzcat flash-spi-rockpro64.img.xz > /dev/sdc  ## Replace /dev/sdc with the correct block device (presented above by the lsblk tool) on your Host Computer+# xzcat flash-spi-rockpro64.img.xz > /dev/XXX  ## Replace /dev/XXX with the correct block device (presented above by the lsblk tool) on your Host Computer
 # sync # sync
 </code> </code>
  
-Logout of the root user: 
  
-<code> +== Remove the Micro SD card from the Host Computer == 
-# logout + 
-</code>+Now that we've written the Bootware Initialisation Image to the Micro SD card, you need to remove it from the Host Computer. 
 + 
 + 
 +<note tip>Keep the root shell open as we'll be using it again in the subsequent steps.</note>
  
-The Bootware Initialisation image is now ready to boot on the RockPro64. 
  
 ===== Installing the Boot Loader to SPI flash ===== ===== Installing the Boot Loader to SPI flash =====
Line 358: Line 350:
   * Remove the MicroSD card from the RockPro64   * Remove the MicroSD card from the RockPro64
   * Insert the MicroSD card back into the Host Computer (as in the earlier section)   * Insert the MicroSD card back into the Host Computer (as in the earlier section)
- 
-== Elevate yourself to root == 
- 
-On your Host Computer, obtain root: 
- 
-<note tip>The # prefix indicates that you're using the **root** user</note> 
- 
-<code> 
-$ su -   ## Note the hyphen - it's required 
-</code> 
  
 == Write the Slackware Installer to the Micro SD card == == Write the Slackware Installer to the Micro SD card ==
Line 380: Line 362:
 <code> <code>
 # cd /home/mozes/slackware # cd /home/mozes/slackware
-# xzcat rk3399_generic.sdimg_latest.img.xz /dev/sdc ## Replace /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
 # exit # exit
Line 389: Line 371:
 You may now disconnect the USB adapter from the Host Computer and remove the MicroSD card. You may now disconnect the USB adapter from the Host Computer and remove the MicroSD card.
  
-===== Start the installation media server ===== +Run lsblk again to confirm that the block device assigned to the Micro SD card is no longer present:
- +
-We will direct the Slackware Installer to download the packages from a web server that we'll run temporarily on your Linux Host Computer. +
- +
-== Determine the Linux Host Computer's IP address == +
- +
-For most basic installations, the following command will provide the correct IP.  If your Linux Host Computer has a more complex setup, you'll need to determine the IP address yourself using //ifconfig// or one of the other tools.+
  
 <code> <code>
-$ hostname -I +# lsblk -d 
-192.168.1.1+NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS 
 +sda    8:0    0 465.8G  0 disk 
 </code> </code>
  
-In this example, the IP address of the Linux Host Computer is **192.168.1.1** 
  
- +== Logout from the root user ==
-== Start the HTTP server on the Linux Host Computer == +
- +
-As your normal (not root) user on your Linux Host Computer, we'll enter the Slackware AArch64 directory and start the HTTP web server:+
  
 <code> <code>
-$ cd ~/slackware/slackwareaarch64-*/   +# logout
-$ python3 -m http.server+
 </code> </code>
  
-<note important>The HTTP server will remain in the foreground - you may now leave it We will return to close it post installation.</note>+You no longer require the Host Computer.
  
 === Installing Slackware === === Installing Slackware ===
Line 423: Line 395:
   * Connected the HDMI monitor   * Connected the HDMI monitor
   * Connected the keyboard (and optionally, mouse)   * Connected the keyboard (and optionally, mouse)
-  * Connected the Ethernet cable, and have a DHCP server serving the network from which the RockPro64 can obtain an IP address 
   * Inserted the Micro SD card containing the Slackware Installer   * Inserted the Micro SD card containing the Slackware Installer
  
Line 459: Line 430:
  
 {{: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 564: Line 542:
  
 {{:slackwarearm:22-FormattingRootPartition-inProgress-rpro64.jpg?400|}} {{:slackwarearm:22-FormattingRootPartition-inProgress-rpro64.jpg?400|}}
- 
-== Resize /boot partition to full extent == 
- 
-The Micro SD card that contains the /boot partition presently occupies approximately 1GB. 
-Most MicroSD cards are several GBs in size.  This option will resize the partition to its full capacity to avoid wasting storage. 
-If you plan on manually adding partions to this later, you will want to choose 'No' here. 
- 
-<note important>It's important that the Micro SD card is **not** used for heavy read/writes as it'll damage it and will cause your system not to boot.  This option exists simply to avoid wasting space on the MicroSD card.</note> 
- 
-{{:slackwarearm:23-ResizebootFS-ask.jpg?400|}} 
- 
-{{:slackwarearm:24-ResizebootFS-inprogress-rpro64.jpg?400|}} 
- 
-{{:slackwarearm:25-ResizebootFS-complete.jpg?400|}} 
  
 == Boot Loader Configuration == == Boot Loader Configuration ==
Line 600: Line 564:
 == Select Source Media == == Select Source Media ==
  
-{{:slackwarearm:28-SourceMediaSelection.jpg?400|}} 
  
-<note tip>The IP address here is the one you determine earlier within these instructions The port should always be 8000</note>+{{:slackwarearm:28-source-aio.png?400|}}
  
-Pick option //'5 - Install from FTP/HTTP server'// +Press ENTER to say 'Yes'.
-<code> +
-URL: http://192.168.1.1:8000 +
-Directory: / +
-</code> +
- +
- +
-{{:slackwarearm:29-HTTPinstallationURL.jpg?400|}} +
- +
-{{:slackwarearm:30-HTTPinstallationDIR.jpg?400|}}+
  
-{{:slackwarearm:31-HTTPInstallationDownloadConfirm.jpg?400|}}+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:31-HTTPinstallationDownloadTestResult.jpg?400|}}+Ordinarily you should always say 'Yes' unless you've been directed to do otherwise.
  
-{{:slackwarearm:32-HTTPInstallation-PkgProcessing.jpg?400|}} 
  
 == Package Series Selection == == Package Series Selection ==
Line 647: Line 600:
 {{:slackwarearm:35-ConsoleBootSettings-rpro64.jpg?400|}} {{:slackwarearm:35-ConsoleBootSettings-rpro64.jpg?400|}}
  
-== 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. 
- 
-{{:slackwarearm:36-InstallingBootLoader-SPIFlash-rpro64.jpg?400|}} 
- 
-{{:slackwarearm:37-InstallingBootLoader-SPIFlash-readytogo.jpg?400|}} 
- 
-{{:slackwarearm:38-InstallingBootLoader-SPIFlash-inprogress-rpro64.jpg?400|}} 
- 
-{{:slackwarearm:39-InstallingBootLoader-SPIFlash-complete.jpg?400|}} 
  
 == Remove the Slackware Installer from the SD card == == Remove the Slackware Installer from the SD card ==
Line 671: Line 612:
  
 <note tip>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.</note> <note tip>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.</note>
 +
 +== Install the Boot Loader to SPI flash ==
 +
 +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 most recent version.
 +
 +When an upgrade is required, in most cases you'll see a screen like this which provides information about the currently installed Boot Loader and the newer version available:
 +
 +{{:slackwarearm:slackarm-flashing-reqd-prevslackrel.jpg?400|}}
 +
 +
 +If the installed Boot Loader matches the currently available version, you will be advised that flashing is unnecessary.  However, you can re-flash it if you wish.
 +
 +{{:slackwarearm:slackarm-flashing-not-required.jpg?400|}}
 +
 +If you proceed with flashing, the work flow looks like this and takes approximately two minutes to complete.
 +<note important>You must ensure the system has sufficient power/is plugged in.  If the machine powers off before flashing completes, you would need to re-flash using the bootable SD card as described earlier within this guide.</note> 
 +
 +{{:slackwarearm:37-InstallingBootLoader-SPIFlash-readytogo.jpg?400|}}
 +
 +{{:slackwarearm:38-InstallingBootLoader-SPIFlash-inprogress-rpro64.jpg?400|}}
 +
 +{{:slackwarearm:39-InstallingBootLoader-SPIFlash-complete.jpg?400|}}
 +
  
 == Post Installation Configuration == == Post Installation Configuration ==
  
 The Slackware Installer will walk you through the standard Slackware setup.  The on-screen instructions will suffice. The Slackware Installer will walk you through the standard Slackware setup.  The on-screen instructions will suffice.
 +
  
 {{:slackwarearm:41-LoadGPMatboot.jpg?400|}} {{:slackwarearm:41-LoadGPMatboot.jpg?400|}}
Line 744: Line 709:
  
 == Booting the Slackware OS == == Booting the Slackware OS ==
 +
 +The Slackware Installer will reboot into the Slackware OS.
  
 {{:slackwarearm:62-OSBooting-uboot-rpro64.jpg?400|}} {{:slackwarearm:62-OSBooting-uboot-rpro64.jpg?400|}}
Line 752: Line 719:
  
 You may now login as 'root', using the password you set within the installer. You may now login as 'root', using the password you set within the installer.
- 
-== Quit the HTTP media server == 
- 
-On your Linux Host Computer, you can return to the HTTP server that we started earlier on. 
-In the terminal window in which you started it, you will see the access logs from the Slackware Installer downloading the packages. 
- 
-Press //CONTROL+c// to quit it. 
- 
-You may now delete the slackwareaarch64 tree, or perhaps keep it around to subsequently update it. 
  
  
Line 777: Line 735:
  
 The CPU fan speed is controlled statically during boot. The CPU fan speed is controlled statically during boot.
 +
 By default it'll set the speed to '65' which is the lowest speed.  If you want to change this: By default it'll set the speed to '65' which is the lowest speed.  If you want to change this:
  
Line 784: Line 743:
 </code> </code>
  
-Within that configuration you'll find examples.  Uncomment and set accordingly and reboot.+Within that configuration you'll find examples.  Un-comment and set accordingly and reboot.
  
 +If you do not have a fan (typically you'll have a heatsink instead) you can also disable the fan.  Within the config file uncomment the variable ''CPU_FAN_OFF=Yes''.
  
 == NTP (Network Time Protocol) setup == == NTP (Network Time Protocol) setup ==
Line 791: Line 751:
 If your RockPro64 does not have an RTC battery backup, you may wish to configure it to [[https://docs.slackware.com/howtos:network_services:ntp|set time from an NTP Server]]. If your RockPro64 does not have an RTC battery backup, you may wish to configure it to [[https://docs.slackware.com/howtos:network_services:ntp|set time from an NTP Server]].
  
-== Keeping the Slackware OS up to date ==+====== Managing Slackware on the RockPro64 ====== 
 + 
 +===== 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]].
Line 797: Line 759:
 <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.</note>
  
-== Use a graphical login manager ==+ 
 +===== 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. 
 +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: 
 +<code> 
 +/boot/local/README.txt 
 +</code> 
 + 
 +As root, the easiest way to begin is by renaming the example script: 
 + 
 +<code> 
 +mv /boot/local/load_kernel_modules.post.sample /boot/local/load_kernel_modules.post 
 +</code> 
 + 
 +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. 
 + 
 + 
 +===== Use a graphical login manager =====
  
 If you prefer to use a graphical login manager, you can configure the default runlevel as 4: If you prefer to use a graphical login manager, you can configure the default runlevel as 4:
Line 807: Line 804:
 </code> </code>
  
-=== Reducing Boot Time ===+===== 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. 
 + 
 + 
 +===== 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 836: Line 856:
  
  
 +===== Installing extra Software =====
  
-===== Supporting the Slackware ARM project =====+Slackware comes with a good base of software applications, but there are plenty more available in the Open Source Ecosystem.
  
-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.+The best way to add new software is to [[slackwarearm:sft-repos|use the build scripts from SlackBuilds.org]].
  
-Once you find yourself enjoying using the ARM port of Slackware, please take a few moments to [[https://arm.slackware.com/sponsor/|show your appreciation through sponsorship]]. 
  
-===== Contributing to the Slackware ARM project =====+===== Managing the Boot Loader firmware =====
  
-There are a plethora of ARM devices on the market which requires initial R&and continuous testing+During the Slackware installation process, you are offered the opportunity to flash the Boot Loader to the SPI flash. 
-If you'd like to help Slackware support more ARM boardsplease check out [[https://arm.slackware.com/slackwarearm-devel/|the documentation]] explaining how to get involved.+Occasionally, updates will be made available to the Boot Loader to address bug fixes and provide improvements. 
 + 
 +Slackware provides package ''hwm-bw-rk3399'' within the ''a'' series that contains the latest Boot Loader firmware and contains the ''bootloader-flash-rk3399'' tool to manage the upgrade life cycle. 
 + 
 +=== Upgrading the Boot Loader firmware === 
 + 
 +  - Upgrade to the latest available version of the package ''hwm-bw-rk3399'' (using ''slackpkg'' as described within this document). 
 +  - As root, run the ''bootloader-flash-rk3399'' tool. 
 + 
 +In this example we'll run the Boot Loader management tool as the ''root'' user using the ''su'' tool: 
 +<code> 
 +$ su -c 'bootloader-flash-rk3399' -  # You must include the trailing '-' character 
 +</code> 
 + 
 +When an upgrade is required, in most cases you'll see a screen like this which provides information about the currently installed Boot Loader and the newer version available: 
 + 
 +{{:slackwarearm:slackarm-flashing-reqd-prevslackrel.jpg?400|}} 
 + 
 +If you've wiped the Boot Loader from SPI flash or have installed a non-Slackware firmware buildyou will see a screen like this where the existing installed Boot Loader is unrecognised: 
 + 
 + 
 +{{:slackwarearm:slackarm-flashing-required.jpg?400|}} 
 + 
 +If the installed Boot Loader matches the currently available version, you will be advised that flashing is unnecessary However, you can re-flash it if you wish. 
 + 
 +{{:slackwarearm:slackarm-flashing-not-required.jpg?400|}} 
 + 
 +If you proceed with flashing, the work flow looks like this and takes approximately two minutes to complete. 
 +<note important>You must ensure the system has sufficient power/is plugged in.  If the machine powers off before flashing completes, you would need to re-flash using the bootable SD card as described in the initial installation instructions.</note>  
 + 
 +{{:slackwarearm:37-InstallingBootLoader-SPIFlash-readytogo.jpg?400|}} 
 + 
 +{{:slackwarearm:38-InstallingBootLoader-SPIFlash-inprogress-rpro64.jpg?400|}} 
 + 
 +{{:slackwarearm:39-InstallingBootLoader-SPIFlash-complete.jpg?400|}}
  
  
Line 856: Line 910:
  
 If you'd like to use one, there are two that have been tested. If you'd like to use one, there are two that have been tested.
- 
  
  
Line 877: Line 930:
 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 885: Line 938:
  
 ===== Known bugs and limitations ===== ===== Known bugs and limitations =====
 +
 +None presently.
 +
 +
 +===== Supporting 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 [[https://arm.slackware.com/sponsor/|show your appreciation through sponsorship]].
 +
 +===== 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 [[https://arm.slackware.com/slackwarearm-devel/|the documentation]] explaining how to get involved.
 +
 +
  
  
 slackwarearm:inst_sa64_rk3399_rockpro64 ()