8 Commits

Author SHA1 Message Date
20a1ca16bc Update Makefile
- Move back non-sysv packages in /usr/bin
- Split off sysv-compatible binaries into 'install_sysv'
2018-03-28 21:54:05 +07:00
82bf65d4fa Move remaining shutdown services to its own place 2018-03-27 19:39:43 +07:00
f8a8bc673b Separate shutdown services 2018-03-26 16:45:26 +07:00
65e0733db7 README 2018-01-12 17:23:51 +07:00
d9721360b1 clean up /tmp 2018-01-11 18:10:16 +07:00
Daniel Néri
a3bcf72edb core-services/01-static-devnodes.sh: Honour modprobe blacklists 2018-01-11 12:18:02 +07:00
f3b0b94b3b Add opentmpfiles 2018-01-11 12:11:00 +07:00
Faule Socke
d100216548 Fixed sysctl-file processing order
To avoid local administrator settings getting overwritten by vendor
settings.

Since Artix doesn't have the same issue as Void, this patch can be
applied with no problem.
2018-01-11 11:41:20 +07:00
15 changed files with 88 additions and 63 deletions

47
3
View File

@@ -11,49 +11,10 @@ if [ -e /run/runit/reboot ]; then
chmod 100 /run/runit/reboot chmod 100 /run/runit/reboot
fi fi
echo
msg "Waiting for services to stop..."
sv force-stop /run/runit/service/*
sv exit /run/runit/service/*
[ -x /etc/runit/rc.shutdown ] && /etc/runit/rc.shutdown [ -x /etc/runit/rc.shutdown ] && /etc/runit/rc.shutdown
msg "Saving random seed..." for f in /etc/runit/shutdown-services/*.sh; do
( umask 077; bytes=$(cat /proc/sys/kernel/random/poolsize) || bytes=512; dd if=/dev/urandom of=/var/lib/random-seed count=1 bs=$bytes >/dev/null 2>&1 ) [ -r $f ] && . $f
done
if [ -z "$VIRTUALIZATION" -a -n "$HARDWARECLOCK" ]; then msg "Stage 3 completed."
hwclock --systohc ${HARDWARECLOCK:+--$(echo $HARDWARECLOCK |tr A-Z a-z)}
fi
halt -w # for utmp
if [ -z "$VIRTUALIZATION" ]; then
msg "Stopping udev..."
udevadm control --exit
fi
msg "Sending TERM signal to processes..."
pkill --inverse -s0,1 -TERM
sleep 1
msg "Sending KILL signal to processes..."
pkill --inverse -s0,1 -KILL
if [ -z "$VIRTUALIZATION" ]; then
msg "Unmounting filesystems, disabling swap..."
swapoff -a
umount -r -a -t nosysfs,noproc,nodevtmpfs,notmpfs
msg "Remounting rootfs read-only..."
mount -o remount,ro /
fi
sync
if [ -z "$VIRTUALIZATION" ]; then
deactivate_vgs
deactivate_crypt
if [ -e /run/runit/reboot ] && command -v kexec >/dev/null; then
msg "Triggering kexec..."
kexec -e 2>/dev/null
# not reached when kexec was successful.
fi
fi

View File

@@ -6,27 +6,26 @@ all:
$(CC) $(CFLAGS) pause.c -o pause $(LDFLAGS) $(CC) $(CFLAGS) pause.c -o pause $(LDFLAGS)
install: install:
install -d ${DESTDIR}${PREFIX}/bin
install -d ${DESTDIR}${PREFIX}/lib/runit-artix/bin install -d ${DESTDIR}${PREFIX}/lib/runit-artix/bin
install -m755 pause ${DESTDIR}${PREFIX}/bin/pause
install -m755 modules-load ${DESTDIR}${PREFIX}/bin/modules-load
install -m755 zzz ${DESTDIR}${PREFIX}/bin/zzz
install -m755 halt ${DESTDIR}${PREFIX}/lib/runit-artix/bin/halt install -m755 halt ${DESTDIR}${PREFIX}/lib/runit-artix/bin/halt
install -m755 pause ${DESTDIR}${PREFIX}/lib/runit-artix/bin/pause
install -m755 shutdown ${DESTDIR}${PREFIX}/lib/runit-artix/bin/shutdown install -m755 shutdown ${DESTDIR}${PREFIX}/lib/runit-artix/bin/shutdown
install -m755 modules-load ${DESTDIR}${PREFIX}/lib/runit-artix/bin/modules-load
install -m755 zzz ${DESTDIR}${PREFIX}/lib/runit-artix/bin/zzz
ln -sf halt ${DESTDIR}${PREFIX}/lib/runit-artix/bin/poweroff ln -sf halt ${DESTDIR}${PREFIX}/lib/runit-artix/bin/poweroff
ln -sf halt ${DESTDIR}${PREFIX}/lib/runit-artix/bin/reboot ln -sf halt ${DESTDIR}${PREFIX}/lib/runit-artix/bin/reboot
install -d ${DESTDIR}${PREFIX}/share/man/man1 install -d ${DESTDIR}${PREFIX}/share/man/man1
install -m644 pause.1 ${DESTDIR}${PREFIX}/share/man/man1 install -m644 pause.1 ${DESTDIR}${PREFIX}/share/man/man1
install -d ${DESTDIR}${PREFIX}/share/man/man8 install -d ${DESTDIR}${PREFIX}/share/man/man8
install -m644 zzz.8 ${DESTDIR}${PREFIX}/share/man/man8/zzz-runit.8 install -m644 zzz.8 ${DESTDIR}${PREFIX}/share/man/man8/zzz.8
install -m644 shutdown.8 ${DESTDIR}${PREFIX}/share/man/man8/shutdown-runit.8
install -m644 halt.8 ${DESTDIR}${PREFIX}/share/man/man8/halt-runit.8
install -m644 modules-load.8 ${DESTDIR}${PREFIX}/share/man/man8 install -m644 modules-load.8 ${DESTDIR}${PREFIX}/share/man/man8
ln -sf halt-runit.8 ${DESTDIR}${PREFIX}/share/man/man8/poweroff-runit.8
ln -sf halt-runit.8 ${DESTDIR}${PREFIX}/share/man/man8/reboot-runit.8
install -d ${DESTDIR}/etc/runit/sv install -d ${DESTDIR}/etc/runit/sv
install -d ${DESTDIR}/etc/runit/runsvdir install -d ${DESTDIR}/etc/runit/runsvdir
install -d ${DESTDIR}/etc/runit/core-services install -d ${DESTDIR}/etc/runit/core-services
install -d ${DESTDIR}/etc/runit/shutdown-services
install -m644 core-services/*.sh ${DESTDIR}/etc/runit/core-services install -m644 core-services/*.sh ${DESTDIR}/etc/runit/core-services
install -m644 shutdown-services/*.sh ${DESTDIR}/etc/runit/shutdown-services
install -m755 ${SCRIPTS} ${DESTDIR}/etc/runit install -m755 ${SCRIPTS} ${DESTDIR}/etc/runit
install -m644 functions $(DESTDIR)/etc/runit install -m644 functions $(DESTDIR)/etc/runit
install -m644 crypt.awk ${DESTDIR}/etc/runit install -m644 crypt.awk ${DESTDIR}/etc/runit
@@ -38,7 +37,19 @@ install:
cp -R --no-dereference --preserve=mode,links -v runsvdir/* ${DESTDIR}/etc/runit/runsvdir/ cp -R --no-dereference --preserve=mode,links -v runsvdir/* ${DESTDIR}/etc/runit/runsvdir/
cp -R --no-dereference --preserve=mode,links -v services/* ${DESTDIR}/etc/runit/sv/ cp -R --no-dereference --preserve=mode,links -v services/* ${DESTDIR}/etc/runit/sv/
install_sysv:
install -d ${DESTDIR}${PREFIX}/bin
ln -sf runit-init ${DESTDIR}${PREFIX}/bin/init
ln -sf ${PREFIX}/lib/runit-artix/bin/halt ${DESTDIR}${PREFIX}/bin/halt
ln -sf ${PREFIX}/lib/runit-artix/bin/shutdown ${DESTDIR}${PREFIX}/bin/shutdown
ln -sf halt ${DESTDIR}${PREFIX}/bin/poweroff
ln -sf halt ${DESTDIR}${PREFIX}/bin/reboot
install -m644 shutdown.8 ${DESTDIR}${PREFIX}/share/man/man8/shutdown.8
install -m644 halt.8 ${DESTDIR}${PREFIX}/share/man/man8/halt.8
ln -sf halt.8 ${DESTDIR}${PREFIX}/share/man/man8/poweroff.8
ln -sf halt.8 ${DESTDIR}${PREFIX}/share/man/man8/reboot.8
clean: clean:
-rm -f halt pause -rm -f halt pause
.PHONY: all install clean .PHONY: all install install_sysv clean

View File

@@ -4,21 +4,24 @@ This repository contains the runit init scripts for the Artix Linux
distribution. distribution.
This work is based on Void Linux's This work is based on Void Linux's
[runit-void](https://github.com/voidlinux/void-runit). Patches to Void [void-runit](https://github.com/voidlinux/void-runit). Patches to Void
Linux's repo will also be applied here. Linux's repo will also be applied here.
## Dependencies ## Dependencies
- GNU coreutils
- A POSIX shell - A POSIX shell
- A POSIX awk - A POSIX awk
- procps-ng (needs pkill -s0,1) - procps-ng (needs pkill -s0,1)
- runit - runit
- opentmpfiles
- opensysusers
### How to use it ### How to use it
To see enabled services for "current" runlevel: To see enabled services for "current" runlevel:
$ ls -l /var/service $ ls -l /run/runit/service
To see available runlevels (default and single, which just runs sulogin): To see available runlevels (default and single, which just runs sulogin):
@@ -26,21 +29,21 @@ To see available runlevels (default and single, which just runs sulogin):
To enable and start a service into the "current" runlevel: To enable and start a service into the "current" runlevel:
# ln -s /etc/runit/sv/<service> /var/service # ln -s /etc/runit/sv/<service> /run/runit/service
To disable and remove a service: To disable and remove a service:
# rm -f /var/service/<service> # rm -f /run/runit/service/<service>
To view status of all services for "current" runlevel: To view status of all services for "current" runlevel:
# sv status /var/service/* # sv status /run/runit/service/*
Feel free to send patches and contribute with improvements! Feel free to send patches and contribute with improvements!
## Copyright ## Copyright
runit-cromnix is in the public domain. runit-artix is in the public domain.
To the extent possible under law, the creator of this work has waived To the extent possible under law, the creator of this work has waived
all copyright and related or neighboring rights to this work. all copyright and related or neighboring rights to this work.

View File

@@ -2,5 +2,5 @@
# Load them by looking at the output of `kmod static-nodes`. # Load them by looking at the output of `kmod static-nodes`.
for f in $(kmod static-nodes 2>/dev/null|awk '/Module/ {print $2}'); do for f in $(kmod static-nodes 2>/dev/null|awk '/Module/ {print $2}'); do
modprobe -q $f 2>/dev/null modprobe -bq $f 2>/dev/null
done done

View File

@@ -10,6 +10,11 @@ else
msg_warn "cannot find udevd!" msg_warn "cannot find udevd!"
fi fi
if [ -x /usr/bin/tmpfiles ]; then
msg "Setting up tmpfiles.d entries for /dev..."
tmpfiles --prefix=/dev --create --boot
fi
if [ -n "${_udevd}" ]; then if [ -n "${_udevd}" ]; then
msg "Starting udev and waiting for devices to settle..." msg "Starting udev and waiting for devices to settle..."
${_udevd} --daemon ${_udevd} --daemon

View File

@@ -21,4 +21,11 @@ if [ -n "$TIMEZONE" ]; then
fi fi
msg "Setting up sysusers.d entries..." msg "Setting up sysusers.d entries..."
sysusers if [ -x /usr/bin/sysusers ]; then
sysusers
fi
msg "Setting up tmpfiles.d entries..."
if [ -x /usr/bin/tmpfiles ]; then
tmpfiles --exclude-prefix=/dev --create --remove --boot
fi

View File

@@ -3,10 +3,10 @@
if [ -x /sbin/sysctl -o -x /bin/sysctl ]; then if [ -x /sbin/sysctl -o -x /bin/sysctl ]; then
msg "Loading sysctl(8) settings..." msg "Loading sysctl(8) settings..."
for i in /run/sysctl.d/*.conf \ for i in /run/sysctl.d/*.conf \
/etc/sysctl.d/*.conf \
/usr/local/lib/sysctl.d/*.conf \ /usr/local/lib/sysctl.d/*.conf \
/usr/lib/sysctl.d/*.conf \ /usr/lib/sysctl.d/*.conf \
/etc/sysctl.conf; do /etc/sysctl.conf \
/etc/sysctl.d/*.conf; do
if [ -e "$i" ]; then if [ -e "$i" ]; then
printf '* Applying %s ...\n' "$i" printf '* Applying %s ...\n' "$i"

View File

@@ -7,5 +7,6 @@ fi
if [ ! -e /var/log/btmp ]; then if [ ! -e /var/log/btmp ]; then
install -m0600 -o root -g utmp /dev/null /var/log/btmp install -m0600 -o root -g utmp /dev/null /var/log/btmp
fi fi
install -dm1777 /tmp/.X11-unix /tmp/.ICE-unix rm -rf /tmp
install -dm1777 /tmp /tmp/.X11-unix /tmp/.ICE-unix
rm -f /etc/nologin /forcefsck /forcequotacheck /fastboot rm -f /etc/nologin /forcefsck /forcequotacheck /fastboot

View File

@@ -0,0 +1,3 @@
msg "Waiting for services to stop..."
sv force-stop /run/runit/service/*
sv exit /run/runit/service/*

View File

@@ -0,0 +1,2 @@
msg "Saving random seed..."
( umask 077; bytes=$(cat /proc/sys/kernel/random/poolsize) || bytes=512; dd if=/dev/urandom of=/var/lib/random-seed count=1 bs=$bytes >/dev/null 2>&1 )

View File

@@ -0,0 +1,6 @@
if [ -z "$VIRTUALIZATION" ] && [ -n "$HARDWARECLOCK" ]; then
msg "Saving hardware clock..."
hwclock --systohc ${HARDWARECLOCK:+--$(echo $HARDWARECLOCK |tr A-Z a-z)}
fi
halt -w # for utmp

View File

@@ -0,0 +1,4 @@
if [ -z "$VIRTUALIZATION" ]; then
msg "Stopping udev..."
udevadm control --exit
fi

View File

@@ -0,0 +1,5 @@
msg "Sending TERM signal to processes..."
pkill --inverse -s0,1 -TERM
sleep 1
msg "Sending KILL signal to processes..."
pkill --inverse -s0,1 -KILL

View File

@@ -0,0 +1,8 @@
if [ -z "$VIRTUALIZATION" ]; then
msg "Unmounting filesystems, disabling swap..."
swapoff -a
umount -r -a -t nosysfs,noproc,nodevtmpfs,notmpfs
msg "Remounting rootfs read-only..."
mount -o remount,ro /
fi
sync

View File

@@ -0,0 +1,9 @@
if [ -z "$VIRTUALIZATION" ]; then
deactivate_vgs
deactivate_crypt
if [ -e /run/runit/reboot ] && command -v kexec >/dev/null; then
msg "Triggering kexec..."
kexec -e 2>/dev/null
# not reached when kexec was successful.
fi
fi