
Decouple from a specific initrd generator (dracut) the systemd services that provide networking in the initrd using NM, thus allowing other systemd-based initrd generators to take advantage of it. These new services are: - `NetworkManager-config-initrd.service`: it starts very early at boot, parses the kernel command line using `nm-initrd-generator` and sets the `/run/NetworkManager/initrd/neednet` flag to activate the other initrd services, and also sets the hostname if needed. - `NetworkManager-initrd.service`: it basically does the same job as the `NetworkManager.service`, but in the initrd. - `NetworkManager-wait-online-initrd.service`: ordered before `network-online.target`, it will allow other services that require networking to delay their start until NM has finished.
28 lines
881 B
SYSTEMD
28 lines
881 B
SYSTEMD
[Unit]
|
|
Description=NetworkManager Configuration (initrd)
|
|
DefaultDependencies=no
|
|
Wants=systemd-journald.socket
|
|
After=systemd-journald.socket
|
|
Before=systemd-udevd.service systemd-udev-trigger.service
|
|
ConditionPathExists=/etc/initrd-release
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStartPre=/bin/sh -c "rm -f /run/NetworkManager/system-connections/*"
|
|
ExecStart=/bin/sh -c "@libexecdir@/nm-initrd-generator -- $(cat /proc/cmdline)"
|
|
ExecStartPost=/bin/sh -c ' \
|
|
for i in /{usr/lib,run,etc}/NetworkManager/system-connections/*; do \
|
|
[ -f "$i" ] || continue; \
|
|
mkdir -p /run/NetworkManager/initrd; \
|
|
: > /run/NetworkManager/initrd/neednet; \
|
|
break; \
|
|
done; \
|
|
if [ -s /run/NetworkManager/initrd/hostname ]; then \
|
|
cat /run/NetworkManager/initrd/hostname > /proc/sys/kernel/hostname; \
|
|
fi \
|
|
'
|
|
RemainAfterExit=yes
|
|
|
|
[Install]
|
|
WantedBy=initrd.target
|