| OLD | NEW |
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 | 2 |
| 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2010 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 # Helper script that generates the signed kernel image | 7 # Helper script that generates the signed kernel image |
| 8 | 8 |
| 9 # --- BEGIN COMMON.SH BOILERPLATE --- | 9 # --- BEGIN COMMON.SH BOILERPLATE --- |
| 10 # Load common CrOS utilities. Inside the chroot this file is installed in | 10 # Load common CrOS utilities. Inside the chroot this file is installed in |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 DEFINE_string root "/dev/sd%D%P" \ | 57 DEFINE_string root "/dev/sd%D%P" \ |
| 58 "Expected device root partition" | 58 "Expected device root partition" |
| 59 # If provided, will automatically add verified boot arguments. | 59 # If provided, will automatically add verified boot arguments. |
| 60 DEFINE_string rootfs_image "" \ | 60 DEFINE_string rootfs_image "" \ |
| 61 "Optional path to the rootfs device or image.(Default: \"\")" | 61 "Optional path to the rootfs device or image.(Default: \"\")" |
| 62 DEFINE_string rootfs_hash "" \ | 62 DEFINE_string rootfs_hash "" \ |
| 63 "Optional path to output the rootfs hash to. (Default: \"\")" | 63 "Optional path to output the rootfs hash to. (Default: \"\")" |
| 64 DEFINE_integer verity_error_behavior 2 \ | 64 DEFINE_integer verity_error_behavior 2 \ |
| 65 "Verified boot error behavior [0: I/O errors, 1: reboot, 2: nothing] \ | 65 "Verified boot error behavior [0: I/O errors, 1: reboot, 2: nothing] \ |
| 66 (Default: 2)" | 66 (Default: 2)" |
| 67 DEFINE_integer verity_tree_depth 0 \ | |
| 68 "Optional Verified boot hash tree depth. (Default: 0)" | |
| 69 DEFINE_integer verity_max_ios -1 \ | 67 DEFINE_integer verity_max_ios -1 \ |
| 70 "Optional number of outstanding I/O operations. (Default: -1)" | 68 "Optional number of outstanding I/O operations. (Default: -1)" |
| 71 DEFINE_string verity_hash_alg "sha1" \ | 69 DEFINE_string verity_hash_alg "sha1" \ |
| 72 "Cryptographic hash algorithm used for dm-verity. (Default: sha1)" | 70 "Cryptographic hash algorithm used for dm-verity. (Default: sha1)" |
| 73 | 71 |
| 74 # TODO(clchiou): Remove this flag after arm verified boot is stable | 72 # TODO(clchiou): Remove this flag after arm verified boot is stable |
| 75 DEFINE_boolean crosbug12352_arm_kernel_signing ${FLAGS_FALSE} \ | 73 DEFINE_boolean crosbug12352_arm_kernel_signing ${FLAGS_FALSE} \ |
| 76 "Sign kernel partition for ARM images (temporary hack)." | 74 "Sign kernel partition for ARM images (temporary hack)." |
| 77 | 75 |
| 78 # Parse flags | 76 # Parse flags |
| (...skipping 15 matching lines...) Expand all Loading... |
| 94 grep "Block size" | | 92 grep "Block size" | |
| 95 tr -d ' ' | | 93 tr -d ' ' | |
| 96 cut -f2 -d:) | 94 cut -f2 -d:) |
| 97 info "rootfs is ${root_fs_blocks} blocks of ${root_fs_block_sz} bytes" | 95 info "rootfs is ${root_fs_blocks} blocks of ${root_fs_block_sz} bytes" |
| 98 if [[ ${root_fs_block_sz} -ne 4096 ]]; then | 96 if [[ ${root_fs_block_sz} -ne 4096 ]]; then |
| 99 error "Root file system blocks are not 4k!" | 97 error "Root file system blocks are not 4k!" |
| 100 fi | 98 fi |
| 101 | 99 |
| 102 info "Generating root fs hash tree." | 100 info "Generating root fs hash tree." |
| 103 # Runs as sudo in case the image is a block device. | 101 # Runs as sudo in case the image is a block device. |
| 104 table=$(sudo verity create ${FLAGS_verity_tree_depth} \ | 102 # First argument to verity is reserved/unused and MUST be 0 |
| 103 table=$(sudo verity create 0 \ |
| 105 ${FLAGS_verity_hash_alg} \ | 104 ${FLAGS_verity_hash_alg} \ |
| 106 ${FLAGS_rootfs_image} \ | 105 ${FLAGS_rootfs_image} \ |
| 107 ${root_fs_blocks} \ | 106 ${root_fs_blocks} \ |
| 108 ${FLAGS_rootfs_hash}) | 107 ${FLAGS_rootfs_hash}) |
| 109 if [[ -f "${FLAGS_rootfs_hash}" ]]; then | 108 if [[ -f "${FLAGS_rootfs_hash}" ]]; then |
| 110 sudo chmod a+r "${FLAGS_rootfs_hash}" | 109 sudo chmod a+r "${FLAGS_rootfs_hash}" |
| 111 fi | 110 fi |
| 112 # Don't claim the root device unless the root= flag is pointed to | 111 # Don't claim the root device unless the root= flag is pointed to |
| 113 # the verified boot device. Doing so will claim /dev/sdDP out from | 112 # the verified boot device. Doing so will claim /dev/sdDP out from |
| 114 # under the system. | 113 # under the system. |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 info "Cleaning up temporary files: ${WORK}" | 293 info "Cleaning up temporary files: ${WORK}" |
| 295 rm ${WORK} | 294 rm ${WORK} |
| 296 rmdir ${FLAGS_working_dir} | 295 rmdir ${FLAGS_working_dir} |
| 297 fi | 296 fi |
| 298 | 297 |
| 299 info "Kernel partition image emitted: ${FLAGS_to}" | 298 info "Kernel partition image emitted: ${FLAGS_to}" |
| 300 | 299 |
| 301 if [[ -f ${FLAGS_rootfs_hash} ]]; then | 300 if [[ -f ${FLAGS_rootfs_hash} ]]; then |
| 302 info "Root filesystem hash emitted: ${FLAGS_rootfs_hash}" | 301 info "Root filesystem hash emitted: ${FLAGS_rootfs_hash}" |
| 303 fi | 302 fi |
| OLD | NEW |