package/openrc: drop custom getty service

In Buildroot getty is provided by BusyBox or util-linux (agetty). Both
create a /sbin/getty symlink pointing to the actual program, so make the
agetty service use that path instead of /sbin/agetty.

Also start agetty after all other services, to prevent mixing startup
messages with the getty prompt on devices with a single serial console,
as the custom unit we're dopping was doing already.

This allows us to drop the custom getty service, which causes an error
message from openrc 0.42.1 (in a forthcoming patch):

    Error: getty is the name of a real and virtual service.

The patches are required because it's not possible to override the
command or startup order by means of a configuration file. Anyway it's
still better to patch something maintained upstream than depending on a
custom piece that may easily become obsolete.

Signed-off-by: Carlos Santos <unixmania@gmail.com>
[yann.morin.1998@free.fr:
  - expand commit log to explain why we ve 'after *' in the same patch
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
Carlos Santos 2020-03-01 12:17:44 -03:00 committed by Yann E. MORIN
parent 469829d9c5
commit cd7dcf83bc
4 changed files with 65 additions and 29 deletions

View File

@ -0,0 +1,33 @@
From b39ab180358ed451eae9df900f49a72ef1eb7442 Mon Sep 17 00:00:00 2001
From: Carlos Santos <unixmania@gmail.com>
Date: Sun, 1 Mar 2020 09:04:48 -0300
Subject: [PATCH] init.d/agetty: replace /sbin/agetty by /sbin/getty
In Buildroot getty is provided by BusyBox or util-linux (agetty). Both
create a /sbin/getty symlink pointing to the actual program, so make the
agetty service use that path instead of /sbin/agetty.
The patch is required because it's not possible to override the command
by means of a configuration file.
Signed-off-by: Carlos Santos <unixmania@gmail.com>
---
init.d/agetty.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/init.d/agetty.in b/init.d/agetty.in
index e4866f7a..e1864628 100644
--- a/init.d/agetty.in
+++ b/init.d/agetty.in
@@ -14,7 +14,7 @@ supervisor=supervise-daemon
port="${RC_SVCNAME#*.}"
respawn_period="${respawn_period:-60}"
term_type="${term_type:-linux}"
-command=/sbin/agetty
+command=/sbin/getty
command_args_foreground="${agetty_options} ${port} ${baud} ${term_type}"
pidfile="/run/${RC_SVCNAME}.pid"
--
2.18.2

View File

@ -0,0 +1,29 @@
From c2dc04f6b8c6784941b896e0b17c160dd43a566f Mon Sep 17 00:00:00 2001
From: Carlos Santos <unixmania@gmail.com>
Date: Sun, 1 Mar 2020 11:14:37 -0300
Subject: [PATCH] init.d/agetty: start agetty after all services
This is required for Buildroot, to prevent mixing service initialization
messages with the getty prompt on devices with a single serial console.
Signed-off-by: Carlos Santos <unixmania@gmail.com>
---
init.d/agetty.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/init.d/agetty.in b/init.d/agetty.in
index e1864628..a1ad4e9f 100644
--- a/init.d/agetty.in
+++ b/init.d/agetty.in
@@ -19,7 +19,7 @@ command_args_foreground="${agetty_options} ${port} ${baud} ${term_type}"
pidfile="/run/${RC_SVCNAME}.pid"
depend() {
- after local
+ after *
keyword -prefix
provide getty
}
--
2.18.2

View File

@ -1,24 +0,0 @@
#!/sbin/openrc-run
# based on agetty service from OpenRC package
description="start getty on terminal"
supervisor=supervise-daemon
port="${RC_SVCNAME#*.}"
term_type="${term_type:-linux}"
command=/sbin/getty
command_args_foreground="${getty_options} ${baud} ${port} ${term_type}"
pidfile="/run/${RC_SVCNAME}.pid"
depend() {
# start getty at the very end of init
after *
keyword -prefix
}
start_pre() {
export EINFO_QUIET="${quiet:-yes}"
}
stop_pre() {
export EINFO_QUIET="${quiet:-yes}"
}

View File

@ -68,17 +68,15 @@ endef
OPENRC_TARGET_FINALIZE_HOOKS += OPENRC_REMOVE_UNNEEDED
ifeq ($(BR2_TARGET_GENERIC_GETTY),y)
OPENRC_GETTY_SVCNAME = getty.$(SYSTEM_GETTY_PORT)
OPENRC_GETTY_SVCNAME = agetty.$(SYSTEM_GETTY_PORT)
OPENRC_GETTY_CONF_D = $(TARGET_DIR)/etc/conf.d/$(OPENRC_GETTY_SVCNAME)
define OPENRC_SET_GETTY
{ \
echo "baud=\"$(SYSTEM_GETTY_BAUDRATE)\""; \
echo "term_type=\"$(SYSTEM_GETTY_TERM)\"" ; \
echo "getty_options=\"-L $(SYSTEM_GETTY_OPTIONS)\""; \
echo "agetty_options=\"-L $(SYSTEM_GETTY_OPTIONS)\""; \
} > $(OPENRC_GETTY_CONF_D)
$(INSTALL) -D -m 0755 $(OPENRC_PKGDIR)/getty \
$(TARGET_DIR)/etc/init.d/getty
ln -sf getty $(TARGET_DIR)/etc/init.d/$(OPENRC_GETTY_SVCNAME)
ln -sf agetty $(TARGET_DIR)/etc/init.d/$(OPENRC_GETTY_SVCNAME)
ln -sf /etc/init.d/$(OPENRC_GETTY_SVCNAME) \
$(TARGET_DIR)/etc/runlevels/default/$(OPENRC_GETTY_SVCNAME)
endef