apt-daily-upgrade.service uses `apt-helper wait-online` as an ExecStartPre
step. On multi-NIC systems with systemd-networkd this helper directly calls
systemd-networkd-wait-online in strict mode, waiting for all managed links
to become online.
On boards with multiple Ethernet ports where some interfaces are commonly
unplugged, this results in repeated timeouts and causes
apt-daily-upgrade / unattended-upgrades to abort, even when at least one
interface is already fully routable.
Replace the ExecStartPre step with a direct invocation of
systemd-networkd-wait-online using `--any`, allowing the service to proceed
as soon as one interface is online.
This preserves the intent of waiting for network availability while making
the behavior robust on multi-NIC and router-style systems.
Multi-port boards (e.g. NanoPi R6S) frequently have unused interfaces with
no-carrier. With the default systemd-networkd-wait-online behavior this can
result in "Online state: partial" and a timeout while waiting for all managed
links to become online.
That failure breaks units that depend on network-online.target such as
apt-daily-upgrade / unattended-upgrades.
Install a systemd drop-in overriding ExecStart to use:
systemd-networkd-wait-online --any --timeout=20
This keeps the intended "wait for networking" semantics while preventing
unplugged/unused ports from blocking boot and timers.
- only affects systemd-networkd-using builds (MINIMAL images?)
- does NOT affect NetworkManager
- this allows network administrators to give out IPv6 addresses over DHCPv6 based on the MAC address (which should be stable) instead of systemd's own notion of it's "DUID", which is based on the machine-id and changes on every redeployment
Establish some consistency with extension logging. Some extensions use another format:
display_alert "message" "${EXTENSION}" "info"
These were *not* adapted to this new schema.
- Use resolved no matter what manages the network (networkd or NetworkManager)
- Use resolved.conf.d/ directory to set DNS as recommended by resolved itself
- In armbian-firstrun, remove config specific to mvebu64|mt7623 since this is now done by default
This variable was originally introduces for the board "Espressobin" (mvebu64): 38db0b55f9
Use a hook in the mvebu64 and mt7623 family config to set ignored devices for NetworkManager instead.
- Rename extensions with "net-*" prefix
- Put the extensions into their own folder
- Split off time sync packages into their own extensions to be able to be used separately
- Put their config files into directories instead of using inline `cat <<- EOF >`
- Move some other NetworkManager related stuff into the extension
- Remove unneeded steps
- Install iproute2 by default on all images (for the `ip` command)