Ich habe http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ gesehen , in dem die Gründe für eine konsistente / vorhersagbare Gerätenamensgebung und anschließend die Regeln beschrieben werden, nach denen Gerätenamen generiert werden :
* Two character prefixes based on the type of interface:
* en -- ethernet
* sl -- serial line IP (slip)
* wl -- wlan
* ww -- wwan
*
* Type of names:
* b<number> -- BCMA bus core number
* ccw<name> -- CCW bus group name
* o<index> -- on-board device index number
* s<slot>[f<function>][d<dev_port>] -- hotplug slot index number
* x<MAC> -- MAC address
* [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
* -- PCI geographical location
* [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
* -- USB port number chain
Nehmen wir also an, ich habe ein Gerät eno16777736
: Warum heißt es so? Es ist eine Ethernet-Karte, das habe ich. Aber wie kann ich selbst in den Rest des Namens dieser Schnittstelle zurückkehren?
Ich untersuchte /sys/class/net/eno16777736
und sah:
eno16777736 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/eno16777736
Ich bin mir auch nicht sicher, wie ich das interpretieren soll oder ob ich diese Informationen verwenden kann, um dorthin zu gelangen eno16777736
.
Aktualisieren
Also das 16777736
ist das Gerät acpi_index
. Per https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-pci :
What: /sys/bus/pci/devices/.../acpi_index
Date: July 2010
Contact: Narendra K <narendra_k@dell.com>, linux-bugs@dell.com
Description:
Reading this attribute will provide the firmware
given instance (ACPI _DSM instance number) of the PCI device.
The attribute will be created only if the firmware has given
an instance number to the PCI device. ACPI _DSM instance number
will be given priority if the system firmware provides SMBIOS
type 41 device type instance also.
Und in der Tat:
core@localhost /sys/devices/pci0000:00/0000:00:11.0/0000:02:01.0 $ find . -type f | xargs grep 1677 2> /dev/null
./net/eno16777736/uevent:INTERFACE=eno16777736
./acpi_index:16777736
Um die Ausgabe von ifconfig
oder ip link
und Ihren Geräten zu synchronisieren, gehen Sie wie folgt vor lspci
:
$ ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.37 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fe70:c039 prefixlen 64 scopeid 0x20<link>
inet6 2601:a:7c0:66:20c:29ff:fe70:c039 prefixlen 64 scopeid 0x0<global>
ether 00:0c:29:70:c0:39 txqueuelen 1000 (Ethernet)
RX packets 326 bytes 37358 (36.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 172 bytes 45999 (44.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19 base 0x2000
Beachten Sie den "Geräte-Interrupt 19". Und von lspci -v
, der "IRQ 19" hat:
02:01.0 Ethernet controller: Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] (rev 10)
Subsystem: Advanced Micro Devices, Inc. [AMD] PCnet - Fast 79C971
Physical Slot: 33
Flags: bus master, medium devsel, latency 64, IRQ 19
I/O ports at 2000 [size=128]
[virtual] Expansion ROM at fd500000 [disabled] [size=64K]
Kernel driver in use: pcnet32
Hier sehen Sie auch "Phyiscal Slot 33" und in der Tat bootet VMWare manchmal VMs, die ens33
als Schnittstellennamen erhalten. Es ist also unklar, warum es zu anderen Zeiten eno16777736 wählt. Aber der 16777736 kommt vom acpi_index
, und der 33 kommt vom PCI-Steckplatz.