Frage Warum heißt mein eth0 eno16777736?


Ich habe gesehen http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/, die das Grundprinzip für konsistente / vorhersagbare Gerätenamen beschreibt, und dann die Regeln, 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

Also sagen wir, ich habe ein Gerät eno16777736: Warum heißt es das? Es ist eine Ethernet-Karte, ich habe das verstanden. Aber wie kann ich selbst in den Namen dieser Schnittstelle zurückkehren?

Ich habe es untersucht /sys/class/net/eno16777736, und sah:

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

Ich bin mir nicht sicher, wie ich das interpretieren soll oder ob ich diese Informationen verwenden kann eno16777736.

Aktualisieren

Also die 16777736 ist das Gerät acpi_index. Pro 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

Weiter, um die Ausgabe von abzustimmen ifconfig oder ip link und deine Geräte in 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 die "Geräteunterbrechung 19". Und von lspci -v, die "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 manchmal VMWare bootet VMs, die bekommen ens33 als der Name der Schnittstelle. Also, es ist unklar, warum es zu anderen Zeiten eno16777736 wählt. Aber der 16777736 kommt von der acpi_indexund der 33 kommt vom PCI-Steckplatz.


27
2017-10-13 14:13


Ursprung


Sieht so aus, als ob Red Hat seine Seite in RHEL7.3 repariert hat: redhat.com/de/about/blog/... - Stefan Lasiewski


Antworten:


en für Ethernet

o für an Bord

16777736 ist der Index des Geräts, wie er von der Firmware (BIOS / EFI) bereitgestellt wird. Es wäre logisch gewesen, den Index bei zu starten 1. Entweder das, oder Sie haben entweder vernünftige Firmware und über 16 Millionen Onboard-Geräte! Aber es ist wahrscheinlicher, dass das Problem angesprochen (aber nicht beantwortet) wird VMware-Community - Es scheint, dass die Zahl von einem möglichen negativen Überlauf auf kommt acpi_index.

Sie können ähnliche Informationen von sehen udev für Ihr System mit:

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

30
2017-10-13 14:31



Haha interessant. Also mein BIOS ist VMWare. Was komisch ist, ist, dass VMWare manchmal eno16777736 und manchmal ens33 verwendet. Manchmal ist es "an Bord" und manchmal "heiß verstopft"? Seltsam. 16777736 ist sehr nah an 4096 ^ 2 - Dmitry Minkovsky
Oder, uh, 2 ^ 24. Vielleicht beginnt es von dort ... - Dmitry Minkovsky
AHH, also ist es der "acpi_index". Vielen Dank. Ich wollte diese Nummer irgendwo in einer Ausgabe sehen! Es ist eine Schande, dass das OP auf diesem Post den von ihm ausgegebenen Befehl nicht anzeigt, aber ich bin mir sicher, dass ich dafür Google verwenden kann. Vielen Dank - Dmitry Minkovsky


Verwenden von VMware?

Das Unix Stackexchange Seite hatte eine Frage und Antwort darüber. Es scheint, dass Informationen über die NIC vom BIOS bereitgestellt werden.

Wenn Sie es ändern möchten eth0 (oder ein anderer Name) Sie können udev dazu verwenden. Hier ist ein praktischer Leitfaden dafür.


9
2017-10-13 14:22



Ja, VMWare. Und danke, ich werde deine Links überprüfen! Ich muss es nicht auf eth0 ändern, so sehr ich will, dass dieses System tatsächlich für mich vorhersehbar ist: D. Ich hatte ens33Zum Beispiel mit VMWare. Ich möchte wirklich wissen, wie es diese Werte auswählt und wie ich mich selbst darauf zurückbesinnen kann. - Dmitry Minkovsky