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

Side by Side Diff: build_image

Issue 2867030: Added empty ext3 filesystem initialization for OEM partner partition. (Closed) Base URL: ssh://git@chromiumos-git//crosutils.git
Patch Set: Created 10 years, 5 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
« no previous file with comments | « build_gpt.sh ('k') | 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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 105
106 BOARD="${FLAGS_board}" 106 BOARD="${FLAGS_board}"
107 BOARD_ROOT="${FLAGS_build_root}/${BOARD}" 107 BOARD_ROOT="${FLAGS_build_root}/${BOARD}"
108 108
109 ROOT_FS_IMG="${OUTPUT_DIR}/rootfs.image" 109 ROOT_FS_IMG="${OUTPUT_DIR}/rootfs.image"
110 ROOT_FS_DIR="${OUTPUT_DIR}/rootfs" 110 ROOT_FS_DIR="${OUTPUT_DIR}/rootfs"
111 111
112 STATEFUL_FS_IMG="${OUTPUT_DIR}/stateful_partition.image" 112 STATEFUL_FS_IMG="${OUTPUT_DIR}/stateful_partition.image"
113 STATEFUL_FS_DIR="${OUTPUT_DIR}/stateful_partition" 113 STATEFUL_FS_DIR="${OUTPUT_DIR}/stateful_partition"
114 114
115 OEM_FS_IMG="${OUTPUT_DIR}/partner_partition.image"
116 OEM_FS_DIR="${OUTPUT_DIR}/partner_partition"
117
115 ESP_FS_IMG=${OUTPUT_DIR}/esp.image 118 ESP_FS_IMG=${OUTPUT_DIR}/esp.image
116 ESP_FS_DIR=${OUTPUT_DIR}/esp 119 ESP_FS_DIR=${OUTPUT_DIR}/esp
117 120
118 LOOP_DEV= 121 LOOP_DEV=
119 STATEFUL_LOOP_DEV= 122 STATEFUL_LOOP_DEV=
123 OEM_LOOP_DEV=
120 ESP_LOOP_DEV= 124 ESP_LOOP_DEV=
121 125
122 # ${DEV_IMAGE_ROOT} specifies the location of where developer packages will 126 # ${DEV_IMAGE_ROOT} specifies the location of where developer packages will
123 # be installed on the stateful dir. On a Chromium OS system, this will 127 # be installed on the stateful dir. On a Chromium OS system, this will
124 # translate to /usr/local. 128 # translate to /usr/local.
125 DEV_IMAGE_ROOT="${STATEFUL_FS_DIR}/dev_image" 129 DEV_IMAGE_ROOT="${STATEFUL_FS_DIR}/dev_image"
126 130
127 # What cross-build are we targeting? 131 # What cross-build are we targeting?
128 . "${BOARD_ROOT}/etc/make.conf.board_setup" 132 . "${BOARD_ROOT}/etc/make.conf.board_setup"
129 LIBC_VERSION=${LIBC_VERSION:-"2.10.1-r1"} 133 LIBC_VERSION=${LIBC_VERSION:-"2.10.1-r1"}
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 cleanup_rootfs_loop() { 182 cleanup_rootfs_loop() {
179 sudo umount -d "${ROOT_FS_DIR}" 183 sudo umount -d "${ROOT_FS_DIR}"
180 } 184 }
181 185
182 cleanup_stateful_fs_loop() { 186 cleanup_stateful_fs_loop() {
183 sudo umount "${ROOT_FS_DIR}/usr/local" 187 sudo umount "${ROOT_FS_DIR}/usr/local"
184 sudo umount "${ROOT_FS_DIR}/var" 188 sudo umount "${ROOT_FS_DIR}/var"
185 sudo umount -d "${STATEFUL_FS_DIR}" 189 sudo umount -d "${STATEFUL_FS_DIR}"
186 } 190 }
187 191
192 cleanup_oem_fs_loop() {
193 sudo umount -d "${OEM_FS_DIR}"
194 }
195
196
188 cleanup_esp_loop() { 197 cleanup_esp_loop() {
189 sudo umount -d "${ESP_FS_DIR}" 198 sudo umount -d "${ESP_FS_DIR}"
190 } 199 }
191 200
192 cleanup() { 201 cleanup() {
193 # Disable die on error. 202 # Disable die on error.
194 set +e 203 set +e
195 204
196 if [[ -n "${STATEFUL_LOOP_DEV}" ]]; then 205 if [[ -n "${STATEFUL_LOOP_DEV}" ]]; then
197 cleanup_stateful_fs_loop 206 cleanup_stateful_fs_loop
198 fi 207 fi
199 208
209 if [[ -n "${OEM_LOOP_DEV}" ]]; then
210 cleanup_oem_fs_loop
211 fi
212
200 if [[ -n "${LOOP_DEV}" ]]; then 213 if [[ -n "${LOOP_DEV}" ]]; then
201 cleanup_rootfs_loop 214 cleanup_rootfs_loop
202 fi 215 fi
203 216
204 if [[ -n "${ESP_LOOP_DEV}" ]]; then 217 if [[ -n "${ESP_LOOP_DEV}" ]]; then
205 cleanup_esp_loop 218 cleanup_esp_loop
206 fi 219 fi
207 220
208 # Turn die on error back on. 221 # Turn die on error back on.
209 set -e 222 set -e
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 sudo tune2fs -L "${DISK_LABEL}" -U "${UUID}" -c 0 -i 0 "${LOOP_DEV}" 356 sudo tune2fs -L "${DISK_LABEL}" -U "${UUID}" -c 0 -i 0 "${LOOP_DEV}"
344 sudo mount "${LOOP_DEV}" "${ROOT_FS_DIR}" 357 sudo mount "${LOOP_DEV}" "${ROOT_FS_DIR}"
345 358
346 # Create stateful partition of the same size as the rootfs. 359 # Create stateful partition of the same size as the rootfs.
347 STATEFUL_LOOP_DEV=$(sudo losetup -f) 360 STATEFUL_LOOP_DEV=$(sudo losetup -f)
348 if [ -z "${STATEFUL_LOOP_DEV}" ] ; then 361 if [ -z "${STATEFUL_LOOP_DEV}" ] ; then
349 echo "No free loop device. Free up a loop device or reboot. exiting. " 362 echo "No free loop device. Free up a loop device or reboot. exiting. "
350 exit 1 363 exit 1
351 fi 364 fi
352 dd if=/dev/zero of="${STATEFUL_FS_IMG}" bs=1 count=1 seek=$((ROOT_SIZE_BYTES - 1)) 365 dd if=/dev/zero of="${STATEFUL_FS_IMG}" bs=1 count=1 seek=$((ROOT_SIZE_BYTES - 1))
366
367 # Tune and mount the stateful partition.
368 UUID=$(uuidgen)
369 DISK_LABEL="C-STATE"
353 sudo losetup "${STATEFUL_LOOP_DEV}" "${STATEFUL_FS_IMG}" 370 sudo losetup "${STATEFUL_LOOP_DEV}" "${STATEFUL_FS_IMG}"
354 sudo mkfs.ext3 "${STATEFUL_LOOP_DEV}" 371 sudo mkfs.ext3 "${STATEFUL_LOOP_DEV}"
355 sudo tune2fs -L "C-STATE" -U "${UUID}" -c 0 -i 0 \ 372 sudo tune2fs -L "${DISK_LABEL}" -U "${UUID}" -c 0 -i 0 "${STATEFUL_LOOP_DEV}"
356 "${STATEFUL_LOOP_DEV}" 373 sudo mount "${STATEFUL_LOOP_DEV}" "${STATEFUL_FS_DIR}"
357 374
358 # Mount the stateful partition. 375 # Create OEM partner partition.
359 sudo mount "${STATEFUL_LOOP_DEV}" "${STATEFUL_FS_DIR}" 376 OEM_LOOP_DEV=$(sudo losetup -f)
377 if [ -z "${OEM_LOOP_DEV}" ] ; then
378 echo "No free loop device. Free up a loop device or reboot. exiting. "
379 exit 1
380 fi
381 OEM_SIZE_BYTES=$((1024 * 1024 * 16))
382 dd if=/dev/zero of="${OEM_FS_IMG}" bs=1 count=1 seek=$((OEM_SIZE_BYTES - 1))
383
384 # Tune and mount OEM partner partition.
385 UUID=$(uuidgen)
386 DISK_LABEL="C-OEM"
387 sudo losetup "${OEM_LOOP_DEV}" "${OEM_FS_IMG}"
388 sudo mkfs.ext3 "${OEM_LOOP_DEV}"
389 sudo tune2fs -L "${DISK_LABEL}" -U "${UUID}" -c 0 -i 0 "${OEM_LOOP_DEV}"
390 sudo mount "${OEM_LOOP_DEV}" "${OEM_FS_DIR}"
360 391
361 # Turn root file system into bootable image. 392 # Turn root file system into bootable image.
362 if [[ "${ARCH}" = "x86" ]]; then 393 if [[ "${ARCH}" = "x86" ]]; then
363 # Setup extlinux configuration. 394 # Setup extlinux configuration.
364 # TODO: For some reason the /dev/disk/by-uuid is not being generated by udev 395 # TODO: For some reason the /dev/disk/by-uuid is not being generated by udev
365 # in the initramfs. When we figure that out, switch to root=UUID=${UUID}. 396 # in the initramfs. When we figure that out, switch to root=UUID=${UUID}.
366 sudo mkdir -p "${ROOT_FS_DIR}"/boot 397 sudo mkdir -p "${ROOT_FS_DIR}"/boot
367 # TODO(adlr): use initramfs for booting. 398 # TODO(adlr): use initramfs for booting.
368 cat <<EOF | sudo dd of="${ROOT_FS_DIR}"/boot/extlinux.conf 399 cat <<EOF | sudo dd of="${ROOT_FS_DIR}"/boot/extlinux.conf
369 DEFAULT chromeos-usb 400 DEFAULT chromeos-usb
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 --rootfs_partition_size=${FLAGS_rootfs_partition_size} \ 598 --rootfs_partition_size=${FLAGS_rootfs_partition_size} \
568 ${RECOVERY} \ 599 ${RECOVERY} \
569 "${OUTPUT_DIR}" \ 600 "${OUTPUT_DIR}" \
570 "${OUTPUT_IMG}" 601 "${OUTPUT_IMG}"
571 } 602 }
572 603
573 # Create the output directory. 604 # Create the output directory.
574 mkdir -p "${OUTPUT_DIR}" 605 mkdir -p "${OUTPUT_DIR}"
575 mkdir -p "${ROOT_FS_DIR}" 606 mkdir -p "${ROOT_FS_DIR}"
576 mkdir -p "${STATEFUL_FS_DIR}" 607 mkdir -p "${STATEFUL_FS_DIR}"
608 mkdir -p "${OEM_FS_DIR}"
577 mkdir -p "${ESP_FS_DIR}" 609 mkdir -p "${ESP_FS_DIR}"
578 610
579 create_base_image ${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME} 611 create_base_image ${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME}
580 612
581 # Create a recovery image based on the chromium os base image. 613 # Create a recovery image based on the chromium os base image.
582 if [ "${FLAGS_recovery}" -eq "${FLAGS_TRUE}" ] ; then 614 if [ "${FLAGS_recovery}" -eq "${FLAGS_TRUE}" ] ; then
583 update_recovery_packages ${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME} 615 update_recovery_packages ${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME}
584 fi 616 fi
585 trap - EXIT 617 trap - EXIT
586 618
587 619
588 # Create a developer image based on the chromium os base image. 620 # Create a developer image based on the chromium os base image.
589 if [ "${FLAGS_withdev}" -eq "${FLAGS_TRUE}" ] ; then 621 if [ "${FLAGS_withdev}" -eq "${FLAGS_TRUE}" ] ; then
590 echo "Creating developer image from base image ${OUTPUT_IMG}" 622 echo "Creating developer image from base image ${OUTPUT_IMG}"
591 cp ${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME} ${OUTPUT_DIR}/${DEVELOPER_IMAGE_NAME} 623 cp ${OUTPUT_DIR}/${PRISTINE_IMAGE_NAME} ${OUTPUT_DIR}/${DEVELOPER_IMAGE_NAME}
592 update_dev_packages ${OUTPUT_DIR}/${DEVELOPER_IMAGE_NAME} 624 update_dev_packages ${OUTPUT_DIR}/${DEVELOPER_IMAGE_NAME}
593 fi 625 fi
594 626
595 trap - EXIT 627 trap - EXIT
596 628
597 # FIXME: only signing things for x86 right now. 629 # FIXME: only signing things for x86 right now.
598 if [[ "${ARCH}" = "x86" ]]; then 630 if [[ "${ARCH}" = "x86" ]]; then
599 # Verify the final image. 631 # Verify the final image.
600 load_kernel_test "${OUTPUT_IMG}" "${OUTPUT_DIR}/key_alg8.vbpubk" 632 load_kernel_test "${OUTPUT_IMG}" "${OUTPUT_DIR}/key_alg8.vbpubk"
601 fi 633 fi
602 634
603 # Clean up temporary files. 635 # Clean up temporary files.
604 rm -f "${ROOT_FS_IMG}" "${STATEFUL_FS_IMG}" "${OUTPUT_DIR}/vmlinuz.image" \ 636 rm -f "${ROOT_FS_IMG}" "${STATEFUL_FS_IMG}" "${OUTPUT_DIR}/vmlinuz.image" \
605 "${ESP_FS_IMG}" "${OUTPUT_DIR}/data4_sign8.keyblock" \ 637 "${ESP_FS_IMG}" "${OUTPUT_DIR}/data4_sign8.keyblock" \
606 "${OUTPUT_DIR}/key_alg4.vbpubk" "${OUTPUT_DIR}/key_alg8.vbpubk" 638 "${OUTPUT_DIR}/key_alg4.vbpubk" "${OUTPUT_DIR}/key_alg8.vbpubk" \
607 rmdir "${ROOT_FS_DIR}" "${STATEFUL_FS_DIR}" "${ESP_FS_DIR}" 639 "${OEM_FS_IMG}"
640 rmdir "${ROOT_FS_DIR}" "${STATEFUL_FS_DIR}" "${OEM_FS_DIR}" "${ESP_FS_DIR}"
608 641
609 echo "Done. Image created in ${OUTPUT_DIR}" 642 echo "Done. Image created in ${OUTPUT_DIR}"
610 echo "Chromium OS image created as ${PRISTINE_IMAGE_NAME}" 643 echo "Chromium OS image created as ${PRISTINE_IMAGE_NAME}"
611 if [ "${FLAGS_recovery}" -eq "${FLAGS_TRUE}" ]; then 644 if [ "${FLAGS_recovery}" -eq "${FLAGS_TRUE}" ]; then
612 echo "Recovery image created as ${PRISTINE_IMAGE_NAME}" 645 echo "Recovery image created as ${PRISTINE_IMAGE_NAME}"
613 fi 646 fi
614 if [ "${FLAGS_withdev}" -eq "${FLAGS_TRUE}" ]; then 647 if [ "${FLAGS_withdev}" -eq "${FLAGS_TRUE}" ]; then
615 echo "Developer image created as ${DEVELOPER_IMAGE_NAME}" 648 echo "Developer image created as ${DEVELOPER_IMAGE_NAME}"
616 fi 649 fi
617 650
618 print_time_elapsed 651 print_time_elapsed
619 652
620 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" 653 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:"
621 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX" 654 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX"
622 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:" 655 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:"
623 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" 656 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}"
624 echo "from the scripts directory where you entered the chroot." 657 echo "from the scripts directory where you entered the chroot."
OLDNEW
« no previous file with comments | « build_gpt.sh ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698