[Libguestfs] [v2v PATCH 4/4] convert_linux: install the QEMU guest agent with a firstboot script
Laszlo Ersek
lersek at redhat.com
Thu Jun 9 13:10:28 UTC 2022
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_NetworkManager_to_systemd-networkd
- 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
More information about the Libguestfs
mailing list