Tại sao eth0 của tôi được gọi là eno16777736?


27

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/eno16777736và 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, 16777736là 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ừ ifconfighoặc ip linkvà 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ó ens33tê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_indexvà 33 đến từ khe cắm PCI.


Trông giống như Red Hat cố định phía họ trong RHEL7.3: redhat.com/en/about/blog/...
Stefan Lasiewski

Câu trả lời:


30

en cho Ethernet

o cho trên tàu

16777736là chỉ mục của thiết bị được cung cấp bởi phần sụn (BIOS / EFI). Nó sẽ là hợp lý để bắt đầu chỉ số tại 1. Dù vậy, hoặc bạn có chương trình cơ sở hợp lý và hơn 16 triệu thiết bị trên tàu! Nhưng nhiều khả năng, bạn đang thấy vấn đề được nêu ra (nhưng không được trả lời) trên VMware Community - có vẻ như con số này xuất phát từ một lỗi tràn tiêu cực có thể xảy ra acpi_index.

Bạn có thể xem thông tin tương tự từ udevhệ thống của mình với:

udevadm info --name=/dev/eno16777736 --attribute-walk

Haha thú vị Vì vậy, BIOS của tôi là VMWare. Điều kỳ lạ là đôi khi VMWare thực hiện eno16777736 và đôi khi là33. Vì vậy, đôi khi nó "trên tàu" và đôi khi "cắm nóng?" Kỳ dị. 16777736 rất gần với 4096 ^ 2
Dmitry Minkovsky

Hoặc, ờ, 2 ^ 24. Vì vậy, có lẽ nó bắt đầu từ đó ...
Dmitry Minkovsky

2
AHH vì vậy nó là "acpi_index". Cảm ơn nhiều. Tôi thực sự muốn thấy con số đó ở đâu đó trong một số đầu ra! Thật xấu hổ khi OP trên bài đăng đó không hiển thị lệnh mà anh ta đã ban hành, nhưng tôi chắc chắn rằng tôi có thể Google cho điều đó. Cảm ơn bạn
Dmitry Minkovsky

9

Sử dụng VMware?

Các trang web Unix Stackexchange có một câu hỏi và câu trả lời về vấn đề này. Dường như thông tin về NIC đang được BIOS cung cấp.

Nếu bạn muốn đổi nó thành eth0(hoặc một số tên khác), bạn có thể sử dụng udev để làm như vậy. Dưới đây là một hướng dẫn hữu ích để làm như vậy.


Vâng, VMWare. Và cảm ơn, tôi sẽ kiểm tra các liên kết của bạn! Tôi không cần thay đổi nó thành eth0 nhiều như tôi muốn hệ thống này thực sự có thể dự đoán được cho tôi: D. Tôi cũng đã có ens33, ví dụ, sử dụng VMWare. Thực sự muốn biết làm thế nào nó chọn những giá trị đó, và làm thế nào tôi có thể trở lại chính chúng.
Dmitry Minkovsky
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.