X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_sbin%2Fgrml-chroot;h=e8ed430a61378f635c6c442fca91a74c3a34159b;hb=e18e3e5f9cd8e47281c580fab3a4acae49d97c08;hp=17f3d3c234905d1e20190eaa1811acd78679bc99;hpb=f29c425ad79cbe31fca61397cbd3d97347f32cd7;p=grml-scripts.git diff --git a/usr_sbin/grml-chroot b/usr_sbin/grml-chroot index 17f3d3c..e8ed430 100755 --- a/usr_sbin/grml-chroot +++ b/usr_sbin/grml-chroot @@ -45,8 +45,8 @@ function mountit local all_options_="" - if [[ $options_ == "--rbind" ]]; then - all_options_="--rbind $type_" + if [[ $options_ == "--bind" ]]; then + all_options_="--bind $type_" else all_options_="-t $type_ none" fi @@ -55,8 +55,9 @@ function mountit function umount_all { - for i in $MOUNTED_; do - umount --recursive "${DEST_}/$i" + local reverse=$(echo $MOUNTED_ | awk '{ for (i=NF; i>1; i--) printf("%s ",$i); print $1; }') + for i in $reverse; do + umount "${DEST_}/$i" done } @@ -78,6 +79,10 @@ if (( $# < 1 )); then die "Wrong number of arguments." fi +if ! which awk >/dev/null 2>&1 ; then + die "No awk binary found, required for execution." +fi + DEST_="$1"; shift if [ ! -d "$DEST_" ]; then @@ -85,9 +90,21 @@ if [ ! -d "$DEST_" ]; then fi -mountit "proc" "proc" -mountit "sysfs" "sys" -mountit "/dev" "dev" "--rbind" + +if [ -f "$DEST_"/proc/cmdline ] ; then + echo "Looks like $DEST_ already has filesystems mounted, skipping." +else + mountit "proc" "proc" + mountit "sysfs" "sys" + mountit "/dev" "dev" "--bind" + mountit "devpts" "dev/pts" + if [ -d /sys/firmware/efi/efivars ] ; then + mountit "efivarfs" "sys/firmware/efi/efivars" + fi + if [ -d "$DEST_"/run/udev ] && [ -d /run/udev ] ; then + mountit "/run/udev" "/run/udev" "--bind" + fi +fi WROTE_DEBIAN_CHROOT="" if [ ! -f "$DEST_"/etc/debian_chroot ]; then