################################################################################
# File...: /boot/extlinux/extlinux.conf
# Purpose: U-Boot configuration to boot Slackware Linux ARM / AArch64 Installer
#          using U-Boot's 'sysboot' feature.
################################################################################
# This file has been created by
# ftp://ftp.arm.slackware.com/slackwarearm/platform/aarch64/bootware/src/inst_dskimg.build
# and is not a component of any Slackware package.
#
# Typically this file is placed upon an SD card, and this
# file is located by U-Boot's default boot script, and subsequently
# loaded and executed by U-Boot's 'sysboot' command.
#
# The Kernel cmdline parameters (set by the 'append' directives below)
# set the root file system device, file system type and these are
# configured at install time by the Slackware installer.

# The Slackware ARM Kernel Module Loader understands the following Kernel cmdline
# options:
#
# kmod_load_subsyst - development features:
#              Load all Kernel modules for the major sub systems (ARM SoC IP cores, PCI, USB).
#              This helps light up the entire range of supported hardware rather than
#              manually defining it within the loader scripts.
# kmod_load_subsyst_soc
#              Load platform/SoC IP core drivers via module aliases
# kmod_load_subsyst_pci
#              Load PCI drivers via module aliases
# kmod_load_subsyst_usb
#              Load USB drivers via module aliases (already-enumerated devices only)
#
# kmod_megaload - development feature
#              Recursively load all of the Kernel's major sub systems contained
#              within the Kernel's /lib/modules directory.  This is a development
#              feature to help onboard new Hardware Models.
#              This may crash your system!
#
# platwalk     platwalk loads all Hardware Model Kernel module loader scripts
#              unconditionally, rather than selectively based on the detected
#              Hardware Model. This approach facilitates the onboarding of new
#              Hardware Models by ensuring that as many Kernel modules as
#              possible are loaded, increasing the likelihood of hardware
#              functionality being activated. It is primarily intended for
#              developers.
#
# The following options will pause the boot process and require using the serial port.
# Do not use these if you do not have a serial console on the machine.
#
# slkpbs      Pre Boot Shell
#
#             This Kernel commandline setting opens a shell at the
#             three stages of Kernel module loading.
#
#             Stage 1: Pre-loading any of the Kernel Module Loader scripts.
#                      This provides an opportunity to edit those scripts to
#                      change any of the modules or configuration prior to
#                      them being processed.
#
#             Stage 2: Kernel Module Loader scripts have been processed but the
#                      Kernel Modules have yet to be loaded into the Kernel.
#
#             Stage 3: Post loading Kernel modules, prior to returning
#                      execution to /init.
#
#             The purpose of this functionality is to more easily enable
#             developers to break into the environment at key events
#             within the boot proces.
#
#             Users can also achieve similar results by adding the
#             hook scripts (see '/load_kernel_modules' within the OS
#             initrd) to the OS initrd; but that method is for permanent
#             'local' changes.
#
#             Note: The 'pre boot shell' has read-only access to the
#             environment, so cannot edit the Kernel module variables.
#             However, whilst inside the environment users can create or
#             directly edit the hook scripts which will allow them to modify
#             the execution and adjust the variables as needed.
#
# slkpbs3     Pre Boot Shell Stage 3
#             Start Pre Boot Shell directly at stage 3 once all modules have been
#             defined and loaded.
#             This is to help with input systems (e.g. USB keyboards) that won't
#             come live at stages 1-2 because the modules have yet to be loaded.
#
# slkpbs_modstep
#             Confirm loading of each Kernel module.  This is for debugging and
#             troubleshooting.
#             This can also be enabled from stage 1 or 2 of the Pre-boot shell by
#             $ touch /.modloadstep
#
#             This is a crude troubleshooting tool: a subsequent module may load
#             a rejected module as a dependency.  However, that's not the case for
#             all, so it's still useful.
#
# Installer-only Slackware ARM additions:
# bl_uboot - Instructs the post installation configuration script to
#            configure the extlinux.conf file for U-Boot.
############################################################################

DEFAULT Installer
MENU TITLE Slackware Linux
PROMPT 0
TIMEOUT 90

##SLKINS
LABEL Installer
   MENU LABEL Boot Installer: Slackware Linux
   LINUX /Image-armv8
   INITRD /initrd-armv8.img
   FDTDIR /dtb/
   # June-2021:
   # Note: Hard coding of the keymap.
   # Busybox must complete executing /etc/rc.d/rc.S before the local
   # consoles are enabled ('Press ENTER to activate this console').
   # Setting it here bypasses the keymap selector, enabling the consoles
   # to become immediately active.
   # This is a hack to avoid hacking /etc/rc.d/rc.S and figuring out
   # where else to run the keymap selector from automatically.
   # Users are offered to set the keymap as part of the initial installation
   # process anyway, so it's an acceptable workaround.
   # "us" is the default keymap in Slackware.
   # If you want networking and have a DHCP server available on your LAN, you
   # can set this:
   # However, if you don't have a serial adapter and have no network, you'll
   # have no visibility of this and it seems that the installer has hung until
   # an IP is obtained or the DHCP client times out.
   # Networking can be enabled directly within the installer so there's no need
   # for this.
   # 
   # Set a root password for the Slackware Installer if set as a Kernel cmdline:
   # This is intended for network installations where otherwise the root password
   # would be unset.
   # Note: this does not configure the OS root password.
   # Passwords should be set as follows within the Kernel cmdline:
   #   instrootpw=yourpassword
   #
   APPEND mitigations=off root=/dev/ram rw kbd=us nic=auto:eth0:dhcp bl_uboot platwalk %CMDLINE% RCFONT
   #APPEND root=/dev/ram rw kbd=us
   # 
   #APPEND kgdboc=kms,ttyS2,1500000 console=ttyS2,1500000
##SLKINS
