 Chromium Code Reviews
 Chromium Code Reviews Issue 6881029:
  update_kernel: be smarter  (Closed) 
  Base URL: ssh://gitrw.chromium.org:9222/crosutils.git@master
    
  
    Issue 6881029:
  update_kernel: be smarter  (Closed) 
  Base URL: ssh://gitrw.chromium.org:9222/crosutils.git@master| Index: update_kernel.sh | 
| diff --git a/update_kernel.sh b/update_kernel.sh | 
| index 6d0e61ba489717475a47464590961ec325e71847..a98e88bef5313a91d2840880857cf3b055209340 100755 | 
| --- a/update_kernel.sh | 
| +++ b/update_kernel.sh | 
| @@ -36,8 +36,7 @@ DEFINE_string board "" "Override board reported by target" | 
| DEFINE_string device "" "Override boot device reported by target" | 
| DEFINE_string partition "" "Override kernel partition reported by target" | 
| DEFINE_string arch "" "Override architecture reported by target" | 
| -DEFINE_boolean modules false "Update modules on target" | 
| -DEFINE_boolean firmware false "Update firmware on target" | 
| +DEFINE_boolean reboot $FLAGS_TRUE "Reboot system after update" | 
| 
Mandeep Singh Baines
2011/04/20 22:54:36
Why would you not want to reboot?
 
Olof Johansson
2011/04/20 23:03:09
Mostly useful when testing the script, but seemed
 | 
| # Parse command line. | 
| FLAGS "$@" || exit 1 | 
| @@ -60,12 +59,17 @@ function learn_device() { | 
| } | 
| # Ask the target what the kernel partition is | 
| -function learn_partition() { | 
| +function learn_partition_and_ro() { | 
| [ -n "${FLAGS_partition}" ] && return | 
| ! remote_sh rootdev | 
| if [ "${REMOTE_OUT}" == "/dev/dm-0" ]; then | 
| remote_sh ls /sys/block/dm-0/slaves | 
| REMOTE_OUT="/dev/${REMOTE_OUT}" | 
| + REMOTE_VERITY=${FLAGS_TRUE} | 
| + info "System is using verity: not updating firmware" | 
| + else | 
| + REMOTE_VERITY=${FLAGS_FALSE} | 
| + info "System is not using verity: updating firmware and modules" | 
| fi | 
| if [ "${REMOTE_OUT}" == "${FLAGS_device}3" ]; then | 
| FLAGS_partition="${FLAGS_device}2" | 
| @@ -96,6 +100,16 @@ function make_kernelimage() { | 
| fi | 
| } | 
| +function copy_kernelimage() { | 
| + if [ "${FLAGS_arch}" == "arm" -a ${REMOTE_VERITY} -eq ${FLAGS_FALSE} ]; then | 
| + remote_cp_to /build/${FLAGS_board}/boot/vmlinux.uimg /boot | 
| + fi | 
| + | 
| + remote_cp_to new_kern.bin /tmp | 
| + | 
| + remote_sh dd if=/tmp/new_kern.bin of="${FLAGS_partition}" | 
| +} | 
| + | 
| function main() { | 
| trap cleanup EXIT | 
| @@ -109,7 +123,7 @@ function main() { | 
| learn_device | 
| - learn_partition | 
| + learn_partition_and_ro | 
| remote_sh uname -r -v | 
| @@ -117,35 +131,37 @@ function main() { | 
| make_kernelimage | 
| - remote_cp_to new_kern.bin /tmp | 
| - | 
| - remote_sh dd if=/tmp/new_kern.bin of="${FLAGS_partition}" | 
| - | 
| - if [[ ${FLAGS_modules} -eq ${FLAGS_TRUE} ]]; then | 
| - echo "copying modules" | 
| + if [[ ${REMOTE_VERITY} -eq ${FLAGS_FALSE} ]]; then | 
| tar -C /build/"${FLAGS_board}"/lib/modules -cjf /tmp/new_modules.tar . | 
| + tar -C /build/"${FLAGS_board}"/lib/firmware -cjf /tmp/new_firmware.tar . | 
| + remote_sh mount -o remount,rw / | 
| + echo "copying modules" | 
| remote_cp_to /tmp/new_modules.tar /tmp/ | 
| - remote_sh mount -o remount,rw / | 
| remote_sh tar -C /lib/modules -xjf /tmp/new_modules.tar | 
| - fi | 
| - if [[ ${FLAGS_firmware} -eq ${FLAGS_TRUE} ]]; then | 
| echo "copying firmware" | 
| - tar -C /build/"${FLAGS_board}"/lib/firmware -cjf /tmp/new_firmware.tar . | 
| - | 
| remote_cp_to /tmp/new_firmware.tar /tmp/ | 
| - remote_sh mount -o remount,rw / | 
| remote_sh tar -C /lib/firmware -xjf /tmp/new_firmware.tar | 
| fi | 
| - remote_reboot | 
| + echo "copying kernel" | 
| - remote_sh uname -r -v | 
| - info "old kernel: ${old_kernel}" | 
| - info "new kernel: ${REMOTE_OUT}" | 
| + copy_kernelimage | 
| + | 
| + if [ "${FLAGS_reboot}" -eq ${FLAGS_TRUE} ]; then | 
| + echo "rebooting" | 
| + | 
| + remote_reboot | 
| + | 
| + remote_sh uname -r -v | 
| + info "old kernel: ${old_kernel}" | 
| + info "new kernel: ${REMOTE_OUT}" | 
| + else | 
| + info "Not rebooting (per request)" | 
| + fi | 
| } | 
| main "$@" |