.. _upgrading-to-debian-9-and-above:

================================
Upgrading to Debian 9 and above
================================

.. note::
  This document has been largely superceded by
  :ref:`upgrading_from_debian_8_to_debian_10` and you may want to consult that
  instead.

Predictable interface names
---------------------------

After performing a distribution upgrade from a release below Debian 9
you may notice that the node's interface names are not the same. This
is a result of version 197 of udev which enables persistent name
generation by default. The interface names are derived from their
hardware bus. For example, "enp0s1" could be the name of an ethernet
interface which was previously named "eth0".

To mitigate this, you can force the sytem to continue using the existing "ethX"
style interface names by adding ``net.ifnames=0`` to the
``GRUB_CMDLINE_LINUX_DEFAULT`` section in ``/etc/default/grub``. For example this may look like

  GRUB_CMDLINE_LINUX_DEFAULT="mitigations=off net.ifnames=0"

As a result of the interface naming changes there are a few things to keep in
mind when upgrading a node to Debian 9 and above:

- You should have local access (via troubleshooting IP or console) to the node.
  Otherwise the node could be orphaned. The troubleshooting IP may not be
  configured if the network interfaces names change due to a change to
  predictable interface naming or network driver changes.
- You may need to update interface names on your management server.
  Consider taking note of the current interface names and MAC addresses
  before upgrading. You can compare your MAC addresses against the new
  interface names to easily find the new name for each interface.

If switching to predictable interface names, and if you have previously set up
the legacy persistent interface naming by creating the udev rule
/lib/udev/rules.d/75-persistent-net-generator.rules, this rule should be removed
as it induces a race condition and is not preferred over the new naming scheme.
On Debian 9 the rule is deprecated and future releases will not support the
rule.

For more information read:

- https://wiki.debian.org/NetworkInterfaceNames#THE_.22PERSISTENT_NAMES.22_SCHEME
- https://freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
