I have a udev rule to force the NIC name to eno1, which is not the driver's default (it is eno1np0). I did not regenerate the initramfs, so that rule did not propagate there.
What happens is:
- initramfs is executed. The NIC is renamed to eno1np0 (driver's default).
- systemd starts
- it runs the netplan generator
- the netplan generator sees its configuration for eno1, but does not match it to eno1np0.
- as a consequence, it does not generate the symlink (/run/systemd/generator/network-online.target.wants/systemd-networkd-wait-online.service)
- udev kicks in, renames the NIC to eno1, but it's too late.
That behaviour is caused by debian/patches/lp2060311/0010-wait-online-wait-for-existing-interfaces-only-and-do.patch. Removing that patch returns to the previous behaviour.
There are two potential workarounds:
- regenerate the initramfs, so that it knows about the new name for the interface and names it correctly before systemd starts.
- help netplan match the real NIC with its configuration, for example specifying the MAC address.
```
---
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: true
match:
macaddress: 98:03:9b:b0:a7:76
```
I think I understood this.
I have a udev rule to force the NIC name to eno1, which is not the driver's default (it is eno1np0). I did not regenerate the initramfs, so that rule did not propagate there.
What happens is: generator/ network- online. target. wants/systemd- networkd- wait-online. service)
- initramfs is executed. The NIC is renamed to eno1np0 (driver's default).
- systemd starts
- it runs the netplan generator
- the netplan generator sees its configuration for eno1, but does not match it to eno1np0.
- as a consequence, it does not generate the symlink (/run/systemd/
- udev kicks in, renames the NIC to eno1, but it's too late.
That behaviour is caused by debian/ patches/ lp2060311/ 0010-wait- online- wait-for- existing- interfaces- only-and- do.patch. Removing that patch returns to the previous behaviour.
There are two potential workarounds:
- regenerate the initramfs, so that it knows about the new name for the interface and names it correctly before systemd starts.
- help netplan match the real NIC with its configuration, for example specifying the MAC address.
```
---
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: true
match:
macaddress: 98:03:9b:b0:a7:76
```