| #!/bin/bash |
| |
| # Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Changes the channel on a Chrome OS image. |
| |
| # Load common constants and variables. |
| . "$(dirname "$0")/common.sh" |
| |
| set -e |
| |
| if [ $# -ne 2 ]; then |
| cat <<EOF |
| Usage: $PROG <image.bin> <channel> |
| |
| <image.bin>: Path to image. |
| <channel>: The new channel of the image. |
| EOF |
| exit 1 |
| fi |
| |
| main() { |
| local image=$1 |
| local to=$2 |
| local rootfs lsb |
| |
| rootfs=$(make_temp_dir) |
| lsb="${rootfs}/etc/lsb-release" |
| mount_image_partition "${image}" 3 "${rootfs}" |
| # Get the current channel on the image. |
| local from=$(grep '^CHROMEOS_RELEASE_TRACK=' "${lsb}" | cut -d '=' -f 2) |
| from=${from%"-channel"} |
| echo "Current channel is '${from}'. Changing to '${to}'." |
| |
| local sudo |
| if [[ ! -w ${lsb} ]] ; then |
| sudo="sudo" |
| fi |
| ${sudo} sed -i "s/\b${from}\b/${to}/" "${lsb}" && |
| echo "Channel change successful." |
| cat "${lsb}" |
| } |
| |
| main "$@" |