1 Commits

Author SHA1 Message Date
cb89d5b167 Add btrfs support 2019-01-10 11:14:17 +07:00
17 changed files with 186 additions and 109 deletions

View File

@@ -18,7 +18,6 @@ RCBIN = \
RCSVD = \ RCSVD = \
sv.d/root \ sv.d/root \
sv.d/binfmt \ sv.d/binfmt \
sv.d/binfmt.d \
sv.d/bootlogd \ sv.d/bootlogd \
sv.d/cleanup \ sv.d/cleanup \
sv.d/console-setup \ sv.d/console-setup \
@@ -29,6 +28,7 @@ RCSVD = \
sv.d/misc \ sv.d/misc \
sv.d/mount-all \ sv.d/mount-all \
sv.d/net-lo \ sv.d/net-lo \
sv.d/netfs \
sv.d/random-seed \ sv.d/random-seed \
sv.d/remount-root \ sv.d/remount-root \
sv.d/swap \ sv.d/swap \
@@ -156,7 +156,6 @@ install-rc:
$(LN) $(RCSVDIR)/dmesg $(DESTDIR)$(RCDIR)/sysinit/85-dmesg $(LN) $(RCSVDIR)/dmesg $(DESTDIR)$(RCDIR)/sysinit/85-dmesg
$(LN) $(RCSVDIR)/sysctl $(DESTDIR)$(RCDIR)/sysinit/90-sysctl $(LN) $(RCSVDIR)/sysctl $(DESTDIR)$(RCDIR)/sysinit/90-sysctl
$(LN) $(RCSVDIR)/binfmt $(DESTDIR)$(RCDIR)/sysinit/95-binfmt $(LN) $(RCSVDIR)/binfmt $(DESTDIR)$(RCDIR)/sysinit/95-binfmt
$(LN) $(RCSVDIR)/binfmt.d $(DESTDIR)$(RCDIR)/sysinit/97-binfmt.d
$(LN) $(RCSVDIR)/cleanup $(DESTDIR)$(RCDIR)/sysinit/99-cleanup $(LN) $(RCSVDIR)/cleanup $(DESTDIR)$(RCDIR)/sysinit/99-cleanup
install -d $(DESTDIR)$(RCDIR)/shutdown install -d $(DESTDIR)$(RCDIR)/shutdown
@@ -164,7 +163,6 @@ install-rc:
$(LN) $(RCSVDIR)/random-seed $(DESTDIR)$(RCDIR)/shutdown/10-random-seed $(LN) $(RCSVDIR)/random-seed $(DESTDIR)$(RCDIR)/shutdown/10-random-seed
$(LN) $(RCSVDIR)/cleanup $(DESTDIR)$(RCDIR)/shutdown/20-cleanup $(LN) $(RCSVDIR)/cleanup $(DESTDIR)$(RCDIR)/shutdown/20-cleanup
$(LN) $(RCSVDIR)/udev $(DESTDIR)$(RCDIR)/shutdown/30-udev $(LN) $(RCSVDIR)/udev $(DESTDIR)$(RCDIR)/shutdown/30-udev
$(LN) $(RCSVDIR)/hwclock $(DESTDIR)$(RCDIR)/shutdown/35-hwclock
$(LN) $(RCSVDIR)/misc $(DESTDIR)$(RCDIR)/shutdown/40-misc $(LN) $(RCSVDIR)/misc $(DESTDIR)$(RCDIR)/shutdown/40-misc
$(LN) $(RCSVDIR)/swap $(DESTDIR)$(RCDIR)/shutdown/50-swap $(LN) $(RCSVDIR)/swap $(DESTDIR)$(RCDIR)/shutdown/50-swap
$(LN) $(RCSVDIR)/root $(DESTDIR)$(RCDIR)/shutdown/60-root $(LN) $(RCSVDIR)/root $(DESTDIR)$(RCDIR)/shutdown/60-root

View File

@@ -1,18 +1,18 @@
#!/bin/bash #!/bin/bash
# This is run by the kernel after the last task is removed from a # This is run by the kernel after the last task is removed from a
# control group in the artix hierarchy. # control group in the openrc hierarchy.
# Copyright (c) 2007-2015 The OpenRC Authors. # Copyright (c) 2007-2015 The OpenRC Authors.
# See the Authors file at the top-level directory of this distribution and # See the Authors file at the top-level directory of this distribution and
# https://github.com/OpenRC/artix/blob/master/AUTHORS # https://github.com/OpenRC/openrc/blob/master/AUTHORS
# #
# This file is part of OpenRC. It is subject to the license terms in # This file is part of OpenRC. It is subject to the license terms in
# the LICENSE file found in the top-level directory of this # the LICENSE file found in the top-level directory of this
# distribution and at https://github.com/OpenRC/artix/blob/master/LICENSE # distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE
# This file may not be copied, modified, propagated, or distributed # This file may not be copied, modified, propagated, or distributed
# except according to the terms contained in the LICENSE file. # except according to the terms contained in the LICENSE file.
cgroup=/sys/fs/cgroup/artix cgroup=/sys/fs/cgroup/openrc
PATH=/bin:/usr/bin:/sbin:/usr/sbin PATH=/bin:/usr/bin:/sbin:/usr/sbin
if [ -d ${cgroup}/"$1" ]; then if [ -d ${cgroup}/"$1" ]; then
rmdir ${cgroup}/"$1" rmdir ${cgroup}/"$1"

View File

@@ -201,11 +201,7 @@ run_shutdown(){
calc_columns calc_columns
# disable colors on broken terminals # disable colors on broken terminals
if [[ -z "$TERM" || "$TERM" = "dumb" ]]; then TERM_COLORS=$(tput colors 2>/dev/null)
TERM_COLORS=$(tput colors -T linux 2>/dev/null)
else
TERM_COLORS=$(tput colors 2>/dev/null)
fi
if (( $? != 3 )); then if (( $? != 3 )); then
case $TERM_COLORS in case $TERM_COLORS in
*[!0-9]*) USECOLOR="";; *[!0-9]*) USECOLOR="";;

View File

@@ -13,7 +13,7 @@
# "hybrid" mounts cgroups version 2 on /sys/fs/cgroup/unified and # "hybrid" mounts cgroups version 2 on /sys/fs/cgroup/unified and
# cgroups version 1 on /sys/fs/cgroup # cgroups version 1 on /sys/fs/cgroup
# CGROUP_MODE="unified" # CGROUP_MODE="hybrid"
# This is a list of controllers which should be enabled for cgroups version 2. # This is a list of controllers which should be enabled for cgroups version 2.
# If hybrid mode is being used, controllers listed here will not be # If hybrid mode is being used, controllers listed here will not be
@@ -26,9 +26,3 @@
# /sys/fs/cgroup in hybrid or legacy mode # /sys/fs/cgroup in hybrid or legacy mode
# HAVE_CONTROLLER1_GROUPS="true" # HAVE_CONTROLLER1_GROUPS="true"
# This switch controls whether or not /tmp will be cleaned.
# /tmp will only be cleaned if it is set to "y". Generally it is recommended to
# mount /tmp as tmpfs.
# CLEANTMP="n"

View File

@@ -1,17 +0,0 @@
#!/bin/bash
# sourcing our current rc.conf requires this to be a bash script
. @RCLIBDIR@/functions
case "$1" in
start)
stat_busy "Running binfmt.d"
/usr/lib/artix/binfmt.sh || stat_die binfmt.d
add_daemon binfmt.d
stat_done binfmt.d
;;
*)
echo "usage: $0 {start|once}"
exit 1
;;
esac

View File

@@ -7,16 +7,10 @@ mount_binfmt(){
mountpoint -q /proc/sys/fs/binfmt_misc || \ mountpoint -q /proc/sys/fs/binfmt_misc || \
mount -t binfmt_misc binfmt /proc/sys/fs/binfmt_misc || return 1 mount -t binfmt_misc binfmt /proc/sys/fs/binfmt_misc || return 1
for files in /proc/sys/fs/binfmt_misc/*; do
[ "$files" = /proc/sys/fs/binfmt_misc/register ] && continue
[ "$files" = /proc/sys/fs/binfmt_misc/status ] && continue
echo -1 > "$files"
done
for path in /usr/lib/binfmt.d /etc/binfmt.d /run/binfmt.d; do for path in /usr/lib/binfmt.d /etc/binfmt.d /run/binfmt.d; do
[[ ! -d $path ]] && continue [[ ! -d $path ]] && continue
[[ -z "$(ls $path)" ]] && continue [[ -z "$(ls $path)" ]] && continue
grep -h "^:" $path/* | \ grep "^:" $path/* | \
while read -r line; do while read -r line; do
printf "%s" "$line" > /proc/sys/fs/binfmt_misc/register || return 1 printf "%s" "$line" > /proc/sys/fs/binfmt_misc/register || return 1
done done
@@ -33,13 +27,8 @@ case "$1" in
add_daemon binfmt add_daemon binfmt
stat_done binfmt stat_done binfmt
;; ;;
once)
stat_busy "Running binfmt"
mount_binfmt || stat_die binfmt
stat_done
;;
*) *)
echo "usage: $0 {start|once}" echo "usage: $0 {start}"
exit 1 exit 1
;; ;;
esac esac

View File

@@ -2,11 +2,125 @@
# sourcing our current rc.conf requires this to be a bash script # sourcing our current rc.conf requires this to be a bash script
. @RCLIBDIR@/functions . @RCLIBDIR@/functions
. @RCDIR@/rc.conf
CGROUP_OPTS=nodev,noexec,nosuid
HAVE_CONTROLLER1_GROUPS=${HAVE_CONTROLLER1_GROUPS:-true}
CGROUP_MODE=${CGROUP_MODE:-hybrid}
CGROUP_CONTROLLERS=""
cgroup2_find_path(){
if grep -qw cgroup2 /proc/filesystems; then
case "${CGROUP_MODE}" in
hybrid) printf "/sys/fs/cgroup/unified" ;;
unified) printf "/sys/fs/cgroup" ;;
esac
fi
return 0
}
cgroup1_base(){
grep -qw cgroup /proc/filesystems || return 0
if ! mountpoint -q /sys/fs/cgroup; then
local opts="${CGROUP_OPTS},mode=755,size=${rc_cgroupsize:-10m}"
mount -n -t tmpfs -o "${opts}" cgroup_root /sys/fs/cgroup
fi
if ! mountpoint -q /sys/fs/cgroup/openrc; then
local agent="@RCLIBDIR@/cgroup-release-agent"
mkdir /sys/fs/cgroup/openrc
mount -n -t cgroup -o none,${CGROUP_OPTS},name=openrc,release_agent="$agent" openrc /sys/fs/cgroup/openrc
printf 1 > /sys/fs/cgroup/openrc/notify_on_release
fi
return 0
}
cgroup1_controllers(){
${HAVE_CONTROLLER1_GROUPS} && [ -e /proc/cgroups ] && grep -qw cgroup /proc/filesystems || return 0
while read -r name _ _ enabled _; do
case "${enabled}" in
1) if mountpoint -q "/sys/fs/cgroup/${name}";then continue;fi
local x
for x in $CGROUP_CONTROLLERS; do
[ "${name}" = "blkio" ] && [ "${x}" = "io" ] &&
continue 2
[ "${name}" = "${x}" ] &&
continue 2
done
mkdir "/sys/fs/cgroup/${name}"
mount -n -t cgroup -o "${CGROUP_OPTS},${name}" "${name}" "/sys/fs/cgroup/${name}"
;;
esac
done < /proc/cgroups
return 0
}
cgroup2_base(){
grep -qw cgroup2 /proc/filesystems || return 0
local base
base="$(cgroup2_find_path)"
mkdir -p "${base}"
mount -t cgroup2 none -o "${CGROUP_OPTS},nsdelegate" "${base}" 2> /dev/null ||
mount -t cgroup2 none -o "${CGROUP_OPTS}" "${base}"
return 0
}
cgroup2_controllers(){
grep -qw cgroup2 /proc/filesystems || return 0
local active cgroup_path x y
cgroup_path="$(cgroup2_find_path)"
[ -z "${cgroup_path}" ] && return 0
[ -e "${cgroup_path}/cgroup.controllers" ] && read -r active < "${cgroup_path}/cgroup.controllers"
for x in ${CGROUP_CONTROLLERS}; do
for y in ${active}; do
[ "$x" = "$y" ] && [ -e "${cgroup_path}/cgroup.subtree_control" ] &&
echo "+${x}" > "${cgroup_path}/cgroup.subtree_control"
done
done
return 0
}
cgroups_hybrid(){
cgroup1_base
cgroup2_base
cgroup2_controllers
cgroup1_controllers
return 0
}
cgroups_legacy(){
cgroup1_base
cgroup1_controllers
return 0
}
cgroups_unified(){
cgroup2_base
cgroup2_controllers
return 0
}
mount_cgroups(){
case "${CGROUP_MODE}" in
hybrid) cgroups_hybrid ;;
legacy) cgroups_legacy ;;
unified) cgroups_unified ;;
esac
return 0
}
mount_cgs(){
if [ -d /sys/fs/cgroup ];then
mount_cgroups
return 0
fi
return 1
}
case "$1" in case "$1" in
start) start)
stat_busy "Mounting cgroups filesystem" stat_busy "Mounting cgroups filesystem"
/usr/lib/artix/mount-cgroups.sh|| stat_die cgroups mount_cgs || stat_die cgroups
add_daemon cgroups add_daemon cgroups
stat_done cgroups stat_done cgroups
;; ;;

View File

@@ -2,7 +2,6 @@
# sourcing our current rc.conf requires this to be a bash script # sourcing our current rc.conf requires this to be a bash script
. @RCLIBDIR@/functions . @RCLIBDIR@/functions
. @RCDIR@/rc.conf
cleaning(){ cleaning(){
install -m0664 -o root -g utmp /dev/null /run/utmp install -m0664 -o root -g utmp /dev/null /run/utmp
@@ -14,8 +13,6 @@ cleaning(){
fi fi
rm -f /etc/nologin /forcefsck /forcequotacheck /fastboot rm -f /etc/nologin /forcefsck /forcequotacheck /fastboot
[ "$CLEANTMP" = y ] && rm -rf /tmp/*
} }
case "$1" in case "$1" in

View File

@@ -4,35 +4,11 @@
. @RCLIBDIR@/functions . @RCLIBDIR@/functions
mount_devfs(){ mount_devfs(){
mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid
mkdir -p /dev/{pts,shm}
# seed /dev with some things that might be needed (for example,
# xudev doesn't do this compared to eudev), code from OpenRC
# creating /dev/console, /dev/tty and /dev/tty1 to be able to write
# to $CONSOLE with/without bootsplash before udevd creates it
[ -c /dev/console ] || mknod -m 600 /dev/console c 5 1
[ -c /dev/tty1 ] || mknod -m 620 /dev/tty1 c 4 1
[ -c /dev/tty ] || mknod -m 666 /dev/tty c 5 0
# udevd will dup its stdin/stdout/stderr to /dev/null
# and we do not want a file which gets buffered in ram
[ -c /dev/null ] || mknod -m 666 /dev/null c 1 3
# so udev can add its start-message to dmesg
[ -c /dev/kmsg ] || mknod -m 660 /dev/kmsg c 1 11
# extra symbolic links not provided by default
[ -e /dev/fd ] || ln -snf /proc/self/fd /dev/fd
[ -e /dev/stdin ] || ln -snf /proc/self/fd/0 /dev/stdin
[ -e /dev/stdout ] || ln -snf /proc/self/fd/1 /dev/stdout
[ -e /dev/stderr ] || ln -snf /proc/self/fd/2 /dev/stderr
[ -e /proc/kcore ] && ln -snf /proc/kcore /dev/core
mkdir -p /dev/pts /dev/shm
mountpoint -q /dev/pts || mount -t devpts devpts /dev/pts -o mode=0620,gid=5,nosuid,noexec 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 /dev/shm || mount -t tmpfs shm /dev/shm -o mode=1777,nosuid,nodev
mountpoint -q /run || mount -t tmpfs run /run -o mode=0755,nosuid,nodev mountpoint -q /run || mount -t tmpfs run /run -o mode=0755,nosuid,nodev
} }
case "$1" in case "$1" in

View File

@@ -1,26 +1,26 @@
#!/bin/bash #!/bin/bash
. @RCLIBDIR@/functions . @RCLIBDIR@/functions
. @RCDIR@/rc.conf
HWCLOCK_PARAMS="--systz"
HARDWARECLOCK=${HARDWARECLOCK:-UTC} HARDWARECLOCK=${HARDWARECLOCK:-UTC}
case $HARDWARECLOCK in case $HARDWARECLOCK in
UTC) HWCLOCK_PARAMS+=" --utc" ;; UTC) HWCLOCK_PARAMS+=" --utc --noadjfile" ;;
localtime) HWCLOCK_PARAMS+=" --localtime" ;; localtime) HWCLOCK_PARAMS+=" --localtime --noadjfile" ;;
*) HWCLOCK_PARAMS="";; *) HWCLOCK_PARAMS="";;
esac esac
case "$1" in case "$1" in
start) start)
stat_busy "Adjusting hwclock" stat_busy "Adjusting hwclock"
hwclock --systz $HWCLOCK_PARAMS --noadjfile || stat_die hwclock $HWCLOCK_PARAMS || stat_die
add_daemon hwclock add_daemon hwclock
stat_done stat_done
;; ;;
stop) stop)
stat_busy "Adjusting hwclock" stat_busy "Adjusting hwclock"
hwclock --systohc $HWCLOCK_PARAMS || stat_die hwclock --adjust $HWCLOCK_PARAMS || stat_die
rm_daemon hwclock rm_daemon hwclock
stat_done stat_done
;; ;;

View File

@@ -13,7 +13,7 @@ fsck_all() {
IGNORE_MOUNTED="-M" IGNORE_MOUNTED="-M"
fi fi
fsck -A -T -M -C${FSCK_FD} -a -t no${NETFS//,/,no},noopts=_netdev ${IGNORE_MOUNTED} -- ${FORCEFSCK} fsck -A -T -C${FSCK_FD} -a -t no${NETFS//,/,no},noopts=_netdev ${IGNORE_MOUNTED} -- ${FORCEFSCK}
} }
# Single-user login and/or automatic reboot after fsck (if needed) # Single-user login and/or automatic reboot after fsck (if needed)
@@ -69,6 +69,11 @@ kill_all(){
case "$1" in case "$1" in
start) start)
if [[ -x "/bin/btrfs" ]]; then
stat_busy "Activating btrfs devices"
btrfs device scan
stat_done
fi
stat_busy "Checking filesystems" stat_busy "Checking filesystems"
do_fsck do_fsck
add_daemon misc add_daemon misc

34
sv.d/netfs.in Normal file
View File

@@ -0,0 +1,34 @@
#!/bin/bash
# sourcing our current rc.conf requires this to be a bash script
. @RCLIBDIR@/functions
case "$1" in
start)
stat_busy "Mounting network filesystems"
mount -a -t "$NETFS"
rc=$?
mount -a -O _netdev
(( rc || $? )) && stat_die
add_daemon netfs
stat_done
;;
stop)
stat_busy "Unmounting network filesystems"
umount -a -f -O _netdev
rc=$?
umount -a -f -t "$NETFS"
(( rc || $? )) && stat_die
rm_daemon netfs
stat_done
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
exit 1
;;
esac

View File

@@ -4,18 +4,7 @@
. @RCLIBDIR@/functions . @RCLIBDIR@/functions
mount_procfs(){ mount_procfs(){
grep -v '^#' /etc/fstab | grep /proc | { mountpoint -q /proc || mount -t proc proc /proc -o nosuid,noexec,nodev
read -r spec file vfstype mntopts x
if ! mountpoint -q /proc; then
if [ "$spec" -a "$file" -a "$vfstype" -a "$mntopts" ]; then
mount -t "$vfstype" "$spec" "$file" -o "$mntopts"
else
mount -t proc proc /proc
fi
elif [ "$spec" -a "$file" -a "$vfstype" -a "$mntopts" ] && mountpoint -q /proc; then
mount -t "$vfstype" "$spec" "$file" -o "remount,$mntopts"
fi
}
} }
case "$1" in case "$1" in

View File

@@ -6,7 +6,7 @@
case "$1" in case "$1" in
start) start)
stat_busy "Starting sysusers" stat_busy "Starting sysusers"
esysusers sysusers
add_daemon sysusers add_daemon sysusers
stat_done stat_done
;; ;;

View File

@@ -6,7 +6,7 @@
case "$1" in case "$1" in
start) start)
stat_busy "Starting tmpfiles-dev" stat_busy "Starting tmpfiles-dev"
etmpfiles --prefix=/dev --create --boot || stat_die tmpfiles-dev tmpfiles --prefix=/dev --create --boot || stat_die tmpfiles-dev
add_daemon tmpfiles-dev add_daemon tmpfiles-dev
stat_done tmpfiles-dev stat_done tmpfiles-dev
;; ;;

View File

@@ -6,7 +6,7 @@
case "$1" in case "$1" in
start) start)
stat_busy "Starting tmpfiles-setup" stat_busy "Starting tmpfiles-setup"
etmpfiles --exclude-prefix=/dev --create --remove --boot || stat_die tmpfiles-setup tmpfiles --exclude-prefix=/dev --create --remove --boot || stat_die tmpfiles-setup
add_daemon tmpfiles-setup add_daemon tmpfiles-setup
stat_done tmpfiles-setup stat_done tmpfiles-setup
;; ;;

View File

@@ -5,17 +5,19 @@
case "$1" in case "$1" in
start) start)
stat_busy "Starting udev daemon" # check if runit already runs udevd
udevd --daemon || stat_die udev if ! pgrep -f "runsv udevd" >/dev/null 2>&1; then
# Note: This is only needed for initialization, udev will stat_busy "Starting udev daemon"
# be controlled by runit on stage 2. udevd --daemon || stat_die udev
add_daemon udev # Note: This is only needed for initialization, udev will
stat_done udev # be controlled by runit on stage 2.
add_daemon udev
stat_done udev
fi
;; ;;
stop) stop)
stat_busy "Stopping udev" stat_busy "Stopping udev"
# check whether udevd might still be running. udevadm control --exit || stat_die udev
! pgrep -f "udevd" >/dev/null 2>&1 || udevadm control --exit || stat_die udev
rm_daemon udev rm_daemon udev
stat_done udev stat_done udev
;; ;;