| 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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 if [ -z "$FLAGS_board" ] ; then | 62 if [ -z "$FLAGS_board" ] ; then |
| 63 error "--board is required." | 63 error "--board is required." |
| 64 exit 1 | 64 exit 1 |
| 65 fi | 65 fi |
| 66 | 66 |
| 67 if [ "$FLAGS_rootfs_size" -gt "$FLAGS_rootfs_partition_size" ] ; then | 67 if [ "$FLAGS_rootfs_size" -gt "$FLAGS_rootfs_partition_size" ] ; then |
| 68 error "rootfs (${FLAGS_rootfs_size} MB) is bigger than partition (${FLAGS_root
fs_partition_size} MB)." | 68 error "rootfs (${FLAGS_rootfs_size} MB) is bigger than partition (${FLAGS_root
fs_partition_size} MB)." |
| 69 exit 1 | 69 exit 1 |
| 70 fi | 70 fi |
| 71 | 71 |
| 72 EMERGE_CMD="emerge" |
| 73 EMERGE_BOARD_CMD="emerge-${FLAGS_board}" |
| 74 TOP_SCRIPTS_DIR="$(dirname $0)" |
| 75 if [ -e "${TOP_SCRIPTS_DIR}/.emerge" ]; then |
| 76 echo "Using alternate emerge" |
| 77 . "${TOP_SCRIPTS_DIR}/.emerge" |
| 78 fi |
| 79 |
| 72 # Determine build version. | 80 # Determine build version. |
| 73 . "${SCRIPTS_DIR}/chromeos_version.sh" | 81 . "${SCRIPTS_DIR}/chromeos_version.sh" |
| 74 | 82 |
| 75 # Use canonical path since some tools (e.g. mount) do not like symlinks. | 83 # Use canonical path since some tools (e.g. mount) do not like symlinks. |
| 76 # Append build attempt to output directory. | 84 # Append build attempt to output directory. |
| 77 IMAGE_SUBDIR="${CHROMEOS_VERSION_STRING}-a${FLAGS_build_attempt}" | 85 IMAGE_SUBDIR="${CHROMEOS_VERSION_STRING}-a${FLAGS_build_attempt}" |
| 78 OUTPUT_DIR="${FLAGS_output_root}/${FLAGS_board}/${IMAGE_SUBDIR}" | 86 OUTPUT_DIR="${FLAGS_output_root}/${FLAGS_board}/${IMAGE_SUBDIR}" |
| 79 ROOT_FS_DIR="${OUTPUT_DIR}/rootfs" | 87 ROOT_FS_DIR="${OUTPUT_DIR}/rootfs" |
| 80 ROOT_FS_IMG="${OUTPUT_DIR}/rootfs.image" | 88 ROOT_FS_IMG="${OUTPUT_DIR}/rootfs.image" |
| 81 | 89 |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 $SCRIPTS_DIR/mount_gpt_image.sh --from "$OUTPUT_DIR" \ | 234 $SCRIPTS_DIR/mount_gpt_image.sh --from "$OUTPUT_DIR" \ |
| 227 --image "$image_to_mount" -r "$root_fs_dir" -s "$stateful_dir" | 235 --image "$image_to_mount" -r "$root_fs_dir" -s "$stateful_dir" |
| 228 | 236 |
| 229 if [ "$image_type" == "dev" ]; then | 237 if [ "$image_type" == "dev" ]; then |
| 230 # Determine the root dir for developer packages. | 238 # Determine the root dir for developer packages. |
| 231 local root_dev_dir="$root_fs_dir" | 239 local root_dev_dir="$root_fs_dir" |
| 232 [ $FLAGS_statefuldev -eq $FLAGS_TRUE ] && \ | 240 [ $FLAGS_statefuldev -eq $FLAGS_TRUE ] && \ |
| 233 root_dev_dir="$root_fs_dir/usr/local" | 241 root_dev_dir="$root_fs_dir/usr/local" |
| 234 | 242 |
| 235 # Install developer packages described in chromeos-dev. | 243 # Install developer packages described in chromeos-dev. |
| 236 sudo INSTALL_MASK="$INSTALL_MASK" emerge-${BOARD} \ | 244 sudo INSTALL_MASK="$INSTALL_MASK" ${EMERGE_BOARD_CMD} \ |
| 237 --root="$root_dev_dir" --root-deps=rdeps \ | 245 --root="$root_dev_dir" --root-deps=rdeps \ |
| 238 --usepkgonly chromeos-dev $EMERGE_JOBS | 246 --usepkgonly chromeos-dev $EMERGE_JOBS |
| 239 elif [ "$image_type" == "recovery" ]; then | 247 elif [ "$image_type" == "recovery" ]; then |
| 240 # Install recovery installer | 248 # Install recovery installer |
| 241 sudo emerge-${BOARD} --root=$root_fs_dir --usepkgonly \ | 249 sudo ${EMERGE_BOARD_CMD} --root=$root_fs_dir --usepkgonly \ |
| 242 --root-deps=rdeps --nodeps chromeos-recovery | 250 --root-deps=rdeps --nodeps chromeos-recovery |
| 243 fi | 251 fi |
| 244 | 252 |
| 245 # Re-run ldconfig to fix /etc/ldconfig.so.cache. | 253 # Re-run ldconfig to fix /etc/ldconfig.so.cache. |
| 246 sudo /sbin/ldconfig -r "$root_fs_dir" | 254 sudo /sbin/ldconfig -r "$root_fs_dir" |
| 247 | 255 |
| 248 # Mark the image as a developer image (input to chromeos_startup). | 256 # Mark the image as a developer image (input to chromeos_startup). |
| 249 sudo mkdir -p "$root_fs_dir/root" | 257 sudo mkdir -p "$root_fs_dir/root" |
| 250 sudo touch "$root_fs_dir/root/$file_to_touch" | 258 sudo touch "$root_fs_dir/root/$file_to_touch" |
| 251 | 259 |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 setup_symlinks_on_root "${DEV_IMAGE_ROOT}" "${STATEFUL_DIR}/var" \ | 407 setup_symlinks_on_root "${DEV_IMAGE_ROOT}" "${STATEFUL_DIR}/var" \ |
| 400 "${STATEFUL_DIR}" | 408 "${STATEFUL_DIR}" |
| 401 | 409 |
| 402 # Perform binding rather than symlinking because directories must exist | 410 # Perform binding rather than symlinking because directories must exist |
| 403 # on rootfs so that we can bind at run-time since rootfs is read-only | 411 # on rootfs so that we can bind at run-time since rootfs is read-only |
| 404 echo "Binding directories from stateful partition onto the rootfs" | 412 echo "Binding directories from stateful partition onto the rootfs" |
| 405 sudo mkdir -p "${ROOT_FS_DIR}/usr/local" | 413 sudo mkdir -p "${ROOT_FS_DIR}/usr/local" |
| 406 sudo mount --bind "${DEV_IMAGE_ROOT}" "${ROOT_FS_DIR}/usr/local" | 414 sudo mount --bind "${DEV_IMAGE_ROOT}" "${ROOT_FS_DIR}/usr/local" |
| 407 sudo mkdir -p "${ROOT_FS_DIR}/var" | 415 sudo mkdir -p "${ROOT_FS_DIR}/var" |
| 408 sudo mount --bind "${STATEFUL_DIR}/var" "${ROOT_FS_DIR}/var" | 416 sudo mount --bind "${STATEFUL_DIR}/var" "${ROOT_FS_DIR}/var" |
| 417 sudo mkdir -p "${ROOT_FS_DIR}/dev" |
| 409 | 418 |
| 410 # We "emerge --root=$ROOT_FS_DIR --root-deps=rdeps --usepkgonly" all of the | 419 # We "emerge --root=$ROOT_FS_DIR --root-deps=rdeps --usepkgonly" all of the |
| 411 # runtime packages for chrome os. This builds up a chrome os image from binary | 420 # runtime packages for chrome os. This builds up a chrome os image from binary |
| 412 # packages with runtime dependencies only. We use INSTALL_MASK to trim the | 421 # packages with runtime dependencies only. We use INSTALL_MASK to trim the |
| 413 # image size as much as possible. | 422 # image size as much as possible. |
| 414 sudo INSTALL_MASK="$INSTALL_MASK" emerge-${BOARD} \ | 423 sudo INSTALL_MASK="$INSTALL_MASK" ${EMERGE_BOARD_CMD} \ |
| 415 --root="$ROOT_FS_DIR" --root-deps=rdeps \ | 424 --root="$ROOT_FS_DIR" --root-deps=rdeps \ |
| 416 --usepkgonly chromeos $EMERGE_JOBS | 425 --usepkgonly chromeos $EMERGE_JOBS |
| 417 | 426 |
| 418 # Create EFI System Partition to boot stock EFI BIOS (but not ChromeOS EFI | 427 # Create EFI System Partition to boot stock EFI BIOS (but not ChromeOS EFI |
| 419 # BIOS). We only need this for x86, but it's simpler and safer to keep the disk | 428 # BIOS). We only need this for x86, but it's simpler and safer to keep the disk |
| 420 # images the same for both x86 and ARM. | 429 # images the same for both x86 and ARM. |
| 421 ESP_IMG=${OUTPUT_DIR}/esp.image | 430 ESP_IMG=${OUTPUT_DIR}/esp.image |
| 422 # NOTE: The size argument for mkfs.vfat is in 1024-byte blocks. We'll hard-code | 431 # NOTE: The size argument for mkfs.vfat is in 1024-byte blocks. We'll hard-code |
| 423 # it to 16M for now. | 432 # it to 16M for now. |
| 424 ESP_BLOCKS=16384 | 433 ESP_BLOCKS=16384 |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 560 set +x | 569 set +x |
| 561 | 570 |
| 562 echo "Done. Image created in ${OUTPUT_DIR}" | 571 echo "Done. Image created in ${OUTPUT_DIR}" |
| 563 echo "Chromium OS image created as $PRISTINE_IMAGE_NAME" | 572 echo "Chromium OS image created as $PRISTINE_IMAGE_NAME" |
| 564 if [ "$FLAGS_recovery" -eq "$FLAGS_TRUE" ]; then | 573 if [ "$FLAGS_recovery" -eq "$FLAGS_TRUE" ]; then |
| 565 echo "Recovery image created as $PRISTINE_IMAGE_NAME" | 574 echo "Recovery image created as $PRISTINE_IMAGE_NAME" |
| 566 fi | 575 fi |
| 567 if [ "$FLAGS_withdev" -eq "$FLAGS_TRUE" ]; then | 576 if [ "$FLAGS_withdev" -eq "$FLAGS_TRUE" ]; then |
| 568 echo "Developer image created as $DEVELOPER_IMAGE_NAME" | 577 echo "Developer image created as $DEVELOPER_IMAGE_NAME" |
| 569 fi | 578 fi |
| 579 |
| 570 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" | 580 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" |
| 571 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX" | 581 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX" |
| 572 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:" | 582 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:" |
| 573 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" | 583 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" |
| 574 echo "from the scripts directory where you entered the chroot." | 584 echo "from the scripts directory where you entered the chroot." |
| OLD | NEW |