KVMを使用してLinuxでPCI GPUパススルー設定をスクリプト化しようとしています。以下でpciデバイスIDを見つける必要があります。
root@kvmatrix:~# lspci -nn | grep VGA | grep NVIDIA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050] [10de:1c81] (rev a1)
この部分だけを生成するために別の「grep」を追加したいと思います。
10de:1c81
答え1
どのタイプの機器を購入したいのかを知っていれば、その機器を使用する方が簡単です。この場合、「VGA Controller」はクラスなので、次の情報のみを提供することがわかり0300
ます。lspci
$ lspci -nd::0300|egrep -o "[[:xdigit:]]{4}:[[:xdigit:]]{4}"
これはegrep
検索なので、使用することもできますgrep -E
。 1つの項目だけが一致するのでxxxx:xxxx
(x
16進数)、それが私が一致したものです。
一致できる複数のカードがあり、nVidia カードだけが必要な場合は、lspci -nd10de::0300
そのベンダーにのみ制限できます。
答え2
この試み:
lspci -nn | grep -oP 'VGA.*NVIDIA.*\[\K[\w:]+'
-P
または、より移植性に優れています(一部の古いLinuxオペレーティングシステムにはスイッチがありません)
lspci -nn | perl -lne 'print $& if /VGA.*NVIDIA.*\[\K[\w:]+/'
出力:
10de:1c81
ライブデモ右側に説明があります。
答え3
使用discover
:ハードウェア検出ユーティリティ
discover --vendor-id --model-id pci | grep NVIDIA | uniq | awk '{print $1":"$2}'
出力例:
10de:1c81