From d7bbb0f5830e1ec4df1ec52714d70ac6b0a81878 Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Thu, 9 Mar 2017 15:23:02 -0600 Subject: [PATCH] add agetty service The agetty service is an alternate way to manage gettys with agetty under Linux which is separate from an external init system. --- NEWS.md | 4 ++++ agetty-guide.md | 19 +++++++++++++++++++ conf.d/Makefile | 4 ++-- conf.d/agetty | 8 ++++++++ init.d/Makefile | 6 +++--- init.d/agetty.in | 31 +++++++++++++++++++++++++++++++ 6 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 agetty-guide.md create mode 100644 conf.d/agetty create mode 100644 init.d/agetty.in diff --git a/NEWS.md b/NEWS.md index 6e36b2b2..6f4f9777 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,6 +9,10 @@ Since the deptree2dot tool and the perl requirement are completely optional, the deptree2dot tool has been moved to the support directory. As a result, the MKTOOLS=yes/no switch has been removed from the makefiles. +This version adds the agetty service which can be used to spawn +agetty on a specific terminal. This is currently documented in the +agetty-guide.md file at the top level of this distribution. + ## OpenRC-0.23 The tmpfiles.d processing code, which was part of previous versions of diff --git a/agetty-guide.md b/agetty-guide.md new file mode 100644 index 00000000..ce46a830 --- /dev/null +++ b/agetty-guide.md @@ -0,0 +1,19 @@ +# Setting up the agetty service in OpenRC + +The agetty service is an OpenRC specific way to monitor and respawn a +getty, using agetty, on Linux. To use this method, make sure you aren't +spawning a getty manager for this port some other way (such as through +sysvinit/inittab), then run the following commands as root. + +Note that [port] refers to the port you are spawning the getty on, and +not the full path to it. For example, tty0 or ttyS0instead of /dev/tty0 +or /dev/ttyS0. +tty0 or ttyS0, not the full path to it (for example, tty0 or ttyS0 and + +``` +# cd /etc/init.d +# ln -s agetty agetty.[port] +# cd /etc/conf.d +# cp agetty agetty.[port] +#rc-update add agetty.[port] [runlevel] +``` diff --git a/conf.d/Makefile b/conf.d/Makefile index 6c7962b6..64168374 100644 --- a/conf.d/Makefile +++ b/conf.d/Makefile @@ -12,8 +12,8 @@ include ${MK}/os.mk CONF-FreeBSD= ipfw modules moused powerd rarpd savecore syscons -CONF-Linux= consolefont devfs dmesg hwclock keymaps killprocs modules mtab \ - net-online +CONF-Linux= agetty consolefont devfs dmesg hwclock keymaps killprocs modules \ + mtab net-online CONF-NetBSD= moused rarpd savecore diff --git a/conf.d/agetty b/conf.d/agetty new file mode 100644 index 00000000..012eb8de --- /dev/null +++ b/conf.d/agetty @@ -0,0 +1,8 @@ +# Set the baud rate of the terminal line +#baud="" + +# set the terminal type +#termtype="linux" + +# extra options to pass to agetty for this port +#agetty_options="" diff --git a/init.d/Makefile b/init.d/Makefile index 75c88adc..3ecab06b 100644 --- a/init.d/Makefile +++ b/init.d/Makefile @@ -21,9 +21,9 @@ SRCS-FreeBSD= hostid.in modules.in moused.in newsyslog.in pf.in rarpd.in \ SRCS-FreeBSD+= adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \ modules.in modules-load.in mixer.in nscd.in powerd.in syscons.in -SRCS-Linux= binfmt.in devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \ - killprocs.in modules.in modules-load.in mount-ro.in mtab.in numlock.in \ - procfs.in net-online.in sysfs.in termencoding.in +SRCS-Linux= agetty.in binfmt.in devfs.in dmesg.in hwclock.in consolefont.in \ + keymaps.in killprocs.in modules.in modules-load.in mount-ro.in mtab.in \ + numlock.in procfs.in net-online.in sysfs.in termencoding.in # Generic BSD scripts SRCS-NetBSD= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \ diff --git a/init.d/agetty.in b/init.d/agetty.in new file mode 100644 index 00000000..297733cb --- /dev/null +++ b/init.d/agetty.in @@ -0,0 +1,31 @@ +#!@SBINDIR@/openrc-run +# Copyright (c) 2017 The OpenRC Authors. +# See the Authors file at the top-level directory of this distribution and +# https://github.com/OpenRC/openrc/blob/master/AUTHORS +# +# This file is part of OpenRC. It is subject to the license terms in +# the LICENSE file found in the top-level directory of this +# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE +# This file may not be copied, modified, propagated, or distributed +# except according to the terms contained in the LICENSE file. + +description="start agetty on a terminal line" +supervisor=supervise-daemon +port="${RC_SVCNAME#*.}" +term_type="${term_type:-linux}" +command=/sbin/agetty +command_args_foreground="${agetty_options} ${port} ${baud} ${termtype}" +pidfile="/run/${RC_SVCNAME}.pid" + +depend() { + after local +} + +start_pre() { + if [ -z "$port" ]; then + eerror "${RC_SVCNAME} cannot be started directly. You must create" + eerror "symbolic links to it for the ports you want to start" + eerror "agetty on and add those to the appropriate runlevels." + return 1 + fi +}