Compare commits
16 Commits
20180505.3
...
20180507
Author | SHA1 | Date | |
---|---|---|---|
1aeedd0019 | |||
0db3224e90 | |||
9527ccc8d0 | |||
fb122c1beb | |||
8b47e238b9 | |||
c9126a652a | |||
![]() |
89b99e475d | ||
![]() |
9befe99ed5 | ||
![]() |
d36f9e6952 | ||
7852ea0ee3 | |||
cf1c3912e7 | |||
![]() |
9cd7ec066b | ||
![]() |
0df2f865bb | ||
b3c76e6a59 | |||
8847aa38b4 | |||
161c96b8fa |
5
1.in
5
1.in
@@ -14,11 +14,6 @@ for sysinit in @RCDIR@/sysinit.d/*; do
|
||||
. $sysinit
|
||||
done
|
||||
|
||||
# Remove leftover files
|
||||
# remove_leftover
|
||||
|
||||
cleanup_sysinit
|
||||
|
||||
run_hook sysinit_end
|
||||
|
||||
install -m100 /dev/null @RUNDIR@/stopit
|
||||
|
24
COPYING
Normal file
24
COPYING
Normal file
@@ -0,0 +1,24 @@
|
||||
Copyright (C) 2018 Muhammad Herdiansyah
|
||||
Copyright (C) 2018 Artix Linux Developers
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
4
Makefile
4
Makefile
@@ -58,8 +58,8 @@ all-rc: $(RC) $(STAGES)
|
||||
install-runit:
|
||||
install -d $(DESTDIR)$(RUNITDIR)
|
||||
install -d $(DESTDIR)$(RUNSVDIR)
|
||||
mkdir -p $(DESTDIR)$(RUNSVDIR)/default
|
||||
mkdir -p $(DESTDIR)$(SVDIR)/sulogin
|
||||
install -d $(DESTDIR)$(RUNSVDIR)/default
|
||||
install -d $(DESTDIR)$(SVDIR)/sulogin
|
||||
$(LN) $(RUNSVDIR)/default $(DESTDIR)$(RUNSVDIR)/current
|
||||
$(CP) sv/sulogin $(DESTDIR)$(SVDIR)/
|
||||
$(CP) runsvdir/single $(DESTDIR)$(RUNSVDIR)/
|
||||
|
16
README.md
16
README.md
@@ -3,16 +3,12 @@
|
||||
This repository contains the runit init scripts for the Artix Linux
|
||||
distribution.
|
||||
|
||||
This work is based on Void Linux's
|
||||
[void-runit](https://github.com/voidlinux/void-runit). Patches to Void
|
||||
Linux's repo will also be applied here.
|
||||
|
||||
## Dependencies
|
||||
|
||||
- GNU coreutils
|
||||
- A POSIX shell
|
||||
- GNU bash
|
||||
- A POSIX awk
|
||||
- procps-ng (needs pkill -s0,1)
|
||||
- procps-ng
|
||||
- runit
|
||||
- opentmpfiles
|
||||
- opensysusers
|
||||
@@ -43,9 +39,7 @@ Feel free to send patches and contribute with improvements!
|
||||
|
||||
## Copyright
|
||||
|
||||
runit-artix is in the public domain.
|
||||
Some codes are based on void-runit, which is licensed under CC0-1.0
|
||||
|
||||
To the extent possible under law, the creator of this work has waived
|
||||
all copyright and related or neighboring rights to this work.
|
||||
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
The rest of runit-artix is licensed under the terms as described in the
|
||||
COPYING file.
|
||||
|
67
halt.8
67
halt.8
@@ -1,67 +0,0 @@
|
||||
.Dd July 29, 2014
|
||||
.Dt HALT 8
|
||||
.Os Linux
|
||||
.Sh NAME
|
||||
.Nm halt ,
|
||||
.Nm reboot ,
|
||||
.Nm poweroff
|
||||
.Nd stop the system
|
||||
.Sh SYNOPSIS
|
||||
.Nm halt
|
||||
.Op Fl n
|
||||
.Op Fl f
|
||||
.Nm reboot
|
||||
.Op Fl n
|
||||
.Op Fl f
|
||||
.Nm poweroff
|
||||
.Op Fl n
|
||||
.Op Fl f
|
||||
.Sh DESCRIPTION
|
||||
.Nm halt
|
||||
/
|
||||
.Nm reboot
|
||||
/
|
||||
.Nm poweroff
|
||||
tells
|
||||
.Xr init 8
|
||||
to bring down, reboot, or power off the system.
|
||||
Without
|
||||
.Fl f ,
|
||||
it is a shortcut for
|
||||
.Nm init 0
|
||||
/
|
||||
.Nm init 6 .
|
||||
.Bl -tag -width indent
|
||||
.It Fl n
|
||||
Don't sync before reboot or halt.
|
||||
Note that the kernel and storage drivers may still sync.
|
||||
.It Fl f
|
||||
Force halt or reboot, don't call
|
||||
.Xr init 8 .
|
||||
This is
|
||||
.Sy dangerous !
|
||||
.El
|
||||
.Sh UNSUPPORTED OPTIONS
|
||||
This version of
|
||||
.Nm
|
||||
is based on
|
||||
.Xr runit 8 ,
|
||||
the following features are
|
||||
.Sy not
|
||||
supported and silently ignored:
|
||||
.Bl -tag -width indent
|
||||
.It Fl w
|
||||
to just write the wtmp record.
|
||||
.It Fl d
|
||||
to not write the wtmp record.
|
||||
.It Fl h
|
||||
to put hard drives in standby mode.
|
||||
.It Fl i
|
||||
to shut down network interfaces.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr init 8 ,
|
||||
.Xr shutdown 8
|
||||
.Sh AUTHOR
|
||||
.An Leah Neukirchen ,
|
||||
.Mt leah@vuxu.org .
|
77
halt.c
77
halt.c
@@ -1,77 +0,0 @@
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <err.h>
|
||||
#include <string.h>
|
||||
#include <sys/reboot.h>
|
||||
|
||||
extern char *__progname;
|
||||
|
||||
typedef enum {NOOP, HALT, REBOOT, POWEROFF} action_type;
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int do_sync = 1;
|
||||
int do_force = 0;
|
||||
int opt;
|
||||
action_type action = NOOP;
|
||||
|
||||
if (strcmp(__progname, "halt") == 0)
|
||||
action = HALT;
|
||||
else if (strcmp(__progname, "reboot") == 0)
|
||||
action = REBOOT;
|
||||
else if (strcmp(__progname, "poweroff") == 0)
|
||||
action = POWEROFF;
|
||||
else
|
||||
warnx("no default behavior, needs to be called as halt/reboot/poweroff.");
|
||||
|
||||
while ((opt = getopt(argc, argv, "dfhinw")) != -1)
|
||||
switch (opt) {
|
||||
case 'n':
|
||||
do_sync = 0;
|
||||
break;
|
||||
case 'w':
|
||||
action = NOOP;
|
||||
do_sync = 0;
|
||||
break;
|
||||
case 'd':
|
||||
case 'h':
|
||||
case 'i':
|
||||
/* silently ignored. */
|
||||
break;
|
||||
case 'f':
|
||||
do_force = 1;
|
||||
break;
|
||||
default:
|
||||
errx(1, "Usage: %s [-n] [-f]", __progname);
|
||||
}
|
||||
|
||||
if (do_sync)
|
||||
sync();
|
||||
|
||||
switch (action) {
|
||||
case HALT:
|
||||
if (do_force)
|
||||
reboot(RB_HALT_SYSTEM);
|
||||
else
|
||||
execl("/bin/runit-init", "init", "0", (char*)0);
|
||||
err(1, "halt failed");
|
||||
break;
|
||||
case POWEROFF:
|
||||
if (do_force)
|
||||
reboot(RB_POWER_OFF);
|
||||
else
|
||||
execl("/bin/runit-init", "init", "0", (char*)0);
|
||||
err(1, "poweroff failed");
|
||||
break;
|
||||
case REBOOT:
|
||||
if (do_force)
|
||||
reboot(RB_AUTOBOOT);
|
||||
else
|
||||
execl("/bin/runit-init", "init", "6", (char*)0);
|
||||
err(1, "reboot failed");
|
||||
break;
|
||||
case NOOP:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
4
rc.local
4
rc.local
@@ -1,4 +0,0 @@
|
||||
# Default rc.local; add your custom commands here.
|
||||
#
|
||||
# This is run by runit in stage 2 before the services are executed
|
||||
# (see /etc/runit/2).
|
@@ -124,15 +124,9 @@ in_array() {
|
||||
}
|
||||
|
||||
kill_all() {
|
||||
stat_busy "Sending TERM signal to processes"
|
||||
pkill --inverse -s0,1 -TERM
|
||||
if (( $? == 0 )); then
|
||||
stat_done
|
||||
else
|
||||
stat_fail
|
||||
status "Sending TERM signal to processes" pkill --inverse -s0,1 -TERM
|
||||
sleep 1
|
||||
status "Sending KILL signal to processes" pkill --inverse -s0,1 -KILL
|
||||
fi
|
||||
}
|
||||
|
||||
print_welcome() {
|
||||
@@ -186,22 +180,6 @@ activate_vgs() {
|
||||
(( $? == 0 )) && stat_done || stat_fail
|
||||
}
|
||||
|
||||
load_sysctl() {
|
||||
if [ -x /usr/bin/sysctl ]; then
|
||||
for i in /run/sysctl.d/*.conf \
|
||||
/etc/sysctl.d/*.conf \
|
||||
/usr/local/lib/sysctl.d/*.conf \
|
||||
/usr/lib/sysctl.d/*.conf \
|
||||
/etc/sysctl.conf; do
|
||||
|
||||
if [ -e "$i" ]; then
|
||||
printf '* Applying %s \n' "$i"
|
||||
sysctl -p "$i"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
do_unlock_legacy() {
|
||||
# $1 = requested name
|
||||
# $2 = source device
|
||||
@@ -323,6 +301,21 @@ set_timezone() {
|
||||
fi
|
||||
}
|
||||
|
||||
run_binfmt() {
|
||||
mountpoint -q /proc/sys/fs/binfmt_misc || \
|
||||
mount -t binfmt_misc binfmt /proc/sys/fs/binfmt_misc
|
||||
|
||||
for path in /usr/lib/binfmt.d /etc/binfmt.d /run/binfmt.d; do
|
||||
[[ ! -d $path ]] && continue;
|
||||
for file in $(ls -1 $path); do
|
||||
grep "^:" $file | \
|
||||
while read -r line; do
|
||||
printf "%s" "$line" > /proc/sys/fs/binfmt_misc/register
|
||||
done
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
# Filesystem functions
|
||||
# These can be overridden/reused for customizations like shutdown/loop-fsck.
|
||||
NETFS="nfs,nfs4,smbfs,cifs,codafs,ncpfs,shfs,fuse,fuseblk,glusterfs,davfs,fuse.glusterfs"
|
||||
@@ -379,23 +372,19 @@ mount_all() {
|
||||
mount -a -t "no${NETFS//,/,no}" -O no_netdev
|
||||
}
|
||||
|
||||
remove_leftover() {
|
||||
status 'Removing leftover files' tmpfiles --create --remove --clean
|
||||
}
|
||||
|
||||
bootlogd_stop() {
|
||||
[[ -f /run/bootlogd.pid ]] || return 0
|
||||
touch /var/log/boot
|
||||
touch /var/log/boot.log
|
||||
kill $(< /run/bootlogd.pid)
|
||||
rm -f /run/bootlogd.pid
|
||||
}
|
||||
|
||||
bootlogd_start(){
|
||||
# [[ ! -f /var/log/boot ]] && touch /var/log/boot
|
||||
bootlogd -p /run/bootlogd.pid
|
||||
bootlogd -p /run/bootlogd.pid -l /var/log/boot.log
|
||||
}
|
||||
|
||||
console_setup(){
|
||||
[ -r /etc/vconsole.conf ] && . /etc/vconsole.conf
|
||||
TTYS=${TTYS:-6}
|
||||
if [ -n "$FONT" ]; then
|
||||
_index=0
|
||||
@@ -436,25 +425,16 @@ mk_tmpfiles_setup(){
|
||||
fi
|
||||
}
|
||||
|
||||
remove_leftover() {
|
||||
status 'Removing leftover files' tmpfiles --create --remove --clean
|
||||
}
|
||||
|
||||
mk_sysusers(){
|
||||
if [ -x /usr/bin/sysusers ]; then
|
||||
sysusers
|
||||
fi
|
||||
}
|
||||
|
||||
cleanup_sysinit(){
|
||||
install -m0664 -o root -g utmp /dev/null /run/utmp
|
||||
if [ ! -e /var/log/wtmp ]; then
|
||||
install -m0664 -o root -g utmp /dev/null /var/log/wtmp
|
||||
fi
|
||||
if [ ! -e /var/log/btmp ]; then
|
||||
install -m0600 -o root -g utmp /dev/null /var/log/btmp
|
||||
fi
|
||||
rm -rf /tmp
|
||||
install -dm1777 /tmp /tmp/.X11-unix /tmp/.ICE-unix
|
||||
rm -f /etc/nologin #/forcefsck /forcequotacheck /fastboot
|
||||
}
|
||||
|
||||
###############################
|
||||
# Custom hooks in initscripts #
|
||||
###############################
|
||||
|
@@ -2,12 +2,11 @@
|
||||
|
||||
# Storage
|
||||
#
|
||||
# Enable dmraid support (yes/no)
|
||||
# USEDMRAID="no"
|
||||
|
||||
# Enable LVM2 support (yes/no)
|
||||
# USELVM="no"
|
||||
|
||||
# Network
|
||||
#
|
||||
# interface=
|
||||
# address=
|
||||
# netmask=
|
||||
# gateway=
|
||||
# Enable btrfs support (yes/no)
|
||||
# USEBTRFS="no"
|
||||
|
@@ -8,7 +8,7 @@ mkdir -p /dev/{pts,shm}
|
||||
mountpoint -q /dev/pts || mount -t devpts devpts /dev/pts -o mode=0620,gid=5,nosuid,noexec
|
||||
mountpoint -q /dev/shm || mount -t tmpfs shm /dev/shm -o mode=1777,nosuid,nodev
|
||||
mountpoint -q /sys/kernel/security || mount -n -t securityfs securityfs /sys/kernel/security
|
||||
mountpoint -q /sys/firmware/efi/efivars || mount -n -t efivarfs -o ro efivarfs /sys/firmware/efi/efivars
|
||||
[ -d /sys/firmware/efi ] && (mountpoint -q /sys/firmware/efi/efivars || mount -n -t efivarfs -o ro efivarfs /sys/firmware/efi/efivars)
|
||||
mountpoint -q /sys/fs/cgroup || mount -o mode=0755 -t tmpfs cgroup /sys/fs/cgroup
|
||||
mountpoint -q /sys/fs/cgroup/openrc || mkdir -p /sys/fs/cgroup/openrc && mount -t cgroup -o none,name=openrc cgroup /sys/fs/cgroup/openrc
|
||||
awk '$4 == 1 { system("mountpoint -q /sys/fs/cgroup/" $1 " || { mkdir -p /sys/fs/cgroup/" $1 " && mount -t cgroup -o " $1 " cgroup /sys/fs/cgroup/" $1 " ;}" ) }' /proc/cgroups
|
||||
|
1
rc/sysinit.d/11-btrfs.sh
Normal file
1
rc/sysinit.d/11-btrfs.sh
Normal file
@@ -0,0 +1 @@
|
||||
status "Activating btrfs devices" btrfs device scan
|
@@ -1 +1 @@
|
||||
status "Loading sysctl(8) settings" load_sysctl
|
||||
status "Loading sysctl(8) settings" sysctl --system
|
||||
|
1
rc/sysinit.d/23-binfmt.sh
Normal file
1
rc/sysinit.d/23-binfmt.sh
Normal file
@@ -0,0 +1 @@
|
||||
status "Running binfmt" run_binfmt
|
10
rc/sysinit.d/99-cleanup.sh
Normal file
10
rc/sysinit.d/99-cleanup.sh
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
install -m0664 -o root -g utmp /dev/null /run/utmp
|
||||
if [ ! -e /var/log/wtmp ]; then
|
||||
install -m0664 -o root -g utmp /dev/null /var/log/wtmp
|
||||
fi
|
||||
if [ ! -e /var/log/btmp ]; then
|
||||
install -m0600 -o root -g utmp /dev/null /var/log/btmp
|
||||
fi
|
||||
|
||||
rm -f /etc/nologin /forcefsck /forcequotacheck /fastboot
|
90
shutdown.8
90
shutdown.8
@@ -1,90 +0,0 @@
|
||||
.Dd July 29, 2014
|
||||
.Dt SHUTDOWN 8
|
||||
.Os Linux
|
||||
.Sh NAME
|
||||
.Nm shutdown
|
||||
.Nd bring down the system
|
||||
.Sh SYNOPSIS
|
||||
.Nm shutdown
|
||||
.Op Fl rhP
|
||||
.Op Fl fF
|
||||
.Op Cm now | Cm + Ns Ar mins
|
||||
.Op Ar message ...
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
brings the system down in a secure way.
|
||||
All logged-in users
|
||||
are notified that the system is going down, and
|
||||
.Xr login 1
|
||||
is blocked.
|
||||
.Pp
|
||||
By default,
|
||||
.Nm
|
||||
puts the system into single user mode.
|
||||
Rebooting and halting the system can be done using the following options:
|
||||
.Bl -tag -width indent
|
||||
.It Fl c
|
||||
Cancel an ongoing shutdown.
|
||||
.It Fl f
|
||||
Enable fast booting; skip
|
||||
.Xr fsck 8
|
||||
on next boot.
|
||||
.It Fl F
|
||||
Force run of
|
||||
.Xr fsck 8
|
||||
on next boot.
|
||||
.It Fl h
|
||||
Halt the system.
|
||||
.It Fl k
|
||||
Don't really shutdown; only send the warning messages to everybody.
|
||||
.It Fl P
|
||||
Poweroff the system.
|
||||
.It Fl r
|
||||
Reboot the system.
|
||||
.It Cm now
|
||||
Shutdown without further waiting.
|
||||
.It Cm + Ns Ar mins
|
||||
Wait
|
||||
.Ar mins
|
||||
minutes before shutting down.
|
||||
.It Ar message
|
||||
Message displayed to all users, defaults to "system is going down".
|
||||
.El
|
||||
.Sh UNSUPPORTED OPTIONS
|
||||
This version of
|
||||
.Nm
|
||||
is based on
|
||||
.Xr runit 8 ,
|
||||
the following features are
|
||||
.Sy not
|
||||
supported:
|
||||
.Bl -tag -width indent
|
||||
.It Fl t Ar secs
|
||||
to wait
|
||||
.Ar secs
|
||||
seconds between SIGKILL and SIGTERM on shutdown is silently ignored.
|
||||
.It Fl a
|
||||
Use
|
||||
.Pa /etc/shutdown.allow .
|
||||
.It Fl H
|
||||
Drop into boot monitor.
|
||||
.It Fl n
|
||||
Don't call
|
||||
.Xr init 8 .
|
||||
.It Ar hh Ns : Ns Ar mm
|
||||
Absolute time specification is not implemented.
|
||||
.El
|
||||
.Sh EXAMPLES
|
||||
Turn off the system:
|
||||
.Dl # shutdown -h now
|
||||
.Sh SEE ALSO
|
||||
.Xr fsck 8 ,
|
||||
.Xr halt 8 ,
|
||||
.Xr init 8 ,
|
||||
.Xr poweroff 8 ,
|
||||
.Xr reboot 8 ,
|
||||
.Xr runit 8 ,
|
||||
.Xr runsvchdir 8
|
||||
.Sh AUTHOR
|
||||
.An Leah Neukirchen ,
|
||||
.Mt leah@vuxu.org .
|
Reference in New Issue
Block a user