Index: factory_install.sh |
diff --git a/factory_install.sh b/factory_install.sh |
index 9d88e6caa6db4ab855cf369e8a305d2120f6a6a0..ac6fc21d90efbd6013991521498f933fcf93f2bc 100644 |
--- a/factory_install.sh |
+++ b/factory_install.sh |
@@ -89,7 +89,8 @@ fi |
log "Waiting for ethernet connectivity to install" |
log "Or disable developer mode to factory reset." |
-while ! ifconfig eth0 | grep -q "inet addr"; do |
+while ! ifconfig eth0 | grep -q "inet addr" && \ |
Hung-Te
2011/03/29 12:57:34
Why do we want two inet devices?
And, you don't ne
Nick Sanders
2011/03/30 00:10:44
This indicates, "loop until either eth0 or eth1 is
Che-Liang Chiou
2011/03/30 08:57:44
I changed this part, and hope that it would be mor
|
+ ! ifconfig eth1 | grep -q "inet addr"; do |
# If developer switch is flipped, go to "reset mode" instead of |
# network install mode. Make sure gpio can be read (gpio_setup may |
# fail if the device is not ready). |
@@ -105,13 +106,28 @@ while ! ifconfig eth0 | grep -q "inet addr"; do |
fi |
sleep 1 |
done |
-log "$(ifconfig eth0 | grep 'inet addr')" |
+log "eth0: $(ifconfig eth0 | grep 'inet addr')" |
+log "eth1: $(ifconfig eth1 | grep 'inet addr')" |
set_time || exit 1 |
-# TODO(adlr): pick an install device in a matter that works on x86 and ARM. |
-# This works on x86 only, afaik. |
-DST_DRIVE=/dev/sda |
+# Is there a better x86 test? |
+if uname -m | grep -q "^i.86\$"; then |
+ ARCH="INTEL" |
+elif [ $(uname -m ) = "x86_64" ]; then |
+ ARCH="INTEL" |
+elif [ $(uname -m ) = "armv7l" ]; then |
Hung-Te
2011/03/29 12:57:34
So we only support v71?
|
+ ARCH="ARM" |
+else |
Nick Sanders
2011/03/30 00:10:44
This has been an annoying problem in general:
http
|
+ log "Error: Failed to auto detect architecture" |
+ exit 1 |
+fi |
+ |
+if [ "$ARCH" = "INTEL" ]; then |
+ DST_DRIVE=/dev/sda |
+else |
+ DST_DRIVE=/dev/mmcblk0 |
+fi |
DST_FACTORY_PART=3 |
DST_RELEASE_PART=5 |
DST_OEM_PART=8 |
@@ -121,7 +137,7 @@ DST_FIRMWARE=/tmp/firmware.sh |
# Light up screen in case you can't see our splash image. |
LIGHTUP_SCREEN="/usr/sbin/lightup_screen" |
-if [ -x /usr/sbin/lightup_screen ]; then |
+if [ -x "${LIGHTUP_SCREEN}" ]; then |
${LIGHTUP_SCREEN} |
else |
log "${LIGHTUP_SCREEN} does not exist or not executable" |
@@ -155,6 +171,7 @@ fi |
sync |
echo 3 > /proc/sys/vm/drop_caches |
/sbin/sfdisk -R "$DST_DRIVE" |
+partprobe # inform the OS of partition table changes |
log "Done preparing disk" |
@@ -171,7 +188,7 @@ for i in EFI OEM STATE RELEASE FACTORY FIRMWARE; do |
DST="${DST_FIRMWARE}" |
else |
PART=$(eval "echo \$DST_${i}_PART") |
- DST="${DST_DRIVE}${PART}" |
+ DST="$(make_partition_dev ${DST_DRIVE} ${PART})" |
fi |
log "Factory Install: Installing $i image to $DST" |
@@ -216,8 +233,10 @@ done |
if ! cgpt add -i $((${DST_RELEASE_PART} - 1)) -P 0 -T 0 -S 0 ${DST_DRIVE}; then |
log "Factory Install: failed to lock release image. Destroy all kernels." |
# Destroy kernels otherwise the system is still bootable. |
- dd if=/dev/zero of=${DST_DRIVE}$((${DST_RELEASE_PART} - 1)) |
- dd if=/dev/zero of=${DST_DRIVE}$((${DST_FACTORY_PART} - 1)) |
+ DST_RELEASE=$(make_partition_dev ${DST_DRIVE} $((${DST_RELEASE_PART} - 1))) |
+ DST_FACTORY=$(make_partition_dev ${DST_DRIVE} $((${DST_FACTORY_PART} - 1))) |
+ dd if=/dev/zero of=$DST_RELEASE |
+ dd if=/dev/zero of=$DST_FACTORY |
exit 1 |
fi |