summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Janczyk2010-03-23 21:23:55 +0100
committerMichael Janczyk2010-03-23 21:23:55 +0100
commit67a9870012a281c5489e482c69201e8364dec5be (patch)
tree76e3a6dd29dacc21301bc028e997d44a3a29ac87
parentqemukvm weiter, sollte laufen (ungetestet), noch anpassungen an scripten notw... (diff)
downloadcore-67a9870012a281c5489e482c69201e8364dec5be.tar.gz
core-67a9870012a281c5489e482c69201e8364dec5be.tar.xz
core-67a9870012a281c5489e482c69201e8364dec5be.zip
qemukvm further modifications, first xen runscripts
-rwxr-xr-xboot-env/syslinux/extlinuxbin52714 -> 52294 bytes
-rw-r--r--os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm12
-rw-r--r--os-plugins/plugins/qemukvm/XX_qemukvm.sh16
-rw-r--r--os-plugins/plugins/qemukvm/files/ifdown2
-rw-r--r--os-plugins/plugins/qemukvm/files/run-virt.include12
-rwxr-xr-xos-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh5
-rw-r--r--os-plugins/plugins/virtualbox/files/run-virt.include9
-rw-r--r--os-plugins/plugins/vmgrid/XX_vmgrid.sh1
-rw-r--r--os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm107
-rw-r--r--os-plugins/plugins/xen/XX_xen.sh9
-rw-r--r--os-plugins/plugins/xen/files/machine.include189
-rw-r--r--os-plugins/plugins/xen/files/run-virt.include290
12 files changed, 574 insertions, 78 deletions
diff --git a/boot-env/syslinux/extlinux b/boot-env/syslinux/extlinux
index d97dd70c..69d8bf56 100755
--- a/boot-env/syslinux/extlinux
+++ b/boot-env/syslinux/extlinux
Binary files differ
diff --git a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
index c9388210..8029102c 100644
--- a/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
+++ b/os-plugins/plugins/qemukvm/OpenSLX/OSPlugin/qemukvm.pm
@@ -132,7 +132,7 @@ sub installationPhase
foreach my $file ( qw( run-virt.include ifup ifdown ) ) {
copyFile("$pluginBasePath/$file", "$pluginRepoPath/");
}
- chmod 0755, "$pluginRepoPath/if*";
+ chmod 0755, "$pluginRepoPath/ifup", "$pluginRepoPath/ifdown";
# # Create kvm link
# my $kvmPath = pathOf('qemu-kvm') || pathOf('kvm') || pathOf('qemu');
# if (defined $kvmPath) {
@@ -147,7 +147,7 @@ sub installationPhase
$initFile->
addToBlock('head','. /etc/opt/openslx/plugins/qemukvm/network.conf');
my $do_start = unshiftHereDoc(<<' End-of-Here');
- # Adding the tap0 interface to the existing bridge configured in stage3
+ # configuring the tap0 interface to the existing bridge configured in stage3
for i in 0 1 2; do
/opt/openslx/uclib-rootfs/sbin/tunctl -t tap${i} >/dev/null 2>&1
ip link set dev tap${i} up
@@ -157,6 +157,8 @@ sub installationPhase
ip addr add ${hoaddress} dev tap2
echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding
echo "1" >/proc/sys/net/ipv4/conf/tap0/forwarding
+ # TODO: maybe solve via group or udev, etc...
+ chmod 766 /dev/fb*
End-of-Here
my $do_stop = unshiftHereDoc(<<' End-of-Here');
/opt/openslx/uclib-rootfs/usr/sbin/brctl delif br0 tap0
@@ -164,6 +166,10 @@ sub installationPhase
ip addr del ${hoaddress} dev tap2
echo "0" >/proc/sys/net/ipv4/conf/br0/forwarding
echo "0" >/proc/sys/net/ipv4/conf/tap0/forwarding
+ chmod 760 /dev/fb*
+ End-of-Here
+ my $do_restart = unshiftHereDoc(<<' End-of-Here');
+ do_stop && do_start
End-of-Here
# add helper functions to initfile
@@ -171,7 +177,7 @@ sub installationPhase
# second parameter content of the function
$initFile->addFunction('do_start', $do_start);
$initFile->addFunction('do_stop', $do_stop);
- $initFile->addFunction('do_restart', " : # do nothing here");
+ $initFile->addFunction('do_restart', $do_restart);
# place a call of the helper function in the stop block of the init file
# first parameter name of the function
diff --git a/os-plugins/plugins/qemukvm/XX_qemukvm.sh b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
index d6c712ac..b3c4ccf0 100644
--- a/os-plugins/plugins/qemukvm/XX_qemukvm.sh
+++ b/os-plugins/plugins/qemukvm/XX_qemukvm.sh
@@ -98,17 +98,17 @@ ${qemukvm_imagesrc}." nonfatal
qemu=$(binfinder ${qemubin})
[ -n "${qemu}" ] && echo "ALL ALL=NOPASSWD: ${qemu}" >>/mnt/etc/sudoers
done
- killall=$(binfinder killall)
- # TODO: notwendig, oder reicht ifup/down
- # TODO: /dev/fb0 mit jedermann
- cat <<EOF\
-ALL ALL=NOPASSWD: ${killall} udhcpd
-ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/usr/sbin/udhcpd -S /tmp/qemukvm/if*
+ #killall=$(binfinder killall)
+ cat >> /mnt/etc/sudoers << EOF
+# TODO: check if kvm / qemu sufficient
+#ALL ALL=NOPASSWD: ${killall} udhcpd
+#ALL ALL=NOPASSWD: ${PLUGINDIR}/ifup
+#ALL ALL=NOPASSWD: ${PLUGINDIR}/ifdown
+#ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/usr/sbin/udhcpd -S /tmp/qemukvm/if*
#ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/sbin/tunctl -t tap*
#ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/sbin/ip addr add * dev tap*
#ALL ALL=NOPASSWD: /opt/openslx/uclib-rootfs/usr/sbin/brctl addif br0 tap*
-EOF \
- >>/mnt/etc/sudoers
+EOF
fi
else
[ $DEBUGLEVEL -gt 0 ] && echo " * Configuration of 'qemukvm' plugin failed"
diff --git a/os-plugins/plugins/qemukvm/files/ifdown b/os-plugins/plugins/qemukvm/files/ifdown
index 8c52d76f..be6ec913 100644
--- a/os-plugins/plugins/qemukvm/files/ifdown
+++ b/os-plugins/plugins/qemukvm/files/ifdown
@@ -9,7 +9,7 @@
#
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
-# qemu-ifup
+# ifdown
# - Script used for network cleanup of qemukvm in stage4
# -----------------------------------------------------------------------------
diff --git a/os-plugins/plugins/qemukvm/files/run-virt.include b/os-plugins/plugins/qemukvm/files/run-virt.include
index bdf9666f..84e534e8 100644
--- a/os-plugins/plugins/qemukvm/files/run-virt.include
+++ b/os-plugins/plugins/qemukvm/files/run-virt.include
@@ -52,6 +52,9 @@ else
exit 1
fi
+# hot keys ALT+CTRL+SHIFT
+VIRTCMDOPTS="${VIRTCMDOPTS} -alt-grab"
+
# display name, remove blanks because of cmdline problems
displayname=$(echo ${displayname} | sed -e "s, ,-,g")
VIRTCMDOPTS="${VIRTCMDOPTS} -name ${displayname}"
@@ -186,6 +189,7 @@ writelog "\tNetwork kind:\t\t${network_kind}"
### finally set env for run-virt.sh
################################################################################
+# TODO: besser drive statt hda?
#-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
# [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
# [,cache=writethrough|writeback|none][,format=f][,serial=s]
@@ -258,14 +262,18 @@ else
VIRTCMD="sudo $VIRTCMD"
fi
+# using snapshots
+VIRTCMDOPTS="${VIRTCMDOPTS} -snapshot"
+
# TODO: boot als var, -boot n, tftp...
VIRTCMDOPTS="${VIRTCMDOPTS} -boot c"
# set headless mode
# define first, you do not want VIRTCMDOPTS from graphical start
VIRTCMDHL="$VIRTCMD"
-VIRTCMDOPTSHL="${VIRTCMDOPTS} -alt-grab -nographic -snapshot ${diskfile}"
+VIRTCMDOPTSHL="${VIRTCMDOPTS} -nographic ${diskfile}"
# graphical start
VIRTCMD="$VIRTCMD"
-VIRTCMDOPTS="${VIRTCMDOPTS} -alt-grab -full-screen -snapshot ${diskfile}"
+# vga std/cirrus/vmware?
+VIRTCMDOPTS="${VIRTCMDOPTS} -vga std -full-screen ${diskfile}"
diff --git a/os-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh b/os-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh
index ed67bddb..13771a43 100755
--- a/os-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh
+++ b/os-plugins/plugins/qemukvm/init-hooks/60-have-servconfig/vm-dhcpd.sh
@@ -19,7 +19,7 @@ CONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}
testmkd ${CONFDIR}
# configuring dhcpd stub for virtual networks
-cat <<EOF\
+cat > ${CONFDIR}/udhcpd.conf << EOF
# general udhcpd configuration file for virtual machines written by
# $0 during OpenSLX stage3 configuration
@@ -57,5 +57,4 @@ option domain virtual.site ${domain_name}
#wins #lease
#ntpsrv #tftp
#bootfile
-EOF \
- >${CONFDIR}/udhcpd.conf
+EOF
diff --git a/os-plugins/plugins/virtualbox/files/run-virt.include b/os-plugins/plugins/virtualbox/files/run-virt.include
index eb1cb0e9..27289b41 100644
--- a/os-plugins/plugins/virtualbox/files/run-virt.include
+++ b/os-plugins/plugins/virtualbox/files/run-virt.include
@@ -12,7 +12,7 @@
# General information about OpenSLX can be found at http://openslx.org
# -----------------------------------------------------------------------------
# run-virt.include
-# - Include script for running the Virtual Box on an OpenSLX client via the
+# - Include script for running the VirtualBox on an OpenSLX client via the
# run-virt.sh or run-vmgrid.sh
################################################################################
@@ -52,10 +52,10 @@ mkdir -p ${diskfolder} ${snapshotdir} 2>/dev/null
ln -sf ${vmpath} ${diskfile}
# check the file type
-if echo ${imgname} | grep -iE "vdi" >/dev/null 2>&1; then #vmdk|vhd
- imgtype=$(echo ${imgname#*.} | tr [a-z] [A-Z])
+if echo ${imgname} | grep -iE "vdi|vmdk|vhd" >/dev/null 2>&1; then
+ imgtype=$(echo ${imgname##*.} | tr [a-z] [A-Z])
else
- writelog "${imgname} is not a valid image type (vdi), exiting!" #vmdk|vhd
+ writelog "${imgname} is not a valid image type (vdi|vmdk|vhd), exiting!"
exit 1
fi
@@ -99,6 +99,7 @@ diskuuid=$(VBoxManage -q showvdiinfo ${diskfile} | grep UUID | \
# snapshot UUID is static
snapshotuuid="88bc8b6d-f248-468a-95fe-318084904f8b"
+# TODO: MEM muss noch angepasst werden. Maschine crasht wenn nehr als 50% MEM
# memory part equal to vmware plugin
# percentage of memory to use for virtualbox in standard case
if [ -n "${forcemem}" ]; then
diff --git a/os-plugins/plugins/vmgrid/XX_vmgrid.sh b/os-plugins/plugins/vmgrid/XX_vmgrid.sh
index 004b7891..bdbd4836 100644
--- a/os-plugins/plugins/vmgrid/XX_vmgrid.sh
+++ b/os-plugins/plugins/vmgrid/XX_vmgrid.sh
@@ -19,7 +19,6 @@
. /etc/functions
# hostname?
-[ -e /tmp/confviadhcp ] && . /tmp/confviadhcp
host_name=${host_name:=$clientip}
CONFFILE="/initramfs/plugin-conf/vmgrid.conf"
diff --git a/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm b/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm
index 671e985f..7ab55d4a 100644
--- a/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm
+++ b/os-plugins/plugins/xen/OpenSLX/OSPlugin/xen.pm
@@ -59,7 +59,8 @@ sub getAttrInfo
End-of-Here
content_regex => qr{^(0|1)$},
content_descr => '1 means active - 0 means inactive',
- default => '1',
+ # set active to 0, later set specially created Xen system to 1
+ default => '0',
},
};
}
@@ -70,61 +71,59 @@ sub suggestAdditionalKernelModules
my $makeInitRamFSEngine = shift;
my @suggestedModules;
-
- # Xen needs bridge module and for SUSE 10.2 netloop other OS: to be checked
- if ($makeInitRamFSEngine->{'distro-name'} =~ m{^suse}i) {
- push @suggestedModules, qw( bridge netloop )
- }
-
- return @suggestedModules;
-}
-sub _xenLabel
-{
- # set label for each Xen system
- foreach my $info (@$systemInfos) {
- if ($info->{xen::active} eq 1) {
- my $label = $info->{label} || '';
- if (!length($label) || $label eq $info->{name}) {
- if ($info->{name} =~ m{^(.+)::(.+)$}) {
- my $system = $1;
- my $exportType = $2;
- $label = $system . "-xen" . ' ' x (36-length($system))
- . $exportType;
- } else {
- $label = $info->{name};
- }
- }
- }
- $info->{pxeLabel} = $label;
- }
- return $info; #???
-}
+ # Xen needs bridge module and netloop
+ push @suggestedModules, qw( bridge netloop );
-sub _xenBootEntry
-{
- # Xen entries look different
- # Example:
- # KERNEL mboot.c32 vendor-os/xen.gz dom0_mem=128000 ---
- # vendor-os/vmlinuz-xen debug=3 --- vendor-os/initramfs-1
- # TODO: versionsort oder per attr?
- if ($info->{xen::active} eq 1) {
- my $xenKernel = slxsystem(ls /boot/xen* | sort | tail -n 1);
- $append .= " file=$bootURI" if length($bootURI);
- $append .= " file=$tftpPrefix" if length($tftpPrefix);
- $append .= " $clientAppend";
- $append .= " --- $pxePrefix$vendorOSName/$info->{'initramfs-name'}";
- $slxLabels .= "LABEL openslx-$info->{'external-id'}-xen\n";
- # $slxLabels .= $pxeDefault;
- $slxLabels .= "\tMENU LABEL ^$info->{pxeLabel}\n";
- $slxLabels .= "\tKERNEL mboot.c32\n";
- $slxLabels .= "\tAPPEND $pxePrefix$vendorOSName/$xenKernel";
- # $slxLabels .= " dom0_mem=128000";
- $slxLabels .= " --- $pxePrefix$vendorOSName/$kernelName";
- $slxLabels .= " --- $append\n";
- $slxLabels .= "\tIPAPPEND 3\n";
- }
- return $slxLabels;
+ return @suggestedModules;
}
+#sub _xenLabel
+#{
+# # set label for each Xen system
+# foreach my $info (@$systemInfos) {
+# if ($info->{xen::active} eq 1) {
+# my $label = $info->{label} || '';
+# if (!length($label) || $label eq $info->{name}) {
+# if ($info->{name} =~ m{^(.+)::(.+)$}) {
+# my $system = $1;
+# my $exportType = $2;
+# $label = $system . "-xen" . ' ' x (36-length($system))
+# . $exportType;
+# } else {
+# $label = $info->{name};
+# }
+# }
+# }
+# $info->{pxeLabel} = $label;
+# }
+# return $info; #???
+#}
+
+#sub _xenBootEntry
+#{
+# # Xen entries look different
+# # Example:
+# # KERNEL mboot.c32 vendor-os/xen.gz dom0_mem=128000 ---
+# # vendor-os/vmlinuz-xen debug=3 --- vendor-os/initramfs-1
+# # TODO: versionsort oder per attr?
+# if ($info->{xen::active} eq 1) {
+# my $xenKernel = slxsystem(ls /boot/xen* | sort | tail -n 1);
+# $append .= " file=$bootURI" if length($bootURI);
+# $append .= " file=$tftpPrefix" if length($tftpPrefix);
+# $append .= " $clientAppend";
+# $append .= " --- $pxePrefix$vendorOSName/$info->{'initramfs-name'}";
+# $slxLabels .= "LABEL openslx-$info->{'external-id'}-xen\n";
+# # $slxLabels .= $pxeDefault;
+# $slxLabels .= "\tMENU LABEL ^$info->{pxeLabel}\n";
+# $slxLabels .= "\tKERNEL mboot.c32\n";
+# $slxLabels .= "\tAPPEND $pxePrefix$vendorOSName/$xenKernel";
+# # $slxLabels .= " dom0_mem=128000";
+# $slxLabels .= " --- $pxePrefix$vendorOSName/$kernelName";
+# $slxLabels .= " --- $append\n";
+# $slxLabels .= "\tIPAPPEND 3\n";
+# }
+# return $slxLabels;
+#}
+
1;
diff --git a/os-plugins/plugins/xen/XX_xen.sh b/os-plugins/plugins/xen/XX_xen.sh
index ba2c4f00..82142a61 100644
--- a/os-plugins/plugins/xen/XX_xen.sh
+++ b/os-plugins/plugins/xen/XX_xen.sh
@@ -14,8 +14,13 @@
# script is included from init via the "." load function - thus it has all
# variables and functions available
-if [ -e /initramfs/plugin-conf/xen.conf ]; then
- . /initramfs/plugin-conf/xen.conf
+# include default directories
+. /etc/openslx.conf
+
+CONFFILE=/initramfs/plugin-conf/xen.conf
+
+if [ -e ${CONFFILE} ]; then
+ . ${CONFFILE}
if [ $xen_active -ne 0 ]; then
testmkd /mnt/var/log/xen
testmkd /mnt/var/run/xend
diff --git a/os-plugins/plugins/xen/files/machine.include b/os-plugins/plugins/xen/files/machine.include
new file mode 100644
index 00000000..93adca75
--- /dev/null
+++ b/os-plugins/plugins/xen/files/machine.include
@@ -0,0 +1,189 @@
+# -*- mode: python; -*-
+#============================================================================
+# Python configuration setup for 'xm create'.
+# This script sets the parameters used when a domain is created using 'xm create'.
+# You use a separate script for each domain you want to create, or
+# you can set the parameters for the domain on the xm command line.
+#============================================================================
+
+#----------------------------------------------------------------------------
+# Kernel image file and (optional) ramdisk (initrd).
+kernel = "/boot/vmlinuz-xen"
+ramdisk = "/boot/initrd-xen"
+
+# Or use domUloader instead of kernel/ramdisk to get kernel from domU FS
+#bootloader = "/usr/lib/xen/boot/domUloader.py"
+#bootentry = "hda2:/vmlinuz-xen,/initrd-xen"
+
+# The domain build function. Default is 'linux'.
+#builder='linux'
+
+# Initial memory allocation (in megabytes) for the new domain.
+#
+# WARNING: Creating a domain with insufficient memory may cause out of
+# memory errors. The domain needs enough memory to boot kernel
+# and modules. Allocating less than 32MBs is not recommended.
+memory = 64
+
+# A name for your domain. All domains must have different names.
+name = "ExampleDomain"
+
+# 128-bit UUID for the domain. The default behavior is to generate a new UUID
+# on each call to 'xm create'.
+#uuid = "06ed00fe-1162-4fc4-b5d8-11993ee4a8b9"
+
+# List of which CPUS this domain is allowed to use, default Xen picks
+#cpus = "" # leave to Xen to pick
+#cpus = "0" # all vcpus run on CPU0
+#cpus = "0-3,5,^1" # run on cpus 0,2,3,5
+
+# Number of Virtual CPUS to use, default is 1
+#vcpus = 1
+
+#----------------------------------------------------------------------------
+# Define network interfaces.
+
+# By default, no network interfaces are configured. You may have one created
+# with sensible defaults using an empty vif clause:
+#
+# vif = [ '' ]
+#
+# or optionally override backend, bridge, ip, mac, script, type, or vifname:
+#
+# vif = [ 'mac=00:16:3e:00:00:11, bridge=xenbr0' ]
+#
+# or more than one interface may be configured:
+#
+# vif = [ '', 'bridge=xenbr1' ]
+
+vif = [ '' ]
+
+#----------------------------------------------------------------------------
+# Define the disk devices you want the domain to have access to, and
+# what you want them accessible as.
+# Each disk entry is of the form phy:UNAME,DEV,MODE
+# where UNAME is the device, DEV is the device name the domain will see,
+# and MODE is r for read-only, w for read-write.
+
+disk = [ 'phy:hda1,hda1,w' ]
+
+#----------------------------------------------------------------------------
+# Define frame buffer device.
+#
+# By default, no frame buffer device is configured.
+#
+# To create one using the SDL backend and sensible defaults:
+#
+# vfb = [ 'type=sdl' ]
+#
+# This uses environment variables XAUTHORITY and DISPLAY. You
+# can override that:
+#
+# vfb = [ 'type=sdl,xauthority=/home/bozo/.Xauthority,display=:1' ]
+#
+# To create one using the VNC backend and sensible defaults:
+#
+# vfb = [ 'type=vnc' ]
+#
+# The backend listens on 127.0.0.1 port 5900+N by default, where N is
+# the domain ID. You can override both address and N:
+#
+# vfb = [ 'type=vnc,vnclisten=127.0.0.1,vncdisplay=1' ]
+#
+# Or you can bind the first unused port above 5900:
+#
+# vfb = [ 'type=vnc,vnclisten=0.0.0.0,vnunused=1' ]
+#
+# You can override the password:
+#
+# vfb = [ 'type=vnc,vncpasswd=MYPASSWD' ]
+#
+# Empty password disables authentication. Defaults to the vncpasswd
+# configured in xend-config.sxp.
+
+#----------------------------------------------------------------------------
+# Define to which TPM instance the user domain should communicate.
+# The vtpm entry is of the form 'instance=INSTANCE,backend=DOM'
+# where INSTANCE indicates the instance number of the TPM the VM
+# should be talking to and DOM provides the domain where the backend
+# is located.
+# Note that no two virtual machines should try to connect to the same
+# TPM instance. The handling of all TPM instances does require
+# some management effort in so far that VM configration files (and thus
+# a VM) should be associated with a TPM instance throughout the lifetime
+# of the VM / VM configuration file. The instance number must be
+# greater or equal to 1.
+#vtpm = [ 'instance=1,backend=0' ]
+
+#----------------------------------------------------------------------------
+# Set the kernel command line for the new domain.
+# You only need to define the IP parameters and hostname if the domain's
+# IP config doesn't, e.g. in ifcfg-eth0 or via DHCP.
+# You can use 'extra' to set the runlevel and custom environment
+# variables used by custom rc scripts (e.g. VMID=, usr= ).
+
+# Set if you want dhcp to allocate the IP address.
+#dhcp="dhcp"
+# Set netmask.
+#netmask=
+# Set default gateway.
+#gateway=
+# Set the hostname.
+#hostname= "vm%d" % vmid
+
+# Set root device.
+root = "/dev/hda1"
+
+# Root device for nfs.
+#root = "/dev/nfs"
+# The nfs server.
+#nfs_server = '169.254.1.0'
+# Root directory on the nfs server.
+#nfs_root = '/full/path/to/root/directory'
+
+# Extra arguments to pass to the kernel.
+extra = ""
+
+#----------------------------------------------------------------------------
+# Configure the behaviour when a domain exits. There are three 'reasons'
+# for a domain to stop: poweroff, reboot, and crash. For each of these you
+# may specify:
+#
+# "destroy", meaning that the domain is cleaned up as normal;
+# "restart", meaning that a new domain is started in place of the old
+# one;
+# "preserve", meaning that no clean-up is done until the domain is
+# manually destroyed (using xm destroy, for example); or
+# "rename-restart", meaning that the old domain is not cleaned up, but is
+# renamed and a new domain started in its place.
+#
+# In the event a domain stops due to a crash, you have the additional options:
+#
+# "coredump-destroy", meaning dump the crashed domain's core and then destroy;
+# "coredump-restart', meaning dump the crashed domain's core and the restart.
+#
+# The default is
+#
+# on_poweroff = 'destroy'
+# on_reboot = 'restart'
+# on_crash = 'restart'
+#
+# For backwards compatibility we also support the deprecated option restart
+#
+# restart = 'onreboot' means on_poweroff = 'destroy'
+# on_reboot = 'restart'
+# on_crash = 'destroy'
+#
+# restart = 'always' means on_poweroff = 'restart'
+# on_reboot = 'restart'
+# on_crash = 'restart'
+#
+# restart = 'never' means on_poweroff = 'destroy'
+# on_reboot = 'destroy'
+# on_crash = 'destroy'
+
+#on_poweroff = 'destroy'
+#on_reboot = 'restart'
+#on_crash = 'restart'
+
+#============================================================================
diff --git a/os-plugins/plugins/xen/files/run-virt.include b/os-plugins/plugins/xen/files/run-virt.include
new file mode 100644
index 00000000..beba0bb6
--- /dev/null
+++ b/os-plugins/plugins/xen/files/run-virt.include
@@ -0,0 +1,290 @@
+# run-virt.include
+# -----------------------------------------------------------------------------
+# Copyright (c) 2009..2010 - RZ Uni Freiburg
+# Copyright (c) 2009..2010 - OpenSLX GmbH
+#
+# This program/file is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org
+# -----------------------------------------------------------------------------
+# run-virt.include
+# - Include script for running Xen on an OpenSLX client via the run-virt.sh
+# or run-vmgrid.sh
+################################################################################
+
+################################################################################
+### Include general configuration
+################################################################################
+if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf ]; then
+ . ${OPENSLX_DEFAULT_CONFDIR}/plugins/${self}/${self}.conf
+else
+ writelog "Problems reading config file of ${self} plugin"
+ exit 1
+fi
+
+################################################################################
+### Declaration of default variables
+################################################################################
+
+exit
+#PLUGINCONFVIRTUALBOX="${PLUGINCONFROOT}/${self}"
+# create TMPDIR for all users
+#mkdir -m 1777 /tmp/${self} 2>/dev/null
+# dir for configs
+#confdir="/tmp/${self}/${USER}/${VM_ID}"
+# use alternate configuration directory instead of $HOME/.VirtualBox
+#export VBOX_USER_HOME=${confdir}
+# define dirs and files which can be removed after exit, be carefull!
+#RMDIRS="${snapshotdir} ${confdir} /tmp/.vbox-${USER}-ipc" 2>/dev/null
+#rm -rf ${RMDIRS} 2>/dev/null
+#machfolder="${VBOX_USER_HOME}/Machines"
+# imgname is the name of the virtual image file
+# use vm_shortname since vm_name can be very long
+#vm_shortname=$(echo ${imgname%.*} | sed -e "s, ,-,g")
+#machconfig="${machfolder}/${vm_shortname}/${vm_shortname}.xml"
+#diskfolder="${VBOX_USER_HOME}/HardDisks"
+#snapshotdir=${machfolder}/${vm_shortname}/Snapshots
+#diskfile="${diskfolder}/${imgname}"
+#mkdir -p ${diskfolder} ${snapshotdir} 2>/dev/null
+#ln -sf ${vmpath} ${diskfile}
+#
+# check the file type
+#if echo ${imgname} | grep -iE "vdi" >/dev/null 2>&1; then #vmdk|vhd
+# imgtype=$(echo ${imgname#*.} | tr [a-z] [A-Z])
+#else
+# writelog "${imgname} is not a valid image type (vdi), exiting!" #vmdk|vhd
+# exit 1
+#fi
+#
+# TODO: maybe rewrite, to reduce checks, merge it with network option,
+# so we can have a "compatibility to vmware config" section
+#case "${vmostype}" in
+# winxp*)
+# vmostype="WindowsXP"
+# ;;
+# winvista*)
+# vmostype="WindowsVista"
+# ;;
+# Windows7*)
+# vmostype="Windows7"
+# ;;
+# linux*)
+# vmostype="Linux26"
+# ;;
+#esac
+#
+#writelog "Directories:"
+#writelog "\tConfig dir:\t\t$confdir"
+#writelog "\tMachines dir:\t\t$machfolder"
+#writelog "\tMachine config:\t\t$machconfig"
+#writelog "\tHardDisks dir:\t\t$diskfolder"
+#
+################################################################################
+### Hardware checks
+################################################################################
+#
+# remove ':' from MAC addr for vbox
+#macaddr=$(echo ${macaddr} | sed 's/://g')
+#
+# machine UUID, MAC addr part of it
+#machineuuid="00000000-0000-0000-0000-${macaddr}"
+# cosmetical, since UUID in lower case
+#machineuuid=$(echo ${machineuuid} | tr [A-Z] [a-z])
+# get UUID of VBox image
+#diskuuid=$(VBoxManage -q showvdiinfo ${diskfile} | grep UUID | \
+# awk '{print $2}')
+# snapshot UUID is static
+#snapshotuuid="88bc8b6d-f248-468a-95fe-318084904f8b"
+#
+# memory part equal to vmware plugin
+# percentage of memory to use for virtualbox in standard case
+#if [ -n "${forcemem}" ]; then
+# mem="${forcemem}"
+#else
+# permem=30
+# if [ "${totalmem}" -ge "1600" ]; then
+# permem=40
+# fi
+# # check if /tmp is on harddisk
+# if grep -qe "/dev/.* /tmp " /proc/mounts ; then
+# permem=60
+# id44="1"
+# # Hack, if more than 2,5G RAM use 40% of Ram and write vmem into Ram as well
+# # (40% vmware | 40% confdir(vmem...) | 20% host
+# # VMplayer 2+ issue
+# # TODO: makes this sense for vbox?
+# #if [ "${totalmem}" -ge "2500" ]; then
+# #permem=40
+# #rmdir ${snapshotdir}
+# #snapshotdirold=${snapshotdir}
+# #snapshotdir=/dev/shm/${self}/${USER}/${VM_ID}
+# #mkdir -p ${snapshotdir}
+# #ln -sf ${snapshotdir} ${snapshotdirold}
+# #fi
+# fi
+# mem=$(expr ${totalmem} / 100 \* ${permem})
+# if [ "${id44}" = "1" ]; then
+# memhost=$(expr ${totalmem} - ${mem})
+# else
+# memhost=$(expr ${totalmem} - ${mem} - ${mem})
+# fi
+# #permem=40
+# #mem=$(expr ${totalmem} * ${permem})
+# if [ "${mem}" -lt "256" ] || [ "${memhost}" -lt "256" ]; then
+# writelog "Memory out of range: ${mem} MB (guest) / ${memhost} MB (host)!"
+# writelog "Min. 256 MB for host and guest!"
+# exit 1
+# fi
+#fi
+#
+# translate network cards
+#if [ "${network_card}" = "e1000" ]; then
+# vb_network_card="82540EM"
+#else
+# network_card="pcnet"
+# vb_network_card="Am79C973"
+#fi
+#
+# translate network kinds (nat, bridged, host-only)
+#case "${network_kind}" in
+# bridged)
+# network_kind='BridgedInterface name="br0"'
+# ;;
+# hostonly|host-only)
+# network_kind='HostOnlyInterface name="vboxnet0"'
+# ;;
+# *)
+# network_kind="NAT"
+# ;;
+#esac
+#
+# external GUI
+#vrdpport="590${VM_ID}"
+#
+# TODO: nur bei vmchooser
+# TODO: most of the following does not make much sense yet ...
+# virtual fd/cd/dvd and drive devices, floppy b: for configuration
+# if $floppy_0 from run-virt.include set then fdtest="TRUE"
+#fdtest=
+#fdtest=${floppy_0:+"TRUE"}
+# if $fdtest not set floppy0="FALSE", else "TRUE"
+#floppy0=${fdtest:-"FALSE"}
+#floppy1="TRUE"
+#floppy1name="/var/lib/virt/vmchooser/loopimg/fd.img"
+# if $cdrom_0 from run-virt.include set then cdtest="TRUE"
+#cdtest=
+#cdtest=${cdrom_0:+"TRUE"}
+# if $cdtest not set cdrom0="FALSE", else "TRUE"
+#cdrom0=${cdtest:-"FALSE"}
+# if $cdrom_1 from run-virt.include set then cdtest="TRUE"
+#cdtest=
+#cdtest=${cdrom_1:+"TRUE"}
+# if $cdtest not set cdrom1="FALSE", else "TRUE"
+#cdrom1=${cdtest:-"FALSE"}
+# ide is expected default, test for the virtual disk image type should
+# be done while creating the runscripts ...
+#ide="TRUE"
+#hddrv="ide"
+#
+#writelog "\tSnapshots dir:\t\t$snapshotdir"
+#writelog "Diskimage:"
+#writelog "\tDisk type:\t\t$imgtype"
+#writelog "\tDisk file:\t\t$diskfile"
+#writelog "\tVMostype:\t\t$vmostype"
+#writelog "\tMachine UUID:\t\t$machineuuid"
+#writelog "\tDisk UUID:\t\t$diskuuid"
+#writelog "\tSnapshot UUID:\t\t$snapshotuuid"
+#writelog "Virtual Hardware:"
+#writelog "\tGuest RAM:\t\t${mem} MB"
+# echo nur wenn memhost gesetzt
+#[ -n "${memhost}" ] && writelog "\tHost RAM:\t\t${memhost} MB"
+#writelog "\tMAC address:\t\t$macaddr"
+#writelog "\tNetwork card:\t\t${vb_network_card}"
+#writelog "\tNetwork kind:\t\t${network_kind}"
+# TODO: server start activate via xml, etc...
+#writelog "\tGuest VRDP port:\t${vrdpport}"
+#writelog "\tCD-ROM1:\t${cdrom0}"
+#writelog "\tCD-ROM2:\t${cdrom1}"
+#writelog "\tFloppy_A:\t${floppy0}"
+#writelog "\tFloppy_B:\t${floppy1}"
+#writelog "\tShared Folders 'home':\t/home/${USER}"
+#
+################################################################################
+### Pepare and configure virtual machine and disk image
+################################################################################
+#
+# TODO: date wichtig?
+#date="$(date +%Y-%m-%dT%H:%M:%SZ)"
+#. ${PLUGINCONFVIRTUALBOX}/virtualbox.include >"${VBOX_USER_HOME}/VirtualBox.xml"
+#
+# shortened date YYYY-MM-DD
+#date=${date%T*}
+#. ${PLUGINCONFVIRTUALBOX}/machine.include >"${machconfig}"
+#
+# add rw share to vm, if existing
+#if [ -n "${rwshare}" ]; then
+# sharedf='<SharedFolder name="share"'
+# sharedf="${sharedf} hostPath=\"${rwshare}\" writable=\"true\"/>"
+# sed -i "s,</SharedFolders>, ${sharedf}\n </SharedFolders>," \
+# "${machconfig}"
+# writelog "\tShared Folders 'share':\t${rwshare}"
+#fi
+#
+# add ssh port if linux and NAT
+#if [ "${vmostype}" = "Linux26" ] && [ "${network_kind}" = "NAT" ]; then
+# vmsshport="220${VM_ID}"
+# extradataitem='<ExtraDataItem name="VBoxInternal/Devices' \
+# extradataitem="${extradataitem}/${network_card}/0/LUN#0/Config/ssh/"
+# extradataguestport='GuestPort" value="22"/>'
+# extradatahostport="HostPort\" value=\"${vmsshport}\"/>"
+# extradataprotocol='Protocol" value="TCP"/>'
+# sed -i "s,</ExtraData>, ${extradataitem}${extradataguestport}\n\
+# ${extradataitem}${extradatahostport}\n\
+# ${extradataitem}${extradataprotocol}\n\
+# </ExtraData>," "${machconfig}"
+# writelog "\tGuest SSH port:\t\t${vmsshport}"
+#fi
+#
+#cat ${OPENSLX_DEFAULT_DIR}/plugin-repo/virtualbox/empty-diff.vdi.gz | \
+# gunzip > "${snapshotdir}/{${snapshotuuid}}.vdi"
+#
+################################################################################
+### finally set env for run-virt.sh
+################################################################################
+#
+# wait for a certain command to settle
+# get the PID of the right process
+# TODO: not very good! But seems to work
+# TODO: not needed? KILL!!!
+#VBMANPID=$(pstree -p | grep VBoxXPCOMIPCD | grep -ivE "VirtualBox|VBoxHeadless"\
+ | sed -e "s/.*VBoxXPCOMIPCD(\(.*\)).*/\1/")
+#for i in $(echo ${VBMANPID}); do
+# kill -9 ${VBMANPID} >/dev/null 2>&1
+#done
+# TODO: OLD Version, NOW: KILL process
+#VBMANPID=$(pstree -p | grep VBoxXPCOMIPCD | grep -ivE "VirtualBox|VBoxHeadless"\
+# | sed -e "s/.*VBoxXPCOMIPCD(\(.*\)).*/\1/" | tail -n 1)
+#for i in {0..999}; do
+# ps aux | grep -v grep | grep VBoxXPCOMIPCD | grep -q " ${VBMANPID} " || break
+# if [ $i -eq 999 ]; then
+# kill -9 ${VBMANPID} >/dev/null 2>&1
+# writelog "Process ID ${VBMANPID} did not finish, killing!"
+# fi
+#done
+#
+# set the variables appropriately (several interfaces with different names)
+#VIRTCMD=$(which VirtualBox 2>/dev/null)
+#VIRTCMDOPTS="--startvm ${machineuuid} --start-running"
+#
+# SDL tests
+#VIRTCMDSDL=$(which VBoxSDL 2>/dev/null)
+#VIRTCMDOPTSSDL="--startvm ${machineuuid} --fullscreen --hwvirtex --memory 1024 \
+# --fixedmode 1680 1050 24 --hostkey 302 0"
+#
+# set headless mode
+#VIRTCMDHL=$(which VBoxHeadless 2>/dev/null)
+#VIRTCMDOPTSHL="-s ${machineuuid}"