Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 | 2 |
| 3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2009 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 # Script to build a bootable keyfob-based chromeos system image from within | 7 # Script to build a bootable keyfob-based chromeos system image from within |
| 8 # a chromiumos setup. This assumes that all needed packages have been built into | 8 # a chromiumos setup. This assumes that all needed packages have been built into |
| 9 # the given target's root with binary packages turned on. This script will | 9 # the given target's root with binary packages turned on. This script will |
| 10 # build the Chrome OS image using only pre-built binary packages. | 10 # build the Chrome OS image using only pre-built binary packages. |
| (...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 480 ro | 480 ro |
| 481 noresume | 481 noresume |
| 482 noswap | 482 noswap |
| 483 i915.modeset=1 | 483 i915.modeset=1 |
| 484 loglevel=7 | 484 loglevel=7 |
| 485 Hi_Mom | 485 Hi_Mom |
| 486 EOF | 486 EOF |
| 487 | 487 |
| 488 # FIXME: We need to specify the real keys and certs here! | 488 # FIXME: We need to specify the real keys and certs here! |
| 489 SIG_DIR="${SRC_ROOT}/platform/vboot_reference/tests/testkeys" | 489 SIG_DIR="${SRC_ROOT}/platform/vboot_reference/tests/testkeys" |
| 490 | |
| 491 # Wrap the public keys with VbPublicKey headers | |
| 492 vbutil_key --pack \ | |
| 493 --in "${SIG_DIR}/key_rsa2048.keyb" \ | |
| 494 --version 1 --algorithm 4 \ | |
| 495 --out "${OUTPUT_DIR}/key_alg4.vbpubk" | |
| 496 | |
| 497 vbutil_key --pack \ | |
| 498 --in "${SIG_DIR}/key_rsa4096.keyb" \ | |
| 499 --version 1 --algorithm 8 \ | |
| 500 --out "${OUTPUT_DIR}/key_alg8.vbpubk" | |
| 501 | |
| 502 vbutil_keyblock --pack "${OUTPUT_DIR}/data4_sign8.keyblock" \ | |
| 503 --datapubkey "${OUTPUT_DIR}/key_alg4.vbpubk" \ | |
| 504 --signprivate "${SIG_DIR}/key_rsa4096.pem" \ | |
| 505 --algorithm 8 --flags 3 | |
| 506 | |
| 507 # Verify the keyblock | |
| 508 vbutil_keyblock --unpack "${OUTPUT_DIR}/data4_sign8.keyblock" \ | |
| 509 --signpubkey "${OUTPUT_DIR}/key_alg8.vbpubk" | |
| 510 | |
| 511 # Sign the kernel: | |
| 512 vbutil_kernel --pack "${OUTPUT_DIR}/vmlinuz.image" \ | |
| 513 --keyblock "${OUTPUT_DIR}/data4_sign8.keyblock" \ | |
| 514 --signprivate "${SIG_DIR}/key_rsa2048.pem" \ | |
| 515 --version 1 \ | |
| 516 --config "${OUTPUT_DIR}/config.txt" \ | |
| 517 --bootloader /lib64/bootstub/bootstub.efi \ | |
| 518 --vmlinuz "${ROOT_FS_DIR}/boot/vmlinuz" | |
| 490 | 519 |
| 491 # Create the kernel partition image. | 520 # And verify it |
| 492 kernel_utility --generate \ | 521 vbutil_kernel --verify "${OUTPUT_DIR}/vmlinuz.image" \ |
| 493 --firmware_key "${SIG_DIR}/key_rsa4096.pem" \ | 522 --signpubkey "${OUTPUT_DIR}/key_alg8.vbpubk" |
| 494 --kernel_key "${SIG_DIR}/key_rsa1024.pem" \ | 523 |
| 495 --kernel_key_pub "${SIG_DIR}/key_rsa1024.keyb" \ | |
| 496 --firmware_sign_algorithm 8 \ | |
| 497 --kernel_sign_algorithm 2 \ | |
| 498 --kernel_key_version 1 \ | |
| 499 --kernel_version 1 \ | |
| 500 --config "${OUTPUT_DIR}/config.txt" \ | |
| 501 --bootloader /lib64/bootstub/bootstub.efi \ | |
| 502 --vmlinuz "${ROOT_FS_DIR}/boot/vmlinuz" \ | |
| 503 --out "${OUTPUT_DIR}/vmlinuz.image" | |
| 504 | |
| 505 else | 524 else |
| 506 # FIXME: For now, ARM just uses the unsigned kernel by itself. | 525 # FIXME: For now, ARM just uses the unsigned kernel by itself. |
| 507 cp -f "${ROOT_FS_DIR}/boot/vmlinuz" "${OUTPUT_DIR}/vmlinuz.image" | 526 cp -f "${ROOT_FS_DIR}/boot/vmlinuz" "${OUTPUT_DIR}/vmlinuz.image" |
| 508 fi | 527 fi |
| 509 | 528 |
| 510 | 529 |
| 511 # Perform any customizations on the root file system that are needed. | 530 # Perform any customizations on the root file system that are needed. |
| 512 "${SCRIPTS_DIR}/customize_rootfs" \ | 531 "${SCRIPTS_DIR}/customize_rootfs" \ |
| 513 --root="$ROOT_FS_DIR" \ | 532 --root="$ROOT_FS_DIR" \ |
| 514 --target="$ARCH" \ | 533 --target="$ARCH" \ |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 540 # Create the GPT-formatted image | 559 # Create the GPT-formatted image |
| 541 ${SCRIPTS_DIR}/build_gpt.sh \ | 560 ${SCRIPTS_DIR}/build_gpt.sh \ |
| 542 --arch=${ARCH} \ | 561 --arch=${ARCH} \ |
| 543 --board=${FLAGS_board} \ | 562 --board=${FLAGS_board} \ |
| 544 --arm_extra_bootargs="${FLAGS_arm_extra_bootargs}" \ | 563 --arm_extra_bootargs="${FLAGS_arm_extra_bootargs}" \ |
| 545 --rootfs_partition_size=${FLAGS_rootfs_partition_size} \ | 564 --rootfs_partition_size=${FLAGS_rootfs_partition_size} \ |
| 546 ${RECOVERY} \ | 565 ${RECOVERY} \ |
| 547 "${OUTPUT_DIR}" \ | 566 "${OUTPUT_DIR}" \ |
| 548 "${OUTPUT_IMG}" | 567 "${OUTPUT_IMG}" |
| 549 | 568 |
| 550 # Clean up temporary files. | |
| 551 rm -f "${ROOT_FS_IMG}" "${STATEFUL_IMG}" "${OUTPUT_DIR}/vmlinuz.image" \ | |
| 552 "${ESP_IMG}" | |
| 553 rmdir "${ROOT_FS_DIR}" "${STATEFUL_DIR}" "${ESP_DIR}" | |
| 554 | |
| 555 OUTSIDE_OUTPUT_DIR="../build/images/${FLAGS_board}/${IMAGE_SUBDIR}" | |
| 556 | |
| 557 # Create a recovery image based on the chromium os base image | 569 # Create a recovery image based on the chromium os base image |
| 558 [ "$FLAGS_recovery" -eq "$FLAGS_TRUE" ] && create_mod_image "recovery" | 570 [ "$FLAGS_recovery" -eq "$FLAGS_TRUE" ] && create_mod_image "recovery" |
| 559 trap - EXIT | 571 trap - EXIT |
| 560 | 572 |
| 561 # Create a developer image based on the chromium os base image | 573 # Create a developer image based on the chromium os base image |
| 562 [ "$FLAGS_withdev" -eq "$FLAGS_TRUE" ] && create_mod_image "dev" | 574 [ "$FLAGS_withdev" -eq "$FLAGS_TRUE" ] && create_mod_image "dev" |
| 563 trap - EXIT | 575 trap - EXIT |
| 564 | 576 |
| 565 # be quiet again | 577 # FIXME: only signing things for x86 right now. |
| 566 set +x | 578 if [[ "$ARCH" = "x86" ]]; then |
| 579 # Verify the final image | |
| 580 load_kernel2_test "${PRISTINE_IMAGE_NAME}" "${OUTPUT_DIR}/key_alg8.vbpubk" | |
|
Randall Spangler
2010/06/16 22:50:45
renamed to load_kernel_test, after my latest cl.
| |
| 581 fi | |
| 582 | |
| 583 # Clean up temporary files. | |
| 584 rm -f "${ROOT_FS_IMG}" "${STATEFUL_IMG}" "${OUTPUT_DIR}/vmlinuz.image" \ | |
| 585 "${ESP_IMG}" "${OUTPUT_DIR}/data4_sign8.keyblock" \ | |
| 586 "${OUTPUT_DIR}/key_alg4.vbpubk" "${OUTPUT_DIR}/key_alg8.vbpubk" | |
| 587 rmdir "${ROOT_FS_DIR}" "${STATEFUL_DIR}" "${ESP_DIR}" | |
| 588 | |
| 589 OUTSIDE_OUTPUT_DIR="../build/images/${FLAGS_board}/${IMAGE_SUBDIR}" | |
| 567 | 590 |
| 568 echo "Done. Image created in ${OUTPUT_DIR}" | 591 echo "Done. Image created in ${OUTPUT_DIR}" |
| 569 echo "Chromium OS image created as $PRISTINE_IMAGE_NAME" | 592 echo "Chromium OS image created as $PRISTINE_IMAGE_NAME" |
| 570 if [ "$FLAGS_recovery" -eq "$FLAGS_TRUE" ]; then | 593 if [ "$FLAGS_recovery" -eq "$FLAGS_TRUE" ]; then |
| 571 echo "Recovery image created as $PRISTINE_IMAGE_NAME" | 594 echo "Recovery image created as $PRISTINE_IMAGE_NAME" |
| 572 fi | 595 fi |
| 573 if [ "$FLAGS_withdev" -eq "$FLAGS_TRUE" ]; then | 596 if [ "$FLAGS_withdev" -eq "$FLAGS_TRUE" ]; then |
| 574 echo "Developer image created as $DEVELOPER_IMAGE_NAME" | 597 echo "Developer image created as $DEVELOPER_IMAGE_NAME" |
| 575 fi | 598 fi |
| 576 | 599 |
| 577 print_time_elapsed | 600 print_time_elapsed |
| 578 | 601 |
| 579 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" | 602 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" |
| 580 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX" | 603 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX" |
| 581 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:" | 604 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:" |
| 582 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" | 605 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" |
| 583 echo "from the scripts directory where you entered the chroot." | 606 echo "from the scripts directory where you entered the chroot." |
| OLD | NEW |