2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-06-02 03:27:07 +00:00

add the script to update nvme firmware

This commit is contained in:
ertaozh 2017-10-26 05:58:21 -04:00
parent 155ba82a13
commit 116c651f7c

View File

@ -0,0 +1,81 @@
#!/bin/sh
#
# If NVMe firmware file is located here:
# /install/MN12MN12.img
#
# Call the script as follows to update firmware for device /dev/nvme0:
# updatenode <noderange> -P "update_nvme_firmware /install/MN12MN12.img [/dev/nvme0]"
#
if [[ -z ${1} ]]; then
echo "Error: you must provide the path of the NVMe Firmware file"
exit 1
fi
NVME_FILE_PATH=${1}
if ! which nvme > /dev/null; then
echo "Error: No nvme tool find, pls install nvme-cli first"
exit 1
fi
if [[ -z ${2} ]]; then
if ! ls /dev/nvme* 2>1 >/dev/nul; then
echo "No NVMe device find";
exit 1
else
TARGET_DEV=`ls /dev/nvme*| egrep "nvme[0-9]$"`
fi
else
TARGET_DEV=${2}
if ! ls $TARGET_DEV 2>1 >/dev/null; then
echo "Not find nvme device $TARGET_DEV";
exit 1
fi
fi
WORKING_DIR="/"
NVME_FIRM_FILE=`basename ${NVME_FILE_PATH}`
TARGET_FIRM_FILE="${WORKING_DIR}/${NVME_FIRM_FILE}"
echo "==> NVMe Firmware File PATH: ${NVME_FILE_PATH}"
echo "==> NVMe Firmware File: ${NVME_FIRM_FILE}"
if [[ -e ${TARGET_FIRM_FILE} ]]; then
rm -f ${TARGET_FIRM_FILE}
fi
echo "==> Retrieving file from http://${MASTER}/${NVME_FILE_PATH}"
wget -q http://${MASTER}/${NVME_FILE_PATH} -O ${TARGET_FIRM_FILE}
if [[ $? ]]; then
echo "Error: Download ${NVME_FILE_PATH} failed from ${MASTER}"
exit 1
fi
ls -ltr ${TARGET_FIRM_FILE}
if ! nvme fw-download $TARGET_DEV --fw=${TARGET_FIRM_FILE}; then
echo "Firmware download to NVMe device $TARGET_DEV failed"
exit 1
fi
nvme fw-activate $TARGET_DEV -a 1 -s 1
nvme fw-activate $TARGET_DEV -a 1 -s 2
nvme fw-activate $TARGET_DEV -a 1 -s 3
nvme fw-activate $TARGET_DEV -a 1 -s 4
nvme reset $TARGET_DEV
TARGET_VERSION=`nvme id-ctrl $TARGET_DEV | grep "fr " | awk '{ print $3}'`
RC=0
if [[ x"$NVME_FIRM_FILE" == x"${TARGET_VERSION}.img" ]]; then
echo "Update Succeed to $TARGET_VERSION"
else
echo "Update failed, the current version is $TARGET_VERSION"
RC=1
fi
#
# Clean up
#
sleep 1
rm -f ${TARGET_FIRM_FILE}
exit $RC