Busyboxを実行するLinuxボックスがあります。カードリーダーが2つ内蔵されています。カードリーダーの種類を確認するには?
lshw
試しましたが、これらのコマンドはBusyboxでは実装されていhwinfo
ません。lspci
こんにちはステファン・チャジェラス(Stefan Chazeras),
あなたの詳細な答えに心から感謝します。私はこれを試しました。しかし、grepは何も見つかりませんでした。
# l `find /sys/devices -path '*/usb*/configuration'`
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0470300.ehci_v2/usb3/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0470400.ohci_v2/usb7/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0470500.ehci_v2/usb4/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0470600.ohci_v2/usb8/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0471000.xhci_v2/usb1/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0471000.xhci_v2/usb2/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0480300.ehci_v2/usb5/5-1/5-1.1/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0480300.ehci_v2/usb5/5-1/5-1.2/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0480300.ehci_v2/usb5/5-1/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0480300.ehci_v2/usb5/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0480400.ohci_v2/usb9/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0480500.ehci_v2/usb6/configuration
-r--r--r-- 1 root root 4096 Oct 2 19:14 /sys/devices/rdb.3/f0480600.ohci_v2/usb10/configuration
# l `find /sys/devices -path '*/pci*/driver'`
dr-xr-xr-x 2 root root 0 Oct 2 19:20 .
dr-xr-xr-x 4 root root 0 Oct 2 19:20 ..
-r--r--r-- 1 root root 0 Oct 2 19:31 devices
# l /proc/bus/pci/devices
-r--r--r-- 1 root root 0 Oct 2 19:31 /proc/bus/pci/devices
答え1
カードリーダーは通常USBデバイスです。その場合は、次のようにできます。
find /sys/devices -path '*/usb*/configuration' -exec \
grep -lx 'CARD READER' {} + | awk -F/ -vOFS=/ '{
NF--
getline idv < ($0 "/idVendor")
getline idp < ($0 "/idProduct")
getline v < ($0 "/manufacturer")
getline p < ($0 "/product")
print idv":"idp" "v" "p}'
ベンダー/製品IDと名前を取得します(カーネルによって報告されます)。つまり、USBデバイスを探す構成に設定されていますカードリーダー次に、そのファイルを含む親ディレクトリにあるファイルvendorID
のproductID
内容を抽出しますmanufacturer
。product
configuration
PCI デバイスの場合、次のドライバを使用して少なくともデバイスをキャプチャします。 busybox は GNU の述語をfind
サポートしていないので、次のようなものが必要です。find
-lname
find /sys/devices -path '*/pci*/driver' -type l -exec readlink {} \; -print |
awk -F/ -v OFS=/ '
BEGIN{d["cb710"]d["r592"]d["r852"]d["rts5208"]d["rtsx_pci"]}
$NF in d {
getline
NF--
getline v < ($0 "/vendor")
getline p < ($0 "/device")
print substr(v, 3) ":" substr(p, 3)
}'
いいえ構成今回は、このファイルを使用してデバイスのクラスを確認できます(実際にはclass
PCIデバイスクラスのファイルがありますが、ここでRealtekデバイスは0xff00(その他)であることがわかります。PCIデバイスクラス)「カードリーダー」なので信頼できません)。したがって、私たちは既知のPCIカードリーダードライバへのシンボリックリンクを見つけ、drivers
それに関連するパスからベンダー/製品IDを取得します。
より簡単な方法は以下を使用することです/proc/bus/pci/devices
。
awk '
BEGIN{d["cb710"]d["r592"]d["r852"]d["rts5208"]d["rtsx_pci"]}
$NF in d {print substr($2, 1, 4) ":" substr($2, 5)}
' < /proc/bus/pci/devices