#!/bin/bash # Copyright (C) 2012 by Debian Edu project, http://wiki.debian.org/DebianEdu # Mike Gabriel # Internet Kiosk is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # Internet Kiosk is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. set -e if echo $0 | egrep "^./bin/.*$" >/dev/null; then ETCDIR="etc/" elif echo $0 | egrep "^./ik_.*$" >/dev/null; then ETCDIR="../etc/" else ETCDIR=/etc/internet-kiosk/ fi source $ETCDIR/ik_settings IK_SHELL="${IK_SHELL:-bash}" IK_CHROOT="${IK_CHROOT:-/opt/internet-kiosk}" test -e "$IK_CHROOT" || { echo "ERROR: Internet Kiosk Terminal chroot does not exist at $IK_CHROOT." echo "Run ik_create to create it..." exit -1 } [ "x$USER" == "xroot" ] || { echo "ERROR: Internet Kiosk Diskless Terminal management scripts have to run" echo "as super-user root." exit -2 } cat > "$IK_CHROOT/ik_dte_shell.sh" < /sbin/start-stop-daemon echo '#' >> /sbin/start-stop-daemon echo '# Internet Kiosk Wrapper to avoid running daemons while performing maintenance.' >> /sbin/start-stop-daemon echo '#' >> /sbin/start-stop-daemon echo >> /sbin/start-stop-daemon echo 'if [ "\$IK_HANDLE_DAEMONS" != "false" ]; then' >> /sbin/start-stop-daemon echo ' /sbin/start-stop-daemon.real "\$@"' >> /sbin/start-stop-daemon echo 'fi' >> /sbin/start-stop-daemon chmod a+x /sbin/start-stop-daemon fi export IK_HANDLE_DAEMONS=false /bin/$IK_SHELL echo echo "Internet Kiosk Terminal Shell has exited." echo EOF chmod u+x "$IK_CHROOT/ik_dte_shell.sh" mkdir -p $IK_CHROOT/{proc,dev/pts,sys} mount | grep $IK_CHROOT/proc >/dev/null || mount -tproc proc $IK_CHROOT/proc || true mount | grep $IK_CHROOT/sys >/dev/null || mount -tsysfs sys $IK_CHROOT/sys || true mount | grep $IK_CHROOT/dev/pts >/dev/null || mount -tdevpts devts $IK_CHROOT/dev/pts || true chroot "$IK_CHROOT" /ik_dte_shell.sh 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