I'm shocked, shocked!

Tom H tomh0665 at gmail.com
Sun May 31 13:23:15 UTC 2015


On Sat, May 30, 2015 at 1:37 PM, Tom Horsley <horsley1953 at gmail.com> wrote:
>
> To see that the "predictable" network name for my
> one and only ethernet port has changed once again.
> On fedora 22 eno1 is what used to be em1.

That's because you've moved from one "predictable" scheme to another...

em1 is a name assigned by biosdevname where "em" stands for "embedded"
(although I've seen an "ethernet on motherboard" explanation) and the
generic name is "em<port_number>". The other biosdevname option is
"p<slot_number>p<port_number> where the first "p" stands for "pci".

eno1 is a name assigned by udev where "en" stands for ethernet and "o"
for onboard. From "man systemd.link":

<begin>
NamePolicy=
An ordered, space-separated list of policies by which the interface
name should be set. "NamePolicy" may be disabled by specifying
"net.ifnames=0" on the kernel command line. Each of the policies may
fail, and the first successful one is used. The name is not set
directly, but is exported to udev as the property "ID_NET_NAME", which
is, by default, used by a udev rule to set "NAME". If the name has
already been set by userspace, no renaming is performed. The available
policies are:

"kernel"
If the kernel claims that the name it has set for a device is
predictable, then no renaming is performed.

"database"
The name is set based on entries in the udev's Hardware Database with
the key "ID_NET_NAME_FROM_DATABASE".

"onboard"
The name is set based on information given by the firmware for
on-board devices, as exported by the udev property
"ID_NET_NAME_ONBOARD".

"slot"
The name is set based on information given by the firmware for
hot-plug devices, as exported by the udev property "ID_NET_NAME_SLOT".

"path"
The name is set based on the device's physical location, as exported
by the udev property "ID_NET_NAME_PATH".

"mac"
The name is set based on the device's persistent MAC address, as
exported by the udev property "ID_NET_NAME_MAC".
</end>

AFAIR, there are more naming options, but these are the ones that I do remember:

If a card has an ID_NET_NAME_ONBOARD value, it'll be called "eno<index>".

If a card doesn't have an ID_NET_NAME_ONBOARD value but has an
ID_NET_NAME_SLOT value, it'll be called "ens<slot>".

If a card doesn't have an ID_NET_NAME_ONBOARD value or an
ID_NET_NAME_SLOT value but has an ID_NET_NAME_PATH value, it'll be
called "enp<port>s<slot>".

If a card doesn't have an ID_NET_NAME_ONBOARD value, an
ID_NET_NAME_SLOT value, or an ID_NET_NAME_PATH value, its
ID_NET_NAME_MAC value (its MAC address) will be used and it'll be
called "enx<mac_address>".

A wifi card's name starts with "wl".

You can disable the udev ifnames by:

1) Setting "net.ifnames=0" on the kernel cmdline

2) Overriding "/usr/lib/systemd/network/99-default.link"

# cp /usr/lib/systemd/network/99-default.link
/etc/systemd/network/99-default.link
# vi /etc/systemd/network/99-default.link
NamePolicy=kernel
MACAddressPolicy=persistent

3) Masking "/usr/lib/udev/rules.d/80-net-setup-link.rules"

# rm /etc/udev/rules.d/80-net-setup-link.rules (if it exists)
# ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

4) Overriding "/usr/lib/udev/rules.d/80-net-setup-link.rules" (and
"/etc/udev/rules.d/80-net-setup-link.rules", if it exists)

# vi /etc/udev/rules.d/<num-lessthan-80>-<blurb>.rules
[rules similar to the ones that were previously auto-generated as
70-persistent-net.rules]


More information about the users mailing list