Tôi đã xem http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ , mô tả cơ sở lý luận cho việc đặt tên thiết bị nhất quán / có thể dự đoán được và sau đó là quy tắc tạo ra tên thiết bị :
* 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
Vì vậy, hãy nói rằng tôi đã có thiết bị eno16777736
: tại sao nó được gọi là? Đó là thẻ ethernet, tôi hiểu rồi. Nhưng làm thế nào tôi có thể trở lại phần còn lại của tên giao diện này?
Tôi đã kiểm tra /sys/class/net/eno16777736
và thấy:
eno16777736 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/eno16777736
Không chắc chắn làm thế nào để giải thích điều này, hoặc liệu tôi có thể sử dụng thông tin này để nhận được eno16777736
.
Cập nhật
Vì vậy, 16777736
là thiết bị là acpi_index
. Mỗi 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.
Và thực sự:
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
Hơn nữa, để điều hòa đầu ra từ ifconfig
hoặc ip link
và các thiết bị của bạn trong 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
Lưu ý "ngắt thiết bị 19". Và từ lspci -v
đó, có "IRQ 19":
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
Tại đây, bạn cũng thấy "Phyrypt Slot 33", và thực tế, đôi khi VMWare khởi động các VM có ens33
tên làm giao diện. Vì vậy, không rõ tại sao lần khác nó lại chọn eno16777736. Nhưng 16777736 đến từ acpi_index
và 33 đến từ khe cắm PCI.