summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2012-09-03 22:52:18 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2012-09-03 22:52:18 +0200
commit7eddca9df36c65acf9ad27a59fde1fb8fa877b7e (patch)
treece5b380c2f4a33e20c82f76148f47cbc3be90a5e
parent40cf91104f4e51f3f4c527fc09e9f87b86026224 (diff)
downloadinternet-kiosk-7eddca9df36c65acf9ad27a59fde1fb8fa877b7e.tar.gz
internet-kiosk-7eddca9df36c65acf9ad27a59fde1fb8fa877b7e.tar.bz2
internet-kiosk-7eddca9df36c65acf9ad27a59fde1fb8fa877b7e.zip
Provide start-stop-daemon wrapper, allows machines to boot while system is in maintenance mode.
-rw-r--r--debian/changelog2
-rwxr-xr-xinternet-kiosk-management/sbin/ik_create17
-rwxr-xr-xinternet-kiosk-management/sbin/ik_shell26
-rwxr-xr-xinternet-kiosk-management/sbin/ik_upgrade26
4 files changed, 49 insertions, 22 deletions
diff --git a/debian/changelog b/debian/changelog
index 9fba4f4..e643b60 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -26,6 +26,8 @@ internet-kiosk (0.0.2-0~edu1) UNRELEASED; urgency=low
- Make sure xrandr is available inside chroot, recommend an SSH server
for remote maintenance.
- Make mounting and unmounting in chroot more robust.
+ - Provide start-stop-daemon wrapper, allows machines to boot while
+ system is in maintenance mode.
-- 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 6649a1b..4ceeeaf 100755
--- a/internet-kiosk-management/sbin/ik_create
+++ b/internet-kiosk-management/sbin/ik_create
@@ -115,11 +115,19 @@ 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
+test -e /sbin/start-stop-daemon.real || mv /sbin/start-stop-daemon /sbin/start-stop-daemon.real
+echo '#!/bin/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 [ "\$X2GO_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 +x /sbin/start-stop-daemon
+export X2GO_HANDLE_DAEMONS=false
+
# tweak mtab diversion
[ \$? -eq 0 ] && rm -f /etc/mtab
[ \$? -eq 0 ] && ln -sf /proc/mounts /etc/mtab
@@ -164,9 +172,6 @@ chmod +x /sbin/start-stop-daemon
[ \$? -eq 0 ] && test -e /etc/modprobe.d/i915-kms.conf && sed -s 's/modeset=1/modeset=0/' -i /etc/modprobe.d/i915-kms.conf
[ \$? -eq 0 ] && test -e /etc/modprobe.d/radeon-kms.conf && sed -s 's/modeset=1/modeset=0/' -i /etc/modprobe.d/radeon-kms.conf
-# restore start-stop-daemon
-[ \$(stat --format '%s' /sbin/start-stop-daemon) -lt 200 ] && mv /sbin/start-stop-daemon.keep /sbin/start-stop-daemon
-
EOF
chmod u+x $IK_CHROOT/ik_dte_install.sh
diff --git a/internet-kiosk-management/sbin/ik_shell b/internet-kiosk-management/sbin/ik_shell
index 49038ec..6485193 100755
--- a/internet-kiosk-management/sbin/ik_shell
+++ b/internet-kiosk-management/sbin/ik_shell
@@ -64,16 +64,26 @@ echo
echo 'Note: Service restarts have been disabled in the Internet Kiosk Terminal's chroot.'
echo
-# 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
+# migrate start-stop-daemon to wrapper & variable based start-stop-daemon execution
+if [ \$(stat --format '%s' /sbin/start-stop-daemon) -gt 200 ]; then
+ cp /sbin/start-stop-daemon /sbin/start-stop-daemon.real
+ echo '#!/bin/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
-/bin/$IK_SHELL
+# make sure the /etc/hostname file is not presented in the chroot
+[ -e /etc/hostname ] && rm -f /etc/hostname
-# restore start-stop-daemon
-[ \$(stat --format '%s' /sbin/start-stop-daemon) -lt 200 ] && mv /sbin/start-stop-daemon.keep /sbin/start-stop-daemon
+export IK_HANDLE_DAEMONS=false
+
+/bin/$IK_SHELL
echo
echo "Internet Kiosk Terminal Shell has exited."
diff --git a/internet-kiosk-management/sbin/ik_upgrade b/internet-kiosk-management/sbin/ik_upgrade
index afa1d22..ded72f9 100755
--- a/internet-kiosk-management/sbin/ik_upgrade
+++ b/internet-kiosk-management/sbin/ik_upgrade
@@ -52,11 +52,24 @@ export http_proxy=$IK_HTTP_PROXY
export https_proxy=$IK_HTTPS_PROXY
export ftp_proxy=$IK_FTP_PROXY
-# 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
+# migrate start-stop-daemon to wrapper & variable based start-stop-daemon execution
+if [ \$(stat --format '%s' /sbin/start-stop-daemon) -gt 200 ]; then
+ cp /sbin/start-stop-daemon /sbin/start-stop-daemon.real
+ echo '#!/bin/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
+
+# make sure the /etc/hostname file is not presented in the chroot
+[ -e /etc/hostname ] && rm -f /etc/hostname
+
+export IK_HANDLE_DAEMONS=false
[ \$? -eq 0 ] && apt-get update
[ \$? -eq 0 ] && apt-get upgrade
@@ -70,9 +83,6 @@ for symlink in /vmlinuz /vmlinuz.old /initrd.img /initrd.img.old; do
fi
done
-# restore start-stop-daemon
-[ \$(stat --format '%s' /sbin/start-stop-daemon) -lt 200 ] && mv /sbin/start-stop-daemon.keep /sbin/start-stop-daemon
-
echo
echo "Internet Kiosk Diskless Terminal upgrade has finished."
echo