diff options
Diffstat (limited to 'internet-kiosk-management/sbin/ik_create')
| -rwxr-xr-x | internet-kiosk-management/sbin/ik_create | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/internet-kiosk-management/sbin/ik_create b/internet-kiosk-management/sbin/ik_create new file mode 100755 index 0000000..3546228 --- /dev/null +++ b/internet-kiosk-management/sbin/ik_create @@ -0,0 +1,174 @@ +#!/bin/bash + +# Copyright (C) 2012 by Debian Edu project, http://wiki.debian.org/DebianEdu +# Mike Gabriel <mike.gabriel@das-netzwerkteam.de> + +# 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/" + SHAREDIR="share/" +elif echo $0 | egrep "^./ik_.*$" >/dev/null; then + ETCDIR="../etc" + SHAREDIR="../share/" +else + ETCDIR=/etc/internet-kiosk + SHAREDIR="/usr/share/internet-kiosk/" +fi + +source $ETCDIR/ik_settings + +IK_BASE="${IK_BASE:-/opt/internet-kiosk}" +IK_CHROOT="${IK_CHROOT:-$IK_BASE/chroot}" +IK_CONFIG="${IK_CONFIG:-$IK_BASE/etc}" +IK_DEBMIRROR_URL="${IK_DEBMIRROR_URL:-'http://ftp.debian.org/debian'}" +IK_EXTRA_DEBURL="${IK_EXTRA_DEBURL:-'deb http://packages.it-zukunft-schule.de squeeze main'}" +IK_MODULE_BLACKLIST="${IK_MODULE_BLACKLIST:-'pcspkr'}" + +test -e "$IK_CHROOT" && { + echo "ERROR: Internet Kiosk Terminal chroot already exists at $IK_CHROOT." + echo "Clear $IK_BASE/ and then run $(basename $0) again..." + exit -1 +} + +[ "x$USER" == "xroot" ] || { + echo "ERROR: Internet Kiosk Diskless Terminal management scripts have to run as super-user root." + exit -2 +} + +echo "Hit <RETURN> to continue with the Internet Kiosk Terminal's chroot creation using the above parameters..." +echo "Alternatively, hit STRG-C to cancel the operation now!!!" +read + +export LANG=C + +mkdir -p $IK_CONFIG +test -f $IK_CONFIG/ik_init || cp $SHAREDIR/ik_init $IK_CONFIG +test -f $IK_CONFIG/ik_start || cp $SHAREDIR/ik_start $IK_CONFIG + +apt-get install debootstrap +mkdir -p $IK_CHROOT + +# use a proxy server for APT (if any is configured) +export http_proxy="$IK_HTTP_PROXY" +export https_proxy="$IK_HTTPS_PROXY" +export ftp_proxy="$IK_FTP_PROXY" + +debootstrap --arch i386 stable $IK_CHROOT/ $IK_DEBMIRROR_URL +cp /etc/resolv.conf $IK_CHROOT/etc/resolv.conf +echo "auto lo" >> $IK_CHROOT/etc/network/interfaces +echo "iface lo inet loopback" >> $IK_CHROOT/etc/network/interfaces +echo "localhost" > $IK_CHROOT/etc/hostname +echo "127.0.0.1 localhost" >> $IK_CHROOT/etc/hosts +cat > $IK_CHROOT/etc/fstab <<EOF +#proc /proc proc defaults 0 0 +none /dev/pts devpts gid=5,mode=620 0 0 +none /tmp tmpfs size=50M,mode=1777 0 0 +none /root tmpfs size=100M,mode=700 0 0 +none /etc/udev/rules.d tmpfs size=50M 0 0 +none /var/run tmpfs size=50M 0 0 +none /var/log tmpfs size=50M 0 0 +none /var/lock tmpfs size=50M 0 0 +none /home tmpfs size=50M 0 0 +none /media tmpfs size=50M 0 0 +none /var/lib/nfs tmpfs size=50M 0 0 +none /var/lib/xkb tmpfs size=50M 0 0 +none /var/lib/dbus tmpfs size=50M 0 0 +none /var/lib/alsa tmpfs size=50M 0 0 +EOF + + +cat > $IK_CHROOT/ikdt_install.sh <<EOF +#!/bin/bash + +export LANG=C +mount /proc +mount /dev/pts +export HOME=/root +export http_proxy=$IK_HTTP_PROXY +export https_proxy=$IK_HTTPS_PROXY +export ftp_proxy=$IK_FTP_PROXY + +mkdir -p /tmp/user/0 +mkdir -p /var/lib/xkb +mkdir -p /var/lib/nfs +mkdir -p /var/lib/dbus +mkdir -p /etc/network +ln -sf /dev/shm /etc/network/run + +# disable service restarts +test -e /sbin/start-stop-daemon.keep || mv /sbin/start-stop-daemon /sbin/start-stop-daemon.keep +echo '#!/bin/sh' > /sbin/start-stop-daemon +echo 'exit 0' >> /sbin/start-stop-daemon +chmod +x /sbin/start-stop-daemon + +[ \$? -eq 0 ] && test -n "$IK_EXTRA_DEBURL" && echo "$IK_EXTRA_DEBURL" > /etc/apt/sources.list.d/itzks.list +[ \$? -eq 0 ] && test -n "$IK_EXTRA_DEBURL" && apt-get update +[ \$? -eq 0 ] && test -n "$IK_EXTRA_DEBURL" && apt-get install itzks-keyring -y --force-yes +[ \$? -eq 0 ] && apt-get update +[ \$? -eq 0 ] && apt-get install $IK_SHELL -y +[ \$? -eq 0 ] && apt-get install syslinux locales -y +[ \$? -eq 0 ] && dpkg-reconfigure locales +[ \$? -eq 0 ] && apt-get install linux-image-486 -y +[ \$? -eq 0 ] && mv /vmlinuz /vmlinuz.486 +[ \$? -eq 0 ] && mv /initrd.img /initrd.img.486 +[ \$? -eq 0 ] && apt-get install linux-image-686 -y +[ \$? -eq 0 ] && mv /vmlinuz /vmlinuz.686 +[ \$? -eq 0 ] && mv /initrd.img /initrd.img.686 +[ \$? -eq 0 ] && apt-get install internet-kiosk -y + +# blacklist kernel modules +[ \$? -eq 0 ] && echo && echo "# modules blacklisted on Internet Kiosk Diskless Terminals..." >> /etc/modprobe.d/blacklist.conf +[ \$? -eq 0 ] && for mod in $IK_MODULE_BLACKLIST; do echo "blacklist \$mod" >> /etc/modprobe.d/blacklist.conf; done + +# Pulsaudio must come afterwards +[ \$? -eq 0 ] && apt-get install alsa-base pulseaudio -y +[ \$? -eq 0 ] && apt-get install patch -y +[ \$? -eq 0 ] && patch /etc/initramfs-tools/initramfs.conf <<PATCH +39c39 +< BOOT=local +--- +> BOOT=nfs +PATCH +[ \$? -eq 0 ] && rm -f /etc/udev/rules.d/*-persistent-*.rules +[ \$? -eq 0 ] && useradd internet-kiosk +[ \$? -eq 0 ] && adduser internet-kiosk audio +[ \$? -eq 0 ] && adduser internet-kiosk pulse +[ \$? -eq 0 ] && adduser pulse audio +[ \$? -eq 0 ] && update-initramfs -u -v +[ \$? -eq 0 ] && passwd -l root + +# tweak mtab diversion +[ \$? -eq 0 ] && rm -f /etc/mtab +[ \$? -eq 0 ] && ln -sf /proc/mounts /etc/mtab + +# restore start-stop-daemon +[ \$(stat --format '%s' /sbin/start-stop-daemon) -lt 200 ] && mv /sbin/start-stop-daemon.keep /sbin/start-stop-daemon + +umount -l /proc &>/dev/null +umount -l /dev/pts &>/dev/null +EOF +chmod u+x $IK_CHROOT/ikdt_install.sh +chroot $IK_CHROOT /ikdt_install.sh + +rm -f $IK_CHROOT/etc/udev/rules.d/*-persistent-*.rules + +ik_update + +echo "Internet Kiosk Diskless Terminal creation has finished successfully." +echo |
