From 93a45c562a1989dfbb2dd08c65f8a21b02959934 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 25 Aug 2010 03:09:57 +0200 Subject: [PATCH] serial: use seperate getty template for serial ttys --- .gitignore | 2 +- Makefile.am | 20 +++++----- ...to-console-getty.c => auto-serial-getty.c} | 4 +- units/.gitignore | 1 + units/getty@.service.m4 | 2 +- units/serial-getty@.service.m4 | 37 +++++++++++++++++++ ...e.in => systemd-auto-serial-getty.service} | 4 +- 7 files changed, 55 insertions(+), 15 deletions(-) rename src/{auto-console-getty.c => auto-serial-getty.c} (97%) create mode 100644 units/serial-getty@.service.m4 rename units/{systemd-auto-console-getty.service.in => systemd-auto-serial-getty.service} (74%) diff --git a/.gitignore b/.gitignore index 1cee1b632..2c92ae05b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ systemd-kmsg-syslogd systemd-remount-api-vfs test-hostname systemd-modules-load -systemd-auto-console-getty +systemd-auto-serial-getty systemd-shutdownd systemd-random-seed systemd-update-utmp diff --git a/Makefile.am b/Makefile.am index aa2998d99..859d33267 100644 --- a/Makefile.am +++ b/Makefile.am @@ -73,7 +73,7 @@ rootlibexec_PROGRAMS = \ systemd-update-utmp \ systemd-random-seed \ systemd-shutdownd \ - systemd-auto-console-getty \ + systemd-auto-serial-getty \ systemd-modules-load \ systemd-remount-api-vfs \ systemd-kmsg-syslogd @@ -171,6 +171,7 @@ dist_systemunit_DATA = \ nodist_systemunit_DATA = \ units/sysinit.target \ units/getty@.service \ + units/serial-getty@.service \ units/graphical.target \ units/remote-fs.target \ units/multi-user.target \ @@ -178,7 +179,7 @@ nodist_systemunit_DATA = \ units/systemd-logger.service \ units/systemd-shutdownd.service \ units/systemd-kmsg-syslogd.service \ - units/systemd-auto-console-getty.service \ + units/systemd-auto-serial-getty.service \ units/systemd-modules-load.service \ units/systemd-remount-api-vfs.service \ units/systemd-update-utmp-runlevel.service \ @@ -197,6 +198,7 @@ nodist_sessionunit_DATA = \ EXTRA_DIST = \ units/sysinit.target.m4 \ units/getty@.service.m4 \ + units/serial-getty@.service.m4 \ units/graphical.target.m4 \ units/multi-user.target.m4 \ units/remote-fs.target.m4 \ @@ -204,7 +206,7 @@ EXTRA_DIST = \ units/systemd-logger.service.in \ units/systemd-shutdownd.service.in \ units/systemd-kmsg-syslogd.service.in \ - units/systemd-auto-console-getty.service.in \ + units/systemd-auto-serial-getty.service.in \ units/systemd-modules-load.service.in \ units/systemd-remount-api-vfs.service.in \ units/systemd-update-utmp-runlevel.service.in \ @@ -573,15 +575,15 @@ systemd_shutdownd_CFLAGS = \ systemd_shutdownd_LDADD = \ libsystemd-basic.la -systemd_auto_console_getty_SOURCES = \ - src/auto-console-getty.c \ +systemd_auto_serial_getty_SOURCES = \ + src/auto-serial-getty.c \ src/dbus-common.c -systemd_auto_console_getty_CFLAGS = \ +systemd_auto_serial_getty_CFLAGS = \ $(AM_CFLAGS) \ $(DBUS_CFLAGS) -systemd_auto_console_getty_LDADD = \ +systemd_auto_serial_getty_LDADD = \ libsystemd-basic.la \ $(DBUS_LIBS) @@ -896,14 +898,14 @@ install-data-hook: $(LN_S) $(systemunitdir)/reboot.target ctrl-alt-del.target && \ $(LN_S) $(systemunitdir)/rescue.target kbrequest.target ) ( cd $(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants && \ - rm -f getty@tty1.service getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service systemd-auto-console-getty.service && \ + rm -f getty@tty1.service getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service systemd-auto-serial-getty.service && \ $(LN_S) $(systemunitdir)/getty@.service getty@tty1.service && \ $(LN_S) $(systemunitdir)/getty@.service getty@tty2.service && \ $(LN_S) $(systemunitdir)/getty@.service getty@tty3.service && \ $(LN_S) $(systemunitdir)/getty@.service getty@tty4.service && \ $(LN_S) $(systemunitdir)/getty@.service getty@tty5.service && \ $(LN_S) $(systemunitdir)/getty@.service getty@tty6.service && \ - $(LN_S) $(systemunitdir)/systemd-auto-console-getty.service systemd-auto-console-getty.service ) + $(LN_S) $(systemunitdir)/systemd-auto-serial-getty.service systemd-auto-serial-getty.service ) ( cd $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants && \ rm -f getty.target remote-fs.target && \ $(LN_S) $(systemunitdir)/getty.target getty.target && \ diff --git a/src/auto-console-getty.c b/src/auto-serial-getty.c similarity index 97% rename from src/auto-console-getty.c rename to src/auto-serial-getty.c index 44d2eff73..7bc2fba8d 100644 --- a/src/auto-console-getty.c +++ b/src/auto-serial-getty.c @@ -42,7 +42,7 @@ static int spawn_getty(DBusConnection *bus, const char *console) { assert(console); /* FIXME: we probably should escape the tty name properly here */ - if (asprintf(&name, "getty@%s.service", console) < 0) + if (asprintf(&name, "serial-getty@%s.service", console) < 0) return -ENOMEM; if (!(m = dbus_message_new_method_call("org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "StartUnit"))) { @@ -115,7 +115,7 @@ static int parse_proc_cmdline(char **console) { assert(console); - if ((r = read_one_line_file("/tmp/cmdline", &line)) < 0) { + if ((r = read_one_line_file("/proc/cmdline", &line)) < 0) { log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); return 0; } diff --git a/units/.gitignore b/units/.gitignore index 82a24170c..35f790849 100644 --- a/units/.gitignore +++ b/units/.gitignore @@ -1,3 +1,4 @@ +serial-getty@.service systemd-kmsg-syslogd.service systemd-modules-load.service systemd-remount-api-vfs.service diff --git a/units/getty@.service.m4 b/units/getty@.service.m4 index 01343c497..4b65d5b90 100644 --- a/units/getty@.service.m4 +++ b/units/getty@.service.m4 @@ -30,7 +30,7 @@ Before=getty.target [Service] Environment=TERM=linux -ExecStart=GETTY %I +ExecStart=-GETTY %I Restart=restart-always RestartSec=0 KillMode=process-group diff --git a/units/serial-getty@.service.m4 b/units/serial-getty@.service.m4 new file mode 100644 index 000000000..b91ed9833 --- /dev/null +++ b/units/serial-getty@.service.m4 @@ -0,0 +1,37 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +[Unit] +Description=Serial Getty on %I +Requires=dev-%i.device +After=dev-%i.device +m4_ifdef(`TARGET_FEDORA', +After=rc-local.service +)m4_dnl +m4_ifdef(`TARGET_ARCH', +After=rc-local.service +)m4_dnl + +# If additional gettys are spawned during boot (possibly by +# systemd-auto-console-getty) then we should make sure that this is +# synchronized before getty.target, even though getty.target didn't +# actually pull it in. +Before=getty.target + +[Service] +Environment=TERM=vt100-nav +m4_ifdef(`TARGET_FEDORA', +ExecStartPre=-/sbin/securetty %I +)m4_dnl +ExecStart=-/sbin/agetty -s %I 115200,38400,9600 +Restart=restart-always +RestartSec=0 +KillMode=process-group + +# Some login implementations ignore SIGTERM, so we send SIGHUP +# instead, to ensure that login terminates cleanly. +KillSignal=SIGHUP diff --git a/units/systemd-auto-console-getty.service.in b/units/systemd-auto-serial-getty.service similarity index 74% rename from units/systemd-auto-console-getty.service.in rename to units/systemd-auto-serial-getty.service index 6542cab18..8051c7446 100644 --- a/units/systemd-auto-console-getty.service.in +++ b/units/systemd-auto-serial-getty.service @@ -6,11 +6,11 @@ # (at your option) any later version. [Unit] -Description=Automatically Spawn getty on Kernel Console +Description=Automatically Spawn getty on Serial Kernel Console [Service] Type=oneshot -ExecStart=@rootlibexecdir@/systemd-auto-console-getty +ExecStart=@rootlibexecdir@/systemd-auto-serial-getty [Install] WantedBy=getty.target -- 2.30.2