changeset 1278:a542c58a4c8e

Add zapchroot script that unmounts everything under a directory.
author Rob Landley <rob@landley.net>
date Mon, 08 Nov 2010 21:06:29 -0600
parents 6357653d921e
children 8c0b1c9b6525
files sources/root-filesystem/bin/zapchroot
diffstat 1 files changed, 40 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sources/root-filesystem/bin/zapchroot	Mon Nov 08 21:06:29 2010 -0600
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# Copyright 2010 Rob Landley <rob@landley.net> licensed under GPLv2
+
+if [ "$1" == "-d" ]
+then
+  DELETE=1
+  shift
+fi
+
+# Clean up a chroot directory
+
+ZAP=$(readlink -f "$1" 2>/dev/null)
+
+if [ ! -d "$ZAP" ]
+then
+  echo "usage: zapchroot [-d] dirname"
+  exit 1
+fi
+
+i="$(readlink -f "$(pwd)")"
+if [ "$ZAP" == "${i:0:${#ZAP}}" ]
+then
+  echo "Sanity check failed: cwd is under zapdir" >&2
+  exit 1
+fi
+
+# Iterate through the second entry of /proc/mounts in reverse order
+
+for i in $(awk '{print $2}' /proc/mounts | tac)
+do
+  # De-escape octal versions of space, tab, backslash, newline...
+  i=$(echo -e "$i")
+
+  # Skip entries that aren't under our chroot
+  [ "$ZAP" != "${i:0:${#ZAP}}" ] && continue
+
+  echo "Umounting: $i"
+  umount "$i"
+done