web-dev-qa-db-ja.com

systemdで起動時にi2c-devモジュールをロードする方法

モニターの明るさをddcutilで制御したいのですが、 i2c-devモジュールをロードする必要があります

自動的にロードされないので、 ArchWikiの指示 に従ってsystemdで自動的にロードしようとしています。 systemd-modules-load.serviceにエラーはありませんが、モジュールは起動時にロードされません。

# Not loaded
[rcorre@midova ~]$ Sudo ddcutil setvcp 10 10
Display not found

# But I've got a file in modules-load.d
[rcorre@midova ~]$ cat /etc/modules-load.d/i2c-dev
i2c-dev

# The logs have always been rotated on boot ...
[rcorre@midova ~]$ Sudo systemctl status systemd-modules-load
● systemd-modules-load.service - Load Kernel Modules
   Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static; vendor preset: disabled)
   Active: active (exited) since Thu 2019-09-05 06:51:35 EDT; 14min ago
     Docs: man:systemd-modules-load.service(8)
           man:modules-load.d(5)
 Main PID: 449 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   Memory: 0B
   CGroup: /system.slice/systemd-modules-load.service

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

# ... so I try restarting the service
[rcorre@midova ~]$ Sudo systemctl restart systemd-modules-load
[rcorre@midova ~]$ Sudo systemctl status systemd-modules-load
● systemd-modules-load.service - Load Kernel Modules
   Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static; vendor preset: disabled)
   Active: active (exited) since Thu 2019-09-05 07:10:19 EDT; 14s ago
     Docs: man:systemd-modules-load.service(8)
           man:modules-load.d(5)
  Process: 8189 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)
 Main PID: 8189 (code=exited, status=0/SUCCESS)

Sep 05 07:10:19 midova systemd[1]: Stopping Load Kernel Modules...
Sep 05 07:10:19 midova systemd[1]: Starting Load Kernel Modules...
Sep 05 07:10:19 midova systemd[1]: Started Load Kernel Modules.

# Still no luck
[rcorre@midova ~]$ Sudo ddcutil setvcp 10 10
Display not found

# But I can load it manually
[rcorre@midova ~]$ Sudo modprobe i2c-dev
[rcorre@midova ~]$ Sudo ddcutil setvcp 10 10
2
rcorre

各構成ファイルには、/etc/modules-load.d/<program>.confのスタイルで名前が付けられています。

.confサフィックスは必須モジュールの場合-load.d –他のファイルは無視されます。 (これは、プログラムが実際の構成と残りのバックアップ(さまざまなディストリビューションの.pacnew/.rpmnewファイルなど)を区別する方法です。)

2
user1686

起動中にmodprobeを実行する方法はいくつかあります。デスクトップとしてLXDEを使用している場合は、modprobe i2c-devを含む新しい行として~/.config/lxsession/LXDE/autostart@Sudo modprobe i2c-devに配置できます。私はこれの他の方法を起動に試していませんが、Xがデスクトップを起動したときに実行される.xinitrcに追加できる可能性があります。 .bashrcに入れることもできますが、実行するにはターミナルウィンドウを開く必要があります。また、ArchLinuxメニューPreferencesで、Default applications for LXSessionを設定し、[自動開始]ボタンをクリックして、手動で起動するアプリを追加できます(これは、../LXDE/autostartファイルの編集と同じです)。

0
Frank Gould