Ausführen von Udev-Regeln beim Booten

Ausführen von Udev-Regeln beim Booten

Ich habe eine USB<->GPIB-Brücke von National Instruments. Es handelt sich um eine USB-Karte, die ein spezielles Verfahren benötigt, um nutzbar zu werden. Ich habe das Paket linux_gpib installiert, das zwei Kernelmodule bereitstellt: gpib_commonund ni_usb_gpib. Außerdem muss das gpib_configTool ausgeführt werden, bevor ich mit einem Instrument auf dem GPIB-Bus kommunizieren kann. Der Trick besteht darin, dass die Karte nach dem Einstecken in den USB-Anschluss etwa 2 Sekunden zur internen Initialisierung benötigt, bevor gpib_configder Befehl wirksam wird. Daher habe ich die folgende 99-gpib.rulesUdev-Regel, die den Job perfekt erledigt:

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"

Das Problem ist, dass es nur funktioniert, wenn ich die Karte anschließe, während das Hostsystem läuft. Wenn ich mit eingestecktem Dongle neu starte, sehe ich, dass beide Kernelmodule geladen sind, aber die Karte ist unbrauchbar, was bedeutet, dass das gpib_configTool nicht ausgeführt wurde. Wenn ich es manuell ausführe, funktioniert es perfekt.

Da ein Neustartszenario realistischer ist als das Anschließen bei laufendem System, muss ich die richtige Methode finden, damit udev dies beim Booten tut. Natürlich kann ich ein Init-Skript schreiben, das prüft, ob die Karte angeschlossen ist und Kernelmodule geladen sind, und das Tool während des Ladevorgangs ausführen, aber das ist die Aufgabe von udev, da es, glaube ich, etwas mit der Hardware zu tun hat. Irgendwelche Ideen?

Antwort1

Das Problem liegt in udev, das RUN-Sachen ausführtVorentsprechende Module werden geladen, daher gpib_configschlägt die Konfiguration der Karte fehl. Problemumgehung besteht darin, Module vor dem Udev-Start beim Systemstart zu laden. Keine wirkliche Lösung, glaube ich.

verwandte Informationen