summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Baumann <daniel@debian.org>2009-12-23 22:27:18 +0100
committerDaniel Baumann <daniel@debian.org>2011-03-09 19:17:03 +0100
commit45406a5c987a2e4510dbb5df06c93ed302228fc0 (patch)
treed366eaa164c1f7864b452cfcc9d7b8a7247b81b5
parent6d215be0e7cf165c6fe14d265e7dfdc66dccbc05 (diff)
downloadlive-build-45406a5c987a2e4510dbb5df06c93ed302228fc0.zip
live-build-45406a5c987a2e4510dbb5df06c93ed302228fc0.tar.gz
Making unmount routines a bit more robust.
-rwxr-xr-xfunctions/exit.sh17
-rwxr-xr-xhelpers/lh_chroot_devpts4
2 files changed, 16 insertions, 5 deletions
diff --git a/functions/exit.sh b/functions/exit.sh
index 928fd6e..f29dbf7 100755
--- a/functions/exit.sh
+++ b/functions/exit.sh
@@ -20,10 +20,19 @@ Exit ()
# Always exit true in case we are not able to unmount
# (e.g. due to running processes in chroot from user customizations)
Echo_message "Begin unmounting filesystems..."
- for DIRECTORY in $(awk -v dir="${PWD}/chroot/" '$2 ~ dir { print $2 }' /proc/mounts | sort -r)
- do
- umount ${DIRECTORY} > /dev/null 2>&1 || true
- done
+
+ if [ -e /proc/mounts ]
+ then
+ for DIRECTORY in $(awk -v dir="${PWD}/chroot/" '$2 ~ dir { print $2 }' /proc/mounts | sort -r)
+ do
+ umount ${DIRECTORY} > /dev/null 2>&1 || true
+ done
+ else
+ for DIRECTORY in /dev/pts /dev /proc /selinux /sys
+ do
+ umount -f chroot/${DIRECTORY} > /dev/null 2>&1 || true
+ done
+ fi
return ${VALUE}
}
diff --git a/helpers/lh_chroot_devpts b/helpers/lh_chroot_devpts
index 75edab2..9248595 100755
--- a/helpers/lh_chroot_devpts
+++ b/helpers/lh_chroot_devpts
@@ -67,9 +67,11 @@ case "${1}" in
# Unmounting /dev/pts
if [ "${LH_USE_FAKEROOT}" != "true" ]
then
- if Find_files chroot/dev/pts/*
+ if grep -qs "$(pwd)/chroot/dev/pts" /proc/mounts || Find_files chroot/dev/pts/*
then
${LH_ROOT_COMMAND} umount chroot/dev/pts
+ else
+ ${LH_ROOT_COMMAND} umount -f chroot/dev/pts > /dev/null 2>&1 || true
fi
fi