| OLD | NEW |
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 | 2 |
| 3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 # Script to update an image onto a live running ChromiumOS instance. | 7 # Script to update an image onto a live running ChromiumOS instance. |
| 8 | 8 |
| 9 # Load common constants. This should be the first executable line. | 9 # Load common constants. This should be the first executable line. |
| 10 # The path to common.sh should be relative to your script's location. | 10 # The path to common.sh should be relative to your script's location. |
| 11 | 11 |
| 12 . "$(dirname $0)/common.sh" | 12 . "$(dirname $0)/common.sh" |
| 13 . "$(dirname $0)/remote_access.sh" | 13 . "$(dirname $0)/remote_access.sh" |
| 14 | 14 |
| 15 DEFINE_boolean ignore_version ${FLAGS_TRUE} \ | 15 DEFINE_boolean ignore_version ${FLAGS_TRUE} \ |
| 16 "Ignore existing version on running instance and always update" | 16 "Ignore existing version on running instance and always update" |
| 17 DEFINE_boolean ignore_hostname ${FLAGS_TRUE} \ | 17 DEFINE_boolean ignore_hostname ${FLAGS_TRUE} \ |
| 18 "Ignore existing AU hostname on running instance use this hostname" | 18 "Ignore existing AU hostname on running instance use this hostname" |
| 19 DEFINE_boolean update_known_hosts ${FLAGS_FALSE} \ | 19 DEFINE_boolean update_known_hosts ${FLAGS_FALSE} \ |
| 20 "Update your known_hosts with the new remote instance's key" | 20 "Update your known_hosts with the new remote instance's key" |
| 21 DEFINE_boolean verbose ${FLAGS_FALSE} \ |
| 22 "Whether to output verbose information for debugging." |
| 21 | 23 |
| 22 function kill_all_devservers { | 24 function kill_all_devservers { |
| 23 # Using ! here to avoid exiting with set -e is insufficient, so use | 25 # Using ! here to avoid exiting with set -e is insufficient, so use |
| 24 # || true instead. | 26 # || true instead. |
| 25 pkill -fx ".*devserver\.py" || true | 27 pkill -fx ".*devserver\.py" || true |
| 26 } | 28 } |
| 27 | 29 |
| 28 function cleanup { | 30 function cleanup { |
| 29 echo "Killing dev server." | 31 echo "Killing dev server." |
| 30 kill_all_devservers | 32 kill_all_devservers |
| 31 rm -rf "${TMP}" | 33 rm -rf "${TMP}" |
| 32 } | 34 } |
| 33 | 35 |
| 34 function remote_reboot_sh { | 36 function remote_reboot_sh { |
| 35 rm -f "${TMP_KNOWN_HOSTS}" | 37 rm -f "${TMP_KNOWN_HOSTS}" |
| 36 remote_sh "$@" | 38 remote_sh "$@" |
| 37 } | 39 } |
| 38 | 40 |
| 39 function start_dev_server { | 41 function start_dev_server { |
| 40 kill_all_devservers | 42 kill_all_devservers |
| 41 ./enter_chroot.sh "./start_devserver > /dev/null 2>&1" & | 43 if [ ${FLAGS_verbose} -eq ${FLAGS_FALSE} ]; then |
| 44 ./enter_chroot.sh "./start_devserver > /dev/null 2>&1" & |
| 45 else |
| 46 ./enter_chroot.sh "./start_devserver" & |
| 47 fi |
| 42 echo -n "Waiting on devserver to start" | 48 echo -n "Waiting on devserver to start" |
| 43 until netstat -anp 2>&1 | grep 8080 > /dev/null; do | 49 until netstat -anp 2>&1 | grep 8080 > /dev/null; do |
| 44 sleep .5 | 50 sleep .5 |
| 45 echo -n "." | 51 echo -n "." |
| 46 done | 52 done |
| 47 echo "" | 53 echo "" |
| 48 } | 54 } |
| 49 | 55 |
| 50 function prepare_update_metadata { | 56 function prepare_update_metadata { |
| 51 remote_sh "mount -norw,remount /" | 57 remote_sh "mount -norw,remount /" |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 remote_reboot | 168 remote_reboot |
| 163 exit 1 | 169 exit 1 |
| 164 fi | 170 fi |
| 165 | 171 |
| 166 start_dev_server | 172 start_dev_server |
| 167 | 173 |
| 168 prepare_update_metadata | 174 prepare_update_metadata |
| 169 | 175 |
| 170 if ! run_auto_update; then | 176 if ! run_auto_update; then |
| 171 echo "Update was not successful." | 177 echo "Update was not successful." |
| 172 exit | 178 exit 1 |
| 173 fi | 179 fi |
| 174 | 180 |
| 175 remote_reboot | 181 remote_reboot |
| 176 | 182 |
| 177 if [[ ${FLAGS_update_hostkey} -eq ${FLAGS_TRUE} ]]; then | 183 if [[ ${FLAGS_update_hostkey} -eq ${FLAGS_TRUE} ]]; then |
| 178 local known_hosts="${HOME}/.ssh/known_hosts" | 184 local known_hosts="${HOME}/.ssh/known_hosts" |
| 179 cp "${known_hosts}" "${known_hosts}~" | 185 cp "${known_hosts}" "${known_hosts}~" |
| 180 grep -v "^${FLAGS_remote} " "${known_hosts}" > "${TMP}/new_known_hosts" | 186 grep -v "^${FLAGS_remote} " "${known_hosts}" > "${TMP}/new_known_hosts" |
| 181 cat "${TMP}/new_known_hosts" "${TMP_KNOWN_HOSTS}" > "${known_hosts}" | 187 cat "${TMP}/new_known_hosts" "${TMP_KNOWN_HOSTS}" > "${known_hosts}" |
| 182 chmod 0640 "${known_hosts}" | 188 chmod 0640 "${known_hosts}" |
| 183 echo "New updated in ${known_hosts}, backup made." | 189 echo "New updated in ${known_hosts}, backup made." |
| 184 fi | 190 fi |
| 185 | 191 |
| 186 remote_sh "grep ^CHROMEOS_RELEASE_DESCRIPTION= /etc/lsb-release" | 192 remote_sh "grep ^CHROMEOS_RELEASE_DESCRIPTION= /etc/lsb-release" |
| 187 local release_description=$(echo $REMOTE_OUT | cut -d '=' -f 2) | 193 local release_description=$(echo $REMOTE_OUT | cut -d '=' -f 2) |
| 188 echo "Update was successful and rebooted to $release_description" | 194 echo "Update was successful and rebooted to $release_description" |
| 189 | 195 |
| 190 return 0 | 196 return 0 |
| 191 } | 197 } |
| 192 | 198 |
| 193 main $@ | 199 main $@ |
| OLD | NEW |