【问题标题】:how to make sysfs changes persistent in centos 7 (systemd)如何使 sysfs 更改在 centos 7 (systemd) 中持久化
【发布时间】:2015-02-15 03:33:37
【问题描述】:

尝试在 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 下根本不存在。

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

【问题讨论】:

  • 哦,创建帖子时打错字了,抱歉。它是 hid_apple.conf 和 /sys/module/.... 下的文件名中的“fnmode”。我已经修复了帖子,谢谢。

标签: linux centos systemd


【解决方案1】:

您可以通过 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/

【讨论】:

  • 您能提示一下 systemd 解决方案的外观吗?或者至少是一个指向它的指针?这是我第一次使用 systemd 系统。
  • 我已经修改了答案,看看这些是否适合你。
  • 哇,多么棒的答案,你完全引导了我对 systemd 和 udev 的理解。谢谢,@Angelos!
  • KERNEL=="hid_apple" SUBSYSTEM=="module", DRIVER=="", ATTR{parameters/fnmode}="2" 为我工作
【解决方案2】:

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

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

【讨论】:

  • 这是一个绝妙的 hack,也对 ansible 友好。创建文件后,确保运行systemd-tmpfiles --create 以使systemd-tmpfiles 写入/sys。谢谢你的提示! ?
猜你喜欢
  • 1970-01-01
  • 2020-01-09
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多