Hi,

v4 adds a variant for sysv - when/if using util-linux getty, since busybox does 
not seem to support an autologin option
also adds some documentation to the bbclass

regards
________________________________
From: Johannes Schneider <[email protected]>
Sent: Tuesday, August 2, 2022 11:40
To: [email protected] 
<[email protected]>
Cc: SCHNEIDER Johannes <[email protected]>
Subject: [meta-oe][PATCH v4] classes: rootfs-postcommands: autologin root on 
serial-getty

when empty-root-password AND serial-autologin-root are part of the
IMAGE_FEATURES, save some of the developers time by not having to type
the (then still sole) 'root' username on the serial console after each
and every reboot

this is done by inserting '--autologin root' into the command line of
the responsible 'getty' service

Signed-off-by: Johannes Schneider <[email protected]>
---
 meta/classes/core-image.bbclass               |  1 +
 meta/classes/image.bbclass                    |  2 +-
 meta/classes/rootfs-postcommands.bbclass      | 20 +++++++++++++++++++
 .../sysvinit/sysvinit-inittab/start_getty     |  3 ++-
 4 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/meta/classes/core-image.bbclass b/meta/classes/core-image.bbclass
index 84fd3eeb38..6764035729 100644
--- a/meta/classes/core-image.bbclass
+++ b/meta/classes/core-image.bbclass
@@ -29,6 +29,7 @@
 #   - allow-empty-password
 #   - allow-root-login
 #   - post-install-logging
+# - serial-autologin-root - with 'empty-root-password': autologin 'root' on 
the serial console
 # - dev-pkgs            - development packages (headers, etc.) for all 
installed packages in the rootfs
 # - dbg-pkgs            - debug symbol packages for all installed packages in 
the rootfs
 # - lic-pkgs            - license packages for all installed pacakges in the 
rootfs, requires
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 2139a7e576..fe32cdefd5 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -34,7 +34,7 @@ INHIBIT_DEFAULT_DEPS = "1"
 # IMAGE_FEATURES may contain any available package group
 IMAGE_FEATURES ?= ""
 IMAGE_FEATURES[type] = "list"
-IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs 
read-only-rootfs-delayed-postinsts stateless-rootfs empty-root-password 
allow-empty-password allow-root-login post-install-logging overlayfs-etc"
+IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs 
read-only-rootfs-delayed-postinsts stateless-rootfs empty-root-password 
allow-empty-password allow-root-login serial-autologin-root 
post-install-logging overlayfs-etc"

 # Generate companion debugfs?
 IMAGE_GEN_DEBUGFS ?= "0"
diff --git a/meta/classes/rootfs-postcommands.bbclass 
b/meta/classes/rootfs-postcommands.bbclass
index a8a952f31d..3dadba6047 100644
--- a/meta/classes/rootfs-postcommands.bbclass
+++ b/meta/classes/rootfs-postcommands.bbclass
@@ -8,6 +8,9 @@ ROOTFS_POSTPROCESS_COMMAND += 
'${@bb.utils.contains_any("IMAGE_FEATURES", [ 'deb
 # Allow dropbear/openssh to accept root logins if debug-tweaks or 
allow-root-login is enabled
 ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 
'debug-tweaks', 'allow-root-login' ], "ssh_allow_root_login; ", "",d)}'

+# Autologin the root user on the serial console, if empty-root-password and 
serial-autologin-root are active
+ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("IMAGE_FEATURES", [ 
'empty-root-password', 'serial-autologin-root' ], "serial_autologin_root; ", 
"",d)}'
+
 # Enable postinst logging if debug-tweaks or post-install-logging is enabled
 ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 
'debug-tweaks', 'post-install-logging' ], "postinst_enable_logging; ", "",d)}'

@@ -196,6 +199,23 @@ ssh_allow_root_login () {
         fi
 }

+#
+# Autologin the 'root' user on the serial terminal,
+# if empty-root-password' AND 'serial-autologin-root are enabled
+#
+serial_autologin_root () {
+       if ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "true", "false", 
d)}; then
+               # add autologin option to util-linux getty only
+               sed -i 's/options="/&--autologin root /' \
+                       "${IMAGE_ROOTFS}${base_bindir}/start_getty"
+       elif ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "true", 
"false", d)}; then
+               if [ -e 
${IMAGE_ROOTFS}${systemd_system_unitdir}/[email protected] ]; then
+                       sed -i '/^\s*ExecStart\b/ s/getty /&--autologin root /' 
\
+                               
"${IMAGE_ROOTFS}${systemd_system_unitdir}/[email protected]"
+               fi
+       fi
+}
+
 python sort_passwd () {
     import rootfspostcommands
     rootfspostcommands.sort_passwd(d.expand('${IMAGE_ROOTFS}${sysconfdir}'))
diff --git a/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty 
b/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty
index 699a1ead1a..7106fb72fb 100644
--- a/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty
+++ b/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty
@@ -9,9 +9,10 @@ case $(readlink -f "${getty}") in
         if [ -x "/usr/bin/setsid" ] ; then
             setsid="/usr/bin/setsid"
         fi
+        options=""
         ;;
 esac

 if [ -e /sys/class/tty/$2 -a -c /dev/$2 ]; then
-       ${setsid:-} ${getty} -L $1 $2 $3
+       ${setsid:-} ${getty} ${options:-} -L $1 $2 $3
 fi
--
2.25.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#168775): 
https://lists.openembedded.org/g/openembedded-core/message/168775
Mute This Topic: https://lists.openembedded.org/mt/92767146/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to