5f033d857441e406555b4c24715ba8d15994f503 / aldermon/powercap-pl-rules.sh · 1138 bytes · raw
#!/bin/sh
# powercap-pl-rules.sh - one-shot installer for RAPL access (aldermon).
#
# RAPL energy_uj is 0400 root-only on this kernel, which gates the power
# panel. This installs a udev rule + helper so any user in group `adm`
# can read energy counters. Run once as root:
#
# doas ./powercap-pl-rules.sh
#
# Idempotent: re-running overwrites installed files.
set -eu
HELPER=/usr/local/sbin/aldermon-powercap-chmod
RULE=/etc/udev/rules.d/60-aldermon-powercap.rules
# Helper: relax energy_uj to 0440, group adm, on every powercap dir.
cat > "$HELPER" <<'EOF'
#!/bin/sh
for d in /sys/class/powercap/intel-rapl*; do
[ -e "$d/energy_uj" ] && chgrp adm "$d/energy_uj" && chmod 0440 "$d/energy_uj"
done
exit 0
EOF
chmod 0755 "$HELPER"
# RUN+= (not MODE=/GROUP=) - powercap has no devnode, so udev's standard
# MODE/GROUP assignment doesn't apply; we chmod in-process instead.
cat > "$RULE" <<EOF
SUBSYSTEM=="powercap", ACTION=="add", RUN+="$HELPER"
EOF
# Apply immediately so a reboot isn't required.
"$HELPER"
echo "Installed:"
echo " $HELPER"
echo " $RULE"
echo "Add yourself to adm if not already: doas usermod -aG adm \$USER"