| Index: src/platform/memento_softwareupdate/memento_updater.sh
 | 
| diff --git a/src/platform/memento_softwareupdate/memento_updater.sh b/src/platform/memento_softwareupdate/memento_updater.sh
 | 
| index 33db4171de8faa8417e4ccbe741fa0d93eaf7e58..b39a3ce0fb23aa51fa36c8f6514542033e3dbe78 100755
 | 
| --- a/src/platform/memento_softwareupdate/memento_updater.sh
 | 
| +++ b/src/platform/memento_softwareupdate/memento_updater.sh
 | 
| @@ -77,11 +77,11 @@ if [ -z "${FLAGS_dst_partition}" ]; then
 | 
|    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 @@ else
 | 
|    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 @@ fi
 | 
|  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 @@ if [ $FLAGS_skip_postinst -eq $FLAGS_FALSE ]; then
 | 
|    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 @@ if [ $FLAGS_skip_postinst -eq $FLAGS_FALSE ]; then
 | 
|        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
 | 
| 
 |