ทำไม eth0 ของฉันถึงเรียกว่า eno16777736


27

ฉันเห็นhttp://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ซึ่งอธิบายเหตุผลสำหรับการตั้งชื่ออุปกรณ์ที่สอดคล้อง / คาดเดาได้และจากนั้นกฎที่สร้างชื่ออุปกรณ์ :

 * 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

สมมุติว่าฉันมีอุปกรณ์eno16777736: ทำไมถึงเรียกมันว่า มันเป็นการ์ดอีเธอร์เน็ตฉันเข้าใจแล้ว แต่ฉันจะย้อนกลับไปยังส่วนที่เหลือของชื่ออินเทอร์เฟซนี้ด้วยตัวเองได้อย่างไร?

ฉันตรวจ/sys/class/net/eno16777736แล้วเห็น:

eno16777736 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/eno16777736

eno16777736ไม่แน่ใจว่าจะแปลความหมายนี้อย่างใดอย่างหนึ่งหรือว่าเราสามารถใช้ข้อมูลนี้เพื่อที่จะได้รับ

ปรับปรุง

ดังนั้นเป็นของอุปกรณ์16777736 acpi_indexต่อ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.

และแน่นอน:

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

เพิ่มเติมเพื่อกระทบยอดส่งออกจากifconfigหรือip linkอุปกรณ์ของคุณใน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 

สังเกตเห็น "อุปกรณ์ขัดจังหวะ 19" และจากlspci -vซึ่งมี "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

ที่นี่คุณจะเห็น "Phyiscal Slot 33" และแน่นอนบางครั้ง VMWare จะบู๊ต VM ที่ens33เป็นชื่ออินเตอร์เฟส ดังนั้นจึงไม่มีความชัดเจนว่าทำไมเวลาอื่นจึงเลือก eno16777736 แต่ 16777736 มาจากacpi_indexและ 33 มาจากสล็อต PCI


ดูเหมือน Red Hat จับจ้องอยู่ที่ RHEL7.3: redhat.com/th/about/blog/…
Stefan Lasiewski

คำตอบ:


30

en สำหรับอีเธอร์เน็ต

o สำหรับออนบอร์ด

16777736คือดัชนีของอุปกรณ์ที่จัดทำโดยเฟิร์มแวร์ (BIOS / EFI) 1มันจะได้รับตรรกะดัชนีเริ่มต้นที่ ไม่ว่าคุณจะมีเฟิร์มแวร์ที่เหมาะสมและอุปกรณ์ออนบอร์ดมากกว่า 16 ล้านเครื่อง! แต่มีโอกาสมากขึ้นที่คุณจะเห็นปัญหาที่เกิดขึ้น (แต่ไม่ได้รับคำตอบ) ในชุมชน VMware - ดูเหมือนว่าจำนวนนั้นมาจากการลบacpi_indexมากเกินไปที่เป็นไปได้

คุณสามารถดูข้อมูลที่คล้ายกันจากudevสำหรับระบบของคุณด้วย:

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

ฮ่าฮ่าน่าสนใจ ดังนั้น BIOS ของฉันคือ VMware สิ่งที่แปลกคือบางครั้ง VMWare ทำ eno16777736 และบางครั้งก็เป็น 33 ดังนั้นบางครั้งมันเป็น "on board" และบางครั้ง "เสียบร้อน" แปลก. 16777736 นั้นใกล้กับ 4096 ^ 2
Dmitry Minkovsky

หรือเอ่อ 2 ^ 24 ดังนั้นบางทีมันอาจจะเริ่มต้นจากที่นั่น ...
Dmitry Minkovsky

2
AHH มันคือ "acpi_index" ขอบคุณมาก. ฉันอยากเห็นตัวเลขนั้นที่ใดที่หนึ่งในเอาต์พุตบ้าง! เป็นเรื่องน่าละอายที่ OP ในโพสต์นั้นไม่แสดงคำสั่งที่เขาออก แต่ฉันแน่ใจว่าฉันสามารถใช้ Google ได้ ขอบคุณ
Dmitry Minkovsky

9

ใช้ VMware หรือไม่

เว็บไซต์ Unix Stackexchange มีคำถามและคำตอบเกี่ยวกับเรื่องนี้ จะปรากฏว่ามีการให้ข้อมูลเกี่ยวกับ NIC จาก BIOS

หากคุณต้องการเปลี่ยนเป็นeth0(หรือชื่ออื่น) คุณสามารถใช้ udev เพื่อทำเช่นนั้น นี่คือคำแนะนำที่มีประโยชน์สำหรับการทำเช่นนั้น


ใช่ VMWare และขอบคุณฉันจะตรวจสอบลิงก์ของคุณ! ฉันไม่ต้องการเปลี่ยนเป็น eth0 มากเท่าที่ฉันต้องการให้ระบบนี้คาดเดาได้จริงสำหรับฉัน: D ens33ยกตัวอย่างเช่นฉันเคยใช้ VMWare อยากรู้ว่ามันเลือกค่าเหล่านั้นอย่างไรและฉันจะกลับไปหาพวกเขาเองได้อย่างไร
Dmitry Minkovsky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.