diff options
author | Rodolfo Giometti <giometti@linux.it> | 2017-06-28 10:49:01 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-12-18 07:55:45 +0100 |
commit | fbd8407248216838c700d615bb084190dedf19e0 (patch) | |
tree | 2c4dc33417472faf31d18d78925299e8fd226956 /package | |
parent | 903ef9aaecfb91e91c6ffd6626dcb9660a34bbb4 (diff) | |
download | upstream-fbd8407248216838c700d615bb084190dedf19e0.tar.gz upstream-fbd8407248216838c700d615bb084190dedf19e0.tar.bz2 upstream-fbd8407248216838c700d615bb084190dedf19e0.zip |
package sysfsutils: add support for sysfs settings at boot
This patch is based on sysfsutils package's behaviour on Debian OS.
Signed-off-by: Rodolfo Giometti <giometti@linux.it>
(backported from 2437e0f67050cad79cc1778b18cefd8d3cd86d07)
Diffstat (limited to 'package')
-rw-r--r-- | package/libs/sysfsutils/Makefile | 12 | ||||
-rw-r--r-- | package/libs/sysfsutils/files/local.conf | 1 | ||||
-rw-r--r-- | package/libs/sysfsutils/files/sysfs.conf | 22 | ||||
-rw-r--r-- | package/libs/sysfsutils/files/sysfsutils | 48 |
4 files changed, 83 insertions, 0 deletions
diff --git a/package/libs/sysfsutils/Makefile b/package/libs/sysfsutils/Makefile index 6265442ea8..60275ec343 100644 --- a/package/libs/sysfsutils/Makefile +++ b/package/libs/sysfsutils/Makefile @@ -65,9 +65,21 @@ define Package/libsysfs/install endef define Package/sysfsutils/install + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/sysfsutils $(1)/etc/init.d/ + + $(INSTALL_DATA) ./files/sysfs.conf $(1)/etc/ + $(INSTALL_DIR) $(1)/etc/sysfs.d + $(INSTALL_DATA) ./files/local.conf $(1)/etc/sysfs.d/ + $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_INSTALL_DIR)/usr/bin/systool $(1)/usr/bin/ endef +define Package/sysfsutils/conffiles +/etc/sysfs.conf +/etc/sysfs.d/local.conf +endef + $(eval $(call BuildPackage,libsysfs)) $(eval $(call BuildPackage,sysfsutils)) diff --git a/package/libs/sysfsutils/files/local.conf b/package/libs/sysfsutils/files/local.conf new file mode 100644 index 0000000000..891da73df8 --- /dev/null +++ b/package/libs/sysfsutils/files/local.conf @@ -0,0 +1 @@ +# local sysctl settings can be stored in this directory diff --git a/package/libs/sysfsutils/files/sysfs.conf b/package/libs/sysfsutils/files/sysfs.conf new file mode 100644 index 0000000000..f03246284f --- /dev/null +++ b/package/libs/sysfsutils/files/sysfs.conf @@ -0,0 +1,22 @@ +# +# /etc/sysfs.conf - Configuration file for setting sysfs attributes. +# +# The sysfs mount directory is automatically prepended to the attribute paths. +# +# Syntax: +# attribute = value +# mode attribute = 0600 # (any valid argument for chmod) +# owner attribute = root:wheel # (any valid argument for chown) +# +# Examples: +# +# Always use the powersave CPU frequency governor +# devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave +# +# Use userspace CPU frequency governor and set initial speed +# devices/system/cpu/cpu0/cpufreq/scaling_governor = userspace +# devices/system/cpu/cpu0/cpufreq/scaling_setspeed = 600000 +# +# Set permissions of suspend control file +# mode power/state = 0660 +# owner power/state = root:power diff --git a/package/libs/sysfsutils/files/sysfsutils b/package/libs/sysfsutils/files/sysfsutils new file mode 100644 index 0000000000..0305ca82a9 --- /dev/null +++ b/package/libs/sysfsutils/files/sysfsutils @@ -0,0 +1,48 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2017 Rodolfo Giometti <giometti@enneenne.com> +# +# Based on Debian's script /etc/init.d/sysfsutils by +# Martin Pitt <mpitt@debian.org> + +load_conffile() { + FILE="$1" + sed 's/#.*$//; /^[[:space:]]*$/d; + s/^[[:space:]]*\([^=[:space:]]*\)[[:space:]]*\([^=[:space:]]*\)[[:space:]]*=[[:space:]]*\(.*\)/\1 \2 \3/' \ + $FILE | { + while read f1 f2 f3; do + if [ "$f1" = "mode" -a -n "$f2" -a -n "$f3" ]; then + if [ -f "/sys/$f2" ] || [ -d "/sys/$f2" ]; then + chmod "$f3" "/sys/$f2" + else + echo "unknown attribute $f2" + fi + elif [ "$f1" = "owner" -a -n "$f2" -a -n "$f3" ]; then + if [ -f "/sys/$f2" ]; then + chown "$f3" "/sys/$f2" + else + echo "unknown attribute $f2" + fi + elif [ "$f1" -a -n "$f2" -a -z "$f3" ]; then + if [ -f "/sys/$f1" ]; then + # Some fields need a terminating newline, others + # need the terminating newline to be absent :-( + echo -n "$f2" > "/sys/$f1" 2>/dev/null || + echo "$f2" > "/sys/$f1" + else + echo "unknown attribute $f1" + fi + else + echo "syntax error in $CONFFILE: '$f1' '$f2' '$f3'" + exit 1 + fi + done + } +} + +START=11 +start() { + for file in /etc/sysfs.conf /etc/sysfs.d/*.conf; do + [ -r "$file" ] || continue + load_conffile "$file" + done +} |