起動時にudevルールを実行する

起動時にudevルールを実行する

私は National Instruments USB<->GPIB ブリッジを持っています。これは、使用可能になるのに特別な手順が必要な USB ボードです。私は と の 2 つのカーネル モジュールを提供する linux_gpib パッケージをインストールしています。gpib_commonまたni_usb_gpibgpib_configGPIB バス上の機器と通信する前に、ツールを実行する必要があります。問題は、ボードを USB に接続してから、gpib_configコマンドが有効になるまでに、内部初期化のために約 2 秒かかることです。そのため、私は次の99-gpib.rulesudev ルールで完璧に機能します。

SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="3923", ATTR{idProduct}=="709b", RUN+="/bin/sh -c '/usr/bin/sleep 2; /usr/sbin/gpib_config --minor 0'"

KERNEL=="gpib[0-9]*", MODE="0660", GROUP="gpib"

問題は、ホスト システムが起動して実行されているときにボードを接続した場合にのみ機能することです。ドングルを接続した状態で再起動すると、両方のカーネル モジュールがロードされていることを確認できますが、ボードは使用できず、gpib_configツールが実行されなかったことを意味します。手動で実行すると、完全に機能します。

再起動のシナリオの方が現実的であるため、システムの実行中にプラグを差し込むよりも、起動時に udev がこれを実行するための正しい方法が必要です。もちろん、ボードが差し込まれ、カーネル モジュールがロードされているかどうかを確認し、ロード プロセス中にツールを実行する init スクリプトをいくつか作成することはできますが、これはハードウェアを処理するものであるため、udev の仕事だと思います。何かアイデアはありますか?

答え1

問題はRUNを実行するudevにあります前に対応するモジュールがロードされないため、gpib_configボードの構成に失敗します。回避策は、システム起動時に udev が起動する前にモジュールをロードすることです。実際の解決策ではないと思います。

関連情報