web-dev-qa-db-ja.com

systemd:ブート時にmodprobeコマンドを自動化

私のディストリビューションはFedora 17 Gnomeです。コンピューターを再起動/再起動するたびに、このコマンドをrootとして実行する必要があります。

modprobe rt2800usb

どうすれば永続化できますか?

24

systemdを使用するディストリビューションでは、モジュールを modules-load.d で自動的にロードできます。

  • 構成ファイルを作成します。

    /etc/modules-load.d/rt2800usb.conf

  • それを開いて次のように編集します(モジュール名を追加します):

    rt2800usb

  • 次回再起動すると、モジュールが自動的にロードされます


トラブルシューティング:

systemdサービスがモジュールをロードしたかどうかを確認します。

systemctl status systemd-modules-load.service

出力は次のようになります。

systemd-modules-load.service - Load Kernel Modules
  Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
  Active: active (exited) since Wed, 03 Apr 2013 22:50:57 +0000; 46s ago
        Docs: man:systemd-modules-load.service(8)
              man:modules-load.d(5)
 Process: 260 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)

最後の行には、PID(プロセスID)と終了コードが含まれています。 status=0/SUCCESSは、モジュールが正常に挿入されたことを意味します。

journalctl -b _PID=260

出力は:

Apr 03 22:50:57 mxhst systemd-modules-load[260]: Inserted module 'rt2800usb'

失敗した場合、systemctlの出力は次のようになります。

systemd-modules-load.service - Load Kernel Modules
  Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
  Active: failed (Result: exit-code) since Wed, 03 Apr 2013 22:50:59 +0000; 43s ago
        Docs: man:systemd-modules-load.service(8)
              man:modules-load.d(5)
 Process: 260 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)

journalctl -bレポート:

Apr 03 22:50:59 mxhst systemd-modules-load[260]: Failed to find module 'fakert2800usb'

終了コードが0/SUCCESSの場合、モジュールが正常に挿入されたことを意味します。ランニング

lsmod | grep rt2800

確認する必要があります:

rt2800usb              26854  0 
rt2x00usb              19757  1 rt2800usb
rt2800lib              64762  1 rt2800usb
rt2x00lib              66520  3 rt2x00usb,rt2800lib,rt2800usb
mac80211              578735  3 rt2x00lib,rt2x00usb,rt2800lib

lsmodの出力で確認できない場合(サービスの終了コードが0/SUCCESSであるにもかかわらず)、modules-load.serviceによって読み込まれた後にモジュールが削除されたことを意味します。考えられる原因の1つは、モジュールをブラックリストに追加した別の*.confファイルです。次のような行を探します。

blacklist rt2800usb

/etc/modprobe.d/*.conf/usr/lib/modprobe.d/*.confまたは/run/modprobe.d/*.confでコメント化/削除します。

38
don_crissti

ブート時にモジュールをロードするには、/etc/modules-load.d/にファイルを作成します。このファイルには任意の名前を付けることができますが、末尾が.confである必要があります。 wifiドライバーの場合、たとえば、ファイル/etc/modules-load.d/rt2800.confを作成できます。

ファイルに、次のように、ロードするモジュールの名前を1行追加します。

rt2800usb

カーネルモジュール のArch Wikiページに詳細情報があります。

5
jasonwryan