Index: src/scripts/build_image.sh |
diff --git a/src/scripts/build_image.sh b/src/scripts/build_image.sh |
deleted file mode 100755 |
index cfa29d17703a719a9cdcb4ca66016f30307cc37c..0000000000000000000000000000000000000000 |
--- a/src/scripts/build_image.sh |
+++ /dev/null |
@@ -1,201 +0,0 @@ |
-#!/bin/bash |
- |
-# Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-# Script to build a bootable keyfob-based chromeos system image. |
-# It uses debootstrap (see https://wiki.ubuntu.com/DebootstrapChroot) to |
-# create a base file system. It then cusotmizes the file system and adds |
-# Ubuntu and chromeos specific packages. Finally, it creates a bootable USB |
-# image from the root fs. |
-# |
-# NOTE: This script must be run from the chromeos build chroot environment. |
-# |
- |
-# Load common constants. This should be the first executable line. |
-# The path to common.sh should be relative to your script's location. |
-. "$(dirname "$0")/common.sh" |
- |
-assert_inside_chroot |
-assert_not_root_user |
- |
-DEFAULT_PKGLIST="${SRC_ROOT}/package_repo/package-list-prod.txt" |
- |
-# Flags |
-DEFINE_integer build_attempt 1 \ |
- "The build attempt for this image build." |
-DEFINE_string output_root "${DEFAULT_BUILD_ROOT}/images" \ |
- "Directory in which to place image result directories (named by version)" |
-DEFINE_string build_root "$DEFAULT_BUILD_ROOT" \ |
- "Root of build output" |
-DEFINE_boolean replace $FLAGS_FALSE "Overwrite existing output, if any." |
-DEFINE_boolean increment $FLAGS_FALSE \ |
- "Picks the latest build and increments the minor version by one." |
- |
-DEFINE_string arch "x86" \ |
- "The target architecture to build for. One of { x86, armel }." |
-DEFINE_string mirror "$DEFAULT_IMG_MIRROR" "Repository mirror to use." |
-DEFINE_string suite "$DEFAULT_IMG_SUITE" "Repository suite to base image on." |
-DEFINE_string mirror2 "" "Additional repository mirror to use (URL only)." |
-DEFINE_string suite2 "" "Repository suite for additional mirror." |
-DEFINE_string pkglist "$DEFAULT_PKGLIST" \ |
- "Name of file listing packages to install from repository." |
-DEFINE_boolean with_dev_pkgs $FLAGS_TRUE \ |
- "Include additional developer-friendly packages in the image." |
- |
-# Parse command line |
-FLAGS "$@" || exit 1 |
-eval set -- "${FLAGS_ARGV}" |
- |
-# Die on any errors. |
-set -e |
- |
-# Determine build version |
-. "${SCRIPTS_DIR}/chromeos_version.sh" |
- |
-# Use canonical path since some tools (e.g. mount) do not like symlinks |
-# Append build attempt to output directory |
-IMAGE_SUBDIR="${CHROMEOS_VERSION_STRING}-a${FLAGS_build_attempt}" |
-OUTPUT_DIR="${FLAGS_output_root}/${IMAGE_SUBDIR}" |
-ROOT_FS_DIR="${OUTPUT_DIR}/rootfs" |
-ROOT_FS_IMG="${OUTPUT_DIR}/rootfs.image" |
-MBR_IMG="${OUTPUT_DIR}/mbr.image" |
-OUTPUT_IMG="${OUTPUT_DIR}/usb.img" |
- |
-LOOP_DEV= |
- |
-# Handle existing directory |
-if [ -e "$OUTPUT_DIR" ] |
-then |
- if [ $FLAGS_replace -eq $FLAGS_TRUE ] |
- then |
- sudo rm -rf "$OUTPUT_DIR" |
- else |
- echo "Directory $OUTPUT_DIR already exists." |
- echo "Use --build_attempt option to specify an unused attempt." |
- echo "Or use --replace if you want to overwrite this directory." |
- exit 1 |
- fi |
-fi |
- |
-# create the output directory |
-mkdir -p "$OUTPUT_DIR" |
- |
-cleanup_rootfs_loop() { |
- sudo umount "$LOOP_DEV" |
- sleep 1 # in case $LOOP_DEV is in use |
- sudo losetup -d "$LOOP_DEV" |
- LOOP_DEV="" |
-} |
- |
-cleanup() { |
- # Disable die on error. |
- set +e |
- if [ -n "$LOOP_DEV" ] |
- then |
- cleanup_rootfs_loop |
- fi |
- |
- # Turn die on error back on. |
- set -e |
-} |
-trap cleanup EXIT |
- |
-mkdir -p "$ROOT_FS_DIR" |
- |
-# Create root file system disk image to fit on a 1GB memory stick. |
-# 1 GB in hard-drive-manufacturer-speak is 10^9, not 2^30. 700MB < 10^9 bytes. |
-ROOT_SIZE_BYTES=$((1024 * 1024 * 700)) |
-dd if=/dev/zero of="$ROOT_FS_IMG" bs=1 count=1 seek=$((ROOT_SIZE_BYTES - 1)) |
- |
-# Format, tune, and mount the rootfs. |
-# Make sure we have a mtab to keep mkfs happy. |
-if [ ! -e /etc/mtab ]; then |
- sudo touch /etc/mtab |
-fi |
-UUID=`uuidgen` |
-DISK_LABEL=C-ROOT |
-LOOP_DEV=`sudo losetup -f` |
-sudo losetup "$LOOP_DEV" "$ROOT_FS_IMG" |
-sudo mkfs.ext3 "$LOOP_DEV" |
-sudo tune2fs -L "$DISK_LABEL" -U "$UUID" -c 0 -i 0 "$LOOP_DEV" |
-sudo mount "$LOOP_DEV" "$ROOT_FS_DIR" |
- |
-# -- Install packages and customize root file system. -- |
-PKGLIST="$FLAGS_pkglist" |
-if [ $FLAGS_with_dev_pkgs -eq $FLAGS_TRUE ]; then |
- PKGLIST="$PKGLIST,${SRC_ROOT}/package_repo/package-list-debug.txt" |
-fi |
-# Add official packages for ChromeOS if the file exists |
-if [ -f ${SRC_ROOT}/package_repo/package-list-official.txt ]; then |
- PKGLIST="$PKGLIST,${SRC_ROOT}/package_repo/package-list-official.txt" |
-fi |
-"${SCRIPTS_DIR}/install_packages.sh" \ |
- --build_root="${FLAGS_build_root}" \ |
- --root="$ROOT_FS_DIR" \ |
- --output_dir="${OUTPUT_DIR}" \ |
- --package_list="$PKGLIST" \ |
- --arch="$FLAGS_arch" \ |
- --mirror="$FLAGS_mirror" \ |
- --suite="$FLAGS_suite" \ |
- --mirror2="$FLAGS_mirror2" \ |
- --suite2="$FLAGS_suite2" |
- |
-"${SCRIPTS_DIR}/customize_rootfs.sh" --root="${ROOT_FS_DIR}" |
- |
-# -- Turn root file system into bootable image -- |
- |
-if [ "$FLAGS_arch" = "x86" ]; then |
- # Setup extlinux configuration. |
- # TODO: For some reason the /dev/disk/by-uuid is not being generated by udev |
- # in the initramfs. When we figure that out, switch to root=UUID=$UUID. |
- cat <<EOF | sudo dd of="$ROOT_FS_DIR"/boot/extlinux.conf |
-DEFAULT chromeos-usb |
-PROMPT 0 |
-TIMEOUT 0 |
- |
- label chromeos-usb |
- menu label chromeos-usb |
- kernel vmlinuz |
- append quiet console=tty2 initrd=initrd.img init=/sbin/init boot=local rootwait root=LABEL=$DISK_LABEL ro noresume noswap i915.modeset=1 loglevel=1 |
- |
-label chromeos-hd |
- menu label chromeos-hd |
- kernel vmlinuz |
- append quiet console=tty2 init=/sbin/init boot=local rootwait root=HDROOT ro noresume noswap i915.modeset=1 loglevel=1 |
-EOF |
- |
-# Make partition bootable and label it. |
-sudo "$SCRIPTS_DIR/extlinux.sh" -z --install "${ROOT_FS_DIR}/boot" |
- |
-fi # --arch=x86 |
- |
-cleanup_rootfs_loop |
- |
-if [ "$FLAGS_arch" = "x86" ]; then |
- |
-# Create a master boot record. |
-# Start with the syslinux master boot record. We need to zero-pad to |
-# fill out a 512-byte sector size. |
- SYSLINUX_MBR="/usr/lib/syslinux/mbr.bin" |
- dd if="$SYSLINUX_MBR" of="$MBR_IMG" bs=512 count=1 conv=sync |
- # Create a partition table in the MBR. |
- NUM_SECTORS=$((`stat --format="%s" "$ROOT_FS_IMG"` / 512)) |
- sudo sfdisk -H64 -S32 -uS -f "$MBR_IMG" <<EOF |
-,$NUM_SECTORS,L,-, |
-,$NUM_SECTORS,S,-, |
-,$NUM_SECTORS,L,*, |
-; |
-EOF |
- |
-fi # --arch=x86 |
- |
-OUTSIDE_OUTPUT_DIR="${EXTERNAL_TRUNK_PATH}/src/build/images/${IMAGE_SUBDIR}" |
-echo "Done. Image created in ${OUTPUT_DIR}" |
-echo "To copy to USB keyfob, outside the chroot, do something like:" |
-echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdb" |
-echo "To convert to VMWare image, outside the chroot, do something like:" |
-echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" |
- |
-trap - EXIT |