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

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

National Instruments USB<->GPIB ブリッジがあります。 USBボードなので、使用するには特別な手順が必要です。 2つのカーネルモジュールを提供するlinux_gpibパッケージをインストールしましたgpib_commonni_usb_gpibまた、gpib_configGPIBバスの機器と通信するには、まずツールを実行する必要があります。重要なのは、ボードをUSBに接続した後、gpib_configコマンドが適用される前に内部で初期化するのに約2秒かかります。したがって、99-gpib.rulesタスクを完全に実行するための次のudevルールがあります。

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にこれを実行させる正しい方法が必要です。もちろん、ボードが接続されていること、カーネルモジュールがロードされていることを確認し、ロードプロセス中にツールを実行するための初期化スクリプトを書くこともできますが、ハードウェアを処理する必要があるため、それはudevの仕事だと思います。どんなアイデアがありますか?

ベストアンサー1

問題はRUNコンテンツを実行しているudevにあります。今後そのモジュールがロードされ、gpib_configボードを構成できません。解決策は、システムの起動時にudevを起動する前にモジュールをロードすることです。私はこれが本当の解決策だとは思わない。

おすすめ記事