summaryrefslogtreecommitdiff
path: root/system/sysvinit
diff options
context:
space:
mode:
Diffstat (limited to 'system/sysvinit')
-rw-r--r--system/sysvinit/APKBUILD29
-rw-r--r--system/sysvinit/inittab-2.8820
-rw-r--r--system/sysvinit/s6-svscanboot15
-rw-r--r--system/sysvinit/sysvinit.post-install25
4 files changed, 76 insertions, 13 deletions
diff --git a/system/sysvinit/APKBUILD b/system/sysvinit/APKBUILD
index d282e1e01..b95525084 100644
--- a/system/sysvinit/APKBUILD
+++ b/system/sysvinit/APKBUILD
@@ -2,21 +2,22 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sysvinit
pkgver=2.88
-pkgrel=5
+pkgrel=6
pkgdesc="System V-style init programs"
url="https://savannah.nongnu.org/projects/sysvinit"
arch="all"
license="GPL-2.0+"
-depends="s6"
+depends="s6-linux-init-common"
makedepends="linux-headers utmps-dev"
-install="sysvinit.post-upgrade"
+install="sysvinit.post-upgrade sysvinit.post-install"
options="!check"
-provides="/sbin/init"
+provides="/sbin/init=0"
subpackages="$pkgname-doc"
source="https://download.savannah.nongnu.org/releases/sysvinit/sysvinit-${pkgver}dsf.tar.bz2
inittab-2.88
sysvinit-2.88-posix-header.patch
utmpx.patch
+ s6-svscanboot
"
builddir="$srcdir/sysvinit-${pkgver}dsf"
@@ -49,14 +50,30 @@ build() {
make -C src
}
+_install_s6_stuff()
+{
+ svcimg="$pkgdir/etc/s6-linux-init/current/run-image/service"
+ mkdir -p -m 0755 "$pkgdir/sbin" "$svcimg/.s6-svscan" "$svcimg/s6-svscan-log"
+ { echo '#!/bin/execlineb -P' ; echo 'false' ; } > "$svcimg/.s6-svscan/crash"
+ chmod 0755 "$svcimg/.s6-svscan/crash"
+ { echo '#!/bin/execlineb -P' ; echo 's6-svc -X -- /run/service/s6-svscan-log' ; } > "$svcimg/.s6-svscan/finish"
+ chmod 0755 "$svcimg/.s6-svscan/finish"
+ { echo '#!/bin/execlineb -P' ; echo 'redirfd -rnb 0 fifo' ; echo 's6-setuidgid catchlog' ; echo 's6-log -bd3 -- t /run/uncaught-logs' ; } > "$svcimg/s6-svscan-log/run"
+ chmod 0755 "$svcimg/s6-svscan-log/run"
+ install -D -m 0755 "$srcdir"/s6-svscanboot "$pkgdir/sbin/s6-svscanboot"
+}
+
package() {
cd "$builddir"
make -C src install ROOT="$pkgdir"
rm "$pkgdir"/usr/bin/lastb || true
install -D -m644 "$srcdir"/inittab-2.88 "$pkgdir"/etc/inittab
+ _install_s6_stuff
}
+
sha512sums="0bd8eeb124e84fdfa8e621b05f796804ee69a9076b65f5115826bfa814ac1d5d28d31a5c22ebe77c86a93b2288edf4891adc0afaecc4de656c4ecda8a83807bf sysvinit-2.88dsf.tar.bz2
-52d301225bf0cb0c4d124d205cf3a1e1f4eca21a69179da4882359f79606562354fddf887da8203129bede1d073efa9cdd8fe84a327b51229248b22240b9d5dd inittab-2.88
+87668b49690091a227c0384fd2400f1006d24c27cc27a25efa7eba56839ccb1eead00b58ce4b654eab9c0208d68aa2cbb888fd5f2990905845aa9688442a69a0 inittab-2.88
27dfe089660a291cbcba06d8564bad11f7fd7c96629e72c2b005562689dc7d8bb479c760e980590906e98423b991ae0acd048713d3bc372174d55ed894abeb3f sysvinit-2.88-posix-header.patch
-3605f88ac3faf7d12bf2269ca5d8625850d53e8583b573ab280fa17066c8e4e5217a0d17b94e47ea67a153ad3b88b433471a77544bd085f01f7d9d353ac16aae utmpx.patch"
+3605f88ac3faf7d12bf2269ca5d8625850d53e8583b573ab280fa17066c8e4e5217a0d17b94e47ea67a153ad3b88b433471a77544bd085f01f7d9d353ac16aae utmpx.patch
+30fc01b99350d9cb9e2d430f32c357fce571864e618f25fc2c82199f0ae36f3d81316b175af37ff779c0ef26780452877ff0355b3ea47e2ef4eadc823d085e98 s6-svscanboot"
diff --git a/system/sysvinit/inittab-2.88 b/system/sysvinit/inittab-2.88
index e96205a06..f170042cf 100644
--- a/system/sysvinit/inittab-2.88
+++ b/system/sysvinit/inittab-2.88
@@ -16,30 +16,36 @@
# Default runlevel.
id:3:initdefault:
-# System initialization, mount local filesystems, etc.
+# Early system initialization.
si::sysinit:/sbin/openrc sysinit
-# Further system initialization, brings up the boot runlevel.
+# Further system initialization.
+# The distinction between sysinit and boot is totally arbitrary.
+# With the current OpenRC, sysinit does almost nothing and boot
+# does almost everything.
rc::bootwait:/sbin/openrc boot
+# Start the s6 supervision tree.
+s6:12345:respawn:/sbin/s6-svscanboot
+
+# Wait for the supervision tree to be operational before launching services.
+s6n:12345:wait:/bin/sh -c 'until test -s /run/s6_ready ; do sleep 1 ; done'
+
l0:0:wait:/sbin/openrc shutdown
-l0s:0:wait:/sbin/halt -hnp
+l0s:0:wait:/sbin/poweroff -df
l1:1:wait:/sbin/openrc single
l2:2:wait:/sbin/openrc nonetwork
l3:3:wait:/sbin/openrc default
l4:4:wait:/sbin/openrc default
l5:5:wait:/sbin/openrc default
l6:6:wait:/sbin/openrc reboot
-l6r:6:wait:/sbin/reboot -fin
+l6r:6:wait:/sbin/reboot -df
#z6:6:respawn:/sbin/sulogin
# new-style single-user
su0:S:wait:/sbin/openrc single
su1:S:wait:/sbin/sulogin
-# We now delegate all "respawn" services, including terminals, to s6.
-s6:12345:respawn:/lib/s6/s6-svscanboot
-
# What to do at the "Three Finger Salute".
ca:12345:ctrlaltdel:/sbin/shutdown -r now
diff --git a/system/sysvinit/s6-svscanboot b/system/sysvinit/s6-svscanboot
new file mode 100644
index 000000000..8c134b485
--- /dev/null
+++ b/system/sysvinit/s6-svscanboot
@@ -0,0 +1,15 @@
+#!/bin/execlineb -P
+
+define RUNIMG /etc/s6-linux-init/current/run-image
+export PATH /usr/bin:/usr/sbin:/bin:/sbin
+umask 022
+redirfd -r 0 /dev/null
+if
+{
+ elglob -0 files ${RUNIMG}/*
+ cp -a $files /run/
+}
+redirfd -w 3 /run/s6_ready
+redirfd -wnb 1 /run/service/s6-svscan-log/fifo
+fdmove -c 2 1
+s6-svscan -St0 -d3 /run/service
diff --git a/system/sysvinit/sysvinit.post-install b/system/sysvinit/sysvinit.post-install
new file mode 100644
index 000000000..4548041d9
--- /dev/null
+++ b/system/sysvinit/sysvinit.post-install
@@ -0,0 +1,25 @@
+#!/bin/sh -e
+
+newv="$1"
+oldv="$2"
+
+cat <<EOF
+
+*
+* You installed the sysvinit package. If it's your first installation,
+* please ignore this message. But if you just removed the s6-linux-init
+* package in order to use sysvinit instead, please read on.
+*
+* In order to complete the switch, you need to reboot your machine. But
+* beware: just for this time, the usual shutdown commands won't work,
+* because they are designed to work with sysvinit but you are still
+* running s6-linux-init until you reboot. So, for your next reboot (and
+* only this one), the command you will need to run (as root, FROM A
+* CONSOLE TTY - not an xterm, not a network connection) is:
+*
+* /bin/sh /usr/share/s6-linux-init-common/reboot.sh
+*
+* Please save your work and perform that reboot as soon as you can.
+*
+
+EOF