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

Side by Side Diff: src/scripts/build_image

Issue 2084001: Reduce the size of factory install shim. (Closed) Base URL: ssh://git@chromiumos-git/chromiumos
Patch Set: merge and cleanup Created 10 years, 7 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 | src/scripts/common.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 21 matching lines...) Expand all
32 DEFINE_boolean withdev $FLAGS_TRUE \ 32 DEFINE_boolean withdev $FLAGS_TRUE \
33 "Include useful developer friendly utilities in the image." 33 "Include useful developer friendly utilities in the image."
34 DEFINE_boolean installmask $FLAGS_TRUE \ 34 DEFINE_boolean installmask $FLAGS_TRUE \
35 "Use INSTALL_MASK to shrink the resulting image." 35 "Use INSTALL_MASK to shrink the resulting image."
36 DEFINE_integer jobs -1 \ 36 DEFINE_integer jobs -1 \
37 "How many packages to build in parallel at maximum." 37 "How many packages to build in parallel at maximum."
38 DEFINE_boolean statefuldev $FLAGS_TRUE \ 38 DEFINE_boolean statefuldev $FLAGS_TRUE \
39 "Install development packages on stateful partition rather than the rootfs" 39 "Install development packages on stateful partition rather than the rootfs"
40 DEFINE_string to "" \ 40 DEFINE_string to "" \
41 "The target image file or device" 41 "The target image file or device"
42 DEFINE_boolean factory_install $FLAGS_FALSE \
43 "Build a smaller image to overlay the factory install shim on; this argument \
44 is also required in image_to_usb."
42 DEFINE_string arm_extra_bootargs "" \ 45 DEFINE_string arm_extra_bootargs "" \
43 "Additional command line options to pass to the ARM kernel." 46 "Additional command line options to pass to the ARM kernel."
44 47
45 # Parse command line. 48 # Parse command line.
46 FLAGS "$@" || exit 1 49 FLAGS "$@" || exit 1
47 eval set -- "${FLAGS_ARGV}" 50 eval set -- "${FLAGS_ARGV}"
48 51
49 # Only now can we die on error. shflags functions leak non-zero error codes, 52 # Only now can we die on error. shflags functions leak non-zero error codes,
50 # so will die prematurely if 'set -e' is specified before now. 53 # so will die prematurely if 'set -e' is specified before now.
51 set -e 54 set -e
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 176
174 # Check for loop device before creating image. 177 # Check for loop device before creating image.
175 LOOP_DEV=$(sudo losetup -f) 178 LOOP_DEV=$(sudo losetup -f)
176 if [ -z "$LOOP_DEV" ] ; then 179 if [ -z "$LOOP_DEV" ] ; then
177 echo "No free loop device. Free up a loop device or reboot. exiting. " 180 echo "No free loop device. Free up a loop device or reboot. exiting. "
178 exit 1 181 exit 1
179 fi 182 fi
180 183
181 # Create root file system disk image to fit on a 1GB memory stick. 184 # Create root file system disk image to fit on a 1GB memory stick.
182 # 1 GB in hard-drive-manufacturer-speak is 10^9, not 2^30. 950MB < 10^9 bytes. 185 # 1 GB in hard-drive-manufacturer-speak is 10^9, not 2^30. 950MB < 10^9 bytes.
183 ROOT_SIZE_BYTES=$((1024 * 1024 * 720)) 186 if [[ $FLAGS_factory_install -eq ${FLAGS_TRUE} ]] ; then
187 ROOT_SIZE_BYTES=$((1024 * 1024 * 180))
188 else
189 ROOT_SIZE_BYTES=$((1024 * 1024 * 720))
190 fi
191
184 dd if=/dev/zero of="$ROOT_FS_IMG" bs=1 count=1 seek=$((ROOT_SIZE_BYTES - 1)) 192 dd if=/dev/zero of="$ROOT_FS_IMG" bs=1 count=1 seek=$((ROOT_SIZE_BYTES - 1))
185 sudo losetup "$LOOP_DEV" "$ROOT_FS_IMG" 193 sudo losetup "$LOOP_DEV" "$ROOT_FS_IMG"
186 sudo mkfs.ext3 "$LOOP_DEV" 194 sudo mkfs.ext3 "$LOOP_DEV"
187 195
188 # Tune and mount rootfs. 196 # Tune and mount rootfs.
189 UUID=$(uuidgen) 197 UUID=$(uuidgen)
190 DISK_LABEL="C-KEYFOB" 198 DISK_LABEL="C-KEYFOB"
191 sudo tune2fs -L "$DISK_LABEL" -U "$UUID" -c 0 -i 0 "$LOOP_DEV" 199 sudo tune2fs -L "$DISK_LABEL" -U "$UUID" -c 0 -i 0 "$LOOP_DEV"
192 sudo mount "$LOOP_DEV" "$ROOT_FS_DIR" 200 sudo mount "$LOOP_DEV" "$ROOT_FS_DIR"
193 201
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 # We need to install libstdc++ manually from the cross toolchain. 260 # We need to install libstdc++ manually from the cross toolchain.
253 # TODO: Figure out a better way of doing this? 261 # TODO: Figure out a better way of doing this?
254 sudo cp -a "${BOARD_ROOT}"/lib/libgcc_s.so* "${ROOT_FS_DIR}/lib" 262 sudo cp -a "${BOARD_ROOT}"/lib/libgcc_s.so* "${ROOT_FS_DIR}/lib"
255 sudo cp -a "${BOARD_ROOT}"/usr/lib/libstdc++.so* "${ROOT_FS_DIR}/usr/lib" 263 sudo cp -a "${BOARD_ROOT}"/usr/lib/libstdc++.so* "${ROOT_FS_DIR}/usr/lib"
256 264
257 INSTALL_MASK="" 265 INSTALL_MASK=""
258 if [[ $FLAGS_installmask -eq ${FLAGS_TRUE} ]] ; then 266 if [[ $FLAGS_installmask -eq ${FLAGS_TRUE} ]] ; then
259 INSTALL_MASK="$DEFAULT_INSTALL_MASK" 267 INSTALL_MASK="$DEFAULT_INSTALL_MASK"
260 fi 268 fi
261 269
270 # Reduce the size of factory install shim.
271 # TODO: Build a separated ebuild for the factory install shim to reduce size.
272 if [[ $FLAGS_factory_install -eq ${FLAGS_TRUE} ]] ; then
273 INSTALL_MASK="$INSTALL_MASK $FACTORY_INSTALL_MASK"
274 fi
275
262 if [[ $FLAGS_jobs -ne -1 ]]; then 276 if [[ $FLAGS_jobs -ne -1 ]]; then
263 EMERGE_JOBS="--jobs=$FLAGS_jobs" 277 EMERGE_JOBS="--jobs=$FLAGS_jobs"
264 fi 278 fi
265 279
266 # Prepare stateful partition with some pre-created directories 280 # Prepare stateful partition with some pre-created directories
267 sudo mkdir -p "${DEV_IMAGE_ROOT}" 281 sudo mkdir -p "${DEV_IMAGE_ROOT}"
268 sudo mkdir -p "${STATEFUL_DIR}/var" 282 sudo mkdir -p "${STATEFUL_DIR}/var"
269 283
270 # Create symlinks so that /usr/local/usr based directories are symlinked to 284 # Create symlinks so that /usr/local/usr based directories are symlinked to
271 # /usr/local/ directories e.g. /usr/local/usr/bin -> /usr/local/bin, etc. 285 # /usr/local/ directories e.g. /usr/local/usr/bin -> /usr/local/bin, etc.
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 } 356 }
343 357
344 menuentry "local image B" { 358 menuentry "local image B" {
345 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 359 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
346 } 360 }
347 361
348 EOF 362 EOF
349 363
350 # By default, dev mode should be activated for either development builds or 364 # By default, dev mode should be activated for either development builds or
351 # test builds. 365 # test builds.
352 if [[ $FLAGS_withdev -eq $FLAGS_TRUE ]] ||\ 366 if [[ $FLAGS_withdev -eq $FLAGS_TRUE ]] ; then
353 [[ $FLAGS_withtest -eq $FLAGS_TRUE ]]; then
354 sudo touch "$ROOT_FS_DIR/root/.dev_mode" 367 sudo touch "$ROOT_FS_DIR/root/.dev_mode"
355 368
356 # Re-run ldconfig to fix /etc/ldconfig.so.cache. 369 # Re-run ldconfig to fix /etc/ldconfig.so.cache.
357 sudo /sbin/ldconfig -r "$ROOT_FS_DIR" 370 sudo /sbin/ldconfig -r "$ROOT_FS_DIR"
358 fi 371 fi
359 372
360 # Perform any customizations on the root file system that are needed. 373 # Perform any customizations on the root file system that are needed.
361 "${SCRIPTS_DIR}/customize_rootfs" \ 374 "${SCRIPTS_DIR}/customize_rootfs" \
362 --root="$ROOT_FS_DIR" \ 375 --root="$ROOT_FS_DIR" \
363 --target="$ARCH" \ 376 --target="$ARCH" \
364 --board="$BOARD" 377 --board="$BOARD"
365 378
366 # Check that the image has been correctly created. 379 # Don't test the factory install shim.
367 "${SCRIPTS_DIR}/test_image" \ 380 if [[ $FLAGS_factory_install -eq ${FLAGS_FALSE} ]] ; then
368 --root="$ROOT_FS_DIR" \ 381 # Check that the image has been correctly created.
369 --target="$ARCH" 382 "${SCRIPTS_DIR}/test_image" \
383 --root="$ROOT_FS_DIR" \
384 --target="$ARCH"
385 fi
370 386
371 # Clean up symlinks so they work on a running target rooted at "/". 387 # Clean up symlinks so they work on a running target rooted at "/".
372 # Here development packages are rooted at /usr/local. However, do not 388 # Here development packages are rooted at /usr/local. However, do not
373 # create /usr/local or /var on host (already exist on target). 389 # create /usr/local or /var on host (already exist on target).
374 setup_symlinks_on_root "/usr/local" "/var" "${STATEFUL_DIR}" 390 setup_symlinks_on_root "/usr/local" "/var" "${STATEFUL_DIR}"
375 391
376 # Cleanup loop devices. 392 # Cleanup loop devices.
377 cleanup 393 cleanup
378 394
379 trap delete_prompt EXIT 395 trap delete_prompt EXIT
(...skipping 13 matching lines...) Expand all
393 409
394 OUTSIDE_OUTPUT_DIR="../build/images/${FLAGS_board}/${IMAGE_SUBDIR}" 410 OUTSIDE_OUTPUT_DIR="../build/images/${FLAGS_board}/${IMAGE_SUBDIR}"
395 echo "Done. Image created in ${OUTPUT_DIR}" 411 echo "Done. Image created in ${OUTPUT_DIR}"
396 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" 412 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:"
397 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX" 413 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdX"
398 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:" 414 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:"
399 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" 415 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}"
400 echo "from the scripts directory where you entered the chroot." 416 echo "from the scripts directory where you entered the chroot."
401 417
402 trap - EXIT 418 trap - EXIT
OLDNEW
« no previous file with comments | « no previous file | src/scripts/common.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698