fix measure.sh to fit arm64 filepaths BUG=b/410625960 Change-Id: I507eb62843a514b1c542c22d49d217a4e9e7f56f Reviewed-on: https://cos-review.googlesource.com/c/third_party/platform/vboot_reference/+/104382 Reviewed-by: Robert Kolchmeyer <rkolchmeyer@google.com> Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com> Reviewed-by: Kevin Berry <kpberry@google.com>
diff --git a/scripts/measured_boot_hashes/measure.sh b/scripts/measured_boot_hashes/measure.sh index af60ab3..d0a6752 100755 --- a/scripts/measured_boot_hashes/measure.sh +++ b/scripts/measured_boot_hashes/measure.sh
@@ -12,7 +12,7 @@ declare P12_FILE declare VMLINUZ_A_FILE VMLINUZ_B_FILE declare GRUB_CFG_FILE -declare BOOTX64_EFI_FILE GRUB_EFI_FILE +declare BOOT_EFI_FILE GRUB_EFI_FILE declare SHIM_SIG_FILE GRUB_SIG_FILE @@ -58,7 +58,7 @@ VMLINUZ_A_FILE="$TMP_DIR_NAME/vmlinuz.A" VMLINUZ_B_FILE="$TMP_DIR_NAME/vmlinuz.B" GRUB_CFG_FILE="$TMP_DIR_NAME/grub.cfg" - BOOTX64_EFI_FILE="$TMP_DIR_NAME/bootx64.efi" + BOOT_EFI_FILE="$TMP_DIR_NAME/boot.efi" GRUB_EFI_FILE="$TMP_DIR_NAME/grub-lakitu.efi" SHIM_SIG_FILE="$TMP_DIR_NAME/shim_out.sig" GRUB_SIG_FILE="$TMP_DIR_NAME/grub_out.sig" @@ -91,15 +91,32 @@ # Copies boot-related files from the extracted partition image using mcopy. # extract_boot_components() { + local arch="$1" + local shim_path="" + + if [ "$arch" == "x86_64" ]; then + shim_path="::/efi/boot/bootx64.efi" + elif [ "$arch" == "aarch64" ]; then + shim_path="::/efi/boot/bootaa64.efi" + else + echo "Error: Unknown arch '$arch'." + return 1 + fi + echo "Copying files from partition image '$P12_FILE'..." + declare -A files_to_copy=( ["::/syslinux/vmlinuz.A"]="$VMLINUZ_A_FILE" - ["::/syslinux/vmlinuz.B"]="$VMLINUZ_B_FILE" ["::/efi/boot/grub.cfg"]="$GRUB_CFG_FILE" - ["::/efi/boot/bootx64.efi"]="$BOOTX64_EFI_FILE" + ["$shim_path"]="$BOOT_EFI_FILE" ["::/efi/boot/grub-lakitu.efi"]="$GRUB_EFI_FILE" ) + # vmlinuz.B file exists on amd64 but not on arm64 + if [ "$arch" == "x86_64" ]; then + files_to_copy["::/syslinux/vmlinuz.B"]="$VMLINUZ_B_FILE" + fi + for src in "${!files_to_copy[@]}"; do local dest="${files_to_copy[$src]}" echo "Copying '$src' to '$dest'..." @@ -208,14 +225,15 @@ main() { # 1. Parameter Handling & Initial Checks - if [[ "$#" -ne 3 ]]; then - echo "Usage: $0 <os_image_path> <output_json_file> <channel>" - echo "Example: $0 /path/to/image.bin /path/to/output.json stable" + if [[ "$#" -ne 4 ]]; then + echo "Usage: $0 <os_image_path> <output_json_file> <channel> <build_architecture>" + echo "Example: $0 /path/to/image.bin /path/to/output.json stable x86_64" return 1 fi local os_image_path="$1" local output_json_file="$2" local channel="$3" + local arch="$4" if [[ ! -f "$os_image_path" ]]; then echo "Error: OS image path '$os_image_path' not found." @@ -227,24 +245,26 @@ # 2. Setup and Extraction setup_temp_dir extract_partition_12 "$os_image_path" || return 1 - extract_boot_components || return 1 + extract_boot_components "$arch" || return 1 # 3. Compute All Hashes echo "Computing all required hashes..." - local vmlinuz_a_hash vmlinuz_b_hash kernel_cmdline_a_hash kernel_cmdline_b_hash shim_hash grub_hash + local vmlinuz_a_hash vmlinuz_b_hash="" kernel_cmdline_a_hash kernel_cmdline_b_hash shim_hash grub_hash vmlinuz_a_hash=$(compute_file_hash "$VMLINUZ_A_FILE") - vmlinuz_b_hash=$(compute_file_hash "$VMLINUZ_B_FILE") + if [ "$arch" == "x86_64" ]; then + vmlinuz_b_hash=$(compute_file_hash "$VMLINUZ_B_FILE") + fi kernel_cmdline_a_hash=$(compute_cmdline_hash "$GRUB_CFG_FILE" "A") kernel_cmdline_b_hash=$(compute_cmdline_hash "$GRUB_CFG_FILE" "B") - shim_hash=$(compute_efi_hash "$BOOTX64_EFI_FILE" "$SHIM_SIG_FILE") || return 1 + shim_hash=$(compute_efi_hash "$BOOT_EFI_FILE" "$SHIM_SIG_FILE") || return 1 grub_hash=$(compute_efi_hash "$GRUB_EFI_FILE" "$GRUB_SIG_FILE") || return 1 echo "Kernel (vmlinuz.A) hash: $vmlinuz_a_hash" echo "Kernel (vmlinuz.B) hash: $vmlinuz_b_hash" echo "Kernel cmdline (image A) hash: $kernel_cmdline_a_hash" echo "Kernel cmdline (image B) hash: $kernel_cmdline_b_hash" - echo "bootx64.efi (shim) hash: $shim_hash" + echo "bootx64.efi/bootaa64.efi (shim) hash: $shim_hash" echo "grub-lakitu.efi (grub) hash: $grub_hash" # 4. Final Output