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

Side by Side Diff: build_image

Issue 2829038: [PATCH 3/5] Unify efi and legacy bootloader configuration generation (Closed)
Patch Set: fix typo 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 | « no previous file | create_legacy_bootloader_templates.sh » ('j') | 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 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 dd if=/dev/zero of="${OEM_FS_IMG}" bs=1 count=1 seek=$((OEM_SIZE_BYTES - 1)) 396 dd if=/dev/zero of="${OEM_FS_IMG}" bs=1 count=1 seek=$((OEM_SIZE_BYTES - 1))
397 397
398 # Tune and mount OEM partner partition. 398 # Tune and mount OEM partner partition.
399 UUID=$(uuidgen) 399 UUID=$(uuidgen)
400 DISK_LABEL="C-OEM" 400 DISK_LABEL="C-OEM"
401 sudo losetup "${OEM_LOOP_DEV}" "${OEM_FS_IMG}" 401 sudo losetup "${OEM_LOOP_DEV}" "${OEM_FS_IMG}"
402 sudo mkfs.ext3 "${OEM_LOOP_DEV}" 402 sudo mkfs.ext3 "${OEM_LOOP_DEV}"
403 sudo tune2fs -L "${DISK_LABEL}" -U "${UUID}" -c 0 -i 0 "${OEM_LOOP_DEV}" 403 sudo tune2fs -L "${DISK_LABEL}" -U "${UUID}" -c 0 -i 0 "${OEM_LOOP_DEV}"
404 sudo mount "${OEM_LOOP_DEV}" "${OEM_FS_DIR}" 404 sudo mount "${OEM_LOOP_DEV}" "${OEM_FS_DIR}"
405 405
406 # Turn root file system into bootable image.
407 if [[ "${ARCH}" = "x86" ]]; then
408 # Setup extlinux configuration.
409 # TODO: For some reason the /dev/disk/by-uuid is not being generated by udev
410 # in the initramfs. When we figure that out, switch to root=UUID=${UUID}.
411 sudo mkdir -p "${ROOT_FS_DIR}"/boot
412 # TODO(adlr): use initramfs for booting.
413 cat <<EOF | sudo dd of="${ROOT_FS_DIR}"/boot/extlinux.conf
414 DEFAULT chromeos-usb
415 PROMPT 0
416 TIMEOUT 0
417
418 label chromeos-usb
419 menu label chromeos-usb
420 kernel vmlinuz
421 append quiet console=tty2 init=/sbin/init boot=local rootwait root=/dev/sdb3 r o noresume noswap i915.modeset=1 loglevel=1 cros_legacy
422
423 label chromeos-hd
424 menu label chromeos-hd
425 kernel vmlinuz
426 append quiet console=tty2 init=/sbin/init boot=local rootwait root=HDROOT ro n oresume noswap i915.modeset=1 loglevel=1 cros_legacy
427 EOF
428
429 # Make partition bootable and label it.
430 sudo extlinux -z --install "${ROOT_FS_DIR}/boot"
431 fi
432
433 # -- Install packages into the root file system -- 406 # -- Install packages into the root file system --
434 407
435 # We need to install libc manually from the cross toolchain. 408 # We need to install libc manually from the cross toolchain.
436 # TODO: Improve this? We only want libc and not the whole toolchain. 409 # TODO: Improve this? We only want libc and not the whole toolchain.
437 PKGDIR="/var/lib/portage/pkgs/cross/" 410 PKGDIR="/var/lib/portage/pkgs/cross/"
438 sudo tar jxvpf \ 411 sudo tar jxvpf \
439 "${PKGDIR}/${CHOST}/cross-${CHOST}"/glibc-${LIBC_VERSION}.tbz2 \ 412 "${PKGDIR}/${CHOST}/cross-${CHOST}"/glibc-${LIBC_VERSION}.tbz2 \
440 -C "${ROOT_FS_DIR}" --strip-components=3 \ 413 -C "${ROOT_FS_DIR}" --strip-components=3 \
441 --exclude=usr/include --exclude=sys-include --exclude=*.a --exclude=*.o 414 --exclude=usr/include --exclude=sys-include --exclude=*.a --exclude=*.o
442 415
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 # We'll hard-code it to 16M for now. 451 # We'll hard-code it to 16M for now.
479 ESP_BLOCKS=16384 452 ESP_BLOCKS=16384
480 /usr/sbin/mkfs.vfat -C ${OUTPUT_DIR}/esp.image ${ESP_BLOCKS} 453 /usr/sbin/mkfs.vfat -C ${OUTPUT_DIR}/esp.image ${ESP_BLOCKS}
481 ESP_LOOP_DEV=$(sudo losetup -f) 454 ESP_LOOP_DEV=$(sudo losetup -f)
482 if [ -z "${ESP_LOOP_DEV}" ] ; then 455 if [ -z "${ESP_LOOP_DEV}" ] ; then
483 echo "No free loop device. Free up a loop device or reboot. exiting. " 456 echo "No free loop device. Free up a loop device or reboot. exiting. "
484 exit 1 457 exit 1
485 fi 458 fi
486 sudo losetup "${ESP_LOOP_DEV}" "${ESP_FS_IMG}" 459 sudo losetup "${ESP_LOOP_DEV}" "${ESP_FS_IMG}"
487 sudo mount "${ESP_LOOP_DEV}" "${ESP_FS_DIR}" 460 sudo mount "${ESP_LOOP_DEV}" "${ESP_FS_DIR}"
488 sudo mkdir -p "${ESP_FS_DIR}/efi/boot"
489 sudo grub-mkimage -p /efi/boot -o "${ESP_FS_DIR}/efi/boot/bootx64.efi" \
490 part_gpt fat ext2 normal boot sh chain configfile linux
491 cat <<'EOF' | sudo dd of="${ESP_FS_DIR}/efi/boot/grub.cfg"
492 set default=0
493 set timeout=2
494 461
495 # NOTE: These magic grub variables are a Chrome OS hack. They are not portable. 462 # Populates the root filesystem with legacy bootloader templates
463 # appropriate for the platform. The autoupdater and installer will
464 # use those templates to update the legacy boot partition (12/ESP)
465 # on update.
466 # (This script does not populate vmlinuz.A and .B needed by syslinux.)
467 use_vboot=
468 ${SCRIPTS_DIR}/create_legacy_bootloader_templates.sh \
469 --arch=${ARCH} \
470 --to="${ROOT_FS_DIR}"/boot \
471 --install \
472 ${use_vboot}
496 473
497 menuentry "local image A" { 474 # Create a working copy so we don't need the rootfs mounted
498 linux $grubpartA/boot/vmlinuz quiet console=tty2 init=/sbin/init boot=local ro otwait root=/dev/$linuxpartA ro noresume noswap i915.modeset=1 loglevel=1 cros_e fi 475 sudo mkdir -p "${OUTPUT_DIR}"/boot
499 } 476 # This will include any built files dropped in /boot as well.
477 # Like the current vmlinuz.
478 sudo cp -r "${ROOT_FS_DIR}"/boot/. "${OUTPUT_DIR}"/boot/
500 479
501 menuentry "local image B" { 480 # Until bootloader management is unified, copy EFI in here.
502 linux $grubpartB/boot/vmlinuz quiet console=tty2 init=/sbin/init boot=local ro otwait root=/dev/$linuxpartB ro noresume noswap i915.modeset=1 loglevel=1 cros_e fi 481 sudo mkdir -p "${ESP_FS_IMG}"/efi
503 } 482 sudo cp -r "${ROOT_FS_DIR}"/boot/efi/. "${ESP_FS_IMG}"/efi
504
505 menuentry "Alternate USB Boot" {
506 linux (hd0,3)/boot/vmlinuz quiet console=tty2 init=/sbin/init boot=local rootw ait root=/dev/sdb3 ro noresume noswap i915.modeset=1 loglevel=1 cros_efi
507 }
508
509 EOF
510 # TODO(wad) add baseline syslinux files to ESP and install the syslinux loader
511 483
512 # Builds the kernel partition image. The temporary files are kept around 484 # Builds the kernel partition image. The temporary files are kept around
513 # so that we can perform a load_kernel_test later on the final image. 485 # so that we can perform a load_kernel_test later on the final image.
514 # TODO(wad) add dm-verity boot args (--boot_args, --root) 486 # TODO(wad) add dm-verity boot args (--boot_args, --root)
515 ${SCRIPTS_DIR}/build_kernel_image.sh \ 487 ${SCRIPTS_DIR}/build_kernel_image.sh \
516 --arch="${ARCH}" \ 488 --arch="${ARCH}" \
517 --to="${OUTPUT_DIR}/vmlinuz.image" \ 489 --to="${OUTPUT_DIR}/vmlinuz.image" \
518 --vmlinuz="${ROOT_FS_DIR}/boot/vmlinuz" \ 490 --vmlinuz="${ROOT_FS_DIR}/boot/vmlinuz" \
519 --working_dir="${OUTPUT_DIR}" \ 491 --working_dir="${OUTPUT_DIR}" \
520 --keep_work \ 492 --keep_work \
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 echo "Developer image created as ${DEVELOPER_IMAGE_NAME}" 589 echo "Developer image created as ${DEVELOPER_IMAGE_NAME}"
618 fi 590 fi
619 591
620 print_time_elapsed 592 print_time_elapsed
621 593
622 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" 594 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:"
623 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX" 595 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX"
624 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:" 596 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:"
625 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" 597 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}"
626 echo "from the scripts directory where you entered the chroot." 598 echo "from the scripts directory where you entered the chroot."
OLDNEW
« no previous file with comments | « no previous file | create_legacy_bootloader_templates.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698