Udev/Upgrade Guide

Article description::Udev is a central system component and may require extra care on upgrades.

Example interface IDs
The default naming precedence rules are these:


 * 1) Names incorporating Firmware/BIOS provided index numbers for on-board devices (, example: eno1)
 * 2) Names incorporating Firmware/BIOS provided PCI Express hotplug slot index numbers (, example: ens1)
 * 3) Names incorporating physical/geographical location of the connector of the hardware (, example: enp2s0)
 * 4) Names incorporating the interfaces's MAC address (, example: enx78e7d1ea46da)
 * 5) Classic, unpredictable kernel-native ethX naming (example: eth0)

(Rule 4 is disabled by default.) So, if output is like this:

The interface will be named eno1, because  takes precedence over.

Things to think of when upgrading

 * Renaming init scripts
 * Replacing init scripts in runlevels (via rc-update)
 * iptables configuration
 * vnstat configuration
 * samba configuration
 * samba configuration

A quick way to get a list of files that will need to be updated can be found using the following:

Fixing network interfaces
This section provides examples on how to fix network-interfaces if they do not work anymore (or before they stop working before the new udev package has been switched to). It is only applicable to simple setups, like one ethernet and one wifi interface. For more complicated setup (like more ethernet adapters) most users should already know what to do.

Renaming init scripts
If still running the old udev and are ready to enable the new one, then execute:

Take the ID_NET_NAME_PATH-item (here enp1s0f1) and execute

Do the same for any wifi-interfaces.

When already running the new udev and the network is down, execute:

Look which link points to a pci-device (here enp1s0f1) and execute:

When wifi-interfaces exist do not forget include these interfaces as well.

Replacing init scripts in runlevels (via rc-update)
If necessary do the same for any wifi-interfaces.

udev 171 to 204
The following special attention is required:


 * must be set in the kernel. To do this Linux kernel 2.6.32+ is needed.


 * If there is a line in /etc/fstab, it must have the devtmpfs filesystem type or it will conflict with the above options.


 * Remove udev-postmount from any runlevels, it is not necessary. Exception: Note that still has the udev-postmount init script in use with USE="rule-generator"

otherwise delete it together with as both are from the now deleted rule_generator that does not exist anymore.
 * When using, read Predictable Network Interface Names,


 * The new Predictable Network Interface Names will be used by default, unless the kernel commandline contains the  parameter. (If the method of masking out the  file was used in the past be aware it will not work in v209 and newer releases.)


 * When using Linux 3.8 or higher it should be possible to disable USE="firmware-loader" and let the kernel do the loading instead. However, USE="firmware-loader" can be used on newer kernels too.


 * is no longer necessary if the Predictable Network Interface Names are being used.


 * Any file that has not been personally created or edited in should be backed up and removed since it is likely a relic from old an udev installation.

For more details, read the full news article and the post install output of emerging udev.

udev 204 to 208
The following special attention is required:


 * Since this version, kernel with accept4 function support is mandatory. It is supported for, , , and  in 2.6.32.61. All others, like ARM, will need a newer kernel like 3.0 for the function.
 * It is no longer the job of the /dev manager, like udev, to create /dev nodes for static kernel modules such as /dev/fuse or /dev/snd/seq. Instead they are now created by the kmod-static-nodes init script which is part of since version 15. Make sure the init script has been added to the "sysinit" runlevel.

udev 208 to 216
The following special attention is required:


 * Since this version, kernel settings  and   are mandatory. Kernel setting   is recommended for //, for example, keyboard rules.
 * File was replaced with . If currently using an empty (or single-comment)  to disable predictable network interface names, the  should now be used. For example:

This keeps the override both pre- and post-upgrade; then run:

once the upgrade has been made. The hardlink can be made, in order to protect against not noticing the upgrade in a busy or non-professional situation.
 * However, is only a trigger for the actual configuration file 99-default.link at  which can be overrided at
 * The most reliable way of disabling the new network interface scheme is still the kernel bootline parameter:

udev 216 to 217
The following special attention is required:


 * Since this version, kernel setting  should be set to , because the userspace firmware loader has been removed. Upgrade the kernel at least to version 3.7 for the kernel firmware loader.
 * If  cannot be disabled, try to disable , it will select   automatically in Linux kernel 3.18.x.