diff options
| author | Michael Janczyk | 2010-03-23 21:23:55 +0100 |
|---|---|---|
| committer | Michael Janczyk | 2010-03-23 21:23:55 +0100 |
| commit | 67a9870012a281c5489e482c69201e8364dec5be (patch) | |
| tree | 76e3a6dd29dacc21301bc028e997d44a3a29ac87 /os-plugins/plugins/xen/files | |
| parent | qemukvm weiter, sollte laufen (ungetestet), noch anpassungen an scripten notw... (diff) | |
| download | core-67a9870012a281c5489e482c69201e8364dec5be.tar.gz core-67a9870012a281c5489e482c69201e8364dec5be.tar.xz core-67a9870012a281c5489e482c69201e8364dec5be.zip | |
qemukvm further modifications, first xen runscripts
Diffstat (limited to 'os-plugins/plugins/xen/files')
| -rw-r--r-- | os-plugins/plugins/xen/files/machine.include | 189 | ||||
| -rw-r--r-- | os-plugins/plugins/xen/files/run-virt.include | 290 |
2 files changed, 479 insertions, 0 deletions
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}" |
