diff options
Diffstat (limited to 'data')
| -rw-r--r-- | data/NetworkManager-config-initrd.service.in | 27 | ||||
| -rw-r--r-- | data/NetworkManager-initrd.service.in | 32 | ||||
| -rw-r--r-- | data/NetworkManager-wait-online-initrd.service.in | 26 | ||||
| -rw-r--r-- | data/meson.build | 3 | ||||
| -rw-r--r-- | data/nm-priv-helper.service.in | 4 |
5 files changed, 90 insertions, 2 deletions
diff --git a/data/NetworkManager-config-initrd.service.in b/data/NetworkManager-config-initrd.service.in new file mode 100644 index 00000000..4baf0f64 --- /dev/null +++ b/data/NetworkManager-config-initrd.service.in @@ -0,0 +1,27 @@ +[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 diff --git a/data/NetworkManager-initrd.service.in b/data/NetworkManager-initrd.service.in new file mode 100644 index 00000000..aef73a57 --- /dev/null +++ b/data/NetworkManager-initrd.service.in @@ -0,0 +1,32 @@ +[Unit] +Description=NetworkManager (initrd) +DefaultDependencies=no +Wants=systemd-udev-trigger.service network.target +After=systemd-udev-trigger.service network-pre.target dbus.service NetworkManager-config-initrd.service +Before=network.target +BindsTo=dbus.service +ConditionPathExists=/etc/initrd-release +ConditionPathExists=/run/NetworkManager/initrd/neednet +ConditionPathExistsGlob=|/usr/lib/NetworkManager/system-connections/* +ConditionPathExistsGlob=|/run/NetworkManager/system-connections/* +ConditionPathExistsGlob=|/etc/NetworkManager/system-connections/* + +[Service] +Type=dbus +BusName=org.freedesktop.NetworkManager +ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0 +ExecStart=@sbindir@/NetworkManager +# NM doesn't want systemd to kill its children for it +KillMode=process +Environment=NM_CONFIG_ENABLE_TAG=initrd +Restart=on-failure +ProtectSystem=true +ProtectHome=read-only + +[Install] +WantedBy=initrd.target +# We want to enable NetworkManager-wait-online-initrd.service whenever this +# service is enabled. NetworkManager-wait-online-initrd.service has +# WantedBy=network-online.target, so enabling it only has an effect if +# network-online.target itself is enabled or pulled in by some other unit. +Also=NetworkManager-config-initrd.service NetworkManager-wait-online-initrd.service diff --git a/data/NetworkManager-wait-online-initrd.service.in b/data/NetworkManager-wait-online-initrd.service.in new file mode 100644 index 00000000..da4a2522 --- /dev/null +++ b/data/NetworkManager-wait-online-initrd.service.in @@ -0,0 +1,26 @@ +[Unit] +Description=NetworkManager Wait Online (initrd) +DefaultDependencies=no +Requires=NetworkManager-initrd.service +After=NetworkManager-initrd.service +Before=network-online.target +ConditionPathExists=/etc/initrd-release +ConditionPathExists=/run/NetworkManager/initrd/neednet + +[Service] +# `nm-online -s` waits until the point when NetworkManager logs +# "startup complete". That is when startup actions are settled and +# devices and profiles reached a conclusive activated or deactivated +# state. It depends on which profiles are configured to autoconnect and +# also depends on profile settings like ipv4.may-fail/ipv6.may-fail, +# which affect when a profile is considered fully activated. +# Check NetworkManager logs to find out why wait-online takes a certain +# time. + +Type=oneshot +ExecStart=@bindir@/nm-online -s -q +RemainAfterExit=yes +Environment=NM_ONLINE_TIMEOUT=3600 + +[Install] +WantedBy=initrd.target network-online.target diff --git a/data/meson.build b/data/meson.build index facdab8d..b77bf434 100644 --- a/data/meson.build +++ b/data/meson.build @@ -13,6 +13,9 @@ if install_systemdunitdir 'NetworkManager.service', 'nm-priv-helper.service', 'NetworkManager-wait-online.service', + 'NetworkManager-config-initrd.service', + 'NetworkManager-initrd.service', + 'NetworkManager-wait-online-initrd.service', ] foreach service: services diff --git a/data/nm-priv-helper.service.in b/data/nm-priv-helper.service.in index 7b083bbb..d4ff25d9 100644 --- a/data/nm-priv-helper.service.in +++ b/data/nm-priv-helper.service.in @@ -2,8 +2,8 @@ Description=NetworkManager Privileged Helper # -# nm-priv-helper exists for privilege separation. It allows to run -# NetworkManager without certain capabilities, and ask nm-priv-helper +# nm-priv-helper exists for privilege separation. It allows NetworkManager +# to run without certain capabilities, and ask nm-priv-helper # for special operations where more privileges are required. # |