| Index: src/scripts/build_image.sh
|
| diff --git a/src/scripts/build_image.sh b/src/scripts/build_image.sh
|
| index 0e4ada5cdd330b776f0bd8eaabb11cf867df5add..223567d7463a2a18b7a3c410c5c2d5a56856161c 100755
|
| --- a/src/scripts/build_image.sh
|
| +++ b/src/scripts/build_image.sh
|
| @@ -38,11 +38,6 @@ DEFINE_string suite "$DEFAULT_IMG_SUITE" "Repository suite to base image on."
|
| DEFINE_string pkglist "$DEFAULT_PKGLIST" \
|
| "Name of file listing packages to install from repository."
|
|
|
| -DEFINE_string mirror2 "$DEFAULT_EXT_MIRROR" "Additional mirror to use."
|
| -DEFINE_string suite2 "$DEFAULT_EXT_SUITE" "Suite to use in additional mirror."
|
| -DEFINE_string pkglist2 "" \
|
| - "Name of file listing packages to install from additional mirror."
|
| -
|
| KERNEL_DEB_PATH=$(find "${FLAGS_build_root}/x86/local_packages" -name "linux-image-*.deb")
|
| KERNEL_DEB=$(basename "${KERNEL_DEB_PATH}" .deb | sed -e 's/linux-image-//' -e 's/_.*//')
|
| KERNEL_VERSION=${KERNEL_VERSION:-${KERNEL_DEB}}
|
| @@ -65,14 +60,7 @@ 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"
|
| -
|
| -# These paths are relative to SCRIPTS_DIR.
|
| -ROOTFS_PACKAGE_INSTALL_SCRIPT="install_packages.sh"
|
| -ROOTFS_CUSTOMIZE_SCRIPT="customize_rootfs.sh"
|
| -
|
| -ROOTFS_STATIC_DATA="${SRC_ROOT}/rootfs_static_data"
|
| -ROOTFS_SETUP_DIR="/tmp/chromeos_setup"
|
| -SETUP_DIR="${ROOT_FS_DIR}/${ROOTFS_SETUP_DIR}"
|
| +SETUP_DIR="${OUTPUT_DIR}/tmp"
|
|
|
| LOOP_DEV=
|
|
|
| @@ -111,7 +99,6 @@ cleanup_rootfs_mounts() {
|
|
|
| sudo umount "${ROOT_FS_DIR}/proc"
|
| sudo umount "${ROOT_FS_DIR}/sys"
|
| - sudo umount "${ROOT_FS_DIR}/trunk"
|
| }
|
|
|
| cleanup_rootfs_loop() {
|
| @@ -138,8 +125,8 @@ 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. 950MB < 10^9 bytes.
|
| -ROOT_SIZE_BYTES=$((1024 * 1024 * 950))
|
| +# 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.
|
| @@ -163,6 +150,7 @@ then
|
| fi
|
|
|
| # Bootstrap the base debian file system
|
| +# TODO: Switch to --variant=minbase
|
| sudo debootstrap --arch=i386 $FLAGS_suite "$ROOT_FS_DIR" "${FLAGS_mirror}"
|
|
|
| # -- Customize the root file system --
|
| @@ -174,62 +162,30 @@ sudo mount -t proc proc "${ROOT_FS_DIR}/proc"
|
| sudo mount -t sysfs sysfs "${ROOT_FS_DIR}/sys" # TODO: Do we need sysfs?
|
| sudo cp /etc/hosts "${ROOT_FS_DIR}/etc"
|
|
|
| -# Set up bind mount for trunk, so we can get to package repository
|
| -# TODO: also use this instead of SETUP_DIR for other things below?
|
| -sudo mkdir -p "$ROOT_FS_DIR/trunk"
|
| -sudo mount --bind "$GCLIENT_ROOT" "$ROOT_FS_DIR/trunk"
|
| -
|
| # Create setup directory and copy over scripts, config files, and locally
|
| # built packages.
|
| mkdir -p "$SETUP_DIR"
|
| mkdir -p "${SETUP_DIR}/local_packages"
|
| -cp "${SCRIPTS_DIR}/${ROOTFS_PACKAGE_INSTALL_SCRIPT}" "$SETUP_DIR"
|
| -cp -r "$ROOTFS_STATIC_DATA" "$SETUP_DIR"
|
| -cp "$FLAGS_pkglist" "${SETUP_DIR}/package-list-prod.txt"
|
| cp "${FLAGS_build_root}/x86/local_packages"/* "${SETUP_DIR}/local_packages"
|
|
|
| -if [ -n "$FLAGS_pkglist2" ]
|
| -then
|
| - cp "$FLAGS_pkglist2" "${SETUP_DIR}/package-list-2.txt"
|
| -fi
|
| -
|
| # Set up repository for local packages to install in the rootfs via apt-get.
|
| cd "$SETUP_DIR"
|
| dpkg-scanpackages local_packages/ /dev/null | \
|
| gzip > local_packages/Packages.gz
|
| cd -
|
|
|
| -# File-type mirrors have a different path when bind-mounted inside the chroot
|
| -# ${FOO/bar/baz} replaces bar with baz when evaluating $FOO.
|
| -MIRROR_INSIDE="${FLAGS_mirror/$GCLIENT_ROOT//trunk}"
|
| -MIRROR2_INSIDE="${FLAGS_mirror2/$GCLIENT_ROOT//trunk}"
|
| -
|
| -# Write options for customize script into the chroot
|
| -CUST_OPTS="${SETUP_DIR}/customize_opts.sh"
|
| -cat <<EOF > $CUST_OPTS
|
| -REAL_USER=$USER
|
| -SETUP_DIR="$ROOTFS_SETUP_DIR"
|
| -KERNEL_VERSION="$KERNEL_VERSION"
|
| -SERVER="$MIRROR_INSIDE"
|
| -SUITE="$FLAGS_suite"
|
| -SERVER2="$MIRROR2_INSIDE"
|
| -SUITE2="$FLAGS_suite2"
|
| -EOF
|
| -# ...and all CHROMEOS_ vars
|
| -set | egrep "^CHROMEOS_|^BUILDBOT_" >> $CUST_OPTS
|
| -
|
| # Run the package install script
|
| -sudo chroot "$ROOT_FS_DIR" \
|
| - "${ROOTFS_SETUP_DIR}/${ROOTFS_PACKAGE_INSTALL_SCRIPT}"
|
| +"${SCRIPTS_DIR}/install_packages.sh" \
|
| + --root="$ROOT_FS_DIR" \
|
| + --output_dir="${OUTPUT_DIR}" \
|
| + --setup_dir="${SETUP_DIR}" \
|
| + --package_list="$FLAGS_pkglist" \
|
| + --server="$FLAGS_mirror" \
|
| + --suite="$FLAGS_suite" \
|
| + --kernel_version="$KERNEL_VERSION"
|
|
|
| # Run the script to customize the resulting root file system.
|
| -"${SCRIPTS_DIR}/${ROOTFS_CUSTOMIZE_SCRIPT}" --root="${ROOT_FS_DIR}"
|
| -
|
| -# No longer need the setup directory in the rootfs.
|
| -rm -rf "$SETUP_DIR"
|
| -
|
| -# Move package lists from the image into the output dir
|
| -sudo mv "$ROOT_FS_DIR"/etc/package_list_*.txt "$OUTPUT_DIR"
|
| +"${SCRIPTS_DIR}/customize_rootfs.sh" --root="${ROOT_FS_DIR}"
|
|
|
| # Unmount mounts within the rootfs so it is ready to be imaged.
|
| cleanup_rootfs_mounts
|
|
|