Fedora 17 ifconfig eth0 returns an error message, why did linux change eth0 to em1?

Eric Leschinski asked:

I have a fresh install of Fedora 17 installed, 64 bit. Everything works flawlessly, It connects to the internet automatically when I plug in the internet cable.

So I’m kind of confused when I issue this command:

el@defiant ~ $ ifconfig eth0

And I get the error:

eth0: error fetching interface information: Device not found

Device not found? Here is ifconfig:

ifconfig

I get this:

em1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.102  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 fe80::ea40:f2ff:fee1:58c  prefixlen 64  scopeid 0x20<link>
    ether e8:40:f2:e1:05:8c  txqueuelen 1000  (Ethernet)
    RX packets 44753  bytes 51284267 (48.9 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 34222  bytes 4294174 (4.0 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    device interrupt 20  memory 0xf7d00000-f7d20000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 16436
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<host>
    loop  txqueuelen 0  (Local Loopback)
    RX packets 5152  bytes 1263744 (1.2 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 5152  bytes 1263744 (1.2 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

So, it appears that someone has changed the old eth0 to em1 since earlier versions of Fedora (Fedora 8 is the last I know which used eth0). If I do the command: ifconfig em1 then I get something similar to the old ifconfig eth0. But why the name change?

My question is why was eth0 changed to em1 and what the heck does em from em1 mean?

My answer:


It’s consistent network device naming.

Systems, particularly servers, with multiple network ports, name the ports ethX in a non-deterministic order, and are therefore not useful for system administrators.

System Administrators can then use BIOS-provided names, which are consistent and not arbitrarily named, for their network ports. This eliminates the confusion that non-deterministic naming brings, and eliminates the use of hard-coded MAC address based port renaming which a) is racy and error-prone, and b) introduces state into an otherwise stateless system.

This change affects most desktop, notebook, and server-class systems.

The em means that the interface is embedded onto the motherboard. Other names apply for add-on cards: p#p# names refer to PCI (and its modern derivatives) expansion cards, where the first number is the slot on the motherboard which they’re plugged into, the second number is the port on the card (a card may contain multiple ports) and the third number, if present, is a virtual function number.

If it really bothers you, you can rename the interface to anything you want.


View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.