如何使 sysfs 更改在 centos 7 (systemd) 中持久化

问题描述 投票:0回答:3

尝试修复 CentOS 7 上苹果键盘上的 fn 键,我已经设置了

$ cat /etc/modprobe.d/hid_apple.conf
options hid_apple fnmode=2

重启后

$ cat /sys/module/hid_apple/parameters/fnmode
1

互联网上的建议包括运行 update-initramfs,这在 Centos 7 上似乎不存在,并在 /etc/rc.local 中执行“echo 2 >> /sys/module/hid_apple/parameters/fnmode”,这当然在 systemd 下已经不存在了。

保持该设置的正确方法是什么?

linux centos systemd
3个回答
7
投票

您可以通过 3 种方式实现这一目标:

  1. rc.local(仍然有效,请记住在添加行后 chmod +x)
  2. 系统
  3. udev 规则(我自己的首选)

使用 systemd:

# /etc/systemd/system/hid_apple_fnmode_set.service 
[Unit]
Description=Set Apple keyboard fn mode
After=multi-user.target

[Service]
ExecStart=/usr/bin/bash -c '/usr/bin/echo 2 > /sys/module/hid_apple/parameters/fnmode'

[Install]
WantedBy=graphical.target

接下来使服务在启动时运行。

sudo systemctl enable hid_apple_fnmode_set.service

使用 udev 规则:

# /etc/udev/rules.d/99-hid_apple.rules
SUBSYSTEM=="module", DRIVER=="hid_apple", ATTR{parameters/fnmode}="2"

systemd 脚本和 udev 规则是与一些疯狂的猜测放在一起的,可能需要一些调整才能工作。以下命令可以帮助调整和调试 udev 规则:

udevadm info --attribute-walk --path=/module/hid_apple

udevadm test /sys/module/hid_apple/

4
投票

使用 tmpfiles.d 机制,例如将 apple-hid.conf 放置到 /etc/tmpfiles.d 中,内容如下

w /sys/module/hid_apple/parameters/fnmode - - - - 2

0
投票

使用crontab。

以 root 身份输入以下命令:
$ crontab -e

这将打开您选择的 crontab 编辑器。在其中输入以下内容:
@reboot echo 2 > /sys/module/hid_apple/parameters/fnmode

保存并退出编辑器。您的设置将在每次重新启动时完成。希望这有帮助。

© www.soinside.com 2019 - 2025. All rights reserved.