Linux で、どの PCI カードがどの PCI スロットに挿入されているかを調べる方法はありますか?
/sys/bus/pci/devices/ には、カードではない多くのデバイス (ブリッジ、CPU チャネルなど) が含まれており、デバイス ディレクトリでスロット カード マッピングに関する情報を見つけることができませんでした。
使用できます
dmidecode –t slot
実行できるよりも利用可能なすべての PCI スロットを見つける
lspci -s <slot number>
指定したスロットに接続されているデバイスを一覧表示するコマンド。最初のコマンドからバス アドレスを取得し、このアドレスを 2 番目のコマンドのパラメーターとして使用する必要があります。
Nebojsa の回答は良いですが、もう少し情報と magmabyte のコメントへの回答を次に示します。
dmidecode
スロットの数がわかりますが、PCI ブリッジを使用するのはこれらのスロットだけではありません。そのため、スロットよりも多くのデバイスが表示されます。
次に、スロットごとに複数の「デバイス」が表示される場合がありますが、それらは同じカードの複数のポートにすぎない可能性があります。ネットワーク インターフェイス カード (NIC) を使用した例を挙げると、次のようになります。
megaman@someserver $ lspci | grep 10Gb
07:00.0 Ethernet controller: Emulex Corporation OneConnect 10Gb NIC (rev 02)
07:00.1 Ethernet controller: Emulex Corporation OneConnect 10Gb NIC (rev 02)
dmidecode
は、このサーバーに 3 つのスロットがあることを示します (実際にそうです)。スロット 1 には上記の 10Gb NIC があり (2 つのポートがあることがわかります)、スロット 2 にはファイバー チャネル カードがあり (たまたま 2 つのポートがあります)、最後にスロット 3 は空です。
サーバーには 3 つの物理スロットがあり、1 つが空で、2 つがマルチポート カード (HBA と NIC) で埋められています。
コメントであなたの質問に答えるために、あなたが持っている 3 つのスロットは で示されているものdmidecode
で、マルチポート インターフェイス カードが搭載されている可能性があります。