From a4a49724d6f898fd5e76bd6de49d36f7ed8d237e Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Thu, 18 Oct 2018 16:44:05 -0400 Subject: [PATCH] ostree-prepare-root.service: Run earlier in initrd Previously, we were preparing the root very late in the boot process; right before we switch root. The issue with that is that most services in the initrd that run `After=initrd-root-fs.target` expect that `/sysroot` already points to the rootfs we'll be pivoting to. Running this late violates that assumption. This patch fixes this by making `ostree-prepare-root.service` instead run right after `sysroot.mount` (the physical sysroot mounted by systemd) but still before `initrd-root-fs.target` (which is the target signalling that `/sysroot` is now valid and ready). This should make it easier to integrate OSTree with other initrd services such as Ignition. Related: https://github.com/dustymabe/ignition-dracut/issues/20 Closes: #1759 Approved by: cgwalters --- src/boot/dracut/module-setup.sh | 4 ++-- src/boot/ostree-prepare-root.service | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/boot/dracut/module-setup.sh b/src/boot/dracut/module-setup.sh index 70364c4b..4d12fae6 100755 --- a/src/boot/dracut/module-setup.sh +++ b/src/boot/dracut/module-setup.sh @@ -36,7 +36,7 @@ depends() { install() { dracut_install /usr/lib/ostree/ostree-prepare-root inst_simple "${systemdsystemunitdir}/ostree-prepare-root.service" - mkdir -p "${initdir}${systemdsystemconfdir}/initrd-switch-root.target.wants" + mkdir -p "${initdir}${systemdsystemconfdir}/initrd-root-fs.target.wants" ln_r "${systemdsystemunitdir}/ostree-prepare-root.service" \ - "${systemdsystemconfdir}/initrd-switch-root.target.wants/ostree-prepare-root.service" + "${systemdsystemconfdir}/initrd-root-fs.target.wants/ostree-prepare-root.service" } diff --git a/src/boot/ostree-prepare-root.service b/src/boot/ostree-prepare-root.service index 455afc3e..63357581 100644 --- a/src/boot/ostree-prepare-root.service +++ b/src/boot/ostree-prepare-root.service @@ -22,9 +22,8 @@ DefaultDependencies=no ConditionKernelCommandLine=ostree ConditionPathExists=/etc/initrd-release OnFailure=emergency.target -After=initrd-switch-root.target -Before=initrd-switch-root.service -Before=plymouth-switch-root.service +After=sysroot.mount +Before=initrd-root-fs.target [Service] Type=oneshot