]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
fix(network-manager): use /run/NetworkManager/initrd/neednet in initqueue
authorDusty Mabe <dusty@dustymabe.com>
Tue, 13 Apr 2021 15:45:35 +0000 (11:45 -0400)
committerHarald Hoyer <harald@hoyer.xyz>
Fri, 16 Apr 2021 09:12:49 +0000 (11:12 +0200)
We don't want to start NetworkManager if networking is not needed.
Right now nm-config.sh lays down /usr/lib/dracut/hooks/initqueue/finished/nm.sh
which will cause the initqueue to run. If nothing exists in
/usr/lib/dracut/hooks/initqueue/finished/ then it will short circuit and
the initqueue won't run anything. But what if something else needed
something to run in the initqueue? nm-run.sh would still get started,
even though /usr/lib/dracut/hooks/initqueue/finished/nm.sh didn't exist.
In this case let's just trigger off of /run/NetworkManager/initrd/neednet
like we are doing in the systemd unit (nm-run.service).

modules.d/35network-manager/nm-run.sh

index d48028df4a50e58a29b5a7689294f0be4b26a370..359bc9ee7d1c213c027bacba154339ca011acdd7 100755 (executable)
@@ -6,15 +6,19 @@ if [ -e /tmp/nm.done ]; then
     return
 fi
 
-[ -z "$DRACUT_SYSTEMD" ] \
-    && for i in /usr/lib/NetworkManager/system-connections/* \
-        /run/NetworkManager/system-connections/* \
-        /etc/NetworkManager/system-connections/* \
-        /etc/sysconfig/network-scripts/ifcfg-*; do
-        [ -f "$i" ] || continue
-        /usr/sbin/NetworkManager --configure-and-quit=initrd --no-daemon
-        break
-    done
+if [ -z "$DRACUT_SYSTEMD" ]; then
+    # Only start NM if networking is needed
+    if [ -e /run/NetworkManager/initrd/neednet ]; then
+        for i in /usr/lib/NetworkManager/system-connections/* \
+            /run/NetworkManager/system-connections/* \
+            /etc/NetworkManager/system-connections/* \
+            /etc/sysconfig/network-scripts/ifcfg-*; do
+            [ -f "$i" ] || continue
+            /usr/sbin/NetworkManager --configure-and-quit=initrd --no-daemon
+            break
+        done
+    fi
+fi
 
 if [ -s /run/NetworkManager/initrd/hostname ]; then
     cat /run/NetworkManager/initrd/hostname > /proc/sys/kernel/hostname