summaryrefslogtreecommitdiff
path: root/mk/xe-linux-distribution.init
diff options
context:
space:
mode:
Diffstat (limited to 'mk/xe-linux-distribution.init')
-rw-r--r--mk/xe-linux-distribution.init117
1 files changed, 117 insertions, 0 deletions
diff --git a/mk/xe-linux-distribution.init b/mk/xe-linux-distribution.init
new file mode 100644
index 0000000..c2c9c03
--- /dev/null
+++ b/mk/xe-linux-distribution.init
@@ -0,0 +1,117 @@
+#!/bin/sh
+#
+# xe-linux-distribution Write Linux distribution information to XenStore.
+#
+# chkconfig: 2345 14 86
+# description: Writes Linux distribution version information to XenStore.
+#
+### BEGIN INIT INFO
+# Provides: xe-linux-distribution
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: XenServer Virtual Machine daemon providing host integration services
+# Description: Writes Linux distribution version information to XenStore.
+### END INIT INFO
+
+LANG="C"
+export LANG
+
+if [ -f /etc/init.d/functions ] ; then
+. /etc/init.d/functions
+else
+action()
+{
+ descr=$1 ; shift
+ cmd=$@
+ echo -n "$descr "
+ $cmd
+ ret=$?
+ if [ $ret -eq 0 ] ; then
+ echo "OK"
+ else
+ echo "Failed"
+ fi
+ return $ret
+}
+fi
+
+XE_LINUX_DISTRIBUTION=/usr/sbin/xe-linux-distribution
+XE_LINUX_DISTRIBUTION_CACHE=/var/cache/xe-linux-distribution
+XE_DAEMON=/usr/sbin/xe-daemon
+XE_DAEMON_PIDFILE=/var/run/xe-daemon.pid
+
+if [ ! -x "${XE_LINUX_DISTRIBUTION}" ] ; then
+ exit 0
+fi
+
+start()
+{
+ if [ ! -e /proc/xen/xenbus ] ; then
+ if [ ! -d /proc/xen ] ; then
+ action $"Mounting xenfs on /proc/xen:" /bin/false
+ echo "Could not find /proc/xen directory."
+ echo "You need a post 2.6.29-rc1 kernel with CONFIG_XEN_COMPAT_XENFS=y and CONFIG_XENFS=y|m"
+ exit 1
+ else
+ # This is needed post 2.6.29-rc1 when /proc/xen support was pushed upstream as a xen filesystem
+ action $"Mounting xenfs on /proc/xen:" mount -t xenfs none /proc/xen
+ fi
+ fi
+
+ if [ -e /proc/xen/capabilities ] && grep -q control_d /proc/xen/capabilities ; then
+ # Do not want daemon in domain 0
+ exit 0
+ fi
+
+ action $"Detecting Linux distribution version:" \
+ ${XE_LINUX_DISTRIBUTION} ${XE_LINUX_DISTRIBUTION_CACHE}
+
+ action $"Starting xe daemon: " /bin/true
+ mkdir -p $(dirname ${XE_DAEMON_PIDFILE})
+ if start-stop-daemon --start --background --exec ${XE_DAEMON} -- -p ${XE_DAEMON_PIDFILE} 1>/dev/null 2>/dev/null; then
+ exit 0
+ else
+ # This is equivalent to daemon() in C
+ ( exec &>/dev/null ; ${XE_DAEMON} -p ${XE_DAEMON_PIDFILE} 2>/dev/null & )
+ fi
+}
+
+stop()
+{
+ action $"Stopping xe daemon: " kill -TERM $(cat ${XE_DAEMON_PIDFILE})
+}
+
+status()
+{
+ cat ${XE_LINUX_DISTRIBUTION_CACHE}
+}
+
+# fail silently if not running xen
+if [ ! -d /proc/xen ]; then
+ exit
+fi
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ status)
+ status
+ ;;
+ force-reload|restart)
+ stop
+ start
+ ;;
+ *)
+ # do not advertise unreasonable commands that there is no reason
+ # to use with this device
+ echo $"Usage: $0 start|restart|status"
+ exit 1
+esac
+
+exit $?