如何使sysfs更改持续在centos 7(systemd)

时间:2014-12-16 18:09:05

标签: linux centos systemd

尝试修复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中执行“echo 2>> / sys / module / hid_apple / parameters / fnmode” .local,当然在systemd下根本不存在。

坚持这种设定的正确方法是什么?

2 个答案:

答案 0 :(得分:7)

有三种方法可以实现这一目标:

  1. rc.local(仍然有用,请记住在添加行之后添加chmod + x)
  2. systemd
  3. udev规则(我自己喜欢的)
  4. 使用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/
    

答案 1 :(得分:0)

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

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