pkgsrc/sysutils/xentools45/files/xencommons.sh
bouyer d870f0e26e Xen is a virtual machine monitor which supports running multiple
guests operating systems on a single machine. Guest OSes (also
called "domains") require a modified kernel which supports Xen
hypercalls in replacement to access to the physical hardware. At
boot, the xen kernel is loaded along with the guest kernel for the
first domain (called domain0). domain0 has privileges to access
the physical hardware (PCI and ISA devices), administrate other
domains and provide virtual devices (disks and network) to other
domains.

xenkernel45 and xentools45 contains the kernel and tools from
the Xen 4.5.x branch
2015-01-20 16:42:13 +00:00

107 lines
2.3 KiB
Bash

#!@RCD_SCRIPTS_SHELL@
#
# PROVIDE: xencommons
# REQUIRE: DAEMON
. /etc/rc.subr
name="xencommons"
rcvar=$name
start_precmd="xen_precmd"
start_cmd="xen_startcmd"
stop_cmd="xen_stop"
status_cmd="xen_status"
extra_commands="status"
required_files="/kern/xen/privcmd"
XENSTORED_PIDFILE="/var/run/xenstored.pid"
XENCONSOLED_PIDFILE="/var/run/xenconsoled.pid"
BINDIR=@PREFIX@/bin
SBINDIR=@PREFIX@/sbin
xen_precmd()
{
mkdir -p /var/run/xen || exit 1
mkdir -p /var/run/xenstored || exit 1
}
xen_startcmd()
{
printf "Starting xenservices: xenstored, xenconsoled.\n"
if test ! -r ${required_files}; then
warn "${required_files} is not readable."
fi
XENSTORED_ARGS=" --pid-file ${XENSTORED_PIDFILE}"
if [ -n "${XENSTORED_TRACE}" ]; then
XENSTORED_ARGS="${XENSTORED_ARGS} -T /var/log/xen/xenstored-trace.log"
fi
${SBINDIR}/xenstored ${XENSTORED_ARGS}
sleep 5
printf "Setting domain 0 name and domid...\n"
${BINDIR}/xenstore-write "/local/domain/0/name" "Domain-0" \
"domid" 0
XENCONSOLED_ARGS=""
if [ -n "${XENCONSOLED_TRACE}" ]; then
XENCONSOLED_ARGS="${XENCONSOLED_ARGS} --log=${XENCONSOLED_TRACE}"
fi
${SBINDIR}/xenconsoled ${XENCONSOLED_ARGS}
}
xen_stop()
{
pids=""
printf "Stopping xencommons"
rc_pid=$(check_pidfile ${XENCONSOLED_PIDFILE} ${SBINDIR}/xenconsoled)
pids="$pids $rc_pid"
rc_pid=$(check_pidfile ${XENSTORED_PIDFILE} ${SBINDIR}/xenstored)
pids="$pids $rc_pid"
kill -${sig_stop:-TERM} $pids
wait_for_pids $pids
printf ".\n"
}
xen_status()
{
xenstored_pid=$(check_pidfile ${XENSTORED_PIDFILE} ${SBINDIR}/xenstored)
if test -n ${xenstored_pid}; then
pids="$pids $xenstored_pid"
fi
xenconsoled_pid=$(check_pidfile ${XENCONSOLED_PIDFILE} ${SBINDIR}/xenconsoled)
if test -n ${xenconsoled_pid}; then
pids="$pids $xenconsoled_pid"
fi
if test -n "$xenconsoled_pid" -a -n "$xenstored_pid";
then
echo "xencommons are running as pids $pids."
return 0
fi
if test -a -z "$xenconsoled_pid" -a -z "$xenstored_pid";
then
echo "xencommons are not running."
return 0
fi
if test -n "$xenstored_pid"; then
echo "xenstored is running as pid $xenstored_pid."
else
echo "xenstored is not running."
fi
if test -n "$xenconsoled_pid"; then
echo "xenconsoled is running as pid $xenconsoled_pid."
else
echo "xenconsoled is not running."
fi
}
load_rc_config $name
run_rc_command "$1"