diff options
Diffstat (limited to 'meta-phosphor/common/recipes-phosphor/flash')
2 files changed, 30 insertions, 8 deletions
diff --git a/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc b/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc index 57b557fd7..d94f472ce 100644 --- a/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc +++ b/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc @@ -133,10 +133,6 @@ ubi_block() { return 1 fi fi - copy_env_var_to_alt ubiblock - ubi_setenv "ubiblock=$(echo "${ubidevid}" | sed 's/_/,/')" - copy_env_var_to_alt root - ubi_setenv "root=${block}" } ubi_updatevol() { @@ -148,10 +144,6 @@ ubi_updatevol() { echo "Unable to update volume ${name}!" return 1 fi - if [[ "${name}" =~ "kernel" ]]; then - copy_env_var_to_alt kernelname - ubi_setenv "kernelname=${name}" - fi } ubi_remove() { @@ -226,6 +218,27 @@ mtd_write() { flashcp -v ${img} /dev/${flashmtd} } +backup_env_vars() { + copy_env_var_to_alt kernelname + copy_env_var_to_alt ubiblock + copy_env_var_to_alt root +} + +update_env_vars() { + vol="$(findubi rofs-"${version}")" + if [ -z "${vol}" ]; then + return 1 + fi + ubidevid="${vol#ubi}" + block="/dev/ubiblock${ubidevid}" + if [ ! -e "${block}" ]; then + return 1 + fi + ubi_setenv "kernelname=kernel-${version}" + ubi_setenv "ubiblock=$(echo "${ubidevid}" | sed 's/_/,/')" + ubi_setenv "root=${block}" +} + case "$1" in mtduboot) reqmtd="$2" @@ -269,6 +282,13 @@ case "$1" in ubiremount) remount_ubi ;; + preupdate) + backup_env_vars + ;; + postupdate) + version="$2" + update_env_vars + ;; *) echo "Invalid argument" exit 1 diff --git a/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service b/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service index 7c2a2527b..98366fd02 100644 --- a/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service +++ b/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service @@ -4,7 +4,9 @@ Description=Store read-only images %I to BMC storage [Service] Type=oneshot RemainAfterExit=no +ExecStartPre=/usr/bin/env obmc-flash-bmc preupdate ExecStart=/usr/bin/env obmc-flash-bmc ubiro {RO_MTD} rofs-%i %i ExecStart=/usr/bin/env obmc-flash-bmc ubikernel {KERNEL_MTD} kernel-%i %i ExecStart=/usr/bin/env obmc-flash-bmc mtduboot u-boot %i +ExecStartPost=/usr/bin/env obmc-flash-bmc postupdate %i SyslogIdentifier=obmc-flash-bmc |