как сделать изменения sysfs постоянными в centos 7 (systemd)

Пытаясь исправить клавиши fn на клавиатуре Apple в CentOS 7, я установил

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

и еще после перезагрузки

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

Предложения в Интернете включают запуск update-initramfs, который, похоже, не существует в Centos 7, и выполнение «echo 2 >> /sys/module/hid_apple/parameters/fnmode» в /etc/rc.local, какой из Конечно, в systemd больше не существует.

Как правильно сохранить этот параметр?


person Kevin G.    schedule 16.12.2014    source источник
comment
О, это была опечатка при создании поста, извините. Это fnmode в hid_apple.conf и в имени файла в /sys/module/.... Я исправил пост, спасибо.   -  person Kevin G.    schedule 16.12.2014


Ответы (2)


Есть 3 способа добиться этого:

  1. rc.local (все еще работает, не забудьте нажать chmod +x после добавления строк)
  2. системад
  3. правила udev (мой вариант)

С системд:

# /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/
person Angelos    schedule 27.01.2015
comment
Не могли бы вы подсказать, как будет выглядеть решение systemd? Или хотя бы указатель на него? Это мой первый раз в системе systemd. - person Kevin G.; 27.01.2015
comment
Я изменил ответ, так что посмотрите, работает ли он для вас. - person Angelos; 29.01.2015
comment
Вау, какой отличный ответ, вы только что полностью загрузили мое понимание как systemd, так и udev. Спасибо, @Angelos! - person Kevin G.; 05.03.2015
comment
KERNEL=="hid_apple" SUBSYSTEM=="module", DRIVER=="", ATTR{parameters/fnmode}="2" работал на меня - person qwazix; 05.09.2018

Используйте механизм tmpfiles.d, поместите, например, apple-hid.conf в /etc/tmpfiles.d со следующим содержимым

w /sys/module/hid_apple/parameters/fnmode - - - - 2
person Alexander    schedule 01.06.2018
comment
Это блестящий хак, а также дружественный к ansible. После создания файла обязательно запустите systemd-tmpfiles --create, чтобы systemd-tmpfiles записала в /sys. Спасибо за чаевые! ???? - person vjt; 21.11.2020