diff options
author | Cameron Nemo <cnemo@tutanota.com> | 2019-10-03 12:23:15 -0700 |
---|---|---|
committer | Cameron Nemo <cnorman@cenic.org> | 2019-10-03 12:23:15 -0700 |
commit | 9c2358e4865327b76ee9273448e2cd78a18d76f3 (patch) | |
tree | 653f87057943a630406851322834a94ea3963953 | |
parent | abd5e95bc3ec7cc4ef2c2bd7c7b04efefc0ec566 (diff) | |
download | runit-void-9c2358e4865327b76ee9273448e2cd78a18d76f3.tar.gz runit-void-9c2358e4865327b76ee9273448e2cd78a18d76f3.tar.xz runit-void-9c2358e4865327b76ee9273448e2cd78a18d76f3.zip |
fix(sysctl): behave more like sysctl --system
Loading of sysctl.d directories should follow the same ordering and overriding rules as xbps, modules-load, and most importantly, `sysctl --system`. This change ensures proper ordering of files loaded by building the selected files then operating on them, and it allows for masking system level configuration from /etc and even /run.
-rw-r--r-- | core-services/08-sysctl.sh | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/core-services/08-sysctl.sh b/core-services/08-sysctl.sh index 37d7b9f..3df5c5a 100644 --- a/core-services/08-sysctl.sh +++ b/core-services/08-sysctl.sh @@ -2,15 +2,19 @@ if [ -x /sbin/sysctl -o -x /bin/sysctl ]; then msg "Loading sysctl(8) settings..." + mkdir -p /run/vsysctl.d 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 + /usr/lib/sysctl.d/*.conf; do - if [ -e "$i" ]; then - printf '* Applying %s ...\n' "$i" - sysctl -p "$i" + if [ -e "$i" ] && [ ! -e "/run/vsysctl.d/${i##*/}" ]; then + ln -s "$i" "/run/vsysctl.d/${i##*/}" fi done + for i in /run/vsysctl.d/*.conf; do + sysctl -p "$i" + done + rm -rf -- /run/vsysctl.d + sysctl -p /etc/sysctl.conf fi |