SuSE 8を実行している複数のPOSシステムに閉じ込められています。それは私の顧客のコンピュータです。システム全体をSLE 11にアップグレードするまで、これらのレガシーシステムに取り組んできました。
問題: システムには、ttyUSB* 文字デバイス・ノードと競合する 2 つのデバイスがあります。ベンダーIDと製品IDが異なります。 SuSE 8にはudevがなく、devfsがあります。
デバイスのベンダーIDと製品ID、およびそのデバイスを担当するカーネルモジュール(ipaqカーネルモジュール)を知っていれば、どの文字デバイスノードに割り当てられているかをどうやって知ることができますか? POSIXシェルスクリプト文字列(例:$ DeviceNode)?
今私はシェルスクリプトで非常に愚かな方法でこれを行います。
DeviceNode=$(dmesg | tac | grep "PocketPC PDA converter now attached to" | set -n 's/.*now attached to \([[:alnum:]]\{1,\}\).*/\1/p')
だから私は
> echo $DeviceNode
ttyUSB1
>
もちろん、問題の1つは、デバイスのプラグが抜けている可能性があり、この簡単な方法ではわからないことです。
もっと良い方法がありますか?
編集:だから見つけましたこの記事今朝。 /proc/tty/driver/usbserialで2行目から始めて、各行の最初の番号がttyUSBxの1つのマイナー番号であると仮定できますか?
編集2:代替(おそらくより良い)ソリューションは、継続的なノード接続を取得することです(たとえば、常にttyUSB1に関連付けられている既知のベンダーIDと既知の製品IDを持つデバイスを取得します)。 devfsでこれは可能ですか?