| #!/bin/sh |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| ### BEGIN INIT INFO |
| # Provides: xend |
| # Required-Start: $remote_fs |
| # Required-Stop: $remote_fs |
| # Default-Start: 2 3 4 5 |
| # Default-Stop: 0 1 6 |
| # Short-Description: XEN control daemon |
| # Description: XEN control daemon |
| ### END INIT INFO |
| |
| PATH=/usr/lib/xen-common/bin:/sbin:/bin:/usr/sbin:/usr/bin |
| DESC="Xen daemons" |
| |
| VERSION=$(xen-version) |
| ROOT=/usr/lib/xen-$VERSION |
| |
| XEND="$ROOT"/bin/xend |
| XENCONSOLED="$ROOT"/bin/xenconsoled |
| XENCONSOLED_PIDFILE="/var/run/xenconsoled.pid" |
| XENSTORED="$ROOT"/bin/xenstored |
| XENSTORED_DIR="/var/run/xenstored" |
| XENSTORED_PIDFILE="/var/run/xenstore.pid" |
| |
| [ "$VERSION" ] || exit 0 |
| [ -x "$XEND" ] || exit 0 |
| |
| [ -r /etc/default/xend ] && . /etc/default/xend |
| |
| . /lib/init/vars.sh |
| . /lib/lsb/init-functions |
| |
| modules_setup() |
| { |
| modprobe xenfs 2>/dev/null |
| modprobe xen-evtchn 2>/dev/null |
| modprobe xen_blkback 2>/dev/null |
| modprobe xen_netback 2>/dev/null |
| modprobe xen_gntdev 2>/dev/null |
| } |
| |
| xenfs_setup() |
| { |
| [ -e "/proc/xen/capabilities" ] && return 0 |
| log_progress_msg "xenfs" |
| [ -d "/proc/xen" ] || return 1 |
| mount -t xenfs xenfs /proc/xen || return 1 |
| return 0 |
| } |
| |
| capability_check() |
| { |
| [ -e "/proc/xen/capabilities" ] || return 1 |
| grep -q "control_d" /proc/xen/capabilities || return 1 |
| return 0 |
| } |
| |
| xend_start() |
| { |
| log_progress_msg "xend" |
| $XEND status && return 1 |
| $XEND start || return 2 |
| |
| i=0 |
| while [ $i -lt 10 ]; do |
| $XEND status && return 0 || true |
| i=$(($i + 1)) |
| sleep 1 |
| done |
| return 2 |
| } |
| |
| xend_stop() |
| { |
| log_progress_msg "xend" |
| $XEND status || return 0 |
| $XEND stop || return 1 |
| } |
| |
| xenconsoled_start() |
| { |
| log_progress_msg "xenconsoled" |
| start-stop-daemon --start --quiet --pidfile "$XENCONSOLED_PIDFILE" --exec "$XENCONSOLED" --test > /dev/null \ |
| || return 1 |
| start-stop-daemon --start --quiet --pidfile "$XENCONSOLED_PIDFILE" --exec "$XENCONSOLED" -- \ |
| $XENCONSOLED_ARGS --pid-file="$XENCONSOLED_PIDFILE" \ |
| || return 2 |
| } |
| |
| xenstored_start() |
| { |
| log_progress_msg "xenstored" |
| start-stop-daemon --start --quiet --pidfile "$XENSTORED_PIDFILE" --exec "$XENSTORED" --test > /dev/null \ |
| || return 1 |
| [ -d "$XENSTORED_DIR" ] || mkdir -p "$XENSTORED_DIR" |
| export XENSTORED_ROOTDIR="$XENSTORED_DIR" |
| start-stop-daemon --start --quiet --pidfile "$XENSTORED_PIDFILE" --exec "$XENSTORED" -- \ |
| $XENSTORED_ARGS --pid-file="$XENSTORED_PIDFILE" \ |
| || return 2 |
| } |
| |
| case "$1" in |
| start) |
| log_daemon_msg "Starting $DESC" |
| modules_setup |
| xenfs_setup |
| case "$?" in |
| 0) ;; |
| *) log_end_msg 1; exit ;; |
| esac |
| capability_check |
| case "$?" in |
| 0) ;; |
| *) log_end_msg 255; exit ;; |
| esac |
| xenstored_start |
| case "$?" in |
| 0|1) ;; |
| *) log_end_msg 1; exit ;; |
| esac |
| xenconsoled_start |
| case "$?" in |
| 0|1) ;; |
| *) log_end_msg 1; exit ;; |
| esac |
| #xend_start |
| case "$?" in |
| 0|1) ;; |
| *) log_end_msg 1; exit ;; |
| esac |
| log_end_msg 0 |
| ;; |
| stop) |
| capability_check |
| case "$?" in |
| 0) ;; |
| *) exit ;; |
| esac |
| log_daemon_msg "Stopping $DESC" |
| #xend_stop |
| case "$?" in |
| 0|1) log_end_msg 0 ;; |
| *) log_end_msg 1 ;; |
| esac |
| ;; |
| restart|force-reload) |
| capability_check |
| case "$?" in |
| 0) ;; |
| *) exit ;; |
| esac |
| log_daemon_msg "Restarting $DESC" |
| #xend_stop |
| case "$?" in |
| 0|1) |
| #xend_start |
| case "$?" in |
| 0) log_end_msg 0 ;; |
| *) log_end_msg 1 ;; |
| esac |
| ;; |
| *) log_end_msg 1 ;; |
| esac |
| ;; |
| *) |
| echo "Usage: $0 {start|stop|restart|force-reload}" >&2 |
| exit 3 |
| ;; |
| esac |
| |
| exit 0 |