Easy Chroot 0.3.1
[easy-deb-chroot] / fremantle / easy-chroot / .py2deb_build_folder / easy-chroot / src / sbin / closechroot
diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot
new file mode 100755 (executable)
index 0000000..cdb2c89
--- /dev/null
@@ -0,0 +1,87 @@
+#!/bin/sh
+#Close a mounted chroot; this means killing all the chroot apps and unmounting the bound directories.
+
+# By Alan M Bruce (qole)
+#
+# GPL licensed; keep code free!
+
+if [ "`whoami`" != "root" ] ; then
+  echo "please run me as root!"
+  exit 9
+fi
+
+#Try to get the chroot location from the first parameter
+CHROOT=$1
+
+#Try to get the chroot location from the config file... 
+if [ "x$CHROOT" = x ] ; then
+  #Pull in the config, if possible...
+  [ -f /home/user/.chroot ] && . /home/user/.chroot
+  #Still not set? Set to default
+  [ "x$CHROOT" != x ] || CHROOT=/debian
+fi
+
+# Strip off a trailing slash
+LASTCHAR=`echo $CHROOT | cut -c ${#CHROOT}`
+if [ "$LASTCHAR" = "/" ] ; then
+   echo "..stripping trailing slash..." >/dev/stderr
+   CHROOT=`echo $CHROOT | cut -c 0-$((${#CHROOT}-1))`
+fi
+
+#Abort if chroot not mounted.
+if [ ! -f "$CHROOT/var/lock/qmount-complete" ] ; then
+  echo "Nothing to do; chroot not mounted!"
+  exit 1
+fi
+
+echo "Closing the chroot..."
+
+# Fremantle's fuser command is broken.
+# We can either use Debian's one instead (as gfuser),
+# or we can use the workaround: "cd /proc" first.
+
+echo "...closing chroot apps..."
+
+TEST1=`mount | grep " $CHROOT "`
+if [ "x$TEST1" != "x" ] ; then
+  if [ -f "/bin/gfuser" ] ; then
+    gfuser -m "$CHROOT" -k
+  else
+    cd /proc
+    fuser -m "$CHROOT" -k
+  fi
+else
+  if [ -f "/bin/gfuser" ] ; then
+    gfuser "$CHROOT" -k
+  else
+    cd /proc
+    fuser "$CHROOT" -k
+  fi
+fi
+
+echo "..Unmounting bound dirs..."
+
+#Any external mounts
+
+umount -fl $CHROOT/home/user/MyDocs
+umount -fl $CHROOT/dev/pts
+umount -fl $CHROOT/dev/shm
+
+MNTD=`cat /proc/mounts | grep " $CHROOT/" | awk '{print $2}'`
+for MDRV in $MNTD ; do
+  echo "unmounting $MDRV"
+  umount -l "$MDRV"
+done
+
+if [ -f "$CHROOT/var/lock/qmount-complete" ] ; then
+  rm "$CHROOT/var/lock/qmount-complete"
+fi
+
+if [ -f "$CHROOT/var/lock/chroot-complete" ] ; then
+  rm "$CHROOT/var/lock/chroot-complete"
+fi
+
+/sbin/qumount $CHROOT
+
+echo "chroot closed."
+exit 0
\ No newline at end of file