Chromium Code Reviews| Index: update_kernel.sh |
| diff --git a/update_kernel.sh b/update_kernel.sh |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..126786b2f66c97198b60b9e66c1e6e4fb27f218c |
| --- /dev/null |
| +++ b/update_kernel.sh |
| @@ -0,0 +1,86 @@ |
| +#!/bin/bash |
| + |
| +# Copyright (c) 2009-2010 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. |
| + |
| +# Script to update the kernel on a live running ChromiumOS instance. |
| + |
| +# Load common constants. This should be the first executable line. |
| +# The path to common.sh should be relative to your script's location. |
| + |
| +. "$(dirname $0)/common.sh" |
| +. "$(dirname $0)/remote_access.sh" |
| + |
| +DEFINE_string board "" "Override board reported by target" |
| +DEFINE_string partition "" "Override kernel partition reported by target" |
| + |
| +function cleanup { |
| + cleanup_remote_access |
| + rm -rf "${TMP}" |
| +} |
| + |
| +# Ask the target what the kernel partition is |
| +function learn_partition() { |
| + [ -n "${FLAGS_partition}" ] && return |
| + remote_sh cat /proc/cmdline |
|
Sameer Nanda
2010/12/02 17:22:41
probably simpler to use "rootdev" instead.
|
| + if echo "${REMOTE_OUT}" | grep -q "/dev/sda3"; then |
| + FLAGS_partition="/dev/sda2" |
| + else |
| + FLAGS_partition="/dev/sda4" |
| + fi |
| + if [ -z "${FLAGS_partition}" ]; then |
| + error "Partition required" |
| + exit 1 |
| + fi |
| + info "Target reports kernel partition is ${FLAGS_partition}" |
| +} |
| + |
| +function main() { |
| + assert_outside_chroot |
| + |
| + cd $(dirname "$0") |
| + |
| + FLAGS "$@" || exit 1 |
| + eval set -- "${FLAGS_ARGV}" |
| + |
| + set -e |
| + |
| + trap cleanup EXIT |
| + |
| + TMP=$(mktemp -d /tmp/image_to_live.XXXX) |
| + |
| + remote_access_init |
| + |
| + learn_board |
| + |
| + remote_sh uname -r -v |
| + |
| + old_kernel="${REMOTE_OUT}" |
| + |
| + cmd="vbutil_kernel --pack new_kern.bin \ |
| + --keyblock /usr/share/vboot/devkeys/kernel.keyblock \ |
| + --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \ |
| + --version 1 \ |
| + --config ../build/images/${FLAGS_board}/latest/config.txt \ |
| + --bootloader /lib64/bootstub/bootstub.efi \ |
| + --vmlinuz /build/${FLAGS_board}/boot/vmlinuz" |
| + |
| + ./enter_chroot.sh -- "${cmd}" |
| + |
| + learn_partition |
| + |
| + remote_cp_to new_kern.bin /tmp |
| + |
| + remote_sh dd if=/tmp/new_kern.bin of="${FLAGS_partition}" |
| + |
| + remote_reboot |
| + |
| + remote_sh uname -r -v |
| + |
| + info "old kernel: ${old_kernel}" |
| + |
| + info "new kernel: ${REMOTE_OUT}" |
| +} |
| + |
| +main $@ |