Mengapa eth0 saya disebut eno16777736?

27

Saya telah melihat http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ , yang menjelaskan alasan penamaan perangkat yang konsisten / dapat diprediksi, dan kemudian aturan yang digunakan nama perangkat dihasilkan :

 * 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

Jadi katakanlah saya punya perangkat eno16777736: mengapa disebut demikian? Ini kartu ethernet, saya mengerti. Tetapi bagaimana saya bisa kembali ke sisa nama antarmuka ini sendiri?

Saya memeriksa /sys/class/net/eno16777736, dan melihat:

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

Tidak yakin bagaimana menafsirkan ini, atau apakah saya dapat menggunakan informasi ini untuk sampai ke eno16777736.

Memperbarui

Jadi 16777736ini perangkatnya acpi_index. 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.

Dan memang:

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

Selanjutnya, untuk merekonsiliasi output dari ifconfigatau ip linkdan perangkat Anda di 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 

Perhatikan "interupsi perangkat 19". Dan dari lspci -v, yang memiliki "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

Di sini Anda juga melihat "Slot Phyiscal 33", dan memang, kadang-kadang VMWare mem-boot VM yang mendapatkan ens33nama antarmuka. Jadi, tidak jelas mengapa kali lain memilih eno16777736. Tetapi 16777736 berasal dari acpi_index, dan 33 berasal dari slot PCI.

Dmitry Minkovsky
sumber
Sepertinya Red Hat memperbaiki posisi mereka di RHEL7.3: redhat.com/en/about/blog/…
Stefan Lasiewski

Jawaban:

30

en untuk Ethernet

o untuk onboard

16777736adalah indeks perangkat yang disediakan oleh firmware (BIOS / EFI). Akan logis untuk memulai indeks di 1. Entah itu, atau Anda memiliki firmware yang masuk akal dan lebih dari 16 juta perangkat terpasang! Tetapi lebih mungkin, Anda melihat masalah ini diangkat (tetapi tidak dijawab) di Komunitas VMware - tampaknya jumlahnya berasal dari kemungkinan luapan negatif acpi_index.

Anda dapat melihat info serupa dari udevsistem Anda dengan:

udevadm info --name=/dev/eno16777736 --attribute-walk
garethTheRed
sumber
Haha menarik. Jadi BIOS saya adalah VMWare. Yang aneh adalah bahwa kadang-kadang VMWare melakukan eno16777736 dan kadang-kadang EN33. Jadi kadang-kadang "di papan" dan kadang-kadang "panas terpasang?" Aneh. 16777736 sangat dekat dengan 4096 ^ 2
Dmitry Minkovsky
Atau, eh, 2 ^ 24. Jadi mungkin itu dimulai dari sana ...
Dmitry Minkovsky
2
AHH jadi itu "acpi_index". Terima kasih banyak. Saya benar-benar ingin melihat nomor itu di suatu tempat di beberapa output! Sayang sekali OP pada posting itu tidak menunjukkan perintah yang dikeluarkannya, tapi saya yakin saya bisa Google untuk itu. Terima kasih
Dmitry Minkovsky
9

Menggunakan VMware?

Situs Unix Stackexchange memiliki pertanyaan dan jawaban tentang ini. Tampaknya informasi tentang NIC disediakan oleh BIOS.

Jika Anda ingin mengubahnya ke eth0(atau nama lain), Anda dapat menggunakan udev untuk melakukannya. Berikut ini adalah panduan praktis untuk melakukannya.

Gene
sumber
Ya, VMWare. Dan terima kasih, saya akan memeriksa tautan Anda! Saya tidak perlu mengubahnya ke eth0 karena saya ingin sistem ini benar-benar dapat diprediksi untuk saya: D. Saya juga sudah ens33, misalnya, menggunakan VMWare. Benar-benar ingin tahu bagaimana ia mengambil nilai-nilai itu, dan bagaimana saya bisa kembali ke nilai itu sendiri.
Dmitry Minkovsky