Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(341)

Side by Side Diff: build_image

Issue 3286002: Condense dev and factory install shim options (Closed) Base URL: http://git.chromium.org/git/crosutils.git
Patch Set: feedback for code review Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 88
89 # Only now can we die on error. shflags functions leak non-zero error codes, 89 # Only now can we die on error. shflags functions leak non-zero error codes,
90 # so will die prematurely if 'set -e' is specified before now. 90 # so will die prematurely if 'set -e' is specified before now.
91 set -e 91 set -e
92 92
93 if [ -z "${FLAGS_board}" ] ; then 93 if [ -z "${FLAGS_board}" ] ; then
94 error "--board is required." 94 error "--board is required."
95 exit 1 95 exit 1
96 fi 96 fi
97 97
98 if [ "$((FLAGS_rootfs_size + FLAGS_rootfs_hash_pad))" -gt \
99 "${FLAGS_rootfs_partition_size}" ] ; then
100 error "rootfs ($((FLAGS_rootfs_size + FLAGS_rootfs_hash_pad)) MiB) is \
101 bigger than partition (${FLAGS_rootfs_partition_size} MiB)."
102 exit 1
103 fi
104
105 # Verify user didn't specify incompatible flags for dev install shim 98 # Verify user didn't specify incompatible flags for dev install shim
106 if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] && 99 if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] &&
107 [ ${FLAGS_dev_install} -eq ${FLAGS_TRUE} ] ; then 100 [ ${FLAGS_dev_install} -eq ${FLAGS_TRUE} ] ; then
108 error "Incompatible flags: --factory_install and --dev_install cannot be \ 101 error "Incompatible flags: --factory_install and --dev_install cannot be \
109 both set to True. Please specify one or none." 102 both set to True. Please specify one or none."
110 exit 1 103 exit 1
111 fi 104 fi
112 105
113 # Disable --withdev flag when --dev_install is set to True. Otherwise, the 106 INSTALL_MASK=""
114 # dev image produced will be based on dev install shim, rather than a pristine 107 if [ ${FLAGS_installmask} -eq ${FLAGS_TRUE} ] ; then
115 # image 108 INSTALL_MASK="${DEFAULT_INSTALL_MASK}"
116 if [ ${FLAGS_withdev} -eq ${FLAGS_TRUE} ] && 109 fi
110
111 # Reduce the size of factory install shim.
112 if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] ||
117 [ ${FLAGS_dev_install} -eq ${FLAGS_TRUE} ] ; then 113 [ ${FLAGS_dev_install} -eq ${FLAGS_TRUE} ] ; then
118 info "Incompatible flags: --withdev and --dev_install cannot be both set to \ 114 # Disable --withdev flag when --*_install is set to True. Otherwise, the
119 True. Reset --withdev to False." 115 # dev image produced will be based on install shim, rather than a pristine
120 FLAGS_withdev=${FLAGS_FALSE} 116 # image
117 if [ ${FLAGS_withdev} -eq ${FLAGS_TRUE} ]; then
118 info "Incompatible flags: --withdev and --dev_install or --factory_install \
119 cannot be both set to True. Reset --withdev to False."
120 FLAGS_withdev=${FLAGS_FALSE}
121 fi
122
123 # TODO: Build a separated ebuild for the install shim to reduce size.
124 INSTALL_MASK="${INSTALL_MASK} ${FACTORY_INSTALL_MASK}"
125
126 info "Fixing the rootfs size at 300 MiB for install shim"
127 FLAGS_rootfs_size=280
128 FLAGS_rootfs_partition_size=300
129 info "Fixing the statefulfs size at 140 MiB for install shim"
130 FLAGS_statefulfs_size=140
131 fi
132
133 if [ "$((FLAGS_rootfs_size + FLAGS_rootfs_hash_pad))" -gt \
134 "${FLAGS_rootfs_partition_size}" ] ; then
135 die "rootfs ($((FLAGS_rootfs_size + FLAGS_rootfs_hash_pad)) MiB) is \
136 bigger than partition (${FLAGS_rootfs_partition_size} MiB)."
121 fi 137 fi
122 138
123 EMERGE_BOARD_CMD="emerge-${FLAGS_board}" 139 EMERGE_BOARD_CMD="emerge-${FLAGS_board}"
124 if [ "${FLAGS_fast}" -eq "${FLAGS_TRUE}" ]; then 140 if [ "${FLAGS_fast}" -eq "${FLAGS_TRUE}" ]; then
125 echo "Using alternate emerge" 141 echo "Using alternate emerge"
126 EMERGE_BOARD_CMD="${SCRIPTS_DIR}/parallel_emerge --board=${FLAGS_board}" 142 EMERGE_BOARD_CMD="${SCRIPTS_DIR}/parallel_emerge --board=${FLAGS_board}"
127 fi 143 fi
128 144
129 # Determine build version. 145 # Determine build version.
130 . "${SCRIPTS_DIR}/chromeos_version.sh" 146 . "${SCRIPTS_DIR}/chromeos_version.sh"
131 147
132 # Use canonical path since some tools (e.g. mount) do not like symlinks. 148 # Use canonical path since some tools (e.g. mount) do not like symlinks.
133 # Append build attempt to output directory. 149 # Append build attempt to output directory.
134 IMAGE_SUBDIR="${CHROMEOS_VERSION_STRING}-a${FLAGS_build_attempt}" 150 IMAGE_SUBDIR="${CHROMEOS_VERSION_STRING}-a${FLAGS_build_attempt}"
135 OUTPUT_DIR="${FLAGS_output_root}/${FLAGS_board}/${IMAGE_SUBDIR}" 151 OUTPUT_DIR="${FLAGS_output_root}/${FLAGS_board}/${IMAGE_SUBDIR}"
136 152
137 OUTSIDE_OUTPUT_DIR="../build/images/${FLAGS_board}/${IMAGE_SUBDIR}" 153 OUTSIDE_OUTPUT_DIR="../build/images/${FLAGS_board}/${IMAGE_SUBDIR}"
138 154
139 # If we are creating a developer image, also create a pristine image with a 155 # If we are creating a developer image, also create a pristine image with a
140 # different name. 156 # different name.
141 DEVELOPER_IMAGE_NAME= 157 DEVELOPER_IMAGE_NAME=
142 PRISTINE_IMAGE_NAME=chromiumos_image.bin 158 PRISTINE_IMAGE_NAME=chromiumos_image.bin
143 if [ "${FLAGS_withdev}" -eq "${FLAGS_TRUE}" ]; then 159 if [ "${FLAGS_withdev}" -eq "${FLAGS_TRUE}" ]; then
144 PRISTINE_IMAGE_NAME=chromiumos_base_image.bin 160 PRISTINE_IMAGE_NAME=chromiumos_base_image.bin
145 DEVELOPER_IMAGE_NAME=chromiumos_image.bin 161 DEVELOPER_IMAGE_NAME=chromiumos_image.bin
146 fi 162 elif [ "${FLAGS_dev_install}" -eq "${FLAGS_TRUE}" ]; then
147 163 # Rename pristine images for install shims
148 # Rename pristine image for dev install shim
149 if [ "${FLAGS_dev_install}" -eq "${FLAGS_TRUE}" ]; then
150 PRISTINE_IMAGE_NAME=dev_install_shim.bin 164 PRISTINE_IMAGE_NAME=dev_install_shim.bin
165 elif [ "${FLAGS_factory_install}" -eq "${FLAGS_TRUE}" ]; then
166 PRISTINE_IMAGE_NAME=factory_install_shim.bin
151 fi 167 fi
152 168
153 PRISTINE_IMG="${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME}" 169 PRISTINE_IMG="${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME}"
154 DEVELOPER_IMG="${OUTPUT_DIR}/${DEVELOPER_IMAGE_NAME}" 170 DEVELOPER_IMG="${OUTPUT_DIR}/${DEVELOPER_IMAGE_NAME}"
155 171
156 BOARD="${FLAGS_board}" 172 BOARD="${FLAGS_board}"
157 BOARD_ROOT="${FLAGS_build_root}/${BOARD}" 173 BOARD_ROOT="${FLAGS_build_root}/${BOARD}"
158 174
159 ROOT_FS_IMG="${OUTPUT_DIR}/rootfs.image" 175 ROOT_FS_IMG="${OUTPUT_DIR}/rootfs.image"
160 ROOT_FS_DIR="${OUTPUT_DIR}/rootfs" 176 ROOT_FS_DIR="${OUTPUT_DIR}/rootfs"
(...skipping 17 matching lines...) Expand all
178 194
179 # ${DEV_IMAGE_ROOT} specifies the location of where developer packages will 195 # ${DEV_IMAGE_ROOT} specifies the location of where developer packages will
180 # be installed on the stateful dir. On a Chromium OS system, this will 196 # be installed on the stateful dir. On a Chromium OS system, this will
181 # translate to /usr/local. 197 # translate to /usr/local.
182 DEV_IMAGE_ROOT="${STATEFUL_FS_DIR}/dev_image" 198 DEV_IMAGE_ROOT="${STATEFUL_FS_DIR}/dev_image"
183 199
184 # What cross-build are we targeting? 200 # What cross-build are we targeting?
185 . "${BOARD_ROOT}/etc/make.conf.board_setup" 201 . "${BOARD_ROOT}/etc/make.conf.board_setup"
186 LIBC_VERSION=${LIBC_VERSION:-"2.10.1-r1"} 202 LIBC_VERSION=${LIBC_VERSION:-"2.10.1-r1"}
187 203
188 INSTALL_MASK="" 204 if [ ${FLAGS_jobs} -ne -1 ]; then
189 if [[ ${FLAGS_installmask} -eq ${FLAGS_TRUE} ]] ; then
190 INSTALL_MASK="${DEFAULT_INSTALL_MASK}"
191 fi
192
193 # Reduce the size of factory install shim.
194 # TODO: Build a separated ebuild for the factory install shim to reduce size.
195 if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ] ||
196 [ ${FLAGS_dev_install} -eq ${FLAGS_TRUE} ] ; then
197 INSTALL_MASK="${INSTALL_MASK} ${FACTORY_INSTALL_MASK}"
198 fi
199
200 if [[ ${FLAGS_jobs} -ne -1 ]]; then
201 EMERGE_JOBS="--jobs=${FLAGS_jobs}" 205 EMERGE_JOBS="--jobs=${FLAGS_jobs}"
202 fi 206 fi
203 207
204 # Figure out ARCH from the given toolchain. 208 # Figure out ARCH from the given toolchain.
205 # TODO: Move to common.sh as a function after scripts are switched over. 209 # TODO: Move to common.sh as a function after scripts are switched over.
206 TC_ARCH=$(echo "${CHOST}" | awk -F'-' '{ print $1 }') 210 TC_ARCH=$(echo "${CHOST}" | awk -F'-' '{ print $1 }')
207 case "${TC_ARCH}" in 211 case "${TC_ARCH}" in
208 arm*) 212 arm*)
209 ARCH="arm" 213 ARCH="arm"
210 ;; 214 ;;
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 cp ${PREVIOUS_DIR}/${PRISTINE_IMAGE_NAME} ${OUTPUT_DIR} 652 cp ${PREVIOUS_DIR}/${PRISTINE_IMAGE_NAME} ${OUTPUT_DIR}
649 653
650 # Copy forward the developer image, if we already copied forward the base. 654 # Copy forward the developer image, if we already copied forward the base.
651 if [[ ${FLAGS_withdev} -eq ${FLAGS_TRUE} ]] && \ 655 if [[ ${FLAGS_withdev} -eq ${FLAGS_TRUE} ]] && \
652 [[ -f ${PREVIOUS_DIR}/${DEVELOPER_IMAGE_NAME} ]] ; then 656 [[ -f ${PREVIOUS_DIR}/${DEVELOPER_IMAGE_NAME} ]] ; then
653 cp ${PREVIOUS_DIR}/${DEVELOPER_IMAGE_NAME} ${OUTPUT_DIR} 657 cp ${PREVIOUS_DIR}/${DEVELOPER_IMAGE_NAME} ${OUTPUT_DIR}
654 fi 658 fi
655 fi 659 fi
656 fi 660 fi
657 661
658 # Minimize rootfs size for factory installer
659 if [ ${FLAGS_factory_install} -eq ${FLAGS_TRUE} ]; then
660 info "Fixing the rootfs size at 300 MiB for the factory installer"
661 FLAGS_rootfs_size=300
662 fi
663
664 # Minimize rootfs size and statefulfs size for dev install shim
665 if [ ${FLAGS_dev_install} -eq ${FLAGS_TRUE} ] ; then
666 info "Fixing the rootfs size at 300 MiB for dev install shim"
667 FLAGS_rootfs_size=300
668 info "Fixing the statefulfs size at 140 MiB for dev install shim"
669 FLAGS_statefulfs_size=140
670 fi
671
672 # Create the boot.desc file which stores the build-time configuration 662 # Create the boot.desc file which stores the build-time configuration
673 # information needed for making the image bootable after creation with 663 # information needed for making the image bootable after creation with
674 # cros_make_image_bootable. 664 # cros_make_image_bootable.
675 create_boot_desc 665 create_boot_desc
676 666
677 if [[ -f ${PRISTINE_IMG} ]] ; then 667 if [[ -f ${PRISTINE_IMG} ]] ; then
678 update_base_packages ${PRISTINE_IMAGE_NAME} 668 update_base_packages ${PRISTINE_IMAGE_NAME}
679 else 669 else
680 create_base_image ${PRISTINE_IMAGE_NAME} 670 create_base_image ${PRISTINE_IMAGE_NAME}
681 fi 671 fi
682 672
683 USE_DEV_KEYS= 673 USE_DEV_KEYS=
684 if [ "${FLAGS_dev_install}" -eq "${FLAGS_TRUE}" ]; then 674 if [ "${FLAGS_dev_install}" -eq "${FLAGS_TRUE}" ] || \
675 [ "${FLAGS_factory_install}" -eq "${FLAGS_TRUE}" ]; then
685 USE_DEV_KEYS="--use_dev_keys" 676 USE_DEV_KEYS="--use_dev_keys"
686 fi 677 fi
687 678
688 # Place flags before positional args 679 # Place flags before positional args
689 ${SCRIPTS_DIR}/bin/cros_make_image_bootable "${OUTPUT_DIR}" \ 680 ${SCRIPTS_DIR}/bin/cros_make_image_bootable "${OUTPUT_DIR}" \
690 "${PRISTINE_IMAGE_NAME}" \ 681 "${PRISTINE_IMAGE_NAME}" \
691 ${USE_DEV_KEYS} 682 ${USE_DEV_KEYS}
692 683
693 # FIXME: only signing things for x86 right now. 684 # FIXME: only signing things for x86 right now.
694 if [[ "${ARCH}" = "x86" ]]; then 685 if [[ "${ARCH}" = "x86" ]]; then
695 BOOT_FLAG= 686 BOOT_FLAG=
696 if [ "${FLAGS_dev_install}" -eq "${FLAGS_TRUE}" ] ; then 687 if [ "${FLAGS_dev_install}" -eq "${FLAGS_TRUE}" ] ||
688 [ "${FLAGS_factory_install}" -eq "${FLAGS_TRUE}" ]; then
697 BOOT_FLAG="-b 1" # BOOT_FLAG_DEVELOPER value defined in load_kernel_fw.h 689 BOOT_FLAG="-b 1" # BOOT_FLAG_DEVELOPER value defined in load_kernel_fw.h
698 info "--dev_install set, pass BOOT_FLAG_DEVELOPER flag to load_kernel_test" 690 info "--dev_install set, pass BOOT_FLAG_DEVELOPER flag to load_kernel_test"
699 fi 691 fi
700 692
701 # Verify the final image. 693 # Verify the final image.
702 load_kernel_test "${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME}" \ 694 load_kernel_test "${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME}" \
703 "${DEVKEYSDIR}/recovery_key.vbpubk" ${BOOT_FLAG} 695 "${DEVKEYSDIR}/recovery_key.vbpubk" ${BOOT_FLAG}
704 fi 696 fi
705 697
706 # Create a developer image based on the chromium os base image. 698 # Create a developer image based on the chromium os base image.
(...skipping 23 matching lines...) Expand all
730 echo "Developer image created as ${DEVELOPER_IMAGE_NAME}" 722 echo "Developer image created as ${DEVELOPER_IMAGE_NAME}"
731 fi 723 fi
732 724
733 print_time_elapsed 725 print_time_elapsed
734 726
735 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" 727 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:"
736 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX" 728 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX"
737 echo "To convert to VMWare image, INSIDE the chroot, do something like:" 729 echo "To convert to VMWare image, INSIDE the chroot, do something like:"
738 echo " ./image_to_vm.sh --from=${OUTSIDE_OUTPUT_DIR} --board=${BOARD}" 730 echo " ./image_to_vm.sh --from=${OUTSIDE_OUTPUT_DIR} --board=${BOARD}"
739 echo "from the scripts directory where you entered the chroot." 731 echo "from the scripts directory where you entered the chroot."
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698