On 06/07/22 14:59, Richard W.M. Jones wrote:
virt-p2v uses:
nm-online -t 30
Apparently systemd-networkd (which I've never knowingly used) has
another command:
/usr/lib/systemd/systemd-networkd-wait-online
which ought to do the same thing. (It defaults to 120 second timeout.)
Can we not do something like:
nm-online -t 30 ||:
/usr/lib/systemd/systemd-networkd-wait-online ||:
as a best effort? Seems a lot better idea than sleeping.
After some investigation:
- NetworkManager and systemd-networkd-wait-online seem mutually
exclusive, and switching from the former to the latter (which is
obviously only possible on a systemd-based system) takes (mostly) one
"systemctl disable" and another "systemctl enable" command:
https://fedoraproject.org/wiki/Cloud/Network-Requirements#Switching_from_...
- When one of { NetworkManager, systemd-networkd-wait-online } is
*disabled* (not running), and we invoke the "wait online" utility for
that (disabled) service, the utility will wait (uselessly) for the
timeout, and then report failure / timeout. I've tested this with
"systemd-networkd-wait-online" on my F35 workstation (where
NetworkManager is enabled -- the default), and with "nm-online" in a
RHEL9 guest, where I could disable NetworkManager without risks.
- This useless waiting (for NetworkManager that's not running) can be
disabled with the "-x" switch for nm-online, but I found no
corresponding switch for "systemd-networkd-wait-online". What works is
"systemctl is-active systemd-networkd", which is reasonable, because
"systemd-networkd" already depends on systemd.
Additionally the default timeout for nm-online seems to be 30 seconds
already.
So ultimately I believe we should do:
nm-online -x -q ||
(
systemctl -q is-active systemd-networkd &&
/usr/lib/systemd/systemd-networkd-wait-online -q --timeout=30
)
If the final exit status is nonzero, I think that's not a problem for
the firstboot script.
The whole command seems to make sense also when nm-online, systemctl, or
both, are missing (a missing command results in exit status 127).
Thanks
Laszlo