| #!/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 $? |
| |