事前にどの NIC/ドライバーを使用するかわかっている場合、NetBSD でネットワーク インターフェイスが何と呼ばれるかを決定する方法があるかどうか知っている人はいますか?
さまざまなマシンの NetBSD セットアップの一部を自動化しようとしており、/etc/ifconfig.xx ファイルを作成したいのですが、'xx' の部分が何になるかわかりません。たとえば、Intel NIC がサフィックスとして 'wm' を使用していることはわかっていますが、NetBSD はその情報をどこから取得するのでしょうか。
答え1
いいえ、謎のハードウェア構成にどのドライバーが接続されるかを事前に知ることはできません。もちろん、既知の構成のハードウェア インベントリに基づいて作業していて、既知のシステムの各タイプのインターフェイスにどのドライバーが使用されるかを事前に決定している場合は、かなり決定論的です。
一方、システムの起動中、または最初の起動後には、コマンドによって既知のインターフェースのリストが表示されますifconfig -l
。
もちろん、これでは、どのインターフェースにイーサネット ケーブルが接続されているかはわかりません。たとえば、システムのマザーボードに複数のインターフェースがある場合や、複数のイーサネット カードがインストールされている場合、またはマルチポート カードがある場合などです。ただし、一部のインターフェースは、スイッチ/ハブ/その他との接続をネゴシエートするたびに自動的に起動します。その場合、アクティブなインターフェースや、それらが使用しているメディア (それぞれと の行)ifconfig -a
など、既知のすべてのインターフェースに関するすべての情報が表示されます。status:
media:
しかしターゲット環境でDHCPを使用してアドレスを割り当てる場合は、いつもの次の行を使用するだけで済みます/etc/rc.conf
dhclient=YES
デフォルトでは、利用可能な(ブロードキャスト可能な)各インターフェースでアドレスを要求しようとします。
答え2
dhcpd.conf または起動後の ifconfig(8) スクリプトを使用して、ハードウェア MAC アドレスを参照してインターフェイスを再割り当てできると思います。このアドレスは、複数の同一の NIC を使用している場合でも一意になります。MAC アドレスを参照できると便利です。その代わりXXnインターフェース名ですが、ifconfig(8)にはそのオプションがないようです。
答え3
NetBSD はベンダー ID と PCI ID を使用してこれを調査していると思いました。おそらく pcidevs.h と pcidevs_data.h が役に立つでしょう。