it-swarm.com.de

Warum heißt mein eth0 eno16777736?

Ich habe http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ gesehen, das die Gründe für eine konsistente/vorhersehbare Gerätename beschreibt, und dann die Regeln von welche 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

Nehmen wir also an, ich habe ein Gerät eno16777736: Warum heißt es so? Es ist eine Ethernet-Karte, das habe ich verstanden. Aber wie kann ich selbst in den Rest des Namens dieser Schnittstelle zurückkehren?

Ich untersuchte /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, um zu eno16777736 Zu gelangen.

Update

Der 16777736 Ist also der acpi_index Des Geräts. Per https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-pci :

What:       /sys/bus/pci/devices/.../acpi_index
Date:       July 2010
Contact:    Narendra K <[email protected]>, [email protected]
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:

[email protected] /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

Um die Ausgabe von ifconfig oder ip link Und Ihren Geräten in lspci abzustimmen:

$ 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 den "Geräte-Interrupt 19". Und von lspci -v Mit "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

Hier sehen Sie auch "Phyiscal Slot 33", und tatsächlich bootet VMWare manchmal VMs, die ens33 Als Schnittstellennamen erhalten. Es ist also unklar, warum es zu anderen Zeiten eno16777736 wählt. Der 16777736 stammt jedoch aus dem acpi_index Und der 33 aus dem PCI-Steckplatz.

27

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 1 Zu starten. Entweder das, oder Sie haben eine vernünftige Firmware und über 16 Millionen Onboard-Geräte! Wahrscheinlicher ist jedoch, dass das Problem bei VMware Community (aber nicht beantwortet) angezeigt wird. == - Es scheint, dass die Zahl von einem möglichen negativen Überlauf bei acpi_index Stammt.

Sie können ähnliche Informationen aus udev für Ihr System anzeigen mit:

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

Verwenden Sie VMware?

Die nix Stackexchange-Site hatte eine Frage und Antwort dazu. Es scheint, dass Informationen über NIC vom BIOS bereitgestellt werden.

Wenn Sie es in eth0 (Oder einen anderen Namen) ändern möchten, können Sie dazu udev verwenden. Hier ist eine praktische Anleitung dafür.

9
Gene