summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/install/index.html17
-rwxr-xr-xflash111
-rwxr-xr-xforceflash54
-rwxr-xr-xlenovobios_firstflash72
-rwxr-xr-xlenovobios_secondflash68
-rwxr-xr-xmacbook21_firstflash56
6 files changed, 101 insertions, 277 deletions
diff --git a/docs/install/index.html b/docs/install/index.html
index eda8bfa..856a9da 100644
--- a/docs/install/index.html
+++ b/docs/install/index.html
@@ -179,7 +179,7 @@
<p>
Run the script:<br/>
- <b>$ sudo ./lenovobios_firstflash bin/<a href="#rom">YOURBOARD/YOURROM</a>.</b>
+ <b>$ sudo ./flash i945lenovo_firstflash bin/<a href="#rom">YOURBOARD/YOURROM</a>.</b>
</p>
<div class="important">
@@ -214,7 +214,7 @@
<p>
When you have booted up again:<br/>
- <b>$ sudo ./lenovobios_secondflash bin/<a href="#rom">YOURBOARD/YOURROM</a></b>
+ <b>$ sudo ./flash i945lenovo_secondflash bin/<a href="#rom">YOURBOARD/YOURROM</a></b>
</p>
<div class="important">
@@ -296,13 +296,8 @@
</p>
<p>
- Flashing is actually easy (compared to X60/T60).<br/>
- <b>$ sudo flashrom -p internal:laptop=force_I_want_a_brick -w bin/<a href="#rom">YOURBOARD/YOURROM</a></b>
- </p>
-
- <p>
- Alternatively, a script is provided which does the same thing:<br/>
- <b>$ sudo ./macbook21_firstflash bin/<a href="#rom">YOURBOARD/YOURROM</a></b>
+ Use this flashing script, to install libreboot:<br/>
+ <b>$ sudo ./flash i945apple_firstflash bin/<a href="#rom">YOURBOARD/YOURROM</a></b>
</p>
<div class="important">
@@ -399,14 +394,14 @@
</p>
<p>
Flash the ROM:<br/>
- <b>$ sudo ./flash bin/<a href="#rom">YOURBOARD/YOURROM</a></b>
+ <b>$ sudo ./flash update bin/<a href="#rom">YOURBOARD/YOURROM</a></b>
</p>
<p>
If you are sure that you are flashing the correct image but you get the error
<b>This coreboot image (LENOVO:ThinkPad X60) does not appear to be correct for the detected mainboard (Lenovo:ThinkPad X60 / X60s / X60t) or
similar (if it's a different board), then do</b>:
<br/>
- <b>$ sudo ./forceflash bin/<a href="#rom">YOURBOARD/YOURROM</a></b>
+ <b>$ sudo ./flash forceupdate bin/<a href="#rom">YOURBOARD/YOURROM</a></b>
</p>
<div class="important">
diff --git a/flash b/flash
index d1f714d..bb3384f 100755
--- a/flash
+++ b/flash
@@ -1,8 +1,8 @@
#!/bin/bash
-# flash script: uses flashrom to flash a new libreboot ROM image onto your machine
+# flash script: uses flashrom to flash a libreboot ROM image
#
-# Copyright (C) 2014 Francis Rowe <info@gluglug.org.uk>
+# Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -20,33 +20,112 @@
## Don't add here. errors are expected.
# set -u -e -v
-set -v
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
-if (( $# != 1 )); then
- echo "Usage: ./flash yourrom.rom"
- echo "usage: ./flash path/to/yourrom.rom"
- echo "You need to specify exactly 1 file"
+
+arch="unknown"
+if [ $(uname -i) = "i686" ] || [ $(uname -m) = "i686" ]; then
+ arch="i686"
+elif [ $(uname -i) = "x86_64" ] || [ $(uname -m) = "x86_64" ]; then
+ arch="x86_64"
+else
+ echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
+ exit 1
+fi
+
+usage="usage: ./flash mode path/to/yourrom.rom"
+availablemodes="update, forceupdate, i945lenovo_firstflash, i945lenovo_secondflash, i945apple_firstflash"
+
+mode="unknown"
+rompath="unknown"
+
+# User specified no or too few/many parameters
+if (( $# != 2 )); then
+ echo "$usage"
+ echo "You need to specify exactly one mode, and one file"
+ echo "$availablemodes"
exit 1
fi
-if [ ! -f $1 ]; then
+
+# User specified an invalid mode of operation
+if [ "$1" = "update" ] || [ "$1" = "forceupdate" ] || [ "$1" = "i945lenovo_firstflash" ] || [ "$1" != "i945lenovo_secondflash" ] || [ "$1" != "i945apple_firstflash" ]; then
+ echo "Mode selected: $1"
+else
+ echo "$usage"
+ echo "Invalid mode. Modes available: $availablemodes"
+ exit 1
+fi
+
+# The specified file does not exist
+if [ ! -f "$2" ]; then
echo "File not found!"
exit 1
fi
-path="unknown"
+# For easy of readability
+mode=$1
+rompath=$2
+
+flashrom="unknown"
if [ -f "DEBLOB" ]; then
- 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"
+ # git or libreboot_src
+ flashrom="./flashrom/flashrom"
else
- echo "This script must be run on an i686 or x86_64 host. x86_64 is recommended."
+ # libreboot_util
+ flashrom="./flashrom/$arch/flashrom"
+fi
+if [ 1 -f "$flashrom" ]; then
+ echo "flashrom binary not present"
exit 1
fi
-$(echo $path) -p internal -w $1
+# i945 lenovobios
+bucts="unknown"
+flashrom_lenovobios_sst="unknown"
+flashrom_lenovobios_macronix="unknown"
+if [ "$mode" = "i945lenovo_firstflash" ] || [ "$mode" = "i945lenovo_secondflash" ]; then
+ if [ -f "DEBLOB" ]; then
+ # git or libreboot_src
+ bucts="./bucts/bucts"
+ flashrom_lenovobios_sst="./flashrom/flashrom_lenovobios_sst"
+ flashrom_lenovobios_macronix="./flashrom/flashrom_lenovobios_sst"
+ else
+ # libreboot_util
+ bucts="./bucts/$arch/bucts"
+ flashrom_lenovobios_sst="./flashrom/$arch/flashrom_lenovobios_sst"
+ flashrom_lenovobios_macronix="./flashrom/$arch/flashrom_lenovobios_sst"
+ fi
+
+ # anti-bricking precaution
+ if [ ! -f "$bucts" ]; then
+ echo "bucts binary not present. ABORTING so as to protect against bricking the machine."
+ exit 1
+ fi
+
+ # fail if flashrom is not present
+ if [ ! -f "$flashrom_lenovobios_sst" ] || [ ! -f "$flashrom_lenovobios_macronix" ]; then
+ echo "Flashrom binaries not present."
+ exit 1
+ fi
+fi
+
+if [ "$mode" = "update" ]; then
+ $flashrom -p internal -w "$rompath"
+elif [ "$mode" = "forceupdate" ]; then
+ $flashrom -p internal:boardmismatch=force -w "$rompath"
+elif [ "$mode" = "i945apple_firstflash" ]; then
+ $flashrom -p internal:laptop=force_I_want_a_brick -w "$rompath"
+elif [ "$mode" = "i945lenovo_firstflash" ]; then
+ $bucts 1 # needed to prevent bricks.
+ # One will fail (this is harmless), and the other will succeed.
+ $flashrom_lenovobios_sst -p internal -w "$rompath"
+ $flashrom_lenovobios_macronix -p internal -w "$rompath"
+elif [ "$mode" = "i945lenovo_secondflash" ]; then
+ $flashrom -p internal -w "$rompath"
+ $bucts 0
+fi
+
+
diff --git a/forceflash b/forceflash
deleted file mode 100755
index 64d4d68..0000000
--- a/forceflash
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-
-# forceflash script - be very careful when using this, because it can flash
-# the wrong ROM image on the wrong machine if you tell it to. YOU HAVE BEEN WARNED.
-# This script is for re-flashing a new image for the same machine when the board name was changed
-#
-# Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# 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 [[ $EUID -ne 0 ]]; then
- echo "This script must be run as root"
- exit 1
-fi
-if (( $# != 1 )); then
- echo "Usage: ./forceflash yourrom.rom"
- echo "usage: ./forceflash path/to/yourrom.rom"
- echo "You need to specify exactly 1 file"
- exit 1
-fi
-if [ ! -f $1 ]; then
- echo "File not found!"
- exit 1
-fi
-
-path="unknown"
-if [ -f "DEBLOB" ]; then
- 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
diff --git a/lenovobios_firstflash b/lenovobios_firstflash
deleted file mode 100755
index 4230c3b..0000000
--- a/lenovobios_firstflash
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/bash
-
-# lenovobios_firstflash: flashes libreboot on an X60/T60 while Lenovo BIOS is running
-#
-# Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# 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 [[ $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 "You need to specify exactly 1 file"
- exit 1
-fi
-if [ ! -f $1 ]; then
- echo "File not found!"
- 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 bucts
-# this means we are working in src
-if [ ! -f "$bucts" ]; then
- echo "BUCTS failed. Make sure BUC.TS is 1, or else you will brick your machine. ABORTING so as to protect against bricking the machine."
- exit 1
-fi
-
-$(echo $bucts) 1
-
-$(echo $flashromsst) -p internal -w $1
-$(echo $flashrommacronix) -p internal -w $1
-
-
diff --git a/lenovobios_secondflash b/lenovobios_secondflash
deleted file mode 100755
index 8c068c7..0000000
--- a/lenovobios_secondflash
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/bash
-
-# lenovobios_secondflash: flashes libreboot during 2nd boot, after 1st initial overwrite of the lenovo bios on X60/T60
-#
-# Copyright (C) 2014, 2015 Francis Rowe <info@gluglug.org.uk>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# 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 [[ $EUID -ne 0 ]]; then
- echo "This script must be run as root"
- exit 1
-fi
-if (( $# != 1 )); then
- 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
-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"
-# and the old ones are "ThinkPad X60 / X60s" and flashrom complains otherwise
-
-bucts="unknown"
-flashrom="unknown"
-if [ -f "DEBLOB" ]; then
- 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
-# this means we are working in src
-if [ ! -f "$bucts" ]; then
- echo "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."
- exit 1
-fi
-
-$(echo $bucts) 0
diff --git a/macbook21_firstflash b/macbook21_firstflash
deleted file mode 100755
index 31fd813..0000000
--- a/macbook21_firstflash
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/bash
-
-# macbook21_firstflash script: initial flashing script for MacBook2,1
-#
-# Copyright (C) 2014 Francis Rowe <info@gluglug.org.uk>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# 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 [[ $EUID -ne 0 ]]; then
- echo "This script must be run as root"
- exit 1
-fi
-if (( $# != 1 )); then
- 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
-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"
-# and the old ones are "ThinkPad X60 / X60s" and flashrom complains otherwise
-
-path="unknown"
-if [ -f "DEBLOB" ]; then
- 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
-