summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2014-12-27 17:39:12 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2014-12-27 17:39:12 -0500
commit63508d43f3c2f558c04065041919706cf2a86ef4 (patch)
tree21c3f1f9bd1f762a3571faabcc824efdf849d731
parente1839b53737ba6058a864fcc6d1c50f5784c9866 (diff)
Simplify and fix the 'flash' scripts
- Instead of having multiple if/elif/fi blocks that all run nearly the same thing, use variables - Use consistent indent/formatting - Use the correct program name in the "Usage:" text - Fix a couple if blocks that were missing 'fi' - Fix a couple of invalid variable assignments ("$var = value" should be "var=value") I haven't actually tested these, but then with the last 2 items, they weren't working anyway.
-rwxr-xr-xflash53
-rwxr-xr-xlenovobios_firstflash114
-rwxr-xr-xlenovobios_secondflash103
-rwxr-xr-xmacbook21_firstflash56
-rwxr-xr-xx60flashfrom556
5 files changed, 128 insertions, 254 deletions
diff --git a/flash b/flash
index 98605f7..29da4f5 100755
--- a/flash
+++ b/flash
@@ -1,6 +1,6 @@
#!/bin/bash
-# flash script: uses flashrom to flash a new libreboot ROM image onto your machine
+# flash: uses flashrom to flash a new libreboot ROM image onto your machine
#
# Copyright (C) 2014 Francis Rowe <info@gluglug.org.uk>
#
@@ -18,54 +18,41 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-## Don't add here. errors are expected.
-# set -u -e -v
-set -v
+set -u -e
# These are the tested platforms
-if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- echo "Running on i686. ok."
- sleep 5
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- echo "Running on x86_64. ok."
- sleep 5
+if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ echo "Running on i686. ok."
+ arch=i686
+ sleep 5
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ echo "Running on x86_64. ok."
+ arch=x86_64
+ sleep 5
else
echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
exit 1
fi
+if [ -f "DEBLOB" ]; then
+ # In a src archive or git
+ arch=.
+fi
-# the user must be root to use flashrom
if [[ $EUID -ne 0 ]]; then
- echo "This script must be run as root"
- exit 1
+ echo "This script must be run as root"
+ exit 1
fi
-# check that the user supplied a path to a ROM image:
if (( $# != 1 )); then
- echo "Usage: ./lenovobios_firstflash yourrom.rom"
- echo "usage: ./lenovobios_firstflash path/to/yourrom.rom"
+ echo "usage: $0 path/to/yourrom.rom"
echo "You need to specify exactly 1 file"
exit 1
fi
-# if the user did supply a path, check that it exists:
-if [ ! -f $1 ]; then
+if [ ! -f "$1" ]; then
echo "File not found!"
exit 1
fi
+set -v
# Use flashrom to flash the ROM image:
-
-if [ -f "DEBLOB" ]; then
- # Means we are in src archive or git
- ./flashrom/flashrom -p internal -w $1
-elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- # Means we are in bin archive and on an i686 host
- ./flashrom/i686/flashrom -p internal -w $1
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- # Means we are in bin archive and on an x86_64 host
- ./flashrom/x86_64/flashrom -p internal -w $1
-fi
+./flashrom/$arch/flashrom -p internal -w $1
diff --git a/lenovobios_firstflash b/lenovobios_firstflash
index ca58440..0a7a575 100755
--- a/lenovobios_firstflash
+++ b/lenovobios_firstflash
@@ -18,109 +18,53 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-## Don't add here. errors are expected.
-# set -u -e -v
-set -v
+set -u -e
-if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- echo "Running on i686. ok."
- sleep 5
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- echo "Running on x86_64. ok."
- sleep 5
+# These are the tested platforms
+if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ echo "Running on i686. ok."
+ arch=i686
+ sleep 5
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ echo "Running on x86_64. ok."
+ arch=x86_64
+ sleep 5
else
echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
exit 1
fi
-
-if [[ $EUID -ne 0 ]]; then
- echo "This script must be run as root"
- exit 1
+if [ -f "DEBLOB" ]; then
+ # In a src archive or git
+ arch=.
fi
-if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- echo "Running on i686. ok."
- sleep 5
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- echo "Running on x86_64"
- sleep 5
-else
- echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
+if [[ $EUID -ne 0 ]]; then
+ echo "This script must be run as root"
exit 1
fi
-# USE ROOT OR SUDO WHEN EXECUTING THIS
-
-# for T60 or X60 owners with Lenovo BIOS
-# does the 1st part of the flash before shut down
-
if (( $# != 1 )); then
- echo "Usage: ./lenovobios_firstflash yourrom.rom"
- echo "usage: ./lenovobios_firstflash path/to/yourrom.rom"
+ echo "usage: $0 path/to/yourrom.rom"
echo "You need to specify exactly 1 file"
exit 1
fi
-if [ ! -f $1 ]; then
+if [ ! -f "$1" ]; then
echo "File not found!"
exit 1
fi
-$errOut = " \
- BUCTS failed. Make sure BUC.TS is 1, or else you will brick your machine. \
- ABORTING so as to protect against bricking the machine. \
- "
-if [ ! -f "DEBLOB" ]
- then
- # this means we are working in bin
- if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- # i686
- # needed for first flashing, otherwise machine will be bricked
- { # try
- ./bucts/i686/bucts 1
- } || { # catch
- echo "$errOut"
- exit 1
- }
- else
- # x86_64
- # needed for first flashing, otherwise machine will be bricked
- { # try
- ./bucts/x86_64/bucts 1
- } || { # catch
- echo "$errOut"
- exit 1
- }
-else
- # this means we are working in src
- # needed for first flashing, otherwise machine will be bricked
- { # try
- ./bucts/bucts 1
- } || { # catch
- echo "$errOut"
- exit 1
- }
-fi
+errOut="
+ BUCTS failed. Make sure BUC.TS is 1, or else you will brick your machine.
+ ABORTING so as to protect against bricking the machine.
+"
-# run both. one will fail (and be harmless), the other will succeed.
+set -v
+# for T60 or X60 owners with Lenovo BIOS
+# does the 1st part of the flash before shut down
-if [ -f "DEBLOB" ]; then
- # Means we are in src archive or git
- ./flashrom/flashrom_lenovobios_sst -p internal -w $1
- ./flashrom/flashrom_lenovobios_macronix -p internal -w $1
-elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- # Means we are in bin archive and on an i686 host
- ./flashrom/i686/flashrom_lenovobios_sst -p internal -w $1
- ./flashrom/i686/flashrom_lenovobios_macronix -p internal -w $1
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- # Means we are in bin archive and on an x86_64 host
- ./flashrom/x86_64/flashrom_lenovobios_sst -p internal -w $1
- ./flashrom/x86_64/flashrom_lenovobios_macronix -p internal -w $1
-fi
+# needed for first flashing, otherwise machine will be bricked
+./bucts/$arch/bucts 1 || { printf '%s' "$errOut"; exit 1; }
+# run both. one will fail (and be harmless), the other will succeed.
+./flashrom/$arch/flashrom_lenovobios_sst -p internal -w "$1" || true
+./flashrom/$arch/flashrom_lenovobios_macronix -p internal -w "$1" || true
diff --git a/lenovobios_secondflash b/lenovobios_secondflash
index 25d70f5..9b17da1 100755
--- a/lenovobios_secondflash
+++ b/lenovobios_secondflash
@@ -18,94 +18,55 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-## Don't add here. errors are expected.
-# set -u -e -v
-set -v
+set -u -e
-if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- echo "Running on i686. ok."
- sleep 5
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- echo "Running on x86_64. ok."
- sleep 5
+# These are the tested platforms
+if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ echo "Running on i686. ok."
+ arch=i686
+ sleep 5
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ echo "Running on x86_64. ok."
+ arch=x86_64
+ sleep 5
else
echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
exit 1
fi
+if [ -f "DEBLOB" ]; then
+ # In a src archive or git
+ arch=.
+fi
if [[ $EUID -ne 0 ]]; then
- echo "This script must be run as root"
- exit 1
+ echo "This script must be run as root"
+ exit 1
fi
-# USE ROOT OR SUDO WHEN EXECUTING THIS
-
-# for T60 or X60 owners with Lenovo BIOS
-# does the 1st part of the flash before shut down
-
if (( $# != 1 )); then
- echo "Usage: ./lenovobios_firstflash yourrom.rom"
- echo "usage: ./lenovobios_firstflash path/to/yourrom.rom"
+ echo "usage: $0 path/to/yourrom.rom"
echo "You need to specify exactly 1 file"
exit 1
fi
-if [ ! -f $1 ]; then
+if [ ! -f "$1" ]; then
echo "File not found!"
exit 1
fi
+errOut="
+ WARNING: bucts not found, but if the image was flashed then it's probably safe
+ A dd'd image (like libreboot's images) flashed with bucts=1 is ok.
+ If the image is not dd'd and bucts=1, then you should either
+ - run ./bucts/$arch/bucts 0 now, or
+ - remove the yellow cmos/nvram battery for a minute.
+"
+
+set -v
+# for T60 or X60 owners with Lenovo BIOS
+# does the 1st part of the flash before shut down
+
# Flash it a 2nd time, to write upper 64K block
-if [ -f "DEBLOB" ]; then
- # Means we are in src archive or git
- ./flashrom/flashrom -p internal -w $1
-elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- # Means we are in bin archive and on an i686 host
- ./flashrom/i686/flashrom -p internal -w $1
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- # Means we are in bin archive and on an x86_64 host
- ./flashrom/x86_64/flashrom -p internal -w $1
-fi
+./flashrom/$arch/flashrom -p internal -w "$1"
# Reset bucts back to zero
-$errOut = " \
- WARNING: bucts not found, but if the image was flashed then it's probably safe \
- A dd'd image (like libreboot's images) flashed with bucts=1 is ok. If the image is not dd'd and bucts=1, \
- then you should run ./bucts 0 now, or remove the yellow cmos/nvram battery for a minute. \
- "
-if [ ! -f "DEBLOB" ]
- then
- # this means we are working in bin
- if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- # i686
- # needed for first flashing, otherwise machine will be bricked
- { # try
- ./bucts/i686/bucts 0
- } || { # catch
- echo "$errOut"
- exit 1
- }
- else
- # x86_64
- # needed for first flashing, otherwise machine will be bricked
- { # try
- ./bucts/x86_64/bucts 0
- } || { # catch
- echo "$errOut"
- exit 1
- }
-else
- # this means we are working in src
- # needed for first flashing, otherwise machine will be bricked
- { # try
- ./bucts/bucts 0
- } || { # catch
- echo "$errOut"
- exit 1
- }
-fi
-
+./bucts/$arch/bucts 1 || { printf '%s' "$errOut"; exit 1; }
diff --git a/macbook21_firstflash b/macbook21_firstflash
index 1b31401..21fdaa2 100755
--- a/macbook21_firstflash
+++ b/macbook21_firstflash
@@ -18,54 +18,44 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-## Don't add this here. Errors are *expected*
-# set -u -e -v
-set -v
-
-if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- echo "Running on i686. ok."
- sleep 5
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- echo "Running on x86_64. ok."
- sleep 5
+set -u -e
+
+# These are the tested platforms
+if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ echo "Running on i686. ok."
+ arch=i686
+ sleep 5
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ echo "Running on x86_64. ok."
+ arch=x86_64
+ sleep 5
else
echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
exit 1
fi
+if [ -f "DEBLOB" ]; then
+ # In a src archive or git
+ arch=.
+fi
if [[ $EUID -ne 0 ]]; then
- echo "This script must be run as root"
- exit 1
+ echo "This script must be run as root"
+ exit 1
fi
-# USE ROOT OR SUDO WHEN EXECUTING THIS
-# uses flashrom to flash the rom
-
if (( $# != 1 )); then
- echo "Usage: ./lenovobios_firstflash yourrom.rom"
- echo "usage: ./lenovobios_firstflash path/to/yourrom.rom"
+ echo "usage: $0 path/to/yourrom.rom"
echo "You need to specify exactly 1 file"
exit 1
fi
-if [ ! -f $1 ]; then
+if [ ! -f "$1" ]; then
echo "File not found!"
exit 1
fi
-# flashrom doesn't recognize the machine unless you use that switch: laptop=force_I_want_a_brick
+set -v
+# flashrom doesn't recognize the machine unless you use that switch:
+# laptop=force_I_want_a_brick
# after flashing libreboot and booting the machine, flashing normally will just work.
-if [ -f "DEBLOB" ]; then
- # Means we are in src archive or git
- ./flashrom/flashrom -p internal:laptop=force_I_want_a_brick -w $1
-elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- # Means we are in bin archive and on an i686 host
- ./flashrom/i686/flashrom -p internal:laptop=force_I_want_a_brick -w $1
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- # Means we are in bin archive and on an x86_64 host
- ./flashrom/x86_64/flashrom -p internal:laptop=force_I_want_a_brick -w $1
-fi
+./flashrom/$arch/flashrom -p internal:laptop=force_I_want_a_brick -w $1
diff --git a/x60flashfrom5 b/x60flashfrom5
index b9c3067..85616ae 100755
--- a/x60flashfrom5
+++ b/x60flashfrom5
@@ -1,6 +1,6 @@
#!/bin/bash
-# x60flashfrom5 script: for X60 owners upgrading from 5th release
+# x60flashfrom5: for X60 owners upgrading from 5th release
#
# Copyright (C) 2014 Francis Rowe <info@gluglug.org.uk>
#
@@ -18,52 +18,44 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-## Don't add here. errors are expected.
-# set -u -e -v
-set -v
-
-if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- echo "Running on i686. ok."
- sleep 5
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- echo "Running on x86_64. ok."
- sleep 5
+set -u -e
+
+# These are the tested platforms
+if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ echo "Running on i686. ok."
+ arch=i686
+ sleep 5
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ echo "Running on x86_64. ok."
+ arch=x86_64
+ sleep 5
else
echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
exit 1
fi
+if [ -f "DEBLOB" ]; then
+ # In a src archive or git
+ arch=.
+fi
if [[ $EUID -ne 0 ]]; then
- echo "This script must be run as root"
- exit 1
+ echo "This script must be run as root"
+ exit 1
fi
if (( $# != 1 )); then
- echo "Usage: ./lenovobios_firstflash yourrom.rom"
- echo "usage: ./lenovobios_firstflash path/to/yourrom.rom"
+ echo "usage: $0 path/to/yourrom.rom"
echo "You need to specify exactly 1 file"
exit 1
fi
-if [ ! -f $1 ]; then
+if [ ! -f "$1" ]; then
echo "File not found!"
exit 1
fi
-# boardmismatch=force is for people upgrading from libreboot 5th release, where the new ROM's are "ThinkPad X60 / X60s / X60t"
+set -v
+# boardmismatch=force is for people upgrading from libreboot 5th release,
+# where the new ROM's are "ThinkPad X60 / X60s / X60t"
# and the old ones are "ThinkPad X60 / X60s" and flashrom complains otherwise
-if [ -f "DEBLOB" ]; then
- # Means we are in src archive or git
- ./flashrom/flashrom -p internal:boardmismatch=force -w $1
-elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]
- then
- # Means we are in bin archive and on an i686 host
- ./flashrom/i686/flashrom -p internal:boardmismatch=force -w $1
-elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]
- then
- # Means we are in bin archive and on an x86_64 host
- ./flashrom/x86_64/flashrom -p internal:boardmismatch=force -w $1
-fi
-
+./flashrom/$arch/flashrom -p internal:boardmismatch=force -w "$1"