testing/xen: add xen 4.1.2

Build full Xen distribution.

Changes since v4:

 * Removed "opts=" from xencommons init script.

 * Backported upstream patch to boot Syslinux PV-DomUs with pygrub
   (allows booting Alpine PV-DomUs).

Changes since v3:

 * Added bash as a runtime dependency, since some hotplug scripts
   use that instead of /bin/sh.

Changes since v2:

 * Clean and updated init scripts to be as similar as possible to
   upstream version.

Changes since v1:

 * Removed net from xencommons dependencies and added udev.
This commit is contained in:
Roger Pau Monne 2012-01-07 00:46:20 +01:00 committed by Natanael Copa
parent 7ea9d9d7e0
commit 49beded59a
11 changed files with 767 additions and 0 deletions

90
testing/xen/APKBUILD Normal file
View File

@ -0,0 +1,90 @@
# Contributor: Roger Pau Monne <roger.pau@entel.upc.edu>
# Maintainer:
pkgname=xen
pkgver=4.1.2
pkgrel=0
pkgdesc="Xen hypervisor"
url="http://www.xen.org"
arch="x86 x86_64"
license="GPL"
depends="udev syslinux bash"
depends_dev="openssl-dev python-dev e2fsprogs-dev gettext zlib-dev ncurses-dev libiconv-dev dev86 texinfo perl iasl sed"
makedepends="$depends_dev"
install=""
subpackages="$pkgname-doc"
source="http://bits.xensource.com/oss-xen/release/$pkgver/$pkgname-$pkgver.tar.gz
blktap2_libvhd_add_iconv.patch
detect_libiconv.patch
fix_bswap_blktap.patch
fix_bswap_blktap2.patch
fix_ipxe_no_pie_default.patch
define_fsimage_dir.patch
pygrub_alpine.patch
xencommons.initd
xend.initd
xendomains.initd"
_builddir="$srcdir"/$pkgname-$pkgver
prepare() {
local i
cd "$_builddir"
for i in $source; do
case $i in
*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
esac
done
# remove all -Werror
msg "Eradicating -Werror..."
find -name '*.mk' -o -name 'Make*' | xargs sed -i -e 's/-Werror//g'
echo "LIBLEAFDIR_x86_64=lib" >> .config
}
build() {
cd "$_builddir"
# Unset CFLAGS and LDFLAGS because the xen build system
# doesn't support them. Instead use .config in xen root
# folder if necessary.
unset CFLAGS
unset LDFLAGS
msg "Running preflight check..."
(cd tools/check; ./chk build) || return 1
msg "Building hypervisor..."
make -j1 xen || return 1
msg "Building tools..."
make -j1 tools || return 1
msg "Building stub domains..."
make -j1 stubdom || return 1
}
package() {
cd "$_builddir"
unset CFLAGS
unset LDFLAGS
make -j1 DESTDIR="$pkgdir" install-xen install-tools install-stubdom \
|| return 1
install -m755 -D "$srcdir"/xencommons.initd "$pkgdir"/etc/init.d/xencommons
install -m755 -D "$srcdir"/xend.initd "$pkgdir"/etc/init.d/xend
install -m755 -D "$srcdir"/xendomains.initd "$pkgdir"/etc/init.d/xendomains
}
md5sums="73561faf3c1b5e36ec5c089b5db848ad xen-4.1.2.tar.gz
6d4b045ae56be6288733d0e078f591ea blktap2_libvhd_add_iconv.patch
ed3283697cb1ddff066f4087eabf68c6 detect_libiconv.patch
503f0883f4a0b50fe4e37e09ed9a6177 fix_bswap_blktap.patch
b973dc1ffcc6872e222b36f3b7b4836b fix_bswap_blktap2.patch
10dcf0b6a05691e9f88afc01bd414480 fix_ipxe_no_pie_default.patch
0bb8a435020a5a49b38b1a447fb69977 define_fsimage_dir.patch
f64405982218db306c2b5cf3167ff944 pygrub_alpine.patch
4cf88b53f8ca8d99ad52bae419b620a7 xencommons.initd
b5bfc08b82bc0d21193714719a719798 xend.initd
86e7923383a906404da321d1814657e9 xendomains.initd"

View File

@ -0,0 +1,31 @@
# HG changeset patch
# Parent 14e911353a91702b439bc06e2a77d67e8bd5f661
blktap2/vhd: add -liconv when linking if using libiconv
If libiconv is detected on the system add -liconv when linking the
libvhd library.
If -liconv is not added when compiling libvhd with libiconv the
following error occours when linking vhd-util and vhd-update:
gcc -o vhd-util vhd-util.o -Llib -lvhd
lib/libvhd.so: undefined reference to `libiconv_open'
lib/libvhd.so: undefined reference to `libiconv_close'
lib/libvhd.so: undefined reference to `libiconv'
Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
diff -r 14e911353a91 tools/blktap2/vhd/lib/Makefile
--- a/tools/blktap2/vhd/lib/Makefile Tue Dec 20 02:30:12 2011 +0100
+++ b/tools/blktap2/vhd/lib/Makefile Tue Dec 20 02:33:11 2011 +0100
@@ -23,6 +23,10 @@ ifeq ($(CONFIG_Linux),y)
LIBS := -luuid
endif
+ifeq ($(CONFIG_LIBICONV),y)
+LIBS += -liconv
+endif
+
LIB-SRCS := libvhd.c
LIB-SRCS += libvhd-journal.c
LIB-SRCS += vhd-util-coalesce.c

View File

@ -0,0 +1,12 @@
diff -r 2863b2f43a3b tools/libfsimage/common/Makefile
--- a/tools/libfsimage/common/Makefile Thu Dec 22 14:49:38 2011 +0000
+++ b/tools/libfsimage/common/Makefile Tue Dec 27 21:00:54 2011 +0100
@@ -4,6 +4,8 @@
MAJOR = 1.0
MINOR = 0
+CFLAGS += -DFSIMAGE_FSDIR=\"/usr/lib/fs\"
+
LDFLAGS-$(CONFIG_SunOS) = -Wl,-M -Wl,mapfile-SunOS
LDFLAGS-$(CONFIG_Linux) = -Wl,mapfile-GNU
LDFLAGS = $(LDFLAGS-y)

View File

@ -0,0 +1,22 @@
# HG changeset patch
# Parent 2bc60167b9f8791747d2cea09c5207a9c2d7ef7b
build: detect is libiconv is present
Detect if libiconv is present in the system, since we will have to
link against it when using iconv.
Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
diff -r 2bc60167b9f8 Config.mk
--- a/Config.mk Tue Dec 20 05:25:19 2011 +0100
+++ b/Config.mk Tue Dec 20 07:52:38 2011 +0100
@@ -9,6 +9,10 @@
XEN_OS ?= $(shell uname -s)
CONFIG_$(XEN_OS) := y
+CONFIG_LIBICONV := $(shell export OS="`uname -s`"; \
+ export CHECK_LIB="$(CHECK_LIB)"; \
+ . $(XEN_ROOT)/tools/check/funcs.sh; \
+ has_lib libiconv.so && echo 'y' || echo 'n')
SHELL ?= /bin/sh

View File

@ -0,0 +1,61 @@
# HG changeset patch
# Parent d61e6300274bbc6bc464ad340146bd81e91f64f3
blktap: remove local definitions and include byteswap.h
Use the same approach as tools/blktap2/include/libvhd.h, remove local
definitions of bswap* and include byteswap.h. Also remove the
HAVE_BYTESWAP_H ifdef, since it was not defined in this context (it's
defined by QEMU).
Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
diff -r d61e6300274b tools/blktap/drivers/bswap.h
--- a/tools/blktap/drivers/bswap.h Tue Dec 20 05:20:02 2011 +0100
+++ b/tools/blktap/drivers/bswap.h Tue Dec 20 05:24:16 2011 +0100
@@ -13,45 +13,9 @@
#define bswap_16(x) swap16(x)
#define bswap_32(x) swap32(x)
#define bswap_64(x) swap64(x)
-#else
+#elif defined(__linux__)
-#ifdef HAVE_BYTESWAP_H
#include <byteswap.h>
-#else
-
-#define bswap_16(x) \
-({ \
- uint16_t __x = (x); \
- ((uint16_t)( \
- (((uint16_t)(__x) & (uint16_t)0x00ffU) << 8) | \
- (((uint16_t)(__x) & (uint16_t)0xff00U) >> 8) )); \
-})
-
-#define bswap_32(x) \
-({ \
- uint32_t __x = (x); \
- ((uint32_t)( \
- (((uint32_t)(__x) & (uint32_t)0x000000ffUL) << 24) | \
- (((uint32_t)(__x) & (uint32_t)0x0000ff00UL) << 8) | \
- (((uint32_t)(__x) & (uint32_t)0x00ff0000UL) >> 8) | \
- (((uint32_t)(__x) & (uint32_t)0xff000000UL) >> 24) )); \
-})
-
-#define bswap_64(x) \
-({ \
- uint64_t __x = (x); \
- ((uint64_t)( \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x00000000000000ffULL) << 56) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x000000000000ff00ULL) << 40) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x0000000000ff0000ULL) << 24) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x00000000ff000000ULL) << 8) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x000000ff00000000ULL) >> 8) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x0000ff0000000000ULL) >> 24) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x00ff000000000000ULL) >> 40) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0xff00000000000000ULL) >> 56) )); \
-})
-
-#endif /* !HAVE_BYTESWAP_H */
static inline uint16_t bswap16(uint16_t x)
{

View File

@ -0,0 +1,62 @@
# HG changeset patch
# Parent 00d9ee3844121f4a7f01e42933751e49b0448abb
blktap2: remove local definitions and include byteswap.h
Use the same approach as tools/blktap2/include/libvhd.h, remove local
definitions of bswap* and include byteswap.h. Also remove the
HAVE_BYTESWAP_H ifdef, since it was not defined in this context (it's
defined by QEMU).
Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
diff -r 00d9ee384412 tools/blktap2/drivers/bswap.h
--- a/tools/blktap2/drivers/bswap.h Tue Dec 20 05:24:17 2011 +0100
+++ b/tools/blktap2/drivers/bswap.h Tue Dec 20 05:25:18 2011 +0100
@@ -13,45 +13,10 @@
#define bswap_16(x) swap16(x)
#define bswap_32(x) swap32(x)
#define bswap_64(x) swap64(x)
-#else
+#elif defined(__linux__)
-#ifdef HAVE_BYTESWAP_H
+#include <endian.h>
#include <byteswap.h>
-#else
-
-#define bswap_16(x) \
-({ \
- uint16_t __x = (x); \
- ((uint16_t)( \
- (((uint16_t)(__x) & (uint16_t)0x00ffU) << 8) | \
- (((uint16_t)(__x) & (uint16_t)0xff00U) >> 8) )); \
-})
-
-#define bswap_32(x) \
-({ \
- uint32_t __x = (x); \
- ((uint32_t)( \
- (((uint32_t)(__x) & (uint32_t)0x000000ffUL) << 24) | \
- (((uint32_t)(__x) & (uint32_t)0x0000ff00UL) << 8) | \
- (((uint32_t)(__x) & (uint32_t)0x00ff0000UL) >> 8) | \
- (((uint32_t)(__x) & (uint32_t)0xff000000UL) >> 24) )); \
-})
-
-#define bswap_64(x) \
-({ \
- uint64_t __x = (x); \
- ((uint64_t)( \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x00000000000000ffULL) << 56) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x000000000000ff00ULL) << 40) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x0000000000ff0000ULL) << 24) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x00000000ff000000ULL) << 8) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x000000ff00000000ULL) >> 8) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x0000ff0000000000ULL) >> 24) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0x00ff000000000000ULL) >> 40) | \
- (uint64_t)(((uint64_t)(__x) & (uint64_t)0xff00000000000000ULL) >> 56) )); \
-})
-
-#endif /* !HAVE_BYTESWAP_H */
static inline uint16_t bswap16(uint16_t x)
{

View File

@ -0,0 +1,165 @@
# HG changeset patch
# Parent b60667a56ae085ee2bcea896887d0907fb86af41
ipxe: fix compilation issues with some gcc versions
Backported some changes from current ipxe, to fix a issue with some
new versions of gcc that add -fPIC by default, and compilation fails
with the following error:
arch/i386/core/cpu.c: In function 'get_cpuinfo':
arch/i386/include/bits/cpu.h:79:2: error: inconsistent operand
constraints in an 'asm'
arch/i386/include/bits/cpu.h:79:2: error: inconsistent operand
constraints in an 'asm'
arch/i386/include/bits/cpu.h:79:2: error: inconsistent operand
constraints in an 'asm'
arch/i386/include/bits/cpu.h:79:2: error: inconsistent operand
constraints in an 'asm'
Two patches from ipxe git have been added. The problem is reproducible
with at least this version of gcc:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-alpine-linux-uclibc/4.6.2/lto-wrapper
Target: x86_64-alpine-linux-uclibc
Configured with:
/home/buildozer/aports/main/gcc/src/gcc-4.6.2/configure --prefix=/usr
--mandir=/usr/share/man --infodir=/usr/share/info
--build=x86_64-alpine-linux-uclibc --host=x86_64-alpine-linux-uclibc
--target=x86_64-alpine-linux-uclibc --with-pkgversion='Alpine
4.6.2-r1' --disable-altivec --disable-checking --disable-fixed-point
--disable-libssp --disable-libstdcxx-pch --disable-multilib
--disable-nls --disable-werror --enable-__cxa_atexit --enable-cld
--enable-esp --enable-cloog-backend
--enable-languages=c,c++,objc,java,go --enable-shared
--enable-target-optspace --enable-tls --enable-threads
--with-dynamic-linker=ld64-uClibc.so.0.9.32
--with-dynamic-linker-prefix=/lib --with-system-zlib
--without-system-libunwind
Thread model: posix
gcc version 4.6.2 (Alpine 4.6.2-r1)
Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
diff -r b60667a56ae0 tools/firmware/etherboot/patches/gpxe-git-b8924c1aed51
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/etherboot/patches/gpxe-git-b8924c1aed51 Fri Dec 16 13:48:49 2011 +0100
@@ -0,0 +1,72 @@
+commit b8924c1aed512aa40cf28a43635df383880f771d
+Author: Michael Brown <mcb30@ipxe.org>
+Date: Wed Mar 16 19:30:42 2011 +0000
+
+ [build] Allow workaround-specific flags to override default flags
+
+ Signed-off-by: Michael Brown <mcb30@ipxe.org>
+
+diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
+index 709f8de..78e78c9 100644
+--- a/src/Makefile.housekeeping
++++ b/src/Makefile.housekeeping
+@@ -109,6 +109,10 @@ VERYCLEANUP += .toolcheck
+ # Check for various tool workarounds
+ #
+
++WORKAROUND_CFLAGS :=
++WORKAROUND_ASFLAGS :=
++WORKAROUND_LDFLAGS :=
++
+ # Make syntax does not allow use of comma or space in certain places.
+ # This ugly workaround is suggested in the manual.
+ #
+@@ -119,7 +123,7 @@ SPACE := $(EMPTY) $(EMPTY)
+ # Check for an old version of gas (binutils 2.9.1)
+ #
+ OLDGAS := $(shell $(AS) --version | grep -q '2\.9\.1' && $(ECHO) -DGAS291)
+-CFLAGS += $(OLDGAS)
++WORKAROUND_CFLAGS += $(OLDGAS)
+ oldgas :
+ @$(ECHO) $(oldgas)
+
+@@ -131,7 +135,7 @@ ifeq ($(CCTYPE),gcc)
+ SP_TEST = $(CC) -fno-stack-protector -x c -c /dev/null \
+ -o /dev/null >/dev/null 2>&1
+ SP_FLAGS := $(shell $(SP_TEST) && $(ECHO) '-fno-stack-protector')
+-CFLAGS += $(SP_FLAGS)
++WORKAROUND_CFLAGS += $(SP_FLAGS)
+ endif
+
+ # gcc 4.4 generates .eh_frame sections by default, which distort the
+@@ -141,7 +145,7 @@ ifeq ($(CCTYPE),gcc)
+ CFI_TEST = $(CC) -fno-dwarf2-cfi-asm -x c -c /dev/null \
+ -o /dev/null >/dev/null 2>&1
+ CFI_FLAGS := $(shell $(CFI_TEST) && $(ECHO) '-fno-dwarf2-cfi-asm')
+-CFLAGS += $(CFI_FLAGS)
++WORKAROUND_CFLAGS += $(CFI_FLAGS)
+ endif
+
+ # Some versions of gas choke on division operators, treating them as
+@@ -150,7 +154,7 @@ endif
+ #
+ DIVIDE_TEST = $(AS) --divide /dev/null -o /dev/null 2>/dev/null
+ DIVIDE_FLAGS := $(shell $(DIVIDE_TEST) && $(ECHO) '--divide')
+-ASFLAGS += $(DIVIDE_FLAGS)
++WORKAROUND_ASFLAGS += $(DIVIDE_FLAGS)
+
+ ###############################################################################
+ #
+@@ -375,9 +379,9 @@ CFLAGS += -diag-disable 1419 # Missing prototypes
+ CFLAGS += -diag-disable 1599 # Hidden variables
+ CFLAGS += -Wall -Wmissing-declarations
+ endif
+-CFLAGS += $(EXTRA_CFLAGS)
+-ASFLAGS += $(EXTRA_ASFLAGS)
+-LDFLAGS += $(EXTRA_LDFLAGS)
++CFLAGS += $(WORKAROUND_CFLAGS) $(EXTRA_CFLAGS)
++ASFLAGS += $(WORKAROUND_ASFLAGS) $(EXTRA_ASFLAGS)
++LDFLAGS += $(WORKAROUND_LDFLAGS) $(EXTRA_LDFLAGS)
+
+ # Inhibit -Werror if NO_WERROR is specified on make command line
+ #
diff -r b60667a56ae0 tools/firmware/etherboot/patches/gpxe-git-fe61f6de0dd5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/etherboot/patches/gpxe-git-fe61f6de0dd5 Fri Dec 16 13:48:49 2011 +0100
@@ -0,0 +1,32 @@
+commit fe61f6de0dd5d39ac3de5e8e18742f9bd0aafad7
+Author: Gilles Espinasse <g.esp@free.fr>
+Date: Tue Mar 29 15:30:11 2011 +0100
+
+ [build] Fix compilation when gcc is patched to default to -fPIE -Wl,-pie
+
+ Signed-off-by: Gilles Espinasse <g.esp@free.fr>
+ Modified-by: Michael Brown <mcb30@ipxe.org>
+ Signed-off-by: Michael Brown <mcb30@ipxe.org>
+
+diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
+index 57e52c0..c184351 100644
+--- a/src/Makefile.housekeeping
++++ b/src/Makefile.housekeeping
+@@ -138,6 +138,17 @@ SP_FLAGS := $(shell $(SP_TEST) && $(ECHO) '-fno-stack-protector')
+ WORKAROUND_CFLAGS += $(SP_FLAGS)
+ endif
+
++# Some widespread patched versions of gcc include -fPIE -Wl,-pie by
++# default. Note that gcc will exit *successfully* if it fails to
++# recognise an option that starts with "no", so we have to test for
++# output on stderr instead of checking the exit status.
++#
++ifeq ($(CCTYPE),gcc)
++PIE_TEST = [ -z "`$(CC) -fno-PIE -nopie -x c -c /dev/null -o /dev/null 2>&1`" ]
++PIE_FLAGS := $(shell $(PIE_TEST) && $(ECHO) '-fno-PIE -nopie')
++WORKAROUND_CFLAGS += $(PIE_FLAGS)
++endif
++
+ # gcc 4.4 generates .eh_frame sections by default, which distort the
+ # output of "size". Inhibit this.
+ #
diff -r b60667a56ae0 tools/firmware/etherboot/patches/series
--- a/tools/firmware/etherboot/patches/series Fri Dec 16 10:47:18 2011 +0100
+++ b/tools/firmware/etherboot/patches/series Fri Dec 16 13:48:49 2011 +0100
@@ -1,3 +1,5 @@
boot_prompt_option.patch
gpxe-git-0edf2405b457
gpxe-git-a803ef3dfeac
+gpxe-git-b8924c1aed51
+gpxe-git-fe61f6de0dd5

View File

@ -0,0 +1,64 @@
# HG changeset patch
# Parent 3e02aa9670b3265e36bdddbd4760415cd87d047b
pygrub: fix extlinux parsing
pygrub was unable to parse extlinux config files correctly, exactly
the ones like:
LABEL grsec
KERNEL vmlinuz-3.0.10-grsec
APPEND initrd=initramfs-3.0.10-grsec
root=UUID=cfd4a7b4-8c40-4025-b877-8205f1c622ee
modules=sd-mod,usb-storage,ext4 xen quiet
This patch fixes it, adding a new case when parsing the "append" line,
that searches for the initrd image.
Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
diff -r 3e02aa9670b3 tools/pygrub/examples/alpine-linux-2.3.2.extlinux
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/pygrub/examples/alpine-linux-2.3.2.extlinux Tue Jan 03 13:11:46 2012 +0100
@@ -0,0 +1,11 @@
+DEFAULT menu.c32
+PROMPT 0
+MENU TITLE Alpine/Linux Boot Menu
+MENU HIDDEN
+MENU AUTOBOOT Alpine will be booted automatically in # seconds.
+TIMEOUT 30
+LABEL grsec
+ MENU DEFAULT
+ MENU LABEL Linux 3.0.10-grsec
+ KERNEL vmlinuz-3.0.10-grsec
+ APPEND initrd=initramfs-3.0.10-grsec root=UUID=a97ffe64-430f-4fd3-830e-4736d9a27af0 modules=sd-mod,usb-storage,ext4 quiet
diff -r 3e02aa9670b3 tools/pygrub/src/ExtLinuxConf.py
--- a/tools/pygrub/src/ExtLinuxConf.py Thu Dec 15 18:55:46 2011 +0100
+++ b/tools/pygrub/src/ExtLinuxConf.py Tue Jan 03 13:11:46 2012 +0100
@@ -60,6 +60,13 @@ class ExtLinuxImage(object):
# Bypass regular self.commands handling
com = None
+ elif arg.find("initrd="):
+ # find initrd image in append line
+ args = arg.strip().split(" ")
+ for a in args:
+ if a.lower().startswith("initrd="):
+ setattr(self, "initrd", a.replace("initrd=", ""))
+ arg = arg.replace(a, "")
if com is not None and self.commands.has_key(com):
if self.commands[com] is not None:
@@ -86,10 +93,12 @@ class ExtLinuxImage(object):
self._args = args
def get_kernel(self):
return self._kernel
+ def set_args(self, val):
+ self._args = val
def get_args(self):
return self._args
kernel = property(get_kernel, set_kernel)
- args = property(get_args)
+ args = property(get_args, set_args)
def set_initrd(self, val):
self._initrd = (None,val)

View File

@ -0,0 +1,102 @@
#!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
if [ -d /etc/sysconfig ]; then
xencommons_config=/etc/sysconfig
else
xencommons_config=/etc/default
fi
test -f $xencommons_config/xencommons && . $xencommons_config/xencommons
XENCONSOLED_PIDFILE=/var/run/xenconsoled.pid
# 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 "x$1" = xstart && \
! test -f /proc/xen/capabilities && \
! grep '^xenfs ' /proc/mounts >/dev/null;
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
depend() {
need udev
before xend
}
start() {
local time=0
local timeout=30
modprobe xen-evtchn 2>/dev/null
modprobe xen-gntdev 2>/dev/null
modprobe evtchn 2>/dev/null
modprobe gntdev 2>/dev/null
if ! `xenstore-read -s / >/dev/null 2>&1`
then
test -z "$XENSTORED_ROOTDIR" || XENSTORED_ROOTDIR="/var/lib/xenstored"
rm -f "$XENSTORED_ROOTDIR"/tdb* &>/dev/null
test -z "$XENSTORED_TRACE" || XENSTORED_ARGS=" -T /var/log/xen/xenstored-trace.log"
ebegin "Starting xenstored..."
xenstored --pid-file=/var/run/xenstored.pid $XENSTORED_ARGS
# Wait for xenstored to actually come up, timing out after 30 seconds
while [ $time -lt $timeout ] && ! `xenstore-read -s / >/dev/null 2>&1` ; do
time=$(($time+1))
sleep 1
done
# Exit if we timed out
if ! [ $time -lt $timeout ] ; then
eend 1
echo Could not start xenstored
exit 1
fi
eend 0
ebegin "Setting domain 0 name..."
xenstore-write "/local/domain/0/name" "Domain-0"
eend $?
fi
ebegin "Starting xenconsoled..."
test -z "$XENCONSOLED_TRACE" || XENCONSOLED_ARGS=" --log=$XENCONSOLED_TRACE"
xenconsoled --pid-file=$XENCONSOLED_PIDFILE $XENCONSOLED_ARGS
eend $?
test -z "$XENBACKENDD_DEBUG" || XENBACKENDD_ARGS="-d"
test "`uname`" != "NetBSD" || xenbackendd $XENBACKENDD_ARGS
}
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 0.1; done
rm -f $XENCONSOLED_PIDFILE
fi
eend 0
echo WARNING: Not stopping xenstored, as it cannot be restarted.
}
status() {
xenstore-read -s / >/dev/null 2>&1
}

53
testing/xen/xend.initd Normal file
View File

@ -0,0 +1,53 @@
#!/sbin/runscript
depend() {
need xencommons
before xendomains
}
await_daemons_up() {
i=1
rets=10
/usr/sbin/xend status
while [ $? -ne 0 -a $i -lt $rets ]; do
sleep 1
i=$(($i + 1))
/usr/sbin/xend status
done
}
start() {
ebegin "Starting Xen daemons"
if [ -z "`ps xenconsoled -o pid=`" ]; then
eend 1
echo "xencommons should be started first."
exit 1
fi
mkdir -p /var/lock
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/xend
else
touch /var/lock/xend
fi
/usr/sbin/xend start
await_daemons_up
eend $?
}
stop() {
ebegin "Stopping Xen control daemon"
/usr/sbin/xend stop
rm -f /var/lock/subsys/xend /var/lock/xend
eend $?
}
restart() {
ebegin "Restarting Xen control daemon"
/usr/sbin/xend restart
await_daemons_up
eend $?
}
status() {
/usr/sbin/xend status
}

View File

@ -0,0 +1,105 @@
#!/sbin/runscript
CMD=xm
/usr/sbin/$CMD list &> /dev/null
if test $? -ne 0
then
CMD=xl
fi
/usr/sbin/$CMD list &> /dev/null
if test $? -ne 0
then
eend 1;
exit 1;
fi
# Correct exit code would probably be 5, but it's enough
# if xend complains if we're not running as privileged domain
if ! [ -e /proc/xen/privcmd ]; then
eend 1;
exit 1;
fi
# 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
if ! [ -r $XENDOM_CONFIG ]; then
eend 1;
echo "$XENDOM_CONFIG not existing";
exit 1;
fi
. $XENDOM_CONFIG
depend() {
need xencommons
after net xend
}
get_domname() {
local name_from_file=$(sed -rn 's/^name\W*=\W*\"?([[:alnum:]_\.-]+)\"?\W*;?/\1/p' "${1}" | tail -n 1)
if [[ -z ${name_from_file} ]] ; then
basename "${1}"
else
echo ${name_from_file}
fi
}
is_running() {
/usr/sbin/$CMD list "${1}" >/dev/null 2>&1
}
start() {
einfo "Starting Xen domains in ${AUTODIR:=/etc/xen/auto}"
for dom in $(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort); do
name=$(get_domname ${dom})
if ! is_running ${name} ; then
ebegin " Starting domain ${name}"
/usr/sbin/$CMD create --quiet --defconfig ${dom}
eend $?
else
einfo " Not starting ${name} - already running."
fi
done
}
stop() {
einfo "Stopping Xen domains in ${AUTODIR:=/etc/xen/auto}"
for dom in $(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort); do
name=$(get_domname ${dom})
if is_running ${name} ; then
ebegin " Sending shutdown signal to ${name}"
/usr/sbin/$CMD shutdown ${name} >/dev/null
eend $?
fi
done
for dom in $(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort); do
name=$(get_domname ${dom})
if is_running ${name} ; then
ebegin " Waiting for domain ${name} to shutdown"
/usr/sbin/$CMD shutdown --wait ${name}
eend $?
else
einfo " Not stopping ${name} - not running."
fi
done
}
status() {
/usr/sbin/$CMD list
}