pym*_*kin 6 networking ubuntu udev systemd
我正在设置一个新服务器并安装了 Ubuntu Bionic,它使用可预测的网络接口名称。
安装程序在救援系统上运行,该系统仍然使用旧的接口名称,如eth0
, eth1
,但新安装的系统已将第一个网卡配置为enp8s0
。
使用lshw
,这张卡的公交信息是:
bus info: pci@0000:08:00.0
Run Code Online (Sandbox Code Playgroud)
我想设置其他网络接口而不启动到新安装的系统,但不知道如何确定其他卡的可预测网络接口名称。
使用lshw
,我找到了另一个网卡,目前已禁用:
bus info: pci@0000:41:00.0
Run Code Online (Sandbox Code Playgroud)
是否可以由此确定可预测的网络接口名称?会是这样enp41s0
吗?
我已经搜索了一段时间,但找不到任何可以简单地列出所有设备及其可预测名称的工具。
编辑:为什么我不想启动新系统来查找?因为这会在设置过程中增加一个额外的步骤。使用旧的接口命名,我可以运行一个脚本来从托管公司提供的救援系统中设置服务器,并且可以使用了。现在我必须先设置服务器减去额外的网络配置。然后我必须在新系统启动后手动设置网络,只是为了知道接口的名称。
命名方案的详细信息在源代码中:udev/udev-builtin-net_id.c。以前,这有一个很好的可读注释块来解释事情,但是由于重构删除了更好的参考在man systemd.net-naming-scheme。
一些常见的方案是 PCI 物理、PCI 热插拔和板载。您的 enp 界面建议物理。
从评论中去除异国情调和不相关的部分会留下以下规则:
* Two character prefixes based on the type of interface:
* en — Ethernet
*
* Type of names:
* [P<domain>]p<bus>s<slot>[f<function>][n<phys_port_name>|d<dev_port>]
* — PCI geographical location
*
* All multi-function PCI devices will carry the [f<function>] number in the
* device name, including the function 0 device.
*
*
* When using PCI geography, The PCI domain is only prepended when it is not 0.
Run Code Online (Sandbox Code Playgroud)
该 PCI 总线名称的格式为domain:bus:slot.function。
假设它不是多功能设备,pci@0000:41:00.0
显示为enp65s0
,因为十六进制 41 转换为十进制 65。
有一些(新的)可能性可以直接查找可预测的网络接口名称。您可以用于udevadm info
此用途。此外,您还可以获得一些可能有用的更多信息。
该命令可以将其导出为键值对,以便于在脚本中使用。请参阅ID_NET_NAME
此示例:
# udevadm info --export --query=property --path=/sys/class/net/eth0
DEVPATH='/devices/pci0000:00/0000:00:0d.0/0000:02:00.0/net/eth0'
INTERFACE='eth0'
IFINDEX='2'
SUBSYSTEM='net'
USEC_INITIALIZED='3750679'
ID_NET_NAME_MAC='enx0012345678'
ID_OUI_FROM_DATABASE='Super Micro Computer, Inc.'
ID_NET_NAME_PATH='enp2s0f0'
ID_BUS='pci'
ID_VENDOR_ID='0x8086'
ID_MODEL_ID='0x10c9'
ID_PCI_CLASS_FROM_DATABASE='Network controller'
ID_PCI_SUBCLASS_FROM_DATABASE='Ethernet controller'
ID_VENDOR_FROM_DATABASE='Intel Corporation'
ID_MODEL_FROM_DATABASE='82576 Gigabit Network Connection'
ID_PATH='pci-0000:02:00.0'
ID_PATH_TAG='pci-0000_02_00_0'
ID_NET_DRIVER='igb'
ID_NET_LINK_FILE='/lib/systemd/network/99-default.link'
ID_NET_NAME='enp2s0f0'
SYSTEMD_ALIAS='/sys/subsystem/net/devices/eth0'
TAGS=':systemd:'
Run Code Online (Sandbox Code Playgroud)
提醒:此示例适用于名称仍为“eth[0-9]”的接口。否则,可预测的名称就是接口名称。
归档时间: |
|
查看次数: |
2084 次 |
最近记录: |