| OLD | NEW |
| 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 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 "${PKGDIR}/${CHOST}/cross-${CHOST}"/glibc-${LIBC_VERSION}.tbz2 \ | 270 "${PKGDIR}/${CHOST}/cross-${CHOST}"/glibc-${LIBC_VERSION}.tbz2 \ |
| 271 -C "$ROOT_FS_DIR" --strip-components=3 \ | 271 -C "$ROOT_FS_DIR" --strip-components=3 \ |
| 272 --exclude=usr/include --exclude=sys-include --exclude=*.a --exclude=*.o | 272 --exclude=usr/include --exclude=sys-include --exclude=*.a --exclude=*.o |
| 273 | 273 |
| 274 # We need to install libstdc++ manually from the cross toolchain. | 274 # We need to install libstdc++ manually from the cross toolchain. |
| 275 # TODO: Figure out a better way of doing this? | 275 # TODO: Figure out a better way of doing this? |
| 276 sudo cp -a "${BOARD_ROOT}"/lib/libgcc_s.so* "${ROOT_FS_DIR}/lib" | 276 sudo cp -a "${BOARD_ROOT}"/lib/libgcc_s.so* "${ROOT_FS_DIR}/lib" |
| 277 sudo cp -a "${BOARD_ROOT}"/usr/lib/libstdc++.so* "${ROOT_FS_DIR}/usr/lib" | 277 sudo cp -a "${BOARD_ROOT}"/usr/lib/libstdc++.so* "${ROOT_FS_DIR}/usr/lib" |
| 278 | 278 |
| 279 INSTALL_MASK="" | 279 INSTALL_MASK="" |
| 280 if [[ $FLAGS_installmask -eq $FLAGS_FALSE ]] ; then | 280 if [[ $FLAGS_installmask -eq ${FLAGS_TRUE} ]] ; then |
| 281 INSTALL_MASK="$DEFAULT_INSTALL_MASK" | 281 INSTALL_MASK="$DEFAULT_INSTALL_MASK" |
| 282 fi | 282 fi |
| 283 | 283 |
| 284 if [[ $FLAGS_jobs -ne -1 ]]; then | 284 if [[ $FLAGS_jobs -ne -1 ]]; then |
| 285 EMERGE_JOBS="--jobs=$FLAGS_jobs" | 285 EMERGE_JOBS="--jobs=$FLAGS_jobs" |
| 286 fi | 286 fi |
| 287 | 287 |
| 288 # Prepare stateful partition with some pre-created directories | 288 # Prepare stateful partition with some pre-created directories |
| 289 sudo mkdir -p "${DEV_IMAGE_ROOT}" | 289 sudo mkdir -p "${DEV_IMAGE_ROOT}" |
| 290 sudo mkdir -p "${STATEFUL_DIR}/var" | 290 sudo mkdir -p "${STATEFUL_DIR}/var" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 312 # Determine the root dir for development packages. | 312 # Determine the root dir for development packages. |
| 313 ROOT_DEV_DIR="$ROOT_FS_DIR" | 313 ROOT_DEV_DIR="$ROOT_FS_DIR" |
| 314 [ $FLAGS_statefuldev -eq $FLAGS_TRUE ] && ROOT_DEV_DIR="$ROOT_FS_DIR/usr/local" | 314 [ $FLAGS_statefuldev -eq $FLAGS_TRUE ] && ROOT_DEV_DIR="$ROOT_FS_DIR/usr/local" |
| 315 | 315 |
| 316 # Install development packages. | 316 # Install development packages. |
| 317 if [[ $FLAGS_withdev -eq $FLAGS_TRUE ]] ; then | 317 if [[ $FLAGS_withdev -eq $FLAGS_TRUE ]] ; then |
| 318 sudo INSTALL_MASK="$INSTALL_MASK" emerge-${BOARD} \ | 318 sudo INSTALL_MASK="$INSTALL_MASK" emerge-${BOARD} \ |
| 319 --root="$ROOT_DEV_DIR" --root-deps=rdeps \ | 319 --root="$ROOT_DEV_DIR" --root-deps=rdeps \ |
| 320 --usepkgonly chromeos-dev $EMERGE_JOBS | 320 --usepkgonly chromeos-dev $EMERGE_JOBS |
| 321 | 321 |
| 322 # TODO(sosa@chromium.org) - Re-hide under statefuldev after switch |
| 323 # Flag will mount /usr/local on target device |
| 324 sudo mkdir -p "$ROOT_FS_DIR/root" |
| 325 sudo touch "$ROOT_FS_DIR/root/.dev_mode" |
| 326 |
| 322 # The ldd tool is a useful shell script but lives in glibc; just copy it. | 327 # The ldd tool is a useful shell script but lives in glibc; just copy it. |
| 323 sudo cp -a "$(which ldd)" "${ROOT_DEV_DIR}/usr/bin" | 328 sudo cp -a "$(which ldd)" "${ROOT_DEV_DIR}/usr/bin" |
| 324 fi | 329 fi |
| 325 | 330 |
| 326 if [ -n "$FLAGS_factory_server" ]; then | 331 if [ -n "$FLAGS_factory_server" ]; then |
| 327 sudo INSTALL_MASK="$INSTALL_MASK" emerge-${BOARD} \ | 332 sudo INSTALL_MASK="$INSTALL_MASK" emerge-${BOARD} \ |
| 328 --root="$ROOT_DEV_DIR" --root-deps=rdeps \ | 333 --root="$ROOT_DEV_DIR" --root-deps=rdeps \ |
| 329 --usepkgonly chromeos-factoryinstall $EMERGE_JOBS | 334 --usepkgonly chromeos-factoryinstall $EMERGE_JOBS |
| 330 fi | 335 fi |
| 331 | 336 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 menuentry "serial debug" { | 385 menuentry "serial debug" { |
| 381 linux /efi/boot/vmlinuz earlyprintk=serial,ttyS0,115200 i915.modeset=0 console
=ttyS0,115200 acpi=off init=/sbin/init boot=local rootwait root=/dev/sda3 ro nor
esume noswap loglevel=7 | 386 linux /efi/boot/vmlinuz earlyprintk=serial,ttyS0,115200 i915.modeset=0 console
=ttyS0,115200 acpi=off init=/sbin/init boot=local rootwait root=/dev/sda3 ro nor
esume noswap loglevel=7 |
| 382 } | 387 } |
| 383 | 388 |
| 384 menuentry "normal" { | 389 menuentry "normal" { |
| 385 linux /efi/boot/vmlinuz quiet console=tty2 init=/sbin/init boot=local rootwait
root=/dev/sda3 ro noresume noswap i915.modeset=1 loglevel=1 | 390 linux /efi/boot/vmlinuz quiet console=tty2 init=/sbin/init boot=local rootwait
root=/dev/sda3 ro noresume noswap i915.modeset=1 loglevel=1 |
| 386 } | 391 } |
| 387 | 392 |
| 388 EOF | 393 EOF |
| 389 | 394 |
| 390 # Enable dev mode on the target system and re-run ldconfig | 395 # Run ldconfig for rootfs's ld.so.cache |
| 391 # for rootfs's ld.so.cache | |
| 392 if [ $FLAGS_statefuldev -eq $FLAGS_TRUE ] ; then | 396 if [ $FLAGS_statefuldev -eq $FLAGS_TRUE ] ; then |
| 393 # Flag will mount /usr/local on target device | |
| 394 sudo mkdir -p "$ROOT_FS_DIR/root" | |
| 395 sudo touch "$ROOT_FS_DIR/root/.dev_mode" | |
| 396 | |
| 397 # Re-run ldconfig to fix /etc/ldconfig.so.cache | 397 # Re-run ldconfig to fix /etc/ldconfig.so.cache |
| 398 sudo /sbin/ldconfig -r "$ROOT_FS_DIR" | 398 sudo /sbin/ldconfig -r "$ROOT_FS_DIR" |
| 399 | 399 |
| 400 #TODO(sosa@chromium.org) - /usr/bin/xterm symlink not created in stateful. | 400 #TODO(sosa@chromium.org) - /usr/bin/xterm symlink not created in stateful. |
| 401 sudo ln -sf "/usr/local/bin/aterm" "/usr/bin/xterm" | 401 sudo ln -sf "/usr/local/bin/aterm" "/usr/bin/xterm" |
| 402 fi | 402 fi |
| 403 | 403 |
| 404 "${SCRIPTS_DIR}/customize_rootfs" \ | 404 "${SCRIPTS_DIR}/customize_rootfs" \ |
| 405 --root="$ROOT_FS_DIR" \ | 405 --root="$ROOT_FS_DIR" \ |
| 406 --target="$ARCH" \ | 406 --target="$ARCH" \ |
| (...skipping 24 matching lines...) Expand all Loading... |
| 431 | 431 |
| 432 OUTSIDE_OUTPUT_DIR="../build/images/${FLAGS_board}/${IMAGE_SUBDIR}" | 432 OUTSIDE_OUTPUT_DIR="../build/images/${FLAGS_board}/${IMAGE_SUBDIR}" |
| 433 echo "Done. Image created in ${OUTPUT_DIR}" | 433 echo "Done. Image created in ${OUTPUT_DIR}" |
| 434 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" | 434 echo "To copy to USB keyfob, OUTSIDE the chroot, do something like:" |
| 435 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdb" | 435 echo " ./image_to_usb.sh --from=${OUTSIDE_OUTPUT_DIR} --to=/dev/sdb" |
| 436 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:" | 436 echo "To convert to VMWare image, OUTSIDE the chroot, do something like:" |
| 437 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" | 437 echo " ./image_to_vmware.sh --from=${OUTSIDE_OUTPUT_DIR}" |
| 438 echo "from the scripts directory where you entered the chroot." | 438 echo "from the scripts directory where you entered the chroot." |
| 439 | 439 |
| 440 trap - EXIT | 440 trap - EXIT |
| OLD | NEW |