Bashスクリプトを使用して/ sysで文字デバイスを見つけますか?

Bashスクリプトを使用して/ sysで文字デバイスを見つけますか?

これら/sys.

私のアプローチは次のとおりです。

  • /sys/modules/usbledデバイスが接続されたときにロードされるカーネルモジュールの名前なので、始めてください。
  • cdto drivers/usb:usbled、これはデバイスドライバのバスと名前で表示されます(次の通り)。usbled.c:229)
  • ???

ディレクトリには次のものが含まれているので、最後のステップで停止しました。

$ ls
1-1.2:1.0  bind  module  new_id  remove_id  uevent  unbind

1-1.2:1.0これで、この場合、ディレクトリにLEDを制御するために必要な文字デバイスが含まれていることがわかりました。しかし、私のスクリプトはこれをどうやって知ることができますか?ディレクトリの後に特定の命名規則がありますか?同じタイプの複数のデバイスが接続されている場合はどうなりますか?

ベストアンサー1

さて、私の考えでは、あなたの質問のタイトルが意図せずに少し誤解を招くようです。テキストであなたがデバイスを見つけたと言って、プログラムでこれを行う方法を尋ねているからです。心の中に浮かぶ1つの質問は、それを手動で見つける方法とその周りにスクリプトを書くことができない理由です。私はこの質問に現在の形で答えるために最善を尽くします。

これらのものは非常に多様で、デバイスによって異なります。このため、より高いレベルのソフトウェアでもドライバ/ソフトウェアアダプタが必要です。したがって、あなたはおそらく一般的な手順で抽象化されるのではなく、このスクリプトが特定のタスクを実行するという考えに精通しているはずです。

いくつかの背景知識:すべてのバスタイプシステム(USB、SCSI、PCIなど)には特定の種類のアドレッシングデバイスが必要です。これは、lspciデフォルトの出力で各行の一番左に表示される値です。

略語の例:

[root@hypervisor pyadmin]# lspci
00:00.0 Host bridge: Intel Corporation 5400 Chipset Memory Controller Hub (rev 20)
00:1d.1 USB controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (rev 09)
00:1d.2 USB controller: Intel Corporation 631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (rev 09)
04:00.0 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E1 (rev 01)
04:01.0 PCI bridge: Intel Corporation 6311ESB/6321ESB PCI Express Downstream Port E2 (rev 01)
07:05.0 Fibre Channel: QLogic Corp. ISP2422-based 4Gb Fibre Channel to PCI-X HBA (rev 02)
07:06.0 Fibre Channel: QLogic Corp. ISP2422-based 4Gb Fibre Channel to PCI-X HBA (rev 02)
08:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5754 Gigabit Ethernet PCI Express (rev 02)

PCIアドレスは08:00.0、07:06.0などです。

おわかりのように、あなたが見ているsysfsディレクトリはモジュール()のusbled1つのものであるため、そのモジュールを使用するデバイスを含むそのモジュールのsysfs情報を見ています(必要に応じてその逆も同様です)。表示されているデバイス1-1.2:1.0はUSBアドレス(USB用語で「エンドポイント」)を表し、参照されます。

だから、すでにモジュールを知っている場合は、既定で既知の値をフィルタリングし、次のものを含むdentryのみを検索します。両方sysfsコロンとピリオド。これは、接続されていないデバイスでは、同じ名前の別のディレクトリエントリが特定のディレクトリに作成される可能性が低いためです。

私はこれが少し混乱していることを知っていますが、私はあなたの答えがそこにあると確信しています。

おすすめ記事