diff --git a/dracut/30ignition/ignition-files.service b/dracut/30ignition/ignition-files.service index 7d4c133..38acb00 100644 --- a/dracut/30ignition/ignition-files.service +++ b/dracut/30ignition/ignition-files.service @@ -2,29 +2,13 @@ Description=Ignition (files) DefaultDependencies=false -# Ignition files stage starts after /sysroot is mounted. -Requires=initrd-root-fs.target -After=initrd-root-fs.target - -# Require and run after ignition-setup has run because ignition-setup -# may copy in new/different ignition configs for us to consume. -Requires=ignition-setup.service -After=ignition-setup.service - -# Make sure root filesystem is mounted read-write -Requires=ignition-remount-sysroot.service -After=ignition-remount-sysroot.service +# We need all the filesystems already mounted. +Requires=ignition-mount.service +After=ignition-mount.service # Run before initrd-parse-etc so that we can drop files it then picks up. Before=initrd-parse-etc.service -# Network may be required to fetch userdata content. -After=network.target - -# This is guaranteed through After=initrd-root-fs.target but just to -# be explicit we'll add an After=ignition-disks.service here. -After=ignition-disks.service - [Service] Type=oneshot EnvironmentFile=/run/ignition.env diff --git a/dracut/30ignition/ignition-generator b/dracut/30ignition/ignition-generator index 142acfd..0d7e395 100755 --- a/dracut/30ignition/ignition-generator +++ b/dracut/30ignition/ignition-generator @@ -40,8 +40,9 @@ add_requires() { # boot (https://github.com/coreos/fedora-coreos-config/issues/43) if $(cmdline_bool 'ignition.firstboot' 0); then add_requires ignition-disks.service + add_requires ignition-mount.service add_requires ignition-files.service - add_requires ignition-ask-var-mount.service + add_requires ignition-umount.service fi # Write ignition-setup.service customized for PXE/ISO or regular boot diff --git a/dracut/30ignition/ignition-mount.service b/dracut/30ignition/ignition-mount.service new file mode 100644 index 0000000..396888f --- /dev/null +++ b/dracut/30ignition/ignition-mount.service @@ -0,0 +1,16 @@ +[Unit] +Description=Ignition (mount) +DefaultDependencies=false + +# Make sure /sysroot is mounted first, since we're mounting under there +Requires=initrd-root-fs.target +After=initrd-root-fs.target + +# Make sure root filesystem is remounted read-write if needed +Requires=ignition-remount-sysroot.service +After=ignition-remount-sysroot.service + +[Service] +Type=oneshot +EnvironmentFile=/run/ignition.env +ExecStart=/usr/bin/ignition --root=/sysroot --platform=${PLATFORM_ID} --stage=mount --log-to-stdout diff --git a/dracut/30ignition/ignition-umount.service b/dracut/30ignition/ignition-umount.service new file mode 100644 index 0000000..d77c009 --- /dev/null +++ b/dracut/30ignition/ignition-umount.service @@ -0,0 +1,12 @@ +[Unit] +Description=Ignition (umount) +DefaultDependencies=false + +# Only unmount after we're done writing to the filesystems +Requires=ignition-files.service +After=ignition-files.service + +[Service] +Type=oneshot +EnvironmentFile=/run/ignition.env +ExecStart=/usr/bin/ignition --root=/sysroot --platform=${PLATFORM_ID} --stage=umount --log-to-stdout