From 927e72eeb82568884eb00896689daedabec6b4f4 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Sat, 30 Aug 2025 19:29:19 -0500 Subject: [PATCH] Add a root shell on UART console Until I implement some kind of self-provisioning process for these machines (supposing I ever do), I need a way to log in and configure/troubleshoot. I don't think there's any particular security concern by having an auto-logged-in root shell on the UART console, as accessing it needs physical access to the machine. --- airplaypi_defconfig.in | 1 + .../usr/lib/systemd/network/80-wifi.network | 9 +++++++ .../systemd/system-preset/50-airplaypi.preset | 1 + .../usr/lib/systemd/system/root-shell.service | 24 +++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 rootfs-overlay/usr/lib/systemd/network/80-wifi.network create mode 100644 rootfs-overlay/usr/lib/systemd/system-preset/50-airplaypi.preset create mode 100644 rootfs-overlay/usr/lib/systemd/system/root-shell.service diff --git a/airplaypi_defconfig.in b/airplaypi_defconfig.in index 3842af4..8609cdc 100644 --- a/airplaypi_defconfig.in +++ b/airplaypi_defconfig.in @@ -6,6 +6,7 @@ BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" BR2_DOWNLOAD_FORCE_CHECK_HASHES=y BR2_TARGET_GENERIC_HOSTNAME="airplaypi" BR2_INIT_SYSTEMD=y +BR2_ROOTFS_OVERLAY="$(WORKSPACE)/rootfs-overlay" BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_AIMEEOS_PATH)/board/raspberrypi3/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y diff --git a/rootfs-overlay/usr/lib/systemd/network/80-wifi.network b/rootfs-overlay/usr/lib/systemd/network/80-wifi.network new file mode 100644 index 0000000..587fa07 --- /dev/null +++ b/rootfs-overlay/usr/lib/systemd/network/80-wifi.network @@ -0,0 +1,9 @@ +[Match] +Type=wlan + +[Network] +DHCP=true + +[DHCPv4] +ClientIdentifier=mac +UseDomain=true diff --git a/rootfs-overlay/usr/lib/systemd/system-preset/50-airplaypi.preset b/rootfs-overlay/usr/lib/systemd/system-preset/50-airplaypi.preset new file mode 100644 index 0000000..23eadeb --- /dev/null +++ b/rootfs-overlay/usr/lib/systemd/system-preset/50-airplaypi.preset @@ -0,0 +1 @@ +enable root-shell.service ttyAMA0 diff --git a/rootfs-overlay/usr/lib/systemd/system/root-shell.service b/rootfs-overlay/usr/lib/systemd/system/root-shell.service new file mode 100644 index 0000000..2cf028a --- /dev/null +++ b/rootfs-overlay/usr/lib/systemd/system/root-shell.service @@ -0,0 +1,24 @@ +[Unit] +Description=root shell on %I +Conflicts=getty@%I.service +Conflicts=serial-getty@%I.service + +[Service] +Environment=TERM=linux +ExecStart=/bin/sh +Restart=always +RestartSec=0 +StandardInput=tty +TTYPath=/dev/%I +TTYReset=yes +TTYVHangup=yes +KillMode=process +IgnoreSIGPIPE=no +KillSignal=SIGHUP + +# Unset locale for the console getty since the console has problems +# displaying some internationalized messages. +UnsetEnvironment=LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION + +[Install] +WantedBy=multi-user.target