From ff075f6ee795a590b244d70a90cc312ba1f2d83d Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Fri, 31 Aug 2018 06:25:51 -0400 Subject: meta-phosphor: Move layer content from common/ Adopt a more conventional directory hierarchy. meta-phosphor is still a _long_ way from suitable for hosting on yoctoproject.org but things like this don't help. (From meta-phosphor rev: 471cfcefa74b8c7ceb704cb670e6d915cf27c63b) Change-Id: I3f106b2f6cdc6cec734be28a6090800546f362eb Signed-off-by: Brad Bishop --- .../flash/phosphor-software-manager/obmc-flash-bmc | 516 +++++++++++++++++++++ .../obmc-flash-bmc-cleanup.service | 9 + .../obmc-flash-bmc-mirroruboot.service | 8 + .../obmc-flash-bmc-setenv@.service | 8 + .../obmc-flash-bmc-ubiremount.service | 15 + .../obmc-flash-bmc-ubiro-remove@.service | 9 + .../obmc-flash-bmc-ubiro@.service | 12 + .../obmc-flash-bmc-ubirw-remove.service | 8 + .../obmc-flash-bmc-ubirw.service | 8 + .../obmc-flash-bmc-updateubootvars@.service | 8 + .../reboot-guard-disable.service | 8 + .../reboot-guard-enable.service | 8 + .../flash/phosphor-software-manager/software.conf | 3 + .../flash/phosphor-software-manager/synclist | 11 + .../phosphor-software-manager/usr-local.mount | 7 + ...yz.openbmc_project.Software.BMC.Updater.service | 16 + .../xyz.openbmc_project.Software.Download.service | 12 + .../xyz.openbmc_project.Software.Sync.service | 10 + .../xyz.openbmc_project.Software.Version.service | 13 + 19 files changed, 689 insertions(+) create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-cleanup.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-mirroruboot.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-setenv@.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiremount.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro-remove@.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubirw-remove.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubirw.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-updateubootvars@.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/reboot-guard-disable.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/reboot-guard-enable.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/software.conf create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/synclist create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/usr-local.mount create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.BMC.Updater.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Download.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Sync.service create mode 100644 meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Version.service (limited to 'meta-phosphor/recipes-phosphor/flash/phosphor-software-manager') diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc new file mode 100644 index 000000000..0b1b16ed3 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc @@ -0,0 +1,516 @@ +#!/bin/bash +set -eo pipefail + +# Get the root mtd device number (mtdX) from "/dev/ubiblockX_Y on /" +findrootmtd() { + rootmatch=" on / " + m="$(mount | grep "${rootmatch}" | grep "ubiblock")" + m="${m##*ubiblock}" + m="${m%_*}" + if [ -z "${m}" ]; then + # default to bmc mtd (0) + m=0 + fi + echo "mtd${m}" +} + +findrootubi() { + rootmatch=" on / " + m="$(mount | grep "${rootmatch}")" + m="${m##*ubiblock}" + m="${m% on*}" + echo "ubi${m}" +} + +# Get the mtd device number (mtdX) +findmtd() { + m="$(grep -xl "$1" /sys/class/mtd/*/name)" + m="${m%/name}" + m="${m##*/}" + echo "${m}" +} + +# Get the mtd device number only (return X of mtdX) +findmtdnum() { + m="$(findmtd "$1")" + m="${m##mtd}" + echo "${m}" +} + +# Get the ubi device number (ubiX_Y) +findubi() { + u="$(grep -xl "$1" /sys/class/ubi/ubi?/subsystem/ubi*/name)" + u="${u%/name}" + u="${u##*/}" + echo "${u}" +} + +# Get the ubi device number (ubiX_Y) on a specific mtd +findubi_onmtd() { + u="$(grep -xl "$1" /sys/class/ubi/ubi"$2"/subsystem/ubi"$2"*/name)" + u="${u%/name}" + u="${u##*/}" + echo "${u}" +} + +# Get all ubi device names on a specific mtd that match requested string +findubiname_onmtd() { + u="$(grep -h "$1" /sys/class/ubi/ubi"$2"/subsystem/ubi"$2"*/name)" + u="${u%/name}" + u="${u##*/}" + echo "${u}" +} + +# Get the name from the requested ubiX_Y volume +findname() { + n="$(cat /sys/class/ubi/$1/name)" + echo "${n}" +} + +# Set the u-boot envs that perform a side switch on failure to boot +set_wdt2bite() { + if ! fw_printenv wdt2bite 2>/dev/null; then + fw_setenv wdt2bite "mw.l 0x1e785024 0xa 1; mw.b 0x1e78502c 0xb3 1" + fw_setenv bootalt "run wdt2bite" + fw_setenv obmc_bootcmd "ubi part obmc-ubi; run do_rwreset; ubi read \ +\${loadaddr} \${kernelname}; bootm \${loadaddr} || run bootalt" + fi +} + +# Make space on flash before creating new volumes. This can be enhanced +# determine current flash usage. For now only keep a "keepmax" number of them +ubi_remove_volumes() +{ + rootubi="$(findrootubi)" + rootname="$(findname "${rootubi}")" + rootversion="${rootname##*-}" + rootkernel="kernel-${rootversion}" + + # Just keep max number of volumes before updating, don't delete the version + # the BMC is booted from, and when a version is identified to be deleted, + # delete both the rofs and kernel volumes for that version. + rmnames="$(findubiname_onmtd "${name%-*}-" "${ro}")" + rmnames=(${rmnames}) + ubicount="${#rmnames[@]}" + while [ ${ubicount} -ge ${keepmax} ]; do + # Loop through existing volumes and skip currently active ones + for (( index=0; index<${#rmnames[@]}; index++ )); do + rmname="${rmnames[${index}]}" + rmversion="${rmname##*-}" + [ "${rmversion}" == "${version}" ] && continue + rmubi="$(findubi_onmtd "rofs-${rmversion}" "${ro}")" + if [[ ( "${rmubi}" != "${rootubi}" ) && + ( "${rmname}" != "${rootkernel}" ) ]]; then + ubi_remove "rofs-${rmversion}" "${ro}" + ubi_remove "kernel-${rmversion}" "${ro}" + # Remove priority value + fw_setenv "${rmversion}" + break + fi + done + # Decrease count regardless to avoid an infinite loop + (( ubicount-- )) + done +} + +ubi_rw() { + rwmtd="$(findmtd "${reqmtd}")" + rw="${rwmtd#mtd}" + ubidev="/dev/ubi${rw}" + + # Update rwfs_size, check imgsize was specified, otherwise it'd clear the var + if [ ! -z "$imgsize" ]; then + rwsize="$(fw_printenv -n rwfs_size 2>/dev/null)" || true + if [[ "${imgsize}" != "${rwsize}" ]]; then + fw_setenv rwfs_size "${imgsize}" + fi + fi + + vol="$(findubi "${name}")" + if [ -z "${vol}" ]; then + ubimkvol "${ubidev}" -N "${name}" -s "${imgsize}" + fi +} + +ubi_ro() { + keepmax=2 # Default 2 volumes per mtd + romtd="$(findmtd "${reqmtd}")" + romtd2="$(findmtd "${reqmtd2}")" + + if [ ! "${romtd}" == "${romtd2}" ]; then + # Request to use alternate mtd device, choose the non-root one + keepmax=1 # 1 volume on each of the requested mtds + rootmtd="$(findrootmtd)" + if [ "${rootmtd}" == "${romtd}" ]; then + romtd="${romtd2}" + fi + fi + ro="${romtd#mtd}" + ubidev="/dev/ubi${ro}" + + ubi_remove_volumes + + if [ -z "${imgfile}" ]; then + echo "Unable to create read-only volume. Image file not specified." + return 1 + fi + + # Create a ubi volume, dynamically sized to fit BMC image if size unspecified + img="/tmp/images/${version}/${imgfile}" + imgsize="$(stat -c '%s' ${img})" + + vol="$(findubi "${name}")" + if [ ! -z "${vol}" ]; then + # Allow a duplicate kernel volume on the alt mtd + if [[ "${name}" =~ "kernel" ]]; then + vol="$(findubi_onmtd "${name}" "${ro}")" + fi + fi + if [ -z "${vol}" ]; then + ubimkvol "${ubidev}" -N "${name}" -s "${imgsize}" --type=static + vol="$(findubi "${name}")" + fi +} + +# Squashfs images need a ubi block +ubi_block() { + vol="$(findubi "${name}")" + ubidevid="${vol#ubi}" + block="/dev/ubiblock${ubidevid}" + if [ ! -e "$block" ]; then + ubiblock --create "/dev/ubi${ubidevid}" + fi +} + +ubi_updatevol() { + vol="$(findubi "${name}")" + ubidevid="${vol#ubi}" + img="/tmp/images/${version}/${imgfile}" + ubiupdatevol "/dev/ubi${ubidevid}" "${img}" +} + +ubi_remove() { + rmname="$1" + rmmtd="$2" + if [ ! -z "${rmmtd}" ]; then + vol="$(findubi_onmtd "${rmname}" "${rmmtd}")" + else + vol="$(findubi "${rmname}")" + fi + + if [ ! -z "$vol" ]; then + vol="${vol%_*}" + + if grep -q "$rmname" /proc/mounts; then + mountdir=$(grep "$rmname" /proc/mounts | cut -d " " -f 2) + umount "$mountdir" + rm -r "$mountdir" + fi + + ubirmvol "/dev/${vol}" -N "$rmname" + fi +} + +ubi_cleanup() { + # When ubi_cleanup is run, it expects one or no active version. + activeVersion=$(busctl --list --no-pager tree \ + xyz.openbmc_project.Software.BMC.Updater | \ + grep /xyz/openbmc_project/software/ | tail -c 9) + + if [[ -z "$activeVersion" ]]; then + vols=$(ubinfo -a | grep "rofs-" | cut -c 14-) + vols=(${vols}) + else + vols=$(ubinfo -a | grep "rofs-" | \ + grep -v "$activeVersion" | cut -c 14-) + vols=(${vols}) + fi + + for (( index=0; index<${#vols[@]}; index++ )); do + ubi_remove ${vols[index]} + done +} + +mount_alt_rwfs() { + altNum="$(findmtdnum "alt-bmc")" + if [ ! -z "${altNum}" ]; then + altRwfs=$(ubinfo -a -d ${altNum} | grep -w "rwfs") || true + if [ ! -z "${altRwfs}" ]; then + altVarMount="/media/alt/var" + mkdir -p "${altVarMount}" + if mount ubi"${altNum}":rwfs "${altVarMount}" -t ubifs -o defaults; then + mkdir -p "${altVarMount}"/persist/etc + fi + fi + fi +} + +remount_ubi() { + bmcmtd="$(findmtd "bmc")" + altbmcmtd="$(findmtd "alt-bmc")" + mtds="${bmcmtd: -1}","${altbmcmtd: -1}" + + IFS=',' read -r -a mtds <<< "$mtds" + mtds=($(echo "${mtds[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')) + for mtd in ${mtds[@]}; do + # Get information on all ubi volumes + ubinfo=$(ubinfo -d ${mtd}) + presentVolumes=${ubinfo##*:} + IFS=', ' read -r -a array <<< "$presentVolumes" + for element in ${array[@]}; do + elementProperties=$(ubinfo -d $mtd -n $element) + # Get ubi volume name by getting rid of additional properties + name=${elementProperties#*Name:} + name="${name%Character*}" + name="$(echo -e "${name}" | tr -d '[:space:]')" + + if [[ ${name} == rofs-* ]]; then + mountdir="/media/${name}" + + if [ ! -d ${mountdir} ]; then + mkdir -p "${mountdir}" + # U-Boot will create the ubiblock for the running version, but not + # for the version on the other chip + if [ ! -e "/dev/ubiblock${mtd}_${element}" ]; then + ubiblock --create /dev/ubi${mtd}_${element} + fi + mount -t squashfs -o ro "/dev/ubiblock${mtd}_${element}" "${mountdir}" + fi + fi + done + done + + set_wdt2bite +} + +# Read the current env variable and set it on the alternate boot env +copy_env_var_to_alt() { + varName=$1 + value="$(fw_printenv -n "${varName}")" + fw_setenv -c /etc/alt_fw_env.config "${varName}" "${value}" +} + +# When the alternate bmc chip boots, u-boot thinks its the primary mtdX. +# Therefore need to swap the chip numbers when copying the ubiblock and root to +# alternate bmc u-boot environment. +copy_ubiblock_to_alt() { + value="$(fw_printenv -n ubiblock)" + bmcNum="$(findmtdnum "bmc")" + altNum="$(findmtdnum "alt-bmc")" + replaceAlt="${value/${altNum},/${bmcNum},}" + + if [[ "${value}" == "${replaceAlt}" ]]; then + replaceBmc="${value/${bmcNum},/${altNum},}" + value=${replaceBmc} + else + value=${replaceAlt} + fi + + fw_setenv -c /etc/alt_fw_env.config ubiblock "${value}" +} + +copy_root_to_alt() { + value="$(fw_printenv -n root)" + bmcNum="$(findmtdnum "bmc")" + altNum="$(findmtdnum "alt-bmc")" + replaceAlt="${value/${altNum}_/${bmcNum}_}" + + if [[ "${value}" == "${replaceAlt}" ]]; then + replaceBmc="${value/${bmcNum}_/${altNum}_}" + value=${replaceBmc} + else + value=${replaceAlt} + fi + + fw_setenv -c /etc/alt_fw_env.config root "${value}" +} + +ubi_setenv() { + # The U-Boot environment maintains two banks of environment variables. + # The banks need to be consistent with each other to ensure that these + # variables can reliably be read from file. In order to guarantee that the + # banks are both correct, we need to run fw_setenv twice. + variable=$1 + if [[ "$variable" == *"="* ]]; then + varName="${variable%=*}" + value="${variable##*=}" + # Write only if var is not set already to the requested value + currentValue="$(fw_printenv -n "${varName}" 2>/dev/null)" || true + if [[ "${currenValue}" != "${value}" ]]; then + fw_setenv "$varName" "$value" + fw_setenv "$varName" "$value" + fi + else + fw_setenv "$variable" + fw_setenv "$variable" + fi +} + +mtd_write() { + flashmtd="$(findmtd "${reqmtd}")" + img="/tmp/images/${version}/${imgfile}" + flashcp -v ${img} /dev/${flashmtd} +} + +backup_env_vars() { + copy_env_var_to_alt kernelname + copy_ubiblock_to_alt + copy_root_to_alt +} + +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}" +} + +#TODO: Replace the implementation with systemd-inhibitors lock +# once systemd/systemd#949 is resolved +rebootguardenable() { + dir="/run/systemd/system/" + file="reboot-guard.conf" + units=("reboot" "poweroff" "halt") + + for unit in "${units[@]}"; do + mkdir -p ${dir}${unit}.target.d + echo -e "[Unit]\nRefuseManualStart=yes" >> ${dir}${unit}.target.d/${file} + done +} + +#TODO: Replace the implementation with systemd-inhibitors lock +# once systemd/systemd#949 is resolved +rebootguarddisable() { + dir="/run/systemd/system/" + file="reboot-guard.conf" + units=("reboot" "poweroff" "halt") + + for unit in "${units[@]}"; do + rm -rf ${dir}${unit}.target.d/${file} + done +} + +# Create a copy in the alt mtd +create_vol_in_alt() { + alt="alt-bmc" + altmtd="$(findmtd "${alt}")" + if [ ! -z "${altmtd}" ]; then + reqmtd="${alt}" + reqmtd2="${alt}" + ubi_ro + ubi_updatevol + fi +} + +# Copy contents of one MTD device to another +mtd_copy() { + in=$1 + out=$2 + + # Must erase MTD first to prevent corruption + flash_eraseall "${out}" + dd if="${in}" of="${out}" +} + +mirroruboot() { + bmc="$(findmtd "u-boot")" + bmcdev="/dev/${bmc}" + alt="$(findmtd "alt-u-boot")" + altdev="/dev/${alt}" + + checksum_bmc="$(md5sum "${bmcdev}")" + checksum_bmc="${checksum_bmc% *}" + checksum_alt="$(md5sum "${altdev}")" + checksum_alt="${checksum_alt% *}" + + if [[ "${checksum_bmc}" != "${checksum_alt}" ]]; then + bmcenv="$(findmtd "u-boot-env")" + bmcenvdev="/dev/${bmcenv}" + altenv="$(findmtd "alt-u-boot-env")" + altenvdev="/dev/${altenv}" + + echo "Mirroring U-boot to alt chip" + mtd_copy "${bmcdev}" "${altdev}" + mtd_copy "${bmcenvdev}" "${altenvdev}" + + copy_ubiblock_to_alt + copy_root_to_alt + fi +} + +case "$1" in + mtduboot) + reqmtd="$2" + version="$3" + imgfile="image-u-boot" + mtd_write + ;; + ubirw) + reqmtd="$2" + name="$3" + imgsize="$4" + ubi_rw + ;; + ubiro) + reqmtd="$(echo "$2" | cut -d "+" -f 1)" + reqmtd2="$(echo "$2" | cut -d "+" -f 2)" + name="$3" + version="$4" + imgfile="image-rofs" + ubi_ro + ubi_updatevol + ubi_block + ;; + ubikernel) + reqmtd="$(echo "$2" | cut -d "+" -f 1)" + reqmtd2="$(echo "$2" | cut -d "+" -f 2)" + name="$3" + version="$4" + imgfile="image-kernel" + ubi_ro + ubi_updatevol + create_vol_in_alt + ;; + ubiremove) + name="$2" + ubi_remove "${name}" + ;; + ubicleanup) + ubi_cleanup + ;; + ubisetenv) + ubi_setenv "$2" + ;; + ubiremount) + remount_ubi + mount_alt_rwfs + ;; + createenvbackup) + backup_env_vars + ;; + updateubootvars) + version="$2" + update_env_vars + ;; + rebootguardenable) + rebootguardenable + ;; + rebootguarddisable) + rebootguarddisable + ;; + mirroruboot) + mirroruboot + ;; + *) + echo "Invalid argument" + exit 1 + ;; +esac diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-cleanup.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-cleanup.service new file mode 100644 index 000000000..f8c9135a1 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-cleanup.service @@ -0,0 +1,9 @@ +[Unit] +Description=Clean up UBI volumes unattached to a BMC version after DeleteAll + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStartPre=/usr/bin/env obmc-flash-bmc createenvbackup +ExecStart=/usr/bin/env obmc-flash-bmc ubicleanup +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-mirroruboot.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-mirroruboot.service new file mode 100644 index 000000000..361dd61cd --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-mirroruboot.service @@ -0,0 +1,8 @@ +[Unit] +Description=Copy uboot from the currently booted bmc chip to the alternate chip + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/env obmc-flash-bmc mirroruboot +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-setenv@.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-setenv@.service new file mode 100644 index 000000000..73b55d4f3 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-setenv@.service @@ -0,0 +1,8 @@ +[Unit] +Description=Set U-Boot environment variable + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/env obmc-flash-bmc ubisetenv %I +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiremount.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiremount.service new file mode 100644 index 000000000..388bb1a0d --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiremount.service @@ -0,0 +1,15 @@ +[Unit] +Description=Remount the ubi volume after a reboot +Wants=xyz.openbmc_project.Software.BMC.Updater.service +Before=xyz.openbmc_project.Software.BMC.Updater.service +Wants=obmc-flash-bmc-setenv@rwreset.service +After=obmc-flash-bmc-setenv@rwreset.service + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/env obmc-flash-bmc ubiremount +SyslogIdentifier=obmc-flash-bmc + +[Install] +WantedBy=multi-user.target diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro-remove@.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro-remove@.service new file mode 100644 index 000000000..42aa026b9 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro-remove@.service @@ -0,0 +1,9 @@ +[Unit] +Description=Deletes read-only and kernel ubi volume %I + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/env obmc-flash-bmc ubiremove rofs-%i +ExecStart=/usr/bin/env obmc-flash-bmc ubiremove kernel-%i +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service new file mode 100644 index 000000000..5cd8565f5 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service @@ -0,0 +1,12 @@ +[Unit] +Description=Store read-only images %I to BMC storage +OnFailure=obmc-flash-bmc-ubiro-remove@%i.service + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStartPre=/usr/bin/env obmc-flash-bmc createenvbackup +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 +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubirw-remove.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubirw-remove.service new file mode 100644 index 000000000..68c4ab256 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubirw-remove.service @@ -0,0 +1,8 @@ +[Unit] +Description=Deletes BMC read-write ubi volume + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/env obmc-flash-bmc ubiremove rwfs +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubirw.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubirw.service new file mode 100644 index 000000000..79d0ea387 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubirw.service @@ -0,0 +1,8 @@ +[Unit] +Description=Create BMC read-write ubi volume + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/env obmc-flash-bmc ubirw {RW_MTD} rwfs {RW_SIZE} +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-updateubootvars@.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-updateubootvars@.service new file mode 100644 index 000000000..bab0b0297 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-updateubootvars@.service @@ -0,0 +1,8 @@ +[Unit] +Description= Updates the u-boot variable to point BMC version to %I + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/env obmc-flash-bmc updateubootvars %i +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/reboot-guard-disable.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/reboot-guard-disable.service new file mode 100644 index 000000000..b09df99d3 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/reboot-guard-disable.service @@ -0,0 +1,8 @@ +[Unit] +Description=Removes the guard that blocks BMC reboot + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/env obmc-flash-bmc rebootguarddisable +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/reboot-guard-enable.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/reboot-guard-enable.service new file mode 100644 index 000000000..4405e3dbb --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/reboot-guard-enable.service @@ -0,0 +1,8 @@ +[Unit] +Description=Enable a guard that blocks BMC reboot + +[Service] +Type=oneshot +RemainAfterExit=no +ExecStart=/usr/bin/env obmc-flash-bmc rebootguardenable +SyslogIdentifier=obmc-flash-bmc diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/software.conf b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/software.conf new file mode 100644 index 000000000..09ecd92e4 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/software.conf @@ -0,0 +1,3 @@ +# /tmp/images is the software image upload directory +# It should not be deleted if the UBI code update is used. +x /tmp/images diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/synclist b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/synclist new file mode 100644 index 000000000..8213ce6a0 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/synclist @@ -0,0 +1,11 @@ +/etc/dropbear/ +/etc/group +/etc/gshadow +/etc/hostname +/etc/machine-id +/etc/passwd +/etc/shadow +/etc/ssl/ +/etc/ssl/certs/nginx/ +/etc/ssl/private/ +/etc/systemd/network/ diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/usr-local.mount b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/usr-local.mount new file mode 100644 index 000000000..7aa2cf656 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/usr-local.mount @@ -0,0 +1,7 @@ +[Unit] +Description=/usr/local + +[Mount] +What=tmpfs +Where=/usr/local +Type=tmpfs diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.BMC.Updater.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.BMC.Updater.service new file mode 100644 index 000000000..ef1a1c434 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.BMC.Updater.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenBMC Software Update Manager +Wants=xyz.openbmc_project.Software.Version.service +Before=xyz.openbmc_project.Software.Version.service +Wants=obmc-mapper.target +After=obmc-mapper.target + +[Service] +ExecStart=/usr/bin/env phosphor-image-updater +SyslogIdentifier=phosphor-image-updater +Restart=always +Type=dbus +BusName={BUSNAME} + +[Install] +WantedBy={SYSTEMD_DEFAULT_TARGET} diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Download.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Download.service new file mode 100644 index 000000000..a4934f865 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Download.service @@ -0,0 +1,12 @@ +[Unit] +Description=Phosphor Download Manager + +[Service] +ExecStart=/usr/bin/env phosphor-download-manager +SyslogIdentifier=phosphor-download-manager +Restart=always +Type=dbus +BusName={BUSNAME} + +[Install] +WantedBy={SYSTEMD_DEFAULT_TARGET} diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Sync.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Sync.service new file mode 100644 index 000000000..1ff33a2fe --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Sync.service @@ -0,0 +1,10 @@ +[Unit] +Description=Phosphor Sync Manager that syncs files to the alternate BMC chip + +[Service] +ExecStart=/usr/bin/env phosphor-sync-software-manager +SyslogIdentifier=phosphor-sync-software-manager +Restart=always + +[Install] +WantedBy={SYSTEMD_DEFAULT_TARGET} diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Version.service b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Version.service new file mode 100644 index 000000000..0141245b2 --- /dev/null +++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager/xyz.openbmc_project.Software.Version.service @@ -0,0 +1,13 @@ +[Unit] +Description=Phosphor Version Software Manager + +[Service] +ExecStartPre=/bin/sh -c 'mkdir -p /tmp/images' +ExecStart=/usr/bin/env phosphor-version-software-manager +SyslogIdentifier=phosphor-version-software-manager +Restart=always +Type=dbus +BusName={BUSNAME} + +[Install] +WantedBy={SYSTEMD_DEFAULT_TARGET} -- cgit v1.2.3