[OE-core] [OE-Core][PATCH v6 6/6] image: call systemctl preset-all for images

Alex Kiernan alex.kiernan at gmail.com
Thu May 2 21:09:44 UTC 2019


From: Alex Kiernan <alex.kiernan at hivehome.com>

Rather than rely on systemd's default invocation of preset-all at
runtime, we pre-populate the symlink tree as part of of the image. This
is done late so any overrides of presets during rootfs construction
should already have happened.

Whilst we don't strictly need this for the read-write root case, it
avoids boot time churn; for read-only root we have to do it here.

Signed-off-by: Alex Kiernan <alex.kiernan at gmail.com>
---

Changes in v6:
- moved systemctl preset-all to IMAGE_PREPROCESS so it runs after ROOTFS,
  run for all images, not just read-only

Changes in v5: None

 meta/classes/image.bbclass | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 276d0d31f4a5..a23403c0827a 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -664,6 +664,13 @@ reproducible_final_image_task () {
         find  ${IMAGE_ROOTFS} -exec touch -h  --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS {} \;
     fi
 }
-IMAGE_PREPROCESS_COMMAND_append = " reproducible_final_image_task; "
+
+IMAGE_EXTRADEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-systemctl-native', '', d)}"
+
+systemd_preset_all () {
+	systemctl --root="${IMAGE_ROOTFS}" --preset-mode=enable-only preset-all
+}
+
+IMAGE_PREPROCESS_COMMAND_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd_preset_all;', '', d)} reproducible_final_image_task; "
 
 CVE_PRODUCT = ""
-- 
2.17.1



More information about the Openembedded-core mailing list