summaryrefslogtreecommitdiff
path: root/extra/utmps
diff options
context:
space:
mode:
Diffstat (limited to 'extra/utmps')
-rw-r--r--extra/utmps/btmpd.initd24
-rw-r--r--extra/utmps/btmpd.logrotate6
-rw-r--r--extra/utmps/utmp-init.initd21
-rw-r--r--extra/utmps/utmp-prepare.initd25
-rw-r--r--extra/utmps/utmpd.initd23
-rw-r--r--extra/utmps/wtmpd.initd24
-rw-r--r--extra/utmps/wtmpd.logrotate6
7 files changed, 129 insertions, 0 deletions
diff --git a/extra/utmps/btmpd.initd b/extra/utmps/btmpd.initd
new file mode 100644
index 0000000..b9acc72
--- /dev/null
+++ b/extra/utmps/btmpd.initd
@@ -0,0 +1,24 @@
+#!/sbin/openrc-run
+# Copyright 2020-2021 Laurent Bercot for Alpine Linux
+# Distributed under the terms of the ISC License.
+#
+name=btmpd
+description="utmps daemon for the btmp service"
+
+command=/bin/s6-ipcserver
+command_args="/run/utmps/.btmpd-socket utmps-wtmpd btmp"
+command_user=utmp
+command_background=yes
+directory=/var/log/btmpd
+pidfile=/run/utmps/btmpd.pid
+
+depend() {
+ need localmount utmp-prepare
+ after bootmisc
+ before networking
+}
+
+start_pre() {
+ checkpath -d -o utmp:utmp -m 0755 /run/utmps
+ checkpath -d -o utmp:utmp -m 2755 /var/log/btmpd
+}
diff --git a/extra/utmps/btmpd.logrotate b/extra/utmps/btmpd.logrotate
new file mode 100644
index 0000000..b681d90
--- /dev/null
+++ b/extra/utmps/btmpd.logrotate
@@ -0,0 +1,6 @@
+/var/log/btmpd/btmp {
+ missingok
+ monthly
+ create 0644 utmp utmp
+ rotate 3
+}
diff --git a/extra/utmps/utmp-init.initd b/extra/utmps/utmp-init.initd
new file mode 100644
index 0000000..acb4dbe
--- /dev/null
+++ b/extra/utmps/utmp-init.initd
@@ -0,0 +1,21 @@
+#!/sbin/openrc-run
+# Copyright 2020-2022 Laurent Bercot for Alpine Linux
+# Distributed under the terms of the ISC License.
+#
+description="clearing and initialization of the utmp database"
+
+depend() {
+ need utmp-prepare utmpd wtmpd
+ before networking
+ after clock
+}
+
+start() {
+ # Create an empty utmp file
+ checkpath -F -f -m 0644 -o utmp:utmp /run/utmps/utmp
+
+ # Write the initial records as sysvinit/busybox init would do.
+ # 20018 = 256 * 'N' + '2'. Don't ask.
+ utmps-write -t 2000 -uw -l reboot -p 0 -h "$(uname -r)" -- '~~' BOOT_TIME '~'
+ utmps-write -t 2000 -uw -l runlevel -p 20018 -h "$(uname -r)" -- '~~' RUN_LVL '~'
+}
diff --git a/extra/utmps/utmp-prepare.initd b/extra/utmps/utmp-prepare.initd
new file mode 100644
index 0000000..9f61249
--- /dev/null
+++ b/extra/utmps/utmp-prepare.initd
@@ -0,0 +1,25 @@
+#!/sbin/openrc-run
+# Copyright 2020-2022 Laurent Bercot for Alpine Linux
+# Distributed under the terms of the ISC License.
+#
+description="preparation of the utmp databases"
+
+depend() {
+ before networking
+ after clock
+}
+
+start() {
+ if ! test -L /var/log/utmp || test "$(readlink /var/log/utmp)" != /run/utmps/utmp ; then
+ rm -f /var/log/utmp
+ ln -s /run/utmps/utmp /var/log/utmp
+ fi
+ if ! test -L /var/log/wtmp || test "$(readlink /var/log/wtmp)" != wtmpd/wtmp ; then
+ rm -f /var/log/wtmp
+ ln -s wtmpd/wtmp /var/log/wtmp
+ fi
+ if ! test -L /var/log/btmp || test "$(readlink /var/log/btmp)" != btmpd/btmp ; then
+ rm -f /var/log/btmp
+ ln -s btmpd/btmp /var/log/btmp
+ fi
+}
diff --git a/extra/utmps/utmpd.initd b/extra/utmps/utmpd.initd
new file mode 100644
index 0000000..d04c6b9
--- /dev/null
+++ b/extra/utmps/utmpd.initd
@@ -0,0 +1,23 @@
+#!/sbin/openrc-run
+# Copyright 2020-2021 Laurent Bercot for Alpine Linux
+# Distributed under the terms of the ISC License.
+#
+name="utmpd"
+description="utmps daemon for the utmp service"
+
+command=/bin/s6-ipcserver
+command_args="/run/utmps/.utmpd-socket utmps-utmpd"
+command_user=utmp
+command_background=yes
+directory=/run/utmps
+pidfile=/run/utmps/utmpd.pid
+
+depend() {
+ need utmp-prepare
+ after bootmisc
+ before networking
+}
+
+start_pre() {
+ checkpath -d -o utmp:utmp -m 0755 /run/utmps
+}
diff --git a/extra/utmps/wtmpd.initd b/extra/utmps/wtmpd.initd
new file mode 100644
index 0000000..8d3f624
--- /dev/null
+++ b/extra/utmps/wtmpd.initd
@@ -0,0 +1,24 @@
+#!/sbin/openrc-run
+# Copyright 2020-2021 Laurent Bercot for Alpine Linux
+# Distributed under the terms of the ISC License.
+#
+name=wtmpd
+description="utmps daemon for the wtmp service"
+
+command=/bin/s6-ipcserver
+command_args="/run/utmps/.wtmpd-socket utmps-wtmpd wtmp"
+command_user=utmp
+command_background=yes
+directory=/var/log/wtmpd
+pidfile=/run/utmps/wtmpd.pid
+
+depend() {
+ need localmount utmp-prepare
+ after bootmisc
+ before networking
+}
+
+start_pre() {
+ checkpath -d -o utmp:utmp -m 0755 /run/utmps
+ checkpath -d -o utmp:utmp -m 2755 /var/log/wtmpd
+}
diff --git a/extra/utmps/wtmpd.logrotate b/extra/utmps/wtmpd.logrotate
new file mode 100644
index 0000000..bb23536
--- /dev/null
+++ b/extra/utmps/wtmpd.logrotate
@@ -0,0 +1,6 @@
+/var/log/wtmpd/wtmp {
+ missingok
+ monthly
+ create 0644 utmp utmp
+ rotate 3
+}