[arch-dev-public] network interface naming with systemd 197

Dave Reisner d at falconindy.com
Mon Jan 7 21:36:14 EST 2013


If you don't care about interface renaming with systemd 197 or you
understand the change, you can stop reading here. I suggest everyone
read the first point, though.
----------------------

Since 197 was just tagged and there still seems to be some confusion,
here's an FAQ:

*** What happens after installing systemd 197?

For existing installs: Nothing happens, and this is strictly opt-in.
A post_upgrade() message will mention the feature and add a dummy file
called /etc/udev/rules.d/80-net-name-slot.rules to mask the new rule
which performs the renaming. If you wish to opt-in, remove this dummy
file. Next reboot, the rule will take effect.

For new installs: You are opted-in to this change. The post_install()
will do nothing to mask the rule. If you wish to opt out, you can do 1
of 2 things:
1) mask the rule: ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules
2) provide your own udev rule that applies a NAME to the interface. As
   long as this rule is ordered lexically before 80-net-name-slot.rules,
   then the upstream rule will have no effect. For example, providing a
   file called 70-net-naming.rules will trump 80-net-name-slot.rules.


*** What will the interfaces be renamed to if I opt-in?

Run this as non-root:

  for i in /sys/class/net/*; do
    echo "==$i"
    udevadm test-builtin net_id "$i";
    echo
  done 2>/dev/null

Not all interfaces will have output for this command. No output means no
renaming.

For those that do, the below properties are capable of renaming the
device, with highest priority first.

- ID_NET_NAME_ONBOARD
- ID_NET_NAME_SLOT
- ID_NET_NAME_PATH

So for an interface with both ID_NET_NAME_ONBOARD and ID_NET_NAME_PATH,
the value of ID_NET_NAME_ONBOARD will be the new name of the interface.

If you see none of these properties for an interface, it will not be
renamed by /usr/lib/udev/rules.d/80-net-name-slot.rules.


*** How should I go about updating my network config?

I suggest figuring out what your device will be named in advance and
altering your config BEFORE rebooting. Consult the documentation for
your network provider on how to do this. If you don't want to do this,
read the next 2 questions.


*** I don't like this, or, I've never needed persistent names

You'll never be forced to use the new schema. Masking the rule as
explained above will always work, and you're still able to write a rule
of your own to provide names you're comfortable with if that's what
you're into.


*** Is there any way to alias the old kernel name to the new name?

No, the kernel does not support this.


*** Need more info?

Upstream wrote a wiki page with more detail. Some of this is redundant
with the above:

http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames

The careful reader might notice that names are path based. Yes, this
does mean that USB devices or PCI devices which are physically moved to
another port will suddenly change names. That's the trade-off for this
scheme.


*** STILL not satisfied?

Code is the ultimate documentation, and has some examples of how various
paths translate into the new naming scheme:

http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c


*** Why are you still reading this?

If you made it this far, you might be as crazy as I am, so here's Pinkie
Pie dressed as a chicken:

http://i.imgur.com/DDukE.png


Cheers,
Dave


More information about the arch-dev-public mailing list