summaryrefslogtreecommitdiff
path: root/system/s6-linux-init
diff options
context:
space:
mode:
authorLaurent Bercot <ska-adelie@skarnet.org>2019-10-03 10:31:29 -0500
committerLaurent Bercot <ska-adelie@skarnet.org>2019-10-03 10:31:29 -0500
commit2c782daf6fae1b418168a5e8a9336fe9e6b9215e (patch)
tree8b749945bc1d8baca29d60e573ceadbab69e8c6f /system/s6-linux-init
parent7fabe3e35d27fd34b780d135ac09b846a4083257 (diff)
downloadpackages-2c782daf6fae1b418168a5e8a9336fe9e6b9215e.tar.gz
packages-2c782daf6fae1b418168a5e8a9336fe9e6b9215e.tar.bz2
packages-2c782daf6fae1b418168a5e8a9336fe9e6b9215e.tar.xz
packages-2c782daf6fae1b418168a5e8a9336fe9e6b9215e.zip
system/s6-linux-init: make early getty configurable. PLEASE REVIEW.
Also touches gettys-openrc to avoid spawning the same getty twice.
Diffstat (limited to 'system/s6-linux-init')
-rw-r--r--system/s6-linux-init/APKBUILD13
-rw-r--r--system/s6-linux-init/earlygetty.run31
2 files changed, 38 insertions, 6 deletions
diff --git a/system/s6-linux-init/APKBUILD b/system/s6-linux-init/APKBUILD
index 7dff13d2e..d9855abd2 100644
--- a/system/s6-linux-init/APKBUILD
+++ b/system/s6-linux-init/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
pkgname=s6-linux-init
pkgver=1.0.3.0
-pkgrel=0
+pkgrel=1
pkgdesc="A s6-based init system"
url="https://skarnet.org/software/$pkgname/"
arch="all"
@@ -12,10 +12,9 @@ _skalibs_version=2.9.0.0
depends="execline s6 s6-linux-init-common"
makedepends="skalibs-dev>=$_skalibs_version execline-dev s6-dev utmps-dev"
subpackages="$pkgname-common:common:noarch $pkgname-early-getty:earlygetty:noarch $pkgname-libs $pkgname-dev $pkgname-libs-dev:libsdev $pkgname-doc"
-source="https://skarnet.org/software/$pkgname/$pkgname-$pkgver.tar.gz rc.init runlevel rc.shutdown reboot.sh"
+source="https://skarnet.org/software/$pkgname/$pkgname-$pkgver.tar.gz rc.init runlevel rc.shutdown reboot.sh earlygetty.run"
install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-deinstall"
provides="/sbin/init=0"
-_earlytty=tty2
build() {
cd "$builddir"
@@ -46,7 +45,7 @@ package() {
./s6-linux-init-maker \
-u catchlog \
- -G "/sbin/agetty -- 38400 $_earlytty linux" \
+ -G "sleep 86400" \
-1 \
-L \
-p "/usr/bin:/usr/sbin:/bin:/sbin" \
@@ -78,12 +77,14 @@ common() {
earlygetty() {
- pkgdesc="Files for an early getty on $_earlytty"
+ pkgdesc="Files for a configurable early getty"
depends="s6-linux-init-common"
svcimg="$pkgdir/etc/s6-linux-init/current/run-image/service"
subsvcimg="$subpkgdir/etc/s6-linux-init/current/run-image/service"
mkdir -p -m 0755 "$subsvcimg"
- mv "$svcimg/s6-linux-init-early-getty" "$subsvcimg/getty-$_earlytty"
+ mv "$svcimg/s6-linux-init-early-getty" "$subsvcimg/"
+ cp -f "$srcdir/earlygetty.run" "$subsvcimg/s6-linux-init-early-getty/run"
+ chmod 0755 "$subsvcimg/s6-linux-init-early-getty/run"
}
diff --git a/system/s6-linux-init/earlygetty.run b/system/s6-linux-init/earlygetty.run
new file mode 100644
index 000000000..809fac747
--- /dev/null
+++ b/system/s6-linux-init/earlygetty.run
@@ -0,0 +1,31 @@
+#!/bin/sh -e
+
+tty=tty2
+baud=
+options='-L'
+
+if line=`head -n 1 /run/kernel_env/earlygetty` ; then
+ tty="${line%%,*}"
+ bpnf="${line##*,}"
+ nf=
+ f=
+ clean=false
+ case "$bpnf" in
+ *n*) baud=${bpnf%%n*} ; nf="${bpnf##*n}" ; clean=true ;;
+ *o*) baud=${bpnf%%o*} ; nf="${bpnf##*o}" ;;
+ *e*) baud=${bpnf%%e*} ; nf="${bpnf##*e}" ;;
+ [[:digit:]]*) baud=$bpnf
+ esac
+ case "$nf" in
+ 7*) clean=false ; f="${nf#7}" ;;
+ [[:digit:]]*) clean=true ; f="${nf#?}"
+ esac
+ if $clean ; then
+ options="$options -8"
+ fi
+ if test "$f" = 'r' ; then
+ options="$options -h"
+ fi
+fi
+
+exec /sbin/agetty $options -- "$tty" "$baud"