mirror of
https://github.com/OpenRC/openrc.git
synced 2026-01-29 19:04:23 +00:00
busybox's and toybox's sysctl do not have --system currently we simply check for return success, this if fragile as failures unrelated to "missing --system" would also trigger the manually loading path, alternatively we could have some hard knob, though an automated detection method would be preferred Fixes: https://github.com/OpenRC/openrc/issues/947
113 lines
2.6 KiB
Plaintext
113 lines
2.6 KiB
Plaintext
#!@SBINDIR@/openrc-run
|
|
# Copyright (c) 2007-2015 The OpenRC Authors.
|
|
# See the Authors file at the top-level directory of this distribution and
|
|
# https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS
|
|
#
|
|
# 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
|
|
# distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE
|
|
# This file may not be copied, modified, propagated, or distributed
|
|
# except according to the terms contained in the LICENSE file.
|
|
|
|
depend()
|
|
{
|
|
after clock
|
|
before bootmisc logger
|
|
keyword -prefix -systemd-nspawn -vserver
|
|
}
|
|
|
|
BSD_sysctl()
|
|
{
|
|
[ -e /etc/sysctl.conf ] || return 0
|
|
local retval=0 var= comments= conf=
|
|
eindent
|
|
for conf in /etc/sysctl.conf /etc/sysctl.d/*.conf; do
|
|
if [ -r "$conf" ]; then
|
|
vebegin "applying $conf"
|
|
while read var comments; do
|
|
case "$var" in
|
|
""|"#"*) continue;;
|
|
esac
|
|
sysctl -w "$var" >/dev/null || retval=1
|
|
done < "$conf"
|
|
veend $retval
|
|
fi
|
|
done
|
|
eoutdent
|
|
return $retval
|
|
}
|
|
|
|
linux_sysctl()
|
|
{
|
|
local quiet
|
|
yesno $rc_verbose || quiet=-q
|
|
|
|
# if sysctl supports --system, use it, otherwise implement
|
|
# our own uapi config mechanism with -p.
|
|
# notably, busybox's and toybox's sysctl do not support --system.
|
|
sysctl ${quiet} --system && return 0
|
|
|
|
eindent
|
|
|
|
local files=
|
|
for f in /lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf; do
|
|
if [ -f /etc/sysctl.d/"${f##*/}" ]; then
|
|
veinfo "Ignoring $f due to /etc/sysctl.d/${f##*/}"
|
|
continue
|
|
fi
|
|
|
|
if [ -f /run/sysctl.d/"${f##*/}" ]; then
|
|
veinfo "Ignoring $f due to /run/sysctl.d/${f##*/}"
|
|
continue
|
|
fi
|
|
|
|
if [ -f "$f" ]; then
|
|
ebegin "applying $f"
|
|
sysctl $quiet -p "$f"
|
|
# Don't change retval= since we expect some package/distro provided
|
|
# sysctl configurations to break, so just warn when the user wants
|
|
# verbose messages
|
|
ewend $? "Unable to configure kernel parameters from $f"
|
|
fi
|
|
done
|
|
|
|
for f in /etc/sysctl.d/*.conf; do
|
|
if [ -f /run/sysctl.d/"${f##*/}" ]; then
|
|
veinfo "Ignoring $f due to /run/sysctl.d/${f##*/}"
|
|
continue
|
|
fi
|
|
|
|
files="$files $f"
|
|
done
|
|
|
|
[ -f /etc/sysctl.conf ] && files="$files /etc/sysctl.conf"
|
|
|
|
for f in /run/sysctl.d/*.conf; do
|
|
[ -f "$f" ] && files="$files $f"
|
|
done
|
|
|
|
for f in $files; do
|
|
ebegin "Applying $f"
|
|
sysctl $quiet -p "$f"
|
|
if ! eend $? "Unable to configure kernel parameters from $f"; then
|
|
retval=1
|
|
fi
|
|
done
|
|
|
|
eoutdent
|
|
|
|
return $retval
|
|
}
|
|
|
|
start()
|
|
{
|
|
local rc=0
|
|
|
|
ebegin "Configuring kernel parameters"
|
|
case "$RC_UNAME" in
|
|
*BSD|GNU) BSD_sysctl; rc=$? ;;
|
|
Linux) linux_sysctl; rc=$? ;;
|
|
esac
|
|
eend $rc "Unable to configure some kernel parameters"
|
|
}
|