PROG_NAME_=$(basename $0)
DEST_=""
MOUNTED_="" # all mounted destinations
-COMMAND_="" # command to start in chroot
function die
cat <<EOT
Usage: "$PROG_NAME_" NEWROOT [COMMAND....]
-$PROG_NAME__ is a chroot wrapper with proc/sys/pts/dev filesystem handling
+$PROG_NAME_ is a chroot wrapper with proc/sys/pts/dev filesystem handling
EOT
}
shift $(($OPTIND - 1))
if (( $# < 1 )); then
+ printUsage
die "Wrong number of arguments."
fi
-DEST_="$1"
-COMMAND_="${2}"
+DEST_="$1"; shift
if [ ! -d "$DEST_" ]; then
die "Target chroot does not exist: $DEST_"
mountit "proc" "proc"
mountit "sysfs" "sys"
mountit "/dev" "dev" "--bind"
-chroot "$DEST_" $COMMAND_
+
+WROTE_DEBIAN_CHROOT=""
+if [ ! -f "$DEST_"/etc/debian_chroot ]; then
+ WROTE_DEBIAN_CHROOT="yes"
+ echo "Writing /etc/debian_chroot ..."
+ cat "$DEST_"/etc/hostname > "$DEST_"/etc/debian_chroot
+fi
+
+if (( $# < 1 )); then
+ chroot "$DEST_"
+ RC=$?
+else
+ chroot "$DEST_" "$@"
+ RC=$?
+fi
umount_all
+if [ ! -z "$WROTE_DEBIAN_CHROOT" ]; then
+ rm "$DEST_"/etc/debian_chroot
+fi
+
+exit $RC