
# Each ARM Hardware Model tends to be configurable and manageable
# via the serial interface, typically via a USB to Serial adapter.
# If anybody thinks this is a security hole, don't plug in a serial cable.
#
#
#
# In Slackware by default does not open a console on the serial port.
# On the ARM and AArch64 platforms, it's standard practice and users
# are encounraged to do so. However, we cannot assume that /dev/ttyS0
# will work - yes there's a /dev entry, but that's because the Slackware
# "devs" package creates it.
# Therefore, we'll configure a serial entry only for known Hardware Models.
# This prevents errors from init when installing on unknown Hardware Models
# (such as if users use the generic bootable EFI ISO image).
# Default for all hardware models on ARM and AArch64.
#TTYDEV=ttyS0

# See whether we have any of the common serial drivers present,
# and if so we'll switch to that: This may be incorrect since we
# don't know if the user is using the 0 port, but at least this
# might help get them using the right serial driver at least.
#
for ttydev in tty{AMA0,mxc0,SAC0}; do
   [ -c "/dev/${ttydev}" ] && TTYDEV=$ttydev
done

# Configure the serial console device for particular Hardware Models:
#case "$( strings /proc/device-tree/model 2>/dev/null )" in
case "$( slk-hwm-discover )" in
  # may be ttyS4 - need to confirm
  #"Orange Pi RK3399"*)  TTYDEV=ttyS2 ;;

  "Radxa ROCK Pi 4"*|"Pine64 RockPro64"*|"Pine64 Pinebook Pro"*) TTYDEV=ttyS2 ;;
  "Raspberry Pi"*) TTYDEV=ttyS1 ;;
  # We don't have a serial console on the virtualization
  # platforms. QEMU does support it but the user can enable it
  # manually if required:
  "KVM Virtual"*|"QEMU Virtual"*|"Apple Virtual"*|"VMware Apple"*|"Parallels"*) unset TTYDEV ;;
esac

# Add the entry:
[ ! -z "${TTYDEV}" ] && {
  sed -i '/^# Local serial lines:/ a\s0:12345:respawn:/sbin/agetty --keep-baud 115200,38400,9600 '"$TTYDEV"' vt100' etc/inittab.new ;}

config() {
  NEW="$1"
  OLD="`dirname $NEW`/`basename $NEW .new`"
  # If there's no config file by that name, mv it over:
  if [ ! -r $OLD ]; then
    mv $NEW $OLD
  elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
    rm $NEW
  fi
  # Otherwise, we leave the .new copy for the admin to consider...
}
# Slackware scripts
config etc/inittab.new
config etc/rc.d/rc.4.new
config etc/rc.d/rc.6.new
config etc/rc.d/rc.K.new
config etc/rc.d/rc.M.new
config etc/rc.d/rc.S.new
config etc/rc.d/rc.cpufreq.new
config etc/rc.d/rc.local.new
config etc/rc.d/rc.loop.new
config etc/rc.d/rc.sysvinit.new
config etc/rc.d/rc.modules.new
config etc/rc.d/rc.modules.local.new
config etc/default/cpufreq.new
config etc/default/efivarfs.new
config etc/default/tmp-cleanup.new
config etc/default/zram.new

( cd etc/rc.d ; rm -rf rc.0 )
( cd etc/rc.d ; ln -sf rc.6 rc.0 )

config etc/rc.d/rc.platform.conf.new
