blob: 7a2a938e123b82c94d39b206a74dd421c9c61967 [file] [log] [blame]
#!/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 "$@"