1#!/bin/bash 2 3usage () { 4 echo "Usage:" 5 echo " $(basename "$0") <image path> " 6 echo "Where:" 7 echo " <image path>: the path link to folder, which include image file and MANIFEST" 8 echo "Example:" 9 echo " $(basename "$0") /tmp/images/ghdh1393" 10} 11 12 13IMG_PATH="$1" 14if [ ! -d "$IMG_PATH" ]; then 15 echo "The folder $IMG_PATH does not exist" 16 usage 17 exit 1 18fi 19 20MANIFEST_PATH="${IMG_PATH}/MANIFEST" 21if [ ! -f "$MANIFEST_PATH" ]; then 22 echo "The MANIFEST file $MANIFEST_PATH does not exist" 23 usage 24 exit 1 25fi 26 27EXTENDED_VERSION=$(awk '/ExtendedVersion/ {print}' "${MANIFEST_PATH}" | cut -d "=" -f 2) 28 29# If the ExtendedVersion is empty, set default to update UEFI/EDKII on primary device 30if [ -z "$EXTENDED_VERSION" ] 31then 32 EXTENDED_VERSION="primary" 33fi 34 35# Assign the command based on the ExtendedVersion 36case ${EXTENDED_VERSION} in 37 "primary") 38 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.img" -o -name "*.bin" -o -name "*.rom" \)) 39 CMD="/usr/sbin/ampere_flash_bios.sh $IMAGE 1" 40 ;; 41 42 "secondary") 43 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.img" -o -name "*.bin" -o -name "*.rom" \)) 44 CMD="/usr/sbin/ampere_flash_bios.sh $IMAGE 2" 45 ;; 46 47 "scp-primary") 48 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.img" -o -name "*.slim" -o -name "*.rom" \)) 49 CMD="/usr/sbin/ampere_firmware_upgrade.sh smpmpro $IMAGE 1" 50 ;; 51 52 "scp-secondary") 53 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.img" -o -name "*.slim" -o -name "*.rom" \)) 54 CMD="/usr/sbin/ampere_firmware_upgrade.sh smpmpro $IMAGE 2" 55 ;; 56 57 "eeprom" | "eeprom-primary") 58 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.img" -o -name "*.slim" -o -name "*.rom" -o -name "*.bin" \)) 59 CMD="/usr/sbin/ampere_firmware_upgrade.sh eeprom $IMAGE 1" 60 ;; 61 62 "eeprom-secondary") 63 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.img" -o -name "*.slim" -o -name "*.rom" -o -name "*.bin" \)) 64 CMD="/usr/sbin/ampere_firmware_upgrade.sh eeprom $IMAGE 2" 65 ;; 66 67 "fru" | "mbfru") 68 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.bin" \)) 69 CMD="/usr/sbin/ampere_firmware_upgrade.sh fru $IMAGE 1" 70 ;; 71 72 73 "bmcfru") 74 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.bin" \)) 75 CMD="/usr/sbin/ampere_firmware_upgrade.sh fru $IMAGE 2" 76 ;; 77 78 "mbcpld") 79 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.jed" \)) 80 CMD="/usr/bin/ampere_firmware_upgrade.sh mb_cpld $IMAGE" 81 ;; 82 "bmccpld") 83 IMAGE=$(find "${IMG_PATH}" -type f \( -name "*.jed" \)) 84 CMD="/usr/bin/ampere_firmware_upgrade.sh bmc_cpld $IMAGE" 85 ;; 86 87 *) 88 echo "Invalid ExtendedVersion: ${EXTENDED_VERSION}. Please check MANIFEST file!" 89 exit 1 90 ;; 91esac 92 93 94if [ -z "$IMAGE" ] 95then 96 echo "ERROR: The image file: No such file or directory" 97 exit 1 98fi 99 100if ! eval "$CMD"; 101then 102 echo "ERROR: The firmware update not successfull" 103 exit 1 104fi 105