aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancis Rowe <info@gluglug.org.uk>2014-12-30 23:59:33 +0000
committerFrancis Rowe <info@gluglug.org.uk>2014-12-31 00:55:43 +0000
commit97eb0d8ec18bea2536696f072375587165d90958 (patch)
tree4f5893c26a2f4861dda1e6d0974943b6da4e1903
parent683935870d5b7d01e8793811ea161239fa084e69 (diff)
downloadlibrebootfr-97eb0d8ec18bea2536696f072375587165d90958.tar.gz
librebootfr-97eb0d8ec18bea2536696f072375587165d90958.zip
Refactored the flashing scripts
-rwxr-xr-xbuild-release2
-rwxr-xr-xflash45
-rwxr-xr-xlenovobios_firstflash106
-rwxr-xr-xlenovobios_secondflash83
-rwxr-xr-xmacbook21_firstflash49
-rwxr-xr-xx60flashfrom538
6 files changed, 98 insertions, 225 deletions
diff --git a/build-release b/build-release
index b8132388..91c76c91 100755
--- a/build-release
+++ b/build-release
@@ -403,5 +403,7 @@ rm -rf libreboot_src
rm -rf libreboot_bin
echo "DONE. See libreboot_src.tar.xz and libreboot_bin.tar.xz"
+echo "NOTE FOR FCHMMR: don't forget to add ARM binaries for flashrom"
+echo "NOTE FOR FCHMMR: don't forget to add i386 binaries for flashrom/bucts"
# ------------------- DONE ----------------------
diff --git a/flash b/flash
index 98605f78..d1f714d7 100755
--- a/flash
+++ b/flash
@@ -22,50 +22,31 @@
# set -u -e -v
set -v
-# 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
-else
- echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
- exit 1
-fi
-
-# the user must be root to use flashrom
if [[ $EUID -ne 0 ]]; then
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: ./flash yourrom.rom"
+ echo "usage: ./flash 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
echo "File not found!"
exit 1
fi
-# Use flashrom to flash the ROM image:
-
+path="unknown"
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
+ path="./flashrom/flashrom"
+elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ path="./flashrom/i686/flashrom"
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ path="./flashrom/x86_64/flashrom"
+else
+ echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
+ exit 1
fi
+
+$(echo $path) -p internal -w $1
diff --git a/lenovobios_firstflash b/lenovobios_firstflash
index e5c91788..9120001a 100755
--- a/lenovobios_firstflash
+++ b/lenovobios_firstflash
@@ -22,42 +22,10 @@
# 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
-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
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."
- 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"
@@ -69,56 +37,40 @@ if [ ! -f $1 ]; then
exit 1
fi
+bucts="unknown"
+flashromsst="unknown"
+flashrommacronix="unknown"
+if [ -f "DEBLOB" ]; then
+ bucts="./bucts/bucts"
+ flashromsst="./flashrom/flashrom_lenovobios_sst"
+ flashrommacronix="./flashrom/flashrom_lenovobios_macronix"
+elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ bucts="./bucts/i686/bucts"
+ flashromsst="./flashrom/i686/flashrom_lenovobios_sst"
+ flashrommacronix="./flashrom/i686/flashrom_lenovobios_macronix"
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ bucts="./bucts/x86_64/bucts"
+ flashromsst="./flashrom/x86_64/flashrom_lenovobios_sst"
+ flashrommacronix="./flashrom/x86_64/flashrom_lenovobios_macronix"
+else
+ echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
+ exit 1
+fi
+
+# Set mucts
$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
- if [ ! -f "bucts/i686/bucts" ]; then
- echo "$errOut"
- exit 1
- fi
- ./bucts/i686/bucts 1
- else
- # x86_64
- # needed for first flashing, otherwise machine will be bricked
- if [ ! -f "bucts/x86_64/bucts" ]; then
- echo "$errOut"
- exit 1
- fi
- ./bucts/x86_64/bucts 1
- fi
-else
- # this means we are working in src
- # needed for first flashing, otherwise machine will be bricked
- if [ ! -f "bucts/bucts" ]; then
- echo "$errOut"
- exit 1
- fi
- ./bucts/bucts 1
+# this means we are working in src
+if [ ! -f "$bucts" ]; then
+ echo "$errOut"
+ exit 1
fi
-# run both. one will fail (and be harmless), the other will succeed.
+$(echo $bucts) 1
+
+$(echo $flashromsst) -p internal -w $1
+$(echo $flashrommacronix) -p internal -w $1
-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
diff --git a/lenovobios_secondflash b/lenovobios_secondflash
index f1a9fb3d..348e7340 100755
--- a/lenovobios_secondflash
+++ b/lenovobios_secondflash
@@ -22,32 +22,13 @@
# 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
-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
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: ./lenovobios_secondflash yourrom.rom"
+ echo "usage: ./lenovobios_secondflash path/to/yourrom.rom"
echo "You need to specify exactly 1 file"
exit 1
fi
@@ -56,51 +37,37 @@ if [ ! -f $1 ]; then
exit 1
fi
-# Flash it a 2nd time, to write upper 64K block
+# 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
+
+bucts="unknown"
+flashrom="unknown"
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
+ bucts="./bucts/bucts"
+ flashrom="./flashrom/flashrom"
+elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ bucts="./bucts/i686/bucts"
+ flashrom="./flashrom/i686/flashrom"
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ bucts="./bucts/x86_64/bucts"
+ flashrom="./flashrom/x86_64/flashrom"
+else
+ echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
+ exit 1
fi
+$(echo $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
- if [ ! -f "bucts/i686/bucts" ]; then
- echo "$errOut"
- exit 1
- fi
- ./bucts/i686/bucts 0
- else
- # x86_64
- if [ ! -f "bucts/x86_64/bucts" ]; then
- echo "$errOut"
- exit 1
- fi
- ./bucts/x86_64/bucts 0
- fi
-else
- # this means we are working in src
- if [ ! -f "bucts/bucts" ]; then
- echo "$errOut"
- exit 1
- fi
- ./bucts/bucts 0
+# this means we are working in src
+if [ ! -f "$bucts" ]; then
+ echo "$errOut"
+ exit 1
fi
+$(echo $bucts) 0
diff --git a/macbook21_firstflash b/macbook21_firstflash
index 1b314016..31fd813d 100755
--- a/macbook21_firstflash
+++ b/macbook21_firstflash
@@ -18,34 +18,17 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-## Don't add this here. Errors are *expected*
+## 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
-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
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: ./macbook21_firstflash yourrom.rom"
+ echo "usage: ./macbook21_firstflash path/to/yourrom.rom"
echo "You need to specify exactly 1 file"
exit 1
fi
@@ -54,18 +37,20 @@ if [ ! -f $1 ]; then
exit 1
fi
-# 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.
+# 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
+path="unknown"
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
+ path="./flashrom/flashrom"
+elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ path="./flashrom/i686/flashrom"
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ path="./flashrom/x86_64/flashrom"
+else
+ echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
+ exit 1
fi
+
+$(echo $path) -p internal:laptop=force_I_want_a_brick -w $1
+
diff --git a/x60flashfrom5 b/x60flashfrom5
index b9c30670..60ce99b6 100755
--- a/x60flashfrom5
+++ b/x60flashfrom5
@@ -22,27 +22,13 @@
# 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
-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
fi
-
if (( $# != 1 )); then
- echo "Usage: ./lenovobios_firstflash yourrom.rom"
- echo "usage: ./lenovobios_firstflash path/to/yourrom.rom"
+ echo "Usage: ./x60flashfrom5 yourrom.rom"
+ echo "usage: ./x60flashfrom5 path/to/yourrom.rom"
echo "You need to specify exactly 1 file"
exit 1
fi
@@ -54,16 +40,16 @@ fi
# 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
+path="unknown"
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
+ path="./flashrom/flashrom"
+elif [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ path="./flashrom/i686/flashrom"
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ path="./flashrom/x86_64/flashrom"
+else
+ echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
+ exit 1
fi
+$(echo $path) -p internal:boardmismatch=force -w $1