diff options
author | Potin Lai <potin.lai@quantatw.com> | 2022-09-28 07:00:05 +0300 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2022-10-06 22:51:03 +0300 |
commit | 01bd61acf2b10538a6896d696a3d1ba9da57490a (patch) | |
tree | 52f493ac93d506341ec4be25e4c5c51cabf5f2bd | |
parent | cad9077e8d12b6b246b22643d8079175f59320f8 (diff) | |
download | openbmc-01bd61acf2b10538a6896d696a3d1ba9da57490a.tar.xz |
meta-facebook: add emmc-init package
Add a service and script for detecting the state of the eMMC
device and formatting it if needed.
Signed-off-by: Potin Lai <potin.lai@quantatw.com>
Change-Id: I4618d1691dedcff582772a0749c5797ad052f238
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
4 files changed, 82 insertions, 0 deletions
diff --git a/meta-facebook/recipes-fb/emmc-init/emmc-init_0.1.bb b/meta-facebook/recipes-fb/emmc-init/emmc-init_0.1.bb new file mode 100644 index 0000000000..0a691e61ee --- /dev/null +++ b/meta-facebook/recipes-fb/emmc-init/emmc-init_0.1.bb @@ -0,0 +1,21 @@ +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +inherit obmc-phosphor-systemd + +RDEPENDS:${PN}:append = " \ + bash \ + btrfs-tools \ + " + +SRC_URI += " \ + file://emmc-init \ + file://emmc-init.service \ + " + +do_install:append() { + install -d ${D}${libexecdir}/emmc-init + install -m 0755 ${WORKDIR}/emmc-init ${D}${libexecdir}/emmc-init +} + +SYSTEMD_SERVICE:${PN} += "emmc-init.service" diff --git a/meta-facebook/recipes-fb/emmc-init/files/emmc-init b/meta-facebook/recipes-fb/emmc-init/files/emmc-init new file mode 100644 index 0000000000..0ee90078bd --- /dev/null +++ b/meta-facebook/recipes-fb/emmc-init/files/emmc-init @@ -0,0 +1,48 @@ +#!/bin/bash -e + +DEVICE_NODE="/dev/mmcblk0" +DEFAULT_FS_TYPE="btrfs" + +# +# check device node exist +# +if [[ ! -b "${DEVICE_NODE}" ]]; then + echo "${DEVICE_NODE} is not available" + exit 0 +fi + +# +# check if device mounted correctly +# +if ! (mount || true) | grep "${DEVICE_NODE}"> /dev/null; then + echo "${DEVICE_NODE} is not mounted" +else + echo "${DEVICE_NODE} is mounted" + exit 0 +fi + +# +# check filesystem +# +FS_TYPE_CHECK="$(blkid "${DEVICE_NODE}" | sed 's/.*TYPE="\([^"]*\).*/\1/' || true)" + +if [[ "${FS_TYPE_CHECK}" = "" ]]; then + FS_TYPE="unknown" +else + FS_TYPE="${FS_TYPE_CHECK}" +fi + +case "${FS_TYPE}" in + "${DEFAULT_FS_TYPE}") + echo "Filesystem (${FS_TYPE}) found on ${DEVICE_NODE}" + ;; + + *) + echo "No or unexpected filesystem (${FS_TYPE}) found on ${DEVICE_NODE}" + if ! output=$(mkfs."${DEFAULT_FS_TYPE}" --force "${DEVICE_NODE}" 2>&1); then + echo "failed to create ${DEFAULT_FS_TYPE} on ${DEVICE_NODE}:" + echo "${output}" + exit 1 + fi + ;; +esac diff --git a/meta-facebook/recipes-fb/emmc-init/files/emmc-init.service b/meta-facebook/recipes-fb/emmc-init/files/emmc-init.service new file mode 100644 index 0000000000..1a5ddcf417 --- /dev/null +++ b/meta-facebook/recipes-fb/emmc-init/files/emmc-init.service @@ -0,0 +1,11 @@ +[Unit] +Description=eMMC initialize check +Before=mnt-data.mount + +[Service] +ExecStart=/usr/libexec/emmc-init/emmc-init +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/meta-facebook/recipes-phosphor/images/fb-phosphor-image.inc b/meta-facebook/recipes-phosphor/images/fb-phosphor-image.inc index 0643f18b45..e066e54cb0 100644 --- a/meta-facebook/recipes-phosphor/images/fb-phosphor-image.inc +++ b/meta-facebook/recipes-phosphor/images/fb-phosphor-image.inc @@ -6,4 +6,6 @@ OBMC_IMAGE_EXTRA_INSTALL:append = "\ '', d)} \ " +OBMC_IMAGE_EXTRA_INSTALL:append:mf-fb-secondary-emmc = " emmc-init" + include recipes-phosphor/images/fb-${MACHINE}-phosphor-image.inc |