summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2012-09-03 22:44:46 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2012-09-03 22:44:46 +0200
commit40cf91104f4e51f3f4c527fc09e9f87b86026224 (patch)
treec951323fa302226b98868319452b73c55fe062f3
parentf5107b21ed0ccc58c186bef8039b3c3fdcb7a7f5 (diff)
downloadinternet-kiosk-40cf91104f4e51f3f4c527fc09e9f87b86026224.tar.gz
internet-kiosk-40cf91104f4e51f3f4c527fc09e9f87b86026224.tar.bz2
internet-kiosk-40cf91104f4e51f3f4c527fc09e9f87b86026224.zip
Make mounting and unmounting in chroot more robust.
-rw-r--r--debian/changelog1
-rwxr-xr-xinternet-kiosk-management/sbin/ik_create15
-rwxr-xr-xinternet-kiosk-management/sbin/ik_shell15
-rwxr-xr-xinternet-kiosk-management/sbin/ik_upgrade16
4 files changed, 29 insertions, 18 deletions
diff --git a/debian/changelog b/debian/changelog
index f8c6e3f..9fba4f4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -25,6 +25,7 @@ internet-kiosk (0.0.2-0~edu1) UNRELEASED; urgency=low
for chroot mounting.
- Make sure xrandr is available inside chroot, recommend an SSH server
for remote maintenance.
+ - Make mounting and unmounting in chroot more robust.
-- Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Tue, 21 Aug 2012 18:14:02 +0200
diff --git a/internet-kiosk-management/sbin/ik_create b/internet-kiosk-management/sbin/ik_create
index 5aca132..6649a1b 100755
--- a/internet-kiosk-management/sbin/ik_create
+++ b/internet-kiosk-management/sbin/ik_create
@@ -171,15 +171,18 @@ EOF
chmod u+x $IK_CHROOT/ik_dte_install.sh
-mount --bind /proc $IK_CHROOT/proc
-mount --bind /dev $IK_CHROOT/dev
-mount --bind /sys $IK_CHROOT/sys
+mkdir -p $IK_CHROOT/{proc,dev/pts,sys}
+mount -tproc proc $IK_CHROOT/proc || true
+mount -tsysfs sys $IK_CHROOT/sys || true
+mount -tdevts devts $IK_CHROOT/dev/pts || true
chroot $IK_CHROOT /ik_dte_install.sh
-umount $IK_CHROOT/proc
-umount $IK_CHROOT/dev
-umount $IK_CHROOT/sys
+for mountpoint in proc dev/pts sys; do
+ while true; do
+ cat /proc/mounts | grep $IK_CHROOT/$mountpoint >/dev/null && umount $IK_CHROOT/$mountpoint || break
+ done
+done
rm -f $IK_CHROOT/etc/udev/rules.d/*-persistent-*.rules
diff --git a/internet-kiosk-management/sbin/ik_shell b/internet-kiosk-management/sbin/ik_shell
index c75dcd0..49038ec 100755
--- a/internet-kiosk-management/sbin/ik_shell
+++ b/internet-kiosk-management/sbin/ik_shell
@@ -81,12 +81,15 @@ echo
EOF
chmod u+x "$IK_CHROOT/ik_dte_shell.sh"
-mount --bind /proc $IK_CHROOT/proc
-mount --bind /dev $IK_CHROOT/dev
-mount --bind /sys $IK_CHROOT/sys
+mkdir -p $IK_CHROOT/{proc,dev/pts,sys}
+mount -tproc proc $IK_CHROOT/proc || true
+mount -tsysfs sys $IK_CHROOT/sys || true
+mount -tdevts devts $IK_CHROOT/dev/pts || true
chroot "$IK_CHROOT" /ik_dte_shell.sh
-umount $IK_CHROOT/proc
-umount $IK_CHROOT/dev
-umount $IK_CHROOT/sys
+for mountpoint in proc dev/pts sys; do
+ while true; do
+ cat /proc/mounts | grep $IK_CHROOT/$mountpoint >/dev/null && umount $IK_CHROOT/$mountpoint || break
+ done
+done \ No newline at end of file
diff --git a/internet-kiosk-management/sbin/ik_upgrade b/internet-kiosk-management/sbin/ik_upgrade
index 3f92fd9..afa1d22 100755
--- a/internet-kiosk-management/sbin/ik_upgrade
+++ b/internet-kiosk-management/sbin/ik_upgrade
@@ -80,12 +80,16 @@ EOF
chmod u+x "$IK_CHROOT/ik_dte_upgrade.sh"
-mount --bind /proc $IK_CHROOT/proc
-mount --bind /dev $IK_CHROOT/dev
-mount --bind /sys $IK_CHROOT/sys
+mkdir -p $IK_CHROOT/{proc,dev/pts,sys}
+mount -tproc proc $IK_CHROOT/proc || true
+mount -tsysfs sys $IK_CHROOT/sys || true
+mount -tdevts devts $IK_CHROOT/dev/pts || true
chroot "$IK_CHROOT" /ik_dte_upgrade.sh
-umount $IK_CHROOT/proc
-umount $IK_CHROOT/dev
-umount $IK_CHROOT/sys
+for mountpoint in proc dev/pts sys; do
+ while true; do
+ cat /proc/mounts | grep $IK_CHROOT/$mountpoint >/dev/null && umount $IK_CHROOT/$mountpoint || break
+ done
+done
+