| #!/bin/sh |
| |
| # Copyright 2012 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # This script is called after an AutoUpdate or USB install. This script is a |
| # simple wrapper to convert from the hardcoded command line to the new |
| # executable command line. |
| |
| # NOTE: This script is called by installers like `chromeos-install` or |
| # `update_engine` from inside the mounted rootfs of the target image. So it is |
| # perfectly fine to modify this script without caring about backward/forward |
| # compatibility. But it can never be migrated to a non-shell script because it |
| # is being called by the original installer and that can break things badly. |
| |
| INSTALL_ROOT=$(dirname "$0") |
| |
| # Set up the mount points userland needs/expects. |
| MOUNTS="/proc /dev /sys /tmp /run /var /mnt/stateful_partition /mnt/chromeos_metadata_partition" |
| |
| # Include efivarfs, which is a submount of /sys, if it's present. |
| # This will only exist on efi systems with the appropriate kernel module. On |
| # those systems this is needed for efi boot entry management. |
| EFIVARS="/sys/firmware/efi/efivars" |
| if [ -d "${EFIVARS}" ]; then |
| MOUNTS="${MOUNTS} ${EFIVARS}" |
| fi |
| |
| cleanup() { |
| local d |
| for d in ${MOUNTS}; do |
| umount -lf "./${d}" || : |
| done |
| } |
| |
| main() { |
| cd "${INSTALL_ROOT}" || exit 1 |
| |
| if [ "${INSTALL_ROOT}" != "/" ]; then |
| echo "Setting up mounts for chroot postinst" |
| trap cleanup EXIT |
| |
| local d |
| for d in ${MOUNTS}; do |
| if [ ! -d "${d}" ]; then |
| continue |
| fi |
| mount -n --bind "${d}" "./${d}" |
| mount --make-slave "./${d}" |
| done |
| |
| chroot . /usr/sbin/cros_config_setup |
| fi |
| |
| local install_dev="$1" |
| shift |
| chroot . /usr/bin/cros_installer --type="postinst" \ |
| --install_dev="${install_dev}" --install_dir="/" "$@" |
| } |
| main "$@" |