diff mbox series

systemd-serialgetty: disable on genericarm64

Message ID 20250424111932.294612-1-mikko.rapeli@linaro.org (mailing list archive)
State New
Headers show
Series systemd-serialgetty: disable on genericarm64 | expand

Commit Message

Mikko Rapeli April 24, 2025, 11:19 a.m. UTC
Upstream systemd setup with udev starts agetty on detected
tty's so there is no need to use the build time SERIAL_CONSOLES
variable.

Trying to start agetty on non-existing tty's from SERIAL_CONSOLES
more than doubles the boot time to systemd "running" or "degraded"
state. Boot time before this change (core-image-base with systemd-analyze,
qemu, aarch64 build host):

root@genericarm64:~# systemd-analyze
Startup finished in 2.409s (firmware) + 5.116s (loader) + 10.274s (kernel) + 1min 33.887s (userspace) = 1min 51.687s
multi-user.target reached after 1min 33.876s in userspace.
root@genericarm64:~# journalctl -b -a|grep tty|tail -15
Apr 24 08:51:01 genericarm64 systemd[1]: dev-ttyS1.device: Job dev-ttyS1.device/start timed out.
Apr 24 08:51:01 genericarm64 systemd[1]: Timed out waiting for device /dev/ttyS1.
Apr 24 08:51:01 genericarm64 systemd[1]: Dependency failed for Serial Getty on ttyS1.
Apr 24 08:51:01 genericarm64 systemd[1]: serial-getty@ttyS1.service: Job serial-getty@ttyS1.service/start failed with result 'dependency'.
Apr 24 08:51:01 genericarm64 systemd[1]: dev-ttyS1.device: Job dev-ttyS1.device/start failed with result 'timeout'.
Apr 24 08:51:01 genericarm64 systemd[1]: dev-ttyS2.device: Job dev-ttyS2.device/start timed out.
Apr 24 08:51:01 genericarm64 systemd[1]: Timed out waiting for device /dev/ttyS2.
Apr 24 08:51:01 genericarm64 systemd[1]: Dependency failed for Serial Getty on ttyS2.
Apr 24 08:51:01 genericarm64 systemd[1]: serial-getty@ttyS2.service: Job serial-getty@ttyS2.service/start failed with result 'dependency'.
Apr 24 08:51:01 genericarm64 systemd[1]: dev-ttyS2.device: Job dev-ttyS2.device/start failed with result 'timeout'.
Apr 24 08:51:01 genericarm64 systemd[1]: dev-ttyS0.device: Job dev-ttyS0.device/start timed out.
Apr 24 08:51:01 genericarm64 systemd[1]: Timed out waiting for device /dev/ttyS0.
Apr 24 08:51:01 genericarm64 systemd[1]: Dependency failed for Serial Getty on ttyS0.
Apr 24 08:51:01 genericarm64 systemd[1]: serial-getty@ttyS0.service: Job serial-getty@ttyS0.service/start failed with result 'dependency'.
Apr 24 08:51:01 genericarm64 systemd[1]: dev-ttyS0.device: Job dev-ttyS0.device/start failed with result 'timeout'.

Boot time with this change:

root@genericarm64:~# systemd-analyze
Startup finished in 2.411s (firmware) + 5.109s (loader) + 10.208s (kernel) + 24.868s (userspace) = 42.598s
multi-user.target reached after 24.848s in userspace.
root@genericarm64:~# journalctl -b -a |grep tty|tail -15
Apr 03 20:34:34 genericarm64 kernel: printk: legacy console [ttyAMA0] enabled
Apr 03 20:34:34 genericarm64 kernel: 9040000.pl011: ttyAMA1 at MMIO 0x9040000 (irq = 14, base_baud = 0) is a PL011 rev1
Apr 03 20:34:35 genericarm64 systemd[1]: Created slice Slice /system/getty.
Apr 03 20:34:35 genericarm64 systemd[1]: Created slice Slice /system/serial-getty.
Apr 03 20:34:35 genericarm64 systemd[1]: Expecting device /dev/ttyAMA0...
Apr 03 20:34:44 genericarm64 systemd[1]: Found device /dev/ttyAMA0.
Apr 03 20:34:51 genericarm64 kernel[349]: printk: legacy console [tty0] enabled
Apr 03 20:34:51 genericarm64 kernel[349]: 9000000.pl011: ttyAMA0 at MMIO 0x9000000 (irq = 13, base_baud = 0) is a PL011 rev1
Apr 03 20:34:51 genericarm64 kernel[349]: printk: legacy console [ttyAMA0] enabled
Apr 03 20:34:51 genericarm64 kernel[349]: 9040000.pl011: ttyAMA1 at MMIO 0x9040000 (irq = 14, base_baud = 0) is a PL011 rev1
Apr 03 20:34:52 genericarm64 systemd[1]: Started Getty on tty1.
Apr 03 20:34:52 genericarm64 kernel[349]: systemd[1]: Created slice Slice /system/getty.
Apr 03 20:34:52 genericarm64 kernel[349]: systemd[1]: Created slice Slice /system/serial-getty.
Apr 03 20:34:52 genericarm64 kernel[349]: systemd[1]: Expecting device /dev/ttyAMA0...
Apr 03 20:34:52 genericarm64 systemd[1]: Started Serial Getty on ttyAMA0.

Changing the SERIAL_CONSOLES variable with systemd init
("systemd" in DISTRO_FEATURES for example)
is not possible so changing systemd-serialgetty directly.
systemd-serialgetty is now always installed with systemd.

Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
 .../recipes-core/systemd/systemd-serialgetty.bbappend         | 4 ++++
 1 file changed, 4 insertions(+)
 create mode 100644 meta-yocto-bsp/recipes-core/systemd/systemd-serialgetty.bbappend
diff mbox series

Patch

diff --git a/meta-yocto-bsp/recipes-core/systemd/systemd-serialgetty.bbappend b/meta-yocto-bsp/recipes-core/systemd/systemd-serialgetty.bbappend
new file mode 100644
index 0000000000..9fd43259db
--- /dev/null
+++ b/meta-yocto-bsp/recipes-core/systemd/systemd-serialgetty.bbappend
@@ -0,0 +1,4 @@ 
+do_install:prepend:genericarm64() {
+    # use systemd defaults to reduce boot delay from non-existing tty's
+    exit 0
+}