You are not logged in.
I'm reinstalling another Arch side by side with my existing install, I am going to manually migrate my apps and settings one by one for only the stuff I am using currently....
Running the install on KVM is very convenient since I don't have to reboot etc. and can work on it whenever I have a break from regular work.
This install is on a completely separate disk that has a / and /boot (+EFI) partition.
So far its been going OK - I am able to get my wlan connection load when booting natively, and the KVM virtual ethernet card when booted in a VM.
However I run into the "systemd network wait online" service bootup delay for 1.5 minutes on the VM since there is no wlan0 adapter.
I am using wpa_supplicant and systemd-networkd with dnsmasq
Here are my network files:
$ cat 25-wireless.network
[Match]
Type=wlan
[Network]
DHCP=ipv4
IgnoreCarrierLoss=3s
[Link]
RequiredForOnline=yes
$ cat 30-wired.network
[Match]
Type=ether
[Network]
DHCP=ipv4
Here is the service file
$ cat /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Wait for Network to be Configured
Documentation=man:systemd-networkd-wait-online.service(8)
ConditionCapability=CAP_NET_ADMIN
DefaultDependencies=no
Conflicts=shutdown.target
BindsTo=systemd-networkd.service
After=systemd-networkd.service
Before=network-online.target shutdown.target
[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --interface=any --timeout=5
RemainAfterExit=yes
[Install]
WantedBy=network-online.target
Adding the options "--interface=any" and "--timeout=5" has no effect on the behaviour.
Whats the best way to avoid the delay or at least reduce it to 10 seconds?
Thanks in advance
Last edited by rep_movsd (2024-05-05 06:34:26)
Offline
You shouldn't edit directly the .service file that exists in the package, it will overwritten on the next update.
You need to make a drop-in file as the Wiki says:
sudo EDITOR=micro systemctl edit systemd-networkd-wait-online --drop-in=wait-for-only-one-interface.conf
and add lines:
[Service]
ExecStart=
ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --any
Last edited by Nebulosa (2024-04-26 06:44:01)
Offline
I found a clean solution:
I made a simple script that checks if the system is not under a vm - it dies nothing but invert the result of systemd-detect-virt
$ cat /usr/bin/check_no_vm.sh
#!/bin/bash
if systemd-detect-virt; then
exit 1
else
exit 0
fi
and made the wpa_supplicant service conditional on the script
$ cat /etc/systemd/system/wpa_supplicant@.service
[Unit]
Description=WPA supplicant daemon (interface-specific version)
# ConditionPathExists=/sys/class/net/%i
Requires=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
Before=network.target
Wants=network.target
# NetworkManager users will probably want the dbus version instead.
[Service]
Type=simple
ExecStartPre=/bin/check_no_vm.sh
ExecStart=/usr/bin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -i%I
[Install]
WantedBy=multi-user.target
Offline