From a9b178501cf87720ea98b9db50265c95169dd6c6 Mon Sep 17 00:00:00 2001 From: Zygmunt Krynicki <zygmunt.krynicki@huawei.com> Date: Tue, 19 Oct 2021 21:01:18 +0000 Subject: [PATCH] rauc: ensure RAUC state directory exists RAUC uses a state file `status.raucs`. In the Oniro images this file is prescribed to be in `/run/mount/sysdata/common/`. Exploratory testing has found that RAUC cannot create the leading directory automatically and fails to handle an update transaction. Resolve this by adding a systemd configuration override file which creates the directory using ExecStartPre= Closes: https://git.ostc-eu.org/distro/oniro/-/issues/158 Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@huawei.com> --- .../recipes-core/rauc/files/rauc-state-dir.conf | 8 ++++++++ meta-oniro-core/recipes-core/rauc/rauc_%.bbappend | 14 ++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 meta-oniro-core/recipes-core/rauc/files/rauc-state-dir.conf diff --git a/meta-oniro-core/recipes-core/rauc/files/rauc-state-dir.conf b/meta-oniro-core/recipes-core/rauc/files/rauc-state-dir.conf new file mode 100644 index 00000000..06345150 --- /dev/null +++ b/meta-oniro-core/recipes-core/rauc/files/rauc-state-dir.conf @@ -0,0 +1,8 @@ +# SPDX-FileCopyrightText: Huawei Inc. +# +# SPDX-License-Identifier: Apache-2.0 + +# Create directory where RAUC stores the status file. This must be +# synchronized with the system.conf file installed into /etc/rauc/system.conf. +[Service] +ExecStartPre=/bin/mkdir -p /run/mount/sysdata/common diff --git a/meta-oniro-core/recipes-core/rauc/rauc_%.bbappend b/meta-oniro-core/recipes-core/rauc/rauc_%.bbappend index b7ebcbd1..b5e60bf1 100644 --- a/meta-oniro-core/recipes-core/rauc/rauc_%.bbappend +++ b/meta-oniro-core/recipes-core/rauc/rauc_%.bbappend @@ -43,3 +43,17 @@ do_install_append() { bbwarn "The image is using a known, insecure test key for verifying RAUC bundles. Do not use this in production systems." fi } + +# Install Oniro specific override for RAUC state directory. + +SRC_URI_append = " \ + file://rauc-state-dir.conf \ + " + +FILES_${PN}-service += "\ + ${systemd_unitdir}/system/rauc.service.d/*.conf \ + " + +do_install_append() { + install -D -m 644 ${WORKDIR}/rauc-state-dir.conf --target-directory=${D}${systemd_unitdir}/system/rauc.service.d/ +} -- GitLab