cloudstack/patches/systemvm/debian/xe/xe-linux-distribution.init
2010-10-21 11:41:18 -07:00

107 lines
2.4 KiB
Bash

#!/bin/bash
#
# 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: XenServer Virtual Machine Tools
# Required-Start: $local_fs
# Required-Stop: $local_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})
# This is equivalent to daemon() in C
( exec &>/dev/null ; ${XE_DAEMON} -p ${XE_DAEMON_PIDFILE} & )
}
stop()
{
action $"Stopping xe daemon: " kill -TERM $(cat ${XE_DAEMON_PIDFILE})
}
# fail silently if not running xen
if [ ! -d /proc/xen ]; then
exit
fi
case "$1" in
start)
start
;;
stop)
stop
;;
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"
exit 1
esac
exit $?