Кто-нибудь знает, есть ли способ определить, как будет называться сетевой интерфейс в NetBSD, если заранее известно, какую сетевую карту/драйвер вы будете использовать?
Я пытаюсь автоматизировать части настройки NetBSD для множества различных машин и хотел бы написать файл /etc/ifconfig.xx, но никогда не знаю, какой будет часть 'xx'. Я знаю, что, например, моя сетевая карта Intel использует 'wm' в качестве суффикса, но откуда NetBSD берет эту информацию?
решение1
Нет, вы не можете знать заранее, какой драйвер будет подключен к какой-то таинственной конфигурации оборудования. Конечно, если вы работаете с инвентаризацией оборудования известных конфигураций и вы заранее определили, какой драйвер будет использоваться для каждого типа интерфейса в ваших известных системах, то это довольно детерминировано.
С другой стороны, во время загрузки системы или после первой загрузки список известных интерфейсов выдается командой ifconfig -l
.
Конечно, это все еще не скажет вам, к какому интерфейсу подключен кабель Ethernet, например, если в вашей системе имеется несколько интерфейсов на материнской плате, или установлено несколько карт Ethernet, или многопортовая карта и т. д. Некоторые интерфейсы появляются автоматически, когда они устанавливают соединение с коммутатором/концентратором/чем-либо еще, и если это так, то они ifconfig -a
покажут вам всю информацию обо всех известных интерфейсах, включая то, какой из них активен и какую среду они используют (линии status:
и media:
соответственно).
Однако, если ваша целевая среда использует DHCP для назначения адресов, то вы можетеобычнообойтись просто использованием следующей строки/etc/rc.conf
dhclient=YES
поскольку по умолчанию он попытается запросить адрес на каждом доступном (с возможностью широковещательной передачи) интерфейсе.
решение2
Я думаю, вы могли бы использовать dhcpd.conf или какой-нибудь скрипт ifconfig(8) после загрузки, чтобы переназначить интерфейсы, ссылаясь на их аппаратные MAC-адреса, которые будут уникальными, даже если вы используете несколько одинаковых сетевых карт. Было бы неплохо иметь возможность ссылаться на MAC-адресавместоиз имен интерфейсов XXn, но ifconfig(8), похоже, не имеет такой опции.
решение3
Я думал, что NetBSD проверяет это через использование Vendor- и PCI-ID. Возможно, pcidevs.h и pcidevs_data.h вам помогут.