aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Config.mk6
-rw-r--r--Makefile2
-rw-r--r--config/StdGNU.mk2
-rw-r--r--docs/misc/distro_mapping.txt27
-rw-r--r--tools/hotplug/Linux/Makefile11
-rw-r--r--tools/hotplug/Linux/init.d/xen-watchdog19
-rwxr-xr-xtools/hotplug/Linux/init.d/xend12
-rw-r--r--tools/hotplug/Linux/init.d/xendomains14
-rw-r--r--tools/xenballoon/xenballoond9
-rw-r--r--tools/xenballoon/xenballoond.README15
-rw-r--r--tools/xenballoon/xenballoond.init2
11 files changed, 98 insertions, 21 deletions
diff --git a/Config.mk b/Config.mk
index 1d75aaeaa7..4ae5cbd625 100644
--- a/Config.mk
+++ b/Config.mk
@@ -31,6 +31,12 @@ DOCDIR ?= $(SHAREDIR)/doc/xen
MANDIR ?= $(SHAREDIR)/man
BASH_COMPLETION_DIR ?= $(CONFIG_DIR)/bash_completion.d
+# These are the Red Hat settings.
+# See distro_mapping.txt for other options
+CONFIG_LEAF_DIR ?= sysconfig
+SUBSYS_DIR ?= /var/run/subsys
+INITD_DIR ?= /etc/rc.d/init.d
+
ifneq ($(EXTRA_PREFIX),)
EXTRA_INCLUDES += $(EXTRA_PREFIX)/include
EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBLEAFDIR)
diff --git a/Makefile b/Makefile
index 6fac2d7e98..17abb5f7d7 100644
--- a/Makefile
+++ b/Makefile
@@ -203,7 +203,7 @@ uninstall:
rm -f $(D)$(CONFIG_DIR)/udev/xen-backend.rules
rm -f $(D)$(CONFIG_DIR)/udev/rules.d/xend.rules
rm -f $(D)$(CONFIG_DIR)/udev/xend.rules
- rm -f $(D)$(CONFIG_DIR)/sysconfig/xendomains
+ rm -f $(D)$(SYSCONFIG_DIR)/xendomains
rm -rf $(D)/var/run/xen* $(D)/var/lib/xen*
rm -rf $(D)/boot/*xen*
rm -rf $(D)/lib/modules/*xen*
diff --git a/config/StdGNU.mk b/config/StdGNU.mk
index 58ae2d90b1..89267b2c48 100644
--- a/config/StdGNU.mk
+++ b/config/StdGNU.mk
@@ -49,7 +49,7 @@ else
CONFIG_DIR = $(PREFIX)/etc
endif
-SYSCONFIG_DIR = $(CONFIG_DIR)/sysconfig
+SYSCONFIG_DIR = $(CONFIG_DIR)/$(CONFIG_LEAF_DIR)
XEN_CONFIG_DIR = $(CONFIG_DIR)/xen
XEN_SCRIPT_DIR = $(XEN_CONFIG_DIR)/scripts
diff --git a/docs/misc/distro_mapping.txt b/docs/misc/distro_mapping.txt
new file mode 100644
index 0000000000..d91495b925
--- /dev/null
+++ b/docs/misc/distro_mapping.txt
@@ -0,0 +1,27 @@
+With directory layout differences between Red Hat, Debian, Suse and
+other distros one needs to set the variables for the elements below
+
+-----------------+------------------+---------------+----------------+
+ | RedHat (default) | Debian | Suse |
+-----------------+------------------+---------------+----------------+
+CONFIG_LEAF_DIR | sysconfig | default | sysconfig |
+SUBSYS_DIR | /var/run/subsys | /var/run | /var/run |
+INITD_DIR | /etc/rc.d/init.d | /etc/init.d | /etc/init.d |
+-----------------+------------------+---------------+----------------+
+
+The build currently defaults to the elements used by Red Hat.
+For others, these env variables must be set in the shell env
+or modified in Config.mk before running make.
+
+This mechanism sets the location that files are installed to, but does
+not change the code itself. Scripts that refer to files affected by these
+directories must check each possible location at run time.
+
+To add support for new distributions that don't use the above locations,
+one must grep for the above elements and add appropriate checks.
+
+For example if a new distro uses /etc/bork as it's config dir, It's not
+sufficient to set CONFIG_LEAF_DIR=bork, one must also add tests for the
+existance of the bork dir in every context where config files are read.
+
+
diff --git a/tools/hotplug/Linux/Makefile b/tools/hotplug/Linux/Makefile
index 5815dcde7e..d3662a8455 100644
--- a/tools/hotplug/Linux/Makefile
+++ b/tools/hotplug/Linux/Makefile
@@ -62,16 +62,17 @@ build:
.PHONY: install
install: all install-initd install-scripts $(HOTPLUGS)
+# See docs/misc/distro_mapping.txt for INITD_DIR location
.PHONY: install-initd
install-initd:
- [ -d $(DESTDIR)$(CONFIG_DIR)/init.d ] || $(INSTALL_DIR) $(DESTDIR)$(CONFIG_DIR)/init.d
+ [ -d $(DESTDIR)$(INITD_DIR) ] || $(INSTALL_DIR) $(DESTDIR)$(INITD_DIR)
[ -d $(DESTDIR)$(SYSCONFIG_DIR) ] || $(INSTALL_DIR) $(DESTDIR)$(SYSCONFIG_DIR)
- $(INSTALL_PROG) $(XEND_INITD) $(DESTDIR)$(CONFIG_DIR)/init.d
- $(INSTALL_PROG) $(XENDOMAINS_INITD) $(DESTDIR)$(CONFIG_DIR)/init.d
+ $(INSTALL_PROG) $(XEND_INITD) $(DESTDIR)$(INITD_DIR)
+ $(INSTALL_PROG) $(XENDOMAINS_INITD) $(DESTDIR)$(INITD_DIR)
$(INSTALL_PROG) $(XENDOMAINS_SYSCONFIG) $(DESTDIR)$(SYSCONFIG_DIR)/xendomains
- $(INSTALL_PROG) $(XENCOMMONS_INITD) $(DESTDIR)$(CONFIG_DIR)/init.d
+ $(INSTALL_PROG) $(XENCOMMONS_INITD) $(DESTDIR)$(INITD_DIR)
$(INSTALL_PROG) $(XENCOMMONS_SYSCONFIG) $(DESTDIR)$(SYSCONFIG_DIR)/xencommons
- $(INSTALL_PROG) init.d/xen-watchdog $(DESTDIR)$(CONFIG_DIR)/init.d
+ $(INSTALL_PROG) init.d/xen-watchdog $(DESTDIR)$(INITD_DIR)
.PHONY: install-scripts
install-scripts:
diff --git a/tools/hotplug/Linux/init.d/xen-watchdog b/tools/hotplug/Linux/init.d/xen-watchdog
index 99122d80da..620e8415d0 100644
--- a/tools/hotplug/Linux/init.d/xen-watchdog
+++ b/tools/hotplug/Linux/init.d/xen-watchdog
@@ -18,7 +18,24 @@
#
# Source function library.
-. /etc/init.d/functions
+if [ -e /etc/init.d/functions ] ; then
+ . /etc/init.d/functions
+elif [ -e /lib/lsb/init-functions ] ; then
+ . /lib/lsb/init-functions
+ success () {
+ log_success_msg $*
+ }
+ failure () {
+ log_failure_msg $*
+ }
+else
+ success () {
+ echo $*
+ }
+ failure () {
+ echo $*
+ }
+fi
start() {
local r
diff --git a/tools/hotplug/Linux/init.d/xend b/tools/hotplug/Linux/init.d/xend
index 0f7f041f71..6168afea64 100755
--- a/tools/hotplug/Linux/init.d/xend
+++ b/tools/hotplug/Linux/init.d/xend
@@ -40,14 +40,20 @@ case "$1" in
echo "xencommons should be started first."
exit 1
fi
- mkdir -p /var/lock/subsys
- touch /var/lock/subsys/xend
+ # mkdir shouldn't be needed as most distros have this already created. Default to using subsys.
+ # See docs/misc/distro_mapping.txt
+ mkdir -p /var/lock
+ if [ -d /var/lock/subsys ] ; then
+ touch /var/lock/subsys/xend
+ else
+ touch /var/lock/xend
+ fi
xend start
await_daemons_up
;;
stop)
xend stop
- rm -f /var/lock/subsys/xend
+ rm -f /var/lock/subsys/xend /var/lock/xend
;;
status)
xend status
diff --git a/tools/hotplug/Linux/init.d/xendomains b/tools/hotplug/Linux/init.d/xendomains
index cd5bad2691..8459d234c0 100644
--- a/tools/hotplug/Linux/init.d/xendomains
+++ b/tools/hotplug/Linux/init.d/xendomains
@@ -46,8 +46,18 @@ if ! [ -e /proc/xen/privcmd ]; then
exit 0
fi
-LOCKFILE=/var/lock/subsys/xendomains
-XENDOM_CONFIG=/etc/sysconfig/xendomains
+# See docs/misc/distro_mapping.txt
+if [ -d /var/lock/subsys ]; then
+ LOCKFILE=/var/lock/subsys/xendomains
+else
+ LOCKFILE=/var/lock/xendomains
+fi
+
+if [ -d /etc/sysconfig ]; then
+ XENDOM_CONFIG=/etc/sysconfig/xendomains
+else
+ XENDOM_CONFIG=/etc/default/xendomains
+fi
test -r $XENDOM_CONFIG || { echo "$XENDOM_CONFIG not existing";
if [ "$1" = "stop" ]; then exit 0;
diff --git a/tools/xenballoon/xenballoond b/tools/xenballoon/xenballoond
index d8f43461de..121aa3e490 100644
--- a/tools/xenballoon/xenballoond
+++ b/tools/xenballoon/xenballoond
@@ -21,7 +21,7 @@
# If xenbus is running and the /usr/bin/xenstore-* tools are installed,
# "xenbus is enabled".
#
-# Parameters are documented in /etc/sysconfig/xenballoon.conf. Although
+# Parameters are documented in <SYSCONFIG>/xenballoon.conf. Although
# some are not used with directed ballooning, all must be set properly.
# If xenbus is enabled, some of these parameters may be overridden by values
# set by domain0 via xenbus.
@@ -237,7 +237,12 @@ else
fi
preswapnow=0
-. /etc/sysconfig/xenballoon.conf
+# See docs/misc/distro_mapping.txt
+if [ -f /etc/sysconfig/xenballoon.conf ]; then
+ . /etc/sysconfig/xenballoon.conf
+elif [ -f /etc/default/xenballoon.conf ]; then
+ . /etc/default/xenballoon.conf
+fi
while true;
do
diff --git a/tools/xenballoon/xenballoond.README b/tools/xenballoon/xenballoond.README
index a65ac42cf7..9084898648 100644
--- a/tools/xenballoon/xenballoond.README
+++ b/tools/xenballoon/xenballoond.README
@@ -56,16 +56,20 @@ Guest prerequisites to use xenballoond:
be installed. Binaries can be obtained, for example, by building
xen-vvv.gz/tools in a guest-binary-compatible development tree
-Instructions to install/deploy xenballoond (in Redhat-based system):
+Instructions to install/deploy xenballoond:
+ (see docs/misc/distro_mapping.txt for SYSCONFIG and INITD_DIR definitions)
- in each guest:
- ensure pre-requisites are met (see above)
- - place xenballoon.conf in /etc/sysconfig
+ - place xenballoon.conf in <SYSCONFIG>
- place xenballoond in /usr/sbin
- - copy xenballoond.init to /etc/rc.d/init.d/xenballoond (note file rename)
- - edit /etc/sysconfig/xenballoond.conf as desired (especially note that
+ - copy xenballoond.init to <INITD_DIR>/xenballoond (note file rename)
+ - edit <SYSCONFIG>/xenballoond.conf as desired (especially note that
selfballooning defaults as off)
- start xenballoond with "service xenballoond start", and/or configure
- xenballoond to start at init (e.g. "chkconfig xenballoond on")
+ xenballoond to start at init
+ (Red Hat e.g. "chkconfig xenballoond on")
+ (Debian e.g. " update-rc.d xenballoond defaults")
+ (Suse e.g. " insserv xenballoond")
- in domain0:
- if monitoring is desired, xenballoon-monitor may be installed in /usr/sbin
- note that certain xenballoond.conf variables may be overridden by domain0
@@ -73,7 +77,6 @@ Instructions to install/deploy xenballoond (in Redhat-based system):
xenballoond.conf
TODO:
-080630 modifications to support SUSE-based and debian-based guests
080630 domain0 ballooning policy module
080630 experiment with more aggressive (optionally) memory minimum targets
080630 BUG: xenballoond doesn't properly record the fact that it's running;
diff --git a/tools/xenballoon/xenballoond.init b/tools/xenballoon/xenballoond.init
index 851a10387f..00dba2a70f 100644
--- a/tools/xenballoon/xenballoond.init
+++ b/tools/xenballoon/xenballoond.init
@@ -29,6 +29,8 @@
if [ -f /etc/sysconfig/xenballoon.conf ]; then
. /etc/sysconfig/xenballoon.conf
+elif [ -f /etc/default/xenballoon.conf ]; then
+ . /etc/default/xenballoon.conf
fi
# Check that balloon driver is present