From 86d040a8493fcfb5b3bf7c618be5dce23dada39d Mon Sep 17 00:00:00 2001 From: Martin Kepplinger Date: Thu, 19 Apr 2018 20:01:59 +0200 Subject: [PATCH] flashrom_rpi_bottom_unlock.sh: add -l option for re-locking the flash --- README.md | 8 +++++--- flashrom_rpi_bottom_unlock.sh | 28 ++++++++++++++++++++++------ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 2ae3ae8..be01f23 100644 --- a/README.md +++ b/README.md @@ -102,9 +102,11 @@ when updating to a new release, you don't have to disasseble your Thinkpad and can flash internally (at your own risk), see below. #### background (just so you know) -The `-m` option above also runs `me_cleaner -S` before flashing back. - -If you don't use a RPi, change the flashrom programmer to your needs: +* The `-m` option above also runs `me_cleaner -S` before flashing back. +* The `-l` option will (re-)lock your flash ROM, in case you want to force +yourself (and others) to hardware-flashing externally. +* If you don't use a RPi, change the flashrom programmer to your needs.This +is roughly what's going on: flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128 -c "MX25L6406E/MX25L6408E" -r ifdmegbe.rom diff --git a/flashrom_rpi_bottom_unlock.sh b/flashrom_rpi_bottom_unlock.sh index 2207c62..b7738eb 100755 --- a/flashrom_rpi_bottom_unlock.sh +++ b/flashrom_rpi_bottom_unlock.sh @@ -12,15 +12,17 @@ ME_CLEANER_PATH=./util/me_cleaner/me_cleaner.py have_chipname=0 have_backupname=0 me_clean=0 +lock=0 usage() { - echo "Usage: $0 -c [-m] [-k ]" + echo "Usage: $0 -c [-m] [-k ] [-l]" echo "" echo "-m apply me_cleaner -S" + echo "-l lock the flash instead of unlocking it" } -args=$(getopt -o mc:k:h -- "$@") +args=$(getopt -o mlc:k:h -- "$@") if [ $? -ne 0 ] ; then usage exit 1 @@ -33,6 +35,9 @@ do -m) me_clean=1 ;; + -l) + lock=1 + ;; -c) CHIPNAME=$2 have_chipname=1 @@ -78,6 +83,12 @@ else echo "Intel ME will be cleaned." fi +if [ ! "$lock" -gt 0 ] ; then + echo -e "The flash ROM will be ${GREEN}unlocked${NC}." +else + echo "The flash ROM will be LOCKED!" +fi + if [ "$me_clean" -gt 0 ] ; then if [ ! -e ${ME_CLEANER_PATH} ] ; then echo "me_cleaner not found at ${ME_CLEANER_PATH}" @@ -116,16 +127,21 @@ else cp ${TEMP_DIR}/test1.rom ${TEMP_DIR}/work.rom fi -${IFDTOOL_PATH} -u ${TEMP_DIR}/work.rom +if [ ! "$lock" -gt 0 ] ; then + ${IFDTOOL_PATH} -u ${TEMP_DIR}/work.rom +else + ${IFDTOOL_PATH} -l ${TEMP_DIR}/work.rom +fi + if [ ! -e ${TEMP_DIR}/work.rom.new ] ; then - echo -e "${RED}Error:${NC} Unlocking failed. ${TEMP_DIR}/work.rom.new not found." + echo -e "${RED}Error:${NC} ifdtool failed. ${TEMP_DIR}/work.rom.new not found." rm -rf ${TEMP_DIR} exit 1 fi if [ "$me_clean" -gt 0 ] ; then - echo -e "${GREEN}unlock and me_cleaner ok${NC}" + echo -e "${GREEN}ifdtool and me_cleaner ok${NC}" else - echo -e "${GREEN}unlock ok${NC}" + echo -e "${GREEN}ifdtool ok${NC}" fi make clean -C util/ifdtool