Update factory installer, factory test
* Fix build breaks
* Update to work with EFI bios
Review URL: http://codereview.chromium.org/2132008
diff --git a/memento_updater.sh b/memento_updater.sh
index 33db417..b39a3ce 100755
--- a/memento_updater.sh
+++ b/memento_updater.sh
@@ -77,11 +77,11 @@
fi
fi
-if ( set -o noclobber; echo "$$" > "$PID_FILE") 2> /dev/null;
+if ( set -o noclobber; echo "$$" > "$PID_FILE") 2> /dev/null;
then
true
else
- log "Failed to acquire lockfile: $PID_FILE."
+ log "Failed to acquire lockfile: $PID_FILE."
log "Held by $(cat $PID_FILE)"
exit 1
fi
@@ -152,7 +152,7 @@
INSTALL_DEV=$(echo $LOCAL_DEV | tr '35' '53')
fi
NEW_PART_NUM=${INSTALL_DEV##*/*[a-z]}
-# The kernel needs to be installed to its own partition.
+# The kernel needs to be installed to its own partition.
# partitions 2&3 are image A, partitions 4&5 are image B.
if [ -z "${FLAGS_kernel_partition}" ]; then
KINSTALL_DEV=$(echo $INSTALL_DEV | tr '35' '24')
@@ -170,12 +170,12 @@
ROOT_DEV=${INSTALL_DEV%%[0-9]*}
# Do some device sanity checks.
-if ! expr match "$LOCAL_DEV" '^/dev/[a-z][a-z]*[123458]$' > /dev/null
+if [ ! -b "$LOCAL_DEV" ]
then
log "didnt find good local device. local: $LOCAL_DEV install: $INSTALL_DEV"
exit 1
fi
-if ! expr match "$INSTALL_DEV" '^/dev/[a-z][a-z]*[123458]$' > /dev/null
+if [ ! -b "$INSTALL_DEV" ]
then
log "didnt find good install device. local: $LOCAL_DEV install: $INSTALL_DEV"
exit 1
@@ -284,7 +284,7 @@
MOUNTPOINT=/tmp/newpart
mkdir -p "$MOUNTPOINT"
mount "$INSTALL_DEV" "$MOUNTPOINT"
-
+
# Check version of new software if not forcing a dst partition
if [ -z "${FLAGS_dst_partition}" ]; then
NEW_VERSION=$(grep ^GOOGLE_RELEASE "$MOUNTPOINT"/etc/lsb-release | \
@@ -307,42 +307,28 @@
fi
fi
fi
-
+
"$MOUNTPOINT"/postinst "$INSTALL_DEV" 2>&1 | cat >> "$MEMENTO_AU_LOG"
[ "${PIPESTATUS[*]}" = "0 0" ]
POSTINST_RETURN_CODE=$?
umount "$MOUNTPOINT"
rmdir "$MOUNTPOINT"
-
+
# If it failed, don't update MBR but just to be safe, zero out a page of
# install device.
abort_update_if_cmd_failed_long "$POSTINST_RETURN_CODE" "$MOUNTPOINT"/postinst
# postinstall on new partition succeeded.
fi
-# flush linux caches; seems to be necessary
-sync
-echo 3 > /proc/sys/vm/drop_caches
-# Configure the PMBR to boot the new image.
-# TODO: ChromeOS EFI BIOS will need a different command to set the GPT
-# partition attributes bits to mark the new image as bootable.
-# NOTE: This won't work for ARM, because we'll need to regenerate the U-Boot
-# script when the kernel size and location are changed. Luckily it won't
-# matter because we'll ship with the GPT-based selection process. The U-Boot
-# script is just a temporary hack for bringup.
-# FIX: The current gpt tool requires a -b arg to specify the PMBR bootcode. We
-# don't want to change the code, so we have to extract it, then put it back.
-# We'll fix this RSN.
-dd if=${ROOT_DEV} bs=512 count=1 of=/tmp/oldpmbr.bin
-gpt -S boot -i $NEW_PART_NUM -b /tmp/oldpmbr.bin ${ROOT_DEV} 2>&1 | \
- cat >> "$MEMENTO_AU_LOG"
-abort_update_if_cmd_failed
-
if [ -z "${FLAGS_dst_partition}" ]; then
# mark update as complete so we don't try to update again
touch "$UPDATED_COMPLETED_FILE"
fi
+# Flush linux caches; seems to be necessary
+sync
+echo 3 > /proc/sys/vm/drop_caches
+
# tell user to reboot
log Autoupdate applied. You should now reboot
echo UPDATED