From 40cf91104f4e51f3f4c527fc09e9f87b86026224 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Mon, 3 Sep 2012 22:44:46 +0200 Subject: Make mounting and unmounting in chroot more robust. --- debian/changelog | 1 + internet-kiosk-management/sbin/ik_create | 15 +++++++++------ internet-kiosk-management/sbin/ik_shell | 15 +++++++++------ internet-kiosk-management/sbin/ik_upgrade | 16 ++++++++++------ 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 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 + -- cgit v1.2.3