else:
logging.debug('not removing non-existent %s', pathname)
+ def mask_udev_predictable_rules(self, rootdir):
+ """
+ This can be reset later but to get networking using immediately
+ on boot, the interface we're going to use must be kno
+ http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
+ """
+ self.message('Disabling systemd predictable interface names')
+ udev_path = os.path.join(
+ 'etc', 'udev', 'rules.d', '80-net-setup-link.rules')
+ self.runcmd(['chroot', rootdir, 'ln', '-s', '/dev/null', udev_path])
+
def setup_networking(self, rootdir):
self.message('Setting up networking')
ifc_file = os.path.join(rootdir, 'etc', 'network', 'interfaces')
eth.write('\n')
eth.write('auto eth0\n')
eth.write('iface eth0 inet dhcp\n')
+ # force predictable interface names
+ self.mask_udev_predictable_rules(rootdir)
def append_serial_console(self, rootdir):
if self.settings['serial-console']:
auto eth0
iface eth0 inet dhcp
+For systems running newer versions of systemd, the interface name needs
+to be set in advance of the first boot instead of being dependent on the
+boot itself. See the http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
+.b vmdebootstrap
+disables this behaviour by symlinking /dev/null to /etc/udev/rules.d/80-net-setup-link.rules
+
.SH BOOTLOADERS
Unless the \-\-no\-extlinux or \-\-grub options are specified, the
image will use