aboutsummaryrefslogtreecommitdiffstats
path: root/init/serial.conf
diff options
context:
space:
mode:
Diffstat (limited to 'init/serial.conf')
-rw-r--r--init/serial.conf42
1 files changed, 42 insertions, 0 deletions
diff --git a/init/serial.conf b/init/serial.conf
new file mode 100644
index 00000000..660e93bd
--- /dev/null
+++ b/init/serial.conf
@@ -0,0 +1,42 @@
+# Automatically start a configured serial console
+#
+# How this works:
+#
+# On boot, a udev helper examines /dev/console. If a serial console is the
+# primary console (last console on the commandline in grub), the event
+# 'fedora.serial-console-available <port name> <speed>' is emitted, which
+# triggers this script. It waits for the runlevel to finish, ensures
+# the proper port is in /etc/securetty, and starts the getty.
+#
+# If your serial console is not the primary console, or you want a getty
+# on serial even if it's not the console, create your own event by copying
+# /etc/event.d/tty[2-6], and changing the getty line in that file.
+
+start on fedora.serial-console-available *
+stop on runlevel [016]
+
+instance
+pre-start script
+ while /bin/true ; do
+ LANG=C /sbin/initctl status rcS | grep -wq "rcS (stop) waiting" && break
+ sleep 1
+ done
+ while /bin/true ; do
+ runlevel=$(/sbin/runlevel | /bin/awk '{ print $2 }')
+ case "$runlevel" in
+ 2|3|4|5)
+ LANG=C /sbin/initctl status rc$runlevel | grep -wq "rc$runlevel (stop) waiting" && break
+ ;;
+ *)
+ ;;
+ esac
+ sleep 1
+ done
+ /sbin/securetty $1
+end script
+exec /sbin/agetty /dev/$1 $2 vt100-nav
+post-stop script
+ if [ "$UPSTART_EVENT" != "${UPSTART_EVENT##fedora.serial-console-available}" ]; then
+ initctl emit --no-wait fedora.serial-console-available $1 $2
+ fi
+end script