eno หมายถึงอะไรในชื่ออินเทอร์เฟซเครือข่าย 'eno16777736' สำหรับ CentOS 7 หรือ RHEL 7


16

ภายใต้โครงร่างการตั้งชื่ออุปกรณ์เครือข่ายที่สอดคล้องกัน 'eno' หมายถึงอะไรในชื่ออินเตอร์เฟสเครือข่ายeno16777736สำหรับ CentOS 7 หรือ RHEL 7

คำตอบ:


23

นี่คือชื่ออุปกรณ์เชื่อมต่อเครือข่ายที่สามารถคาดเดาได้

  • en สำหรับอีเธอร์เน็ต
  • o สำหรับออนบอร์ด
  • หมายเลขนี้เป็นดัชนีที่จัดทำเฟิร์มแวร์ / BIOS

รายละเอียดเพิ่มเติมในแหล่งที่มาของudev-builtin-net_id.c


18

อืมม มากกว่า "en" และ "o" ฉันจะเป็นกังวลมากขึ้นเกี่ยวกับ "16777736"

ถ้าคุณบังเอิญเดินเข้าไปใน Google และพบว่าตัวเองกำลังนั่งอยู่ที่เซิร์ฟเวอร์ที่มีสถาปัตยกรรม PCI ที่กำหนดเองฉันไม่เห็นว่า 16777736 จะเป็นค่าที่เป็นไปได้อย่างไร นี่อาจเป็นคำใบ้ถึงปัญหาที่รุนแรงยิ่งขึ้น

ภายใต้ schema ปัจจุบันระบบจะไม่สามารถระบุที่อยู่บัสมากกว่า 256 PCI (ด้วยอุปกรณ์ 32 ตัวภายใต้แต่ละบัสและสูงสุด 8 ฟังก์ชั่นภายใต้อุปกรณ์แต่ละตัว) สิ่งนี้ยังเป็นที่รู้จักในฐานะ Bus: Device.Function addressing ระบบที่ทันสมัยใช้โดเมน: รถบัส: อุปกรณ์ฟังก์ชั่นเพื่อใช้งานเกินขีด จำกัด 256 บัส แต่กลับไปที่ปัญหาของคุณ ...

คุณสามารถทำ:

ls -la /sys/class/net | grep eno16777736

หากคุณเห็นสิ่งที่คล้ายกันมากกับ:

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

ถ้าอย่างนั้นฉันแนะนำให้คุณวิ่งเร็วก่อนที่ Google จะจับคุณเล่นกับเซิร์ฟเวอร์ของพวกเขา

/(0000:1000208:01.0)/ ข้างต้นเป็นโดเมน: บัส: อุปกรณ์ที่อยู่ของฟังก์ชันพร้อมค่าบัส "1,000208" ซึ่งเป็นเลขฐานสิบหกที่แสดงถึง 16777736 อย่างไรก็ตาม "0x100" (256) ควรเป็นค่าสูงสุด ที่คุณมีสำหรับ "รถบัส"

ในทางกลับกันถ้าคุณได้รับค่าที่ต่ำกว่า 0x100 สำหรับ "Bus" เช่น:

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

จากนั้นฉันคิดว่าปัญหาจะเกี่ยวข้องกับวิธีที่ Bios / Firmware ของคุณส่งข้อมูลไปยัง udev (systemd) เมื่อเริ่มต้น หากต้องการทราบสาเหตุที่เป็นไปได้อันดับแรกให้ตรวจสอบค่าที่ udev ส่งกลับมา

โดยทั่วไปมีสามสถานที่ udev แบบสอบถามเพื่อสร้าง PIN (ชื่ออินเตอร์เฟสที่คาดการณ์ได้)

  1. ACPI_DSM
  2. ตาราง SMBIOS [ประเภทเร็กคอร์ดเฉพาะ "สล็อต" [9] และประเภท 41]
  3. ตารางเส้นทาง PCI IRQ

[เพื่อให้]

เราสามารถทดสอบ (1) โดย:

udevadm info --path=/sys/class/net/eno16777736 --attribute-walk | grep acpi

หากสิ่งนี้ให้ 16777736 แสดงว่าระบบของคุณส่วนใหญ่ไม่รองรับ PCI Firmware Specification 3.1 ซึ่งจำเป็นสำหรับการสนับสนุน ACPI_DSM

ดังนั้นเราต้องทดสอบตอนนี้ (2) ดังนั้นให้ตรวจสอบประเภทระเบียนที่ 41 ในตาราง SMBIOS ก่อน (ประเภท 41 เกี่ยวข้องมากที่สุด):

dmidecode -t 41 | more

หากไม่มีอะไรแสดงหรือรุ่น SMBIOS นั้นน้อยกว่า "2.62" นั่นหมายความว่า udev จะใช้ตารางเส้นทาง PCI IRQ ในการสร้าง PIN

ดังนั้นเราควรตรวจสอบ (3)

biosdecode

ใส่ใจกับช่องรายการสูงสุดของคุณ ... ควรเป็นของแบบฟอร์ม:

Slot Entry X: ID 00:00, (slot number X| status)

หาก X คือ 25 เพื่อประโยชน์ของการโต้แย้ง NIC ของคุณควรอยู่ในสล็อตที่ต่ำกว่าหรือเท่ากับ 25 ถ้าไม่เช่นนั้น udev จะยังคงอ้างอิงค่าตัวยึดที่ 16777736 ต่อไป

ในกรณีส่วนใหญ่คุณสามารถตรวจสอบหมายเลขสล็อตของนิคโดย:

lspci -bv | grep -i -A10 ether

และอีกครั้งในกรณีส่วนใหญ่ใน BDF (บัส: อุปกรณ์ฟังก์ชั่น) อุปกรณ์ควรเท่ากับหมายเลขพอร์ตทางกายภาพ (หลังจากแปลงจากฐานสิบหกเป็นทศนิยม) ในกรณีอื่น ๆ (ซึ่งไม่เป็นเช่นนั้น) lspci จะแสดงรายการ Physical Slot บนบรรทัดแยกต่างหากในเอาต์พุตของการดำเนินการคำสั่ง lspci ข้างต้น

ดังนั้นถ้าหมายเลขฟิสิคัลสล็อตที่ระบุไว้มีค่ามากกว่า X (จำนวนสูงสุดที่เราพบในตารางการกำหนดเส้นทาง PCI IRQ) เราอาจแยกปัญหาได้

มี 5 วิธีแก้ปัญหาที่เป็นไปได้ที่ฉันสามารถคิดในกรณีนี้คือ ...

  1. การแฮ็กเคอร์เนล ... สร้างเคอร์เนลใหม่ด้วยตารางการกำหนดเส้นทาง PCI IRQ ใหม่ ดูที่ /arch/x86/pci/irq.c

[นี่คือโซลูชัน i-need-to-find-better-of-my-time]

  1. แม็พอุปกรณ์กับชื่ออื่นโดยสร้างกฎใหม่

โดย:

vi /etc/udev/rules.d/70-my-net-names.rules

จากนั้นเพิ่มรายการต่อไปนี้:

ACTION=="add", SUBSYSTEM=="net", ENV{ID_BUS}=="pci", 
KERNELS=="{Domain:Bus:Device.Function}", NAME="{name: i.e. eno1 or eth0}" 

[ฉันเรียกสิ่งนี้ว่าวิธีแก้ปัญหาให้เราไม่สนใจปัญหาและทำให้สวยดูดี]

  1. คุณสามารถเพิ่ม net.ifnames = 0 ให้กับตัวเลือกการบูตเคอร์เนลเพื่อปิดการใช้งานคุณสมบัติทั้งหมด

[นี่เป็นวิธีแก้ปัญหาที่พังทลาย - เลี้ยว - ออก - และ - ร้องไห้ - อยู่คนเดียว "(ไม่ใช่วิธีแก้ปัญหา) ...

  1. และถ้าคุณบังเอิญเรียกใช้ VM ... VMWare / VirtualBox ฯลฯ ... ให้เปิดไฟล์การกำหนดค่าและแก้ไข "pciSlotNumber" ให้ต่ำกว่า X

[แต่นี่เป็นวิธีการแฮ็กชั่วคราวจนกว่าฉันจะได้รับซอฟต์แวร์อัปเดต]

  1. ซื้อคอมพิวเตอร์เครื่องใหม่ [และในที่สุดก็คือวิธีแก้ปัญหาที่คุณไม่สามารถเอาชนะได้เข้าร่วมได้]

3
ฉันเชื่อว่าเลขที่ดูแปลก ๆ ตรงกับอุปกรณ์เน็ตใน VMWare BIOS ดูเหมือนว่า OP กำลังใช้ CentOS 7 VM's

ไม่เหมือนกันเสมอ - ฉันมี eno16780032 ช่างเป็นความเจ็บปวดในตูด
Dan Pritts

1
คำตอบนี้เหนื่อยมากจนในการตอบคำถามของ OP คุณสามารถสร้างการอ้างอิงที่กระชับเกี่ยวกับวิธีการระบุอุปกรณ์ตามดัชนีของพวกเขา
Konrads

ชื่อประเภทเหล่านี้สำหรับ VMware เห็นได้ชัดว่าไม่ใช่เรื่องแปลก eno16777732ตัวอย่างเช่นผมอุปกรณ์ของฉันมีการตั้งชื่อ
Stefan Lasiewski

ปัญหาที่ฉันพบเกี่ยวกับ VMWare ดูเหมือนจะไม่มีทางที่จะได้ acpi_index ของการ์ดเครือข่ายที่กำหนดจาก VSphere API
Danny

14

เพียงเพิ่มรายละเอียดคำตอบก่อนหน้า:

อักขระนำหน้าสองตัวขึ้นอยู่กับประเภทของอินเตอร์เฟส:

*   en -- ethernet
*   sl -- serial line IP (slip)
*   wl -- wlan
*   ww -- wwan
*   ib -- Infiniband

ประเภทของชื่อ:

*   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>][..]1[i<interface>]
                                          -- USB port number chain

ที่มา: http://ask.xmodulo.com/change-network-interface-name-centos7.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.