chiark / gitweb /
container: spawn a getty instead of a sulogin in a container
authorLennart Poettering <lennart@poettering.net>
Sun, 22 Apr 2012 00:15:22 +0000 (02:15 +0200)
committerLennart Poettering <lennart@poettering.net>
Sun, 22 Apr 2012 00:41:18 +0000 (02:41 +0200)
Makefile.am
src/getty-generator/getty-generator.c
units/.gitignore
units/console-getty.service.m4.in [new file with mode: 0644]

index 22a04d4a1bafc3e1abfda0c80f6e2c54006d8d4b..ab7fca677a5165f0d91f257d7858be9e2b55a7a5 100644 (file)
@@ -304,6 +304,7 @@ nodist_systemunit_DATA = \
        units/getty@.service \
        units/serial-getty@.service \
        units/console-shell.service \
        units/getty@.service \
        units/serial-getty@.service \
        units/console-shell.service \
+       units/console-getty.service \
        units/systemd-initctl.service \
        units/systemd-shutdownd.service \
        units/systemd-modules-load.service \
        units/systemd-initctl.service \
        units/systemd-shutdownd.service \
        units/systemd-modules-load.service \
@@ -339,6 +340,7 @@ EXTRA_DIST += \
        units/getty@.service.m4 \
        units/serial-getty@.service.m4 \
        units/console-shell.service.m4.in \
        units/getty@.service.m4 \
        units/serial-getty@.service.m4 \
        units/console-shell.service.m4.in \
+       units/console-getty.service.m4.in \
        units/rescue.service.m4.in \
        units/systemd-initctl.service.in \
        units/systemd-shutdownd.service.in \
        units/rescue.service.m4.in \
        units/systemd-initctl.service.in \
        units/systemd-shutdownd.service.in \
index 58ad8a66358e4b8a5d2cefc2d2e3d9321c8d19be..13dca7d1b0acccbe2ed8940c9d01dd888276dd5a 100644 (file)
@@ -116,7 +116,7 @@ int main(int argc, char *argv[]) {
         if (detect_container(NULL) > 0) {
                 log_debug("Automatically adding console shell.");
 
         if (detect_container(NULL) > 0) {
                 log_debug("Automatically adding console shell.");
 
-                if (add_symlink("console-shell.service", "console-shell.service") < 0)
+                if (add_symlink("console-getty.service", "console-getty.service") < 0)
                         r = EXIT_FAILURE;
 
                 /* Don't add any further magic if we are in a container */
                         r = EXIT_FAILURE;
 
                 /* Don't add any further magic if we are in a container */
index eda676a48004ff40b7cacafec3e7a13274cf7183..16cbf2df2ba274415f07c2f3290530ea71b9ca46 100644 (file)
@@ -1,3 +1,4 @@
+/console-getty.service
 /systemd-journald.service
 user@.service
 systemd-logind.service
 /systemd-journald.service
 user@.service
 systemd-logind.service
diff --git a/units/console-getty.service.m4.in b/units/console-getty.service.m4.in
new file mode 100644 (file)
index 0000000..9473d61
--- /dev/null
@@ -0,0 +1,47 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+
+[Unit]
+Description=Console Getty
+After=systemd-user-sessions.service plymouth-quit-wait.service
+m4_ifdef(`TARGET_FEDORA',
+After=rc-local.service
+)m4_dnl
+m4_ifdef(`TARGET_ARCH',
+After=rc-local.service
+)m4_dnl
+m4_ifdef(`TARGET_FRUGALWARE',
+After=local.service
+)m4_dnl
+m4_ifdef(`TARGET_ALTLINUX',
+After=rc-local.service
+)m4_dnl
+m4_ifdef(`TARGET_MANDRIVA',
+After=rc-local.service
+)m4_dnl
+m4_ifdef(`TARGET_MAGEIA',
+After=rc-local.service
+)m4_dnl
+Before=getty.target
+
+[Service]
+ExecStart=-/sbin/agetty --noclear -s console 115200,38400,9600
+Restart=always
+RestartSec=0
+UtmpIdentifier=cons
+TTYPath=/dev/console
+TTYReset=yes
+TTYVHangup=yes
+KillMode=process
+IgnoreSIGPIPE=no
+
+# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
+# terminates cleanly.
+KillSignal=SIGHUP
+
+[Install]
+WantedBy=getty.target