#!/sbin/openrc-run # Copyright 2018 Hyperbola Project # Distributed under the terms of the GNU General Public License v2 . /etc/xen/scripts/hotplugpath.sh BACKEND_MODULES="xen-evtchn xen-gntdev xen-gntalloc xen-blkback xen-netback xen-pciback evtchn gntdev netbk blkbk xen-scsibk usbbk pciback xen-acpi-processor blktap2" XENCONSOLED_PIDFILE=$XEN_RUN_DIR/xenconsoled.pid QEMU_PIDFILE=$XEN_RUN_DIR/qemu-dom0.pid description="Xencommons - start and stop xenstored and xenconsoled" depend() { after net before libvirtd libvirt-guests } start_pre() { shopt -s extglob # not running in Xen dom0 or domU if ! test -d /proc/xen ; then exit 0 fi # mount xenfs in dom0 or domU with a pv_ops kernel if ! test -f /proc/xen/capabilities; then mount -t xenfs xenfs /proc/xen fi # run this script only in dom0: # no capabilities file in xenlinux domU kernel # empty capabilities file in pv_ops domU kernel if test -f /proc/xen/capabilities && \ ! grep -q "control_d" /proc/xen/capabilities ; then exit 0 fi local mod for mod in $BACKEND_MODULES; do modprobe "$mod" &>/dev/null done mkdir -p $XEN_RUN_DIR mkdir -p $XEN_LOCK_DIR /etc/xen/scripts/launch-xenstore || exit 1 ebegin "Setting domain 0 name, domid and JSON config..." $LIBEXEC_BIN/xen-init-dom0 & eend $? } start() { ebegin "Starting xenconsoled..." test -z "$XENCONSOLED_TRACE" || XENCONSOLED_ARGS=" --log=$XENCONSOLED_TRACE" $sbindir/xenconsoled --pid-file=$XENCONSOLED_PIDFILE $XENCONSOLED_ARGS & eend $? ebegin "Starting QEMU as disk backend for dom0" test -z "$QEMU_XEN" && QEMU_XEN="$LIBEXEC_BIN/qemu-system-i386" $QEMU_XEN -xen-domid 0 -xen-attach -name dom0 -nographic -M xenpv -daemonize \ -monitor /dev/null -serial /dev/null -parallel /dev/null \ -pidfile $QEMU_PIDFILE & eend $? } stop() { ebegin "Stopping xenconsoled" if read 2>/dev/null <$XENCONSOLED_PIDFILE pid; then kill $pid while kill -9 $pid >/dev/null 2>&1; do sleep 1; done rm -f $XENCONSOLED_PIDFILE fi eend $? ebegin "Stopping QEMU" if read 2>/dev/null <$QEMU_PIDFILE pid; then kill $pid while kill -9 $pid >/dev/null 2>&1; do sleep 1; done rm -f $QEMU_PIDFILE fi eend $? ebegin "WARNING: Not stopping xenstored, as it cannot be restarted" eend $? }