view more/chroot-splice.sh @ 1839:c8293b3ab81f draft default tip

Teach chroot-splice to accept one or two arguments. (Control image now optional.)
author Rob Landley <rob@landley.net>
date Sun, 17 Jan 2016 21:18:52 -0600
parents 4921adb23771
children
line wrap: on
line source

#!/bin/bash

# Combine a root filesystem directory and a control image into an $ARCH-specific
# chroot containing native build control files, suitable for chrooting into.

if [ $# -ne 1 ] && [ $# -ne 2 ]
then
  echo "usage: $0 "'$ARCH [$CONTROL_IMAGE]' >&2
  exit 1
fi

# Make sure prerequisites exist

for i in build/{root-filesystem,native-compiler}-"$1" "$2"
do
  if [ ! -z "$i" ] && [ ! -e "$i" ]
  then
    echo "No $i" >&2
    exit 1
  fi
done

if [ `id -u` -ne 0 ]
then
  echo "Not root">&2
  exit 1
fi

# Zap old stuff (if any)

[ -z "$CHROOT" ] && CHROOT="build/chroot-$1"
trap 'more/zapchroot.sh "$CHROOT"' EXIT
if [ -e "$CHROOT" ]
then
  more/zapchroot.sh "$CHROOT" || exit 1
fi

# Copy root filesystem and native compiler
cp -lan "build/root-filesystem-$1/." "$CHROOT" || exit 1
cp -lan "build/native-compiler-$1/." "$CHROOT" || exit 1

# splice in control image
if [ $# -eq 2 ]
then
  if [ -d "$2" ]
  then
    mount -o bind "$2" "$CHROOT/mnt" &&
    mount -o remount,ro "$CHROOT/mnt"|| exit 1
  else
    mount -o loop "$2" "$CHROOT/mnt" || exit 1
  fi
fi

# Output some usage hints

CPUS=1 HOST="$1" chroot "$CHROOT" /sbin/init.sh