diff options
Diffstat (limited to 'remote/modules')
52 files changed, 2537 insertions, 26 deletions
diff --git a/remote/modules/kdm/data/etc/kde4/kdm/Xsetup b/remote/modules/kdm/data/etc/kde4/kdm/Xsetup new file mode 100755 index 00000000..a31d61e4 --- /dev/null +++ b/remote/modules/kdm/data/etc/kde4/kdm/Xsetup @@ -0,0 +1,6 @@ +#! /bin/sh +# Xsetup - run as root before the login dialog appears + +#xconsole -geometry 480x130-0-0 -notify -verbose -fn fixed -exitOnFail -file /dev/xconsole & + +#/sbin/initctl -q emit login-session-start DISPLAY_MANAGER=kdm diff --git a/remote/modules/kdm/data/etc/kde4/kdm/kdmrc b/remote/modules/kdm/data/etc/kde4/kdm/kdmrc index 72625705..855e9aa7 100644 --- a/remote/modules/kdm/data/etc/kde4/kdm/kdmrc +++ b/remote/modules/kdm/data/etc/kde4/kdm/kdmrc @@ -18,12 +18,13 @@ UseAdminSession=true AllowRootLogin=true AllowShutdown=All AutoLoginEnable=false -Reset=/etc/kde4/kdm/Xreset +#Reset=/etc/kde4/kdm/Xreset ServerAttempts=2 -Session=/etc/kde4/kdm/Xsession +#TODO: Xsession doesn't work because scripts are missing under /etc/X11/Xsession.d/ +#Session=/etc/kde4/kdm/Xsession SessionsDirs=/etc/X11/session,/usr/share/xsessions,/usr/share/apps/kdm/sessions -Setup=/etc/kde4/kdm/Xsetup -Startup=/etc/kde4/kdm/Xstartup +#Setup=/etc/kde4/kdm/Xsetup +#Startup=/etc/kde4/kdm/Xstartup [X-:0-Greeter] LogSource=/dev/xconsole diff --git a/remote/modules/kernel/kernel.build b/remote/modules/kernel/kernel.build index dc789b36..e755023e 100644 --- a/remote/modules/kernel/kernel.build +++ b/remote/modules/kernel/kernel.build @@ -2,11 +2,13 @@ fetch_source() { # get the source according to the distro if [ "x$PACKET_MANAGER" == "xapt" ]; then pdebug "apt-ing kernel source" - apt-get source linux-image-${KERNEL_VERSION} - [ ! -e ksrc ] && ln -s $(ls -d linux-*/) ksrc + apt-get install -y dpkg-dev || perror "Installing dpkg-dev failed." + apt-get source linux-image-${KERNEL_VERSION} || perror "Fetching kernel source failed." + [ -z "$(ls -d linux-*/)" ] && perror "Source directory not found." + [ ! -e ksrc ] && ln -s "$(ls -d linux-*/)" "ksrc" elif [ "x$PACKET_MANAGER" == "xzypper" ]; then pdebug "zypping kernel source" - zypper --no-refresh install -y kernel-source + zypper --no-refresh install -y kernel-source || perror "Fetching kernel source failed." # find src directory local SOURCE_DIR=$(rpm -ql kernel-source |grep -E -o '^/.*src/linux-[^/]+/' |head -1) @@ -37,7 +39,7 @@ build() { # make kernel with the new config cd ksrc || perror "Could not cd to ksrc, was the kernel source fetched properly?" pinfo "Preparing kernel for new config ('make oldconfig')" - yes n | make oldconfig || perror "make oldconfig failed" + yes "" | make oldconfig || perror "make oldconfig failed" pinfo "Compiling kernel... (this will take some time)" make || perror "make failed" @@ -71,18 +73,19 @@ update_config() { cp "$BASE_CONFIG_FILE" "$TARGET_CONFIG_FILE" for WANTED_CONFIG in $(cat $OPENSLX_WANTED_CONFIG|sort -u); do - local CONFIG_PARAM_NAME=$(echo $WANTED_CONFIG | awk -F "=" '{print $1}') - local SEARCH_RESULT=$(grep "^$CONFIG_PARAM_NAME=" "$BASE_CONFIG_FILE") + local CONFIG_PARAM_NAME="$(echo $WANTED_CONFIG | awk -F "=" '{print $1}')" + local SEARCH_RESULT="$(grep -E "^\s*$(echo "$CONFIG_PARAM_NAME" | escape_search)=" "$BASE_CONFIG_FILE")" #echo "Process: $SEARCH_RESULT" # analyse results if [ "x$SEARCH_RESULT" == "x" ]; then # no match, add it - echo $WANTED_CONFIG >> $TARGET_CONFIG_FILE + sed -i -r "s/^\s*#.*\s$(echo "$CONFIG_PARAM_NAME" | escape_search)[^_A-Z0-9].*$//" "$TARGET_CONFIG_FILE" + echo "$WANTED_CONFIG" >> "$TARGET_CONFIG_FILE" else # match, change to our setting if they differ - if [ "x${SEARCH_RESULT: -1}" != "x${WANTED_CONFIG: -1}" ]; then - sed -i "s/$SEARCH_RESULT/$WANTED_CONFIG/" "$TARGET_CONFIG_FILE" + if [ "x$SEARCH_RESULT" != "x$WANTED_CONFIG" ]; then + sed -i "s/$(echo "$SEARCH_RESULT" | escape_search)/$(echo "$WANTED_CONFIG" | escape_replace)/" "$TARGET_CONFIG_FILE" fi fi done diff --git a/remote/modules/rsyslogd/rsyslogd.conf b/remote/modules/rsyslogd/rsyslogd.conf index f027d6e0..35631c41 100644 --- a/remote/modules/rsyslogd/rsyslogd.conf +++ b/remote/modules/rsyslogd/rsyslogd.conf @@ -1,5 +1,4 @@ REQUIRED_PACKAGES=" rsyslog" REQUIRED_BINARIES=" rsyslogd" REQUIRED_DIRECTORIES=" /usr/lib/rsyslog" -REQUIRED_SYSTEM_FILES=" /etc/rsyslog.conf - /etc/rsyslog.d/50-default.conf" +REQUIRED_SYSTEM_FILES=" /etc/rsyslog.conf" diff --git a/remote/modules/rsyslogd/rsyslogd.conf.zypper b/remote/modules/rsyslogd/rsyslogd.conf.zypper index a70940e8..48bcaa46 100644 --- a/remote/modules/rsyslogd/rsyslogd.conf.zypper +++ b/remote/modules/rsyslogd/rsyslogd.conf.zypper @@ -2,5 +2,4 @@ REQUIRED_BINARIES=" rsyslogd rsyslog-service-prepare" REQUIRED_PACKAGES=" rsyslog" REQUIRED_DIRECTORIES=" /etc/rsyslog.d - /usr/lib/rsyslog - /var/run" + /usr/lib/rsyslog" diff --git a/remote/modules/systemd/systemd.conf b/remote/modules/systemd/systemd.conf index 634828bd..2b116784 100644 --- a/remote/modules/systemd/systemd.conf +++ b/remote/modules/systemd/systemd.conf @@ -8,7 +8,8 @@ REQUIRED_DEPENDENCIES=" intltool pkg-config libcap-dev libudev-dev - libdbus-1-dev" + libdbus-1-dev + xsltproc" REQUIRED_BINARIES=" hostnamectl journalctl localectl diff --git a/remote/modules/vmchooser/data/openslx/bin/vmchooser b/remote/modules/vmchooser/data/openslx/bin/vmchooser Binary files differdeleted file mode 100755 index d8ec07f9..00000000 --- a/remote/modules/vmchooser/data/openslx/bin/vmchooser +++ /dev/null diff --git a/remote/modules/vmchooser/data/openslx/bin/run-virt.sh b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/run-virt.sh index b3863a2e..b3863a2e 100755 --- a/remote/modules/vmchooser/data/openslx/bin/run-virt.sh +++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/run-virt.sh diff --git a/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmplayer b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmplayer new file mode 100755 index 00000000..c9b57a65 --- /dev/null +++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmplayer @@ -0,0 +1,8 @@ +#!/bin/sh +# written by OpenSLX-plugin 'vmware' in Stage1 +# radically simplified version of the original script vmplayer by VMware Inc. +PREFIX=/usr/lib/vmware # depends on the vmware location +exec "$PREFIX"'/lib/wrapper-gtk24.sh' \ + "$PREFIX"'/lib' \ + "$PREFIX"'/bin/vmplayer' \ + "$PREFIX"'/libconf' "$@" diff --git a/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmware b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmware new file mode 100755 index 00000000..8b568f53 --- /dev/null +++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/vmware @@ -0,0 +1,8 @@ +#!/bin/sh +# written by OpenSLX-plugin 'vmware' in Stage1 +# radically simplified version of the original script vmware by VMware Inc. +PREFIX=/usr/lib/vmware # depends on the vmware location +exec "$PREFIX"'/lib/wrapper-gtk24.sh' \ + "$PREFIX"'/lib' \ + "$PREFIX"'/bin/vmware' \ + "$PREFIX"'/libconf' "$@" diff --git a/remote/modules/vmchooser/data/openslx/bin/xmlfilter.sh b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/xmlfilter.sh index ded5d114..ded5d114 100755 --- a/remote/modules/vmchooser/data/openslx/bin/xmlfilter.sh +++ b/remote/modules/vmchooser/data/opt/openslx/vmchooser/bin/xmlfilter.sh diff --git a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/openslx/openslx-left.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-left.png Binary files differindex 900dd867..900dd867 100644 --- a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/openslx/openslx-left.png +++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-left.png diff --git a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/openslx/openslx-right.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-right.png Binary files differindex 8ca9347b..8ca9347b 100644 --- a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/openslx/openslx-right.png +++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx-right.png diff --git a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/openslx/openslx.ini b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx.ini index 57a22821..57a22821 100644 --- a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/openslx/openslx.ini +++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/openslx/openslx.ini diff --git a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/planets/planets-left.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-left.png Binary files differindex c8736b72..c8736b72 100644 --- a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/planets/planets-left.png +++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-left.png diff --git a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/planets/planets-right.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-right.png Binary files differindex e21f0d8b..e21f0d8b 100644 --- a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/planets/planets-right.png +++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets-right.png diff --git a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/planets/planets.ini b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets.ini index d9aa17f6..d9aa17f6 100644 --- a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/planets/planets.ini +++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/planets/planets.ini diff --git a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/unifr/title_l.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_l.png Binary files differindex e602ccd1..e602ccd1 100644 --- a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/unifr/title_l.png +++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_l.png diff --git a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/unifr/title_r.png b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_r.png Binary files differindex 3edbcb0c..3edbcb0c 100644 --- a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/unifr/title_r.png +++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/title_r.png diff --git a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/unifr/unifr.ini b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/unifr.ini index dadcb4e1..dadcb4e1 100644 --- a/remote/modules/vmchooser/data/usr/share/vmchooser/themes/unifr/unifr.ini +++ b/remote/modules/vmchooser/data/usr/local/share/vmchooser/themes/unifr/unifr.ini diff --git a/remote/modules/vmchooser/data/usr/share/xsessions/default.desktop b/remote/modules/vmchooser/data/usr/share/xsessions/default.desktop index c6a0f825..48812a8e 100755 --- a/remote/modules/vmchooser/data/usr/share/xsessions/default.desktop +++ b/remote/modules/vmchooser/data/usr/share/xsessions/default.desktop @@ -4,7 +4,7 @@ Name=virtual machine chooser (default) Name[de]=Virtuelle Maschine auswählen Comment=This session starts the vm session chooser Comment[de]=Diese Sitzung startet das Auswahlmenü für die vorhandenen Sitzungen -Exec=/openslx/bin/vmchooser -TryExec=/openslx/bin/vmchooser +Exec=/opt/openslx/vmchooser/bin/vmchooser -c /etc/openslx/vmchooser/vmchooser.conf +TryExec=/opt/openslx/vmchooser/bin/vmchooser -c /etc/openslx/vmchooser/vmchooser.conf Icon= Type=Application diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/init.d/vmware-env b/remote/modules/vmchooser/vmchooser-temp/etc/init.d/vmware-env new file mode 100755 index 00000000..78fac650 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/init.d/vmware-env @@ -0,0 +1,139 @@ +#!/bin/sh +# Copyright (c) 2009 - OpenSLX GmbH +# +# This program 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 suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# §filename§ +# - §desc§ +# §generated§ +# ----------------------------------------------------------------------------- + +### BEGIN INIT INFO +# Provides: vmware-slx +# Required-Start: $remote_fs +# Required-Stop: $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 1 +# Short-Description: Setup environment for VMware Workstation or Player (local5X). +### END INIT INFO + +. /lib/lsb/init-functions + +#functions: helper functions +tempdir () { +# Create a special tempfs directory +mkdir -m 1777 -p /tmp/vmware +# Don't mount special tempfs, when using local harddrive for /tmp +[ ! -n "$(cat /proc/mounts |grep ' /tmp '|grep '/dev/sd')" ] \ + && mount -t tmpfs -o size=180%,mode=1777 tmpfs /tmp/vmware + +} + +load_modules () { +# VMplayer common stuff +insmod /lib/modules/$(uname -r)/misc/vmmon.ko || return 1 +insmod /lib/modules/$(uname -r)/misc/vmnet.ko || return 1 +# VMplayer 3.X specific stuff +insmod /lib/modules/$(uname -r)/misc/vmci.ko +insmod /lib/modules/$(uname -r)/misc/vmblock.ko +insmod /lib/modules/$(uname -r)/misc/vsock.ko + +} + +unload_modules () { +rmmod vmnet vmmonvsock vmci vmblock 2>/dev/null +} + +vmnetif () { +# let point the path directly to the directory where the binary lives +location="/usr/bin" +if [ -n "$vmnet0" ] ; then + # the path might be directly point to the plugin dir + $location/vmnet-bridge -d /var/run/vmnet-bridge-0.pid -n 0 +fi +if [ -n "$vmnet1" ] ; then + $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet1.pid \ + /dev/vmnet1 vmnet1 + ip addr add $vmnet1 dev vmnet1 + ip link set vmnet1 up + if [ -n "$vmnet1nat" ] ; then + echo "1" >/proc/sys/net/ipv4/conf/vmnet1/forwarding 2>/dev/null + echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null + #iptables -A -s vmnet1 -d br0 + fi + /opt/openslx/rootfs/usr/sbin/udhcpd \ + -S /etc/vmware/udhcpd/udhcpd-vmnet1.conf +fi +if [ -n "$vmnet8" ] ; then + $location/vmnet-netifup -d /var/run/vmnet-netifup-vmnet8.pid \ + /dev/vmnet8 vmnet8 + ip addr add $vmnet8 dev vmnet8 + ip link set vmnet8 up + echo "1" >/proc/sys/net/ipv4/conf/vmnet8/forwarding 2>/dev/null + echo "1" >/proc/sys/net/ipv4/conf/br0/forwarding 2>/dev/null + iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE + # /etc/vmware/vmnet-natd-8.mac simply contains a mac like 00:50:56:F1:30:50 + $location/vmnet-natd -d /var/run/vmnet-natd-8.pid \ + -m /etc/vmware/vmnet-natd-8.mac -c /etc/vmware/nat.conf 2>/dev/null # or logfile + /opt/openslx/rootfs/usr/sbin/udhcpd \ + -S /etc/vmware/udhcpd/udhcpd-vmnet8.conf +fi + +} + +vmblock () { +# let point the path directly to the directory where the binary lives + /usr/bin/vmware-usbarbitrator + +} + + +case "$1" in + start) + #start: defines start function for initscript + # include default directories + . /etc/opt/openslx/openslx.conf + # load the configuration file + . ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf + # hack to access the first serial/parallel port + chmod a+rw /dev/ttyS0 + chmod a+rw /dev/parport0 + tempdir + load_modules + vmnetif + vmblock + + ;; + stop) + #stop: defines stop function for initscript + killall vmnet-netifup vmnet-natd vmnet-bridge vmware vmplayer \ + vmware-tray vmnet-dhcpd 2>/dev/null + # might take a while until all services are shut down + sleep 1 + umount -l /tmp/vmware 2>/dev/null + unload_modules + + ;; + restart) + #restart: defines restart function for initscript + $0 stop && $0 start + ;; + status) + #status: defines status function for initscript + vmstatus + ;; + *) + #usage: defines usage function for initscript + ## print out usage + echo "Usage: $0 {start, stop, restart, status}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/machine.include b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/machine.include new file mode 100644 index 00000000..6367d3d9 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/machine.include @@ -0,0 +1,120 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2010..2012 - 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 +# ----------------------------------------------------------------------------- +# Include file (machine template) for run-virt.include of the OpenSLX virtual- +# box plugin +cat << EOF > "${machconfig}" +<?xml version="1.0"?> +<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.12-linux"> + <Machine uuid="{${machineuuid}}" name="${vm_name}" OSType="${vmostype}"> + <ExtraData> + <ExtraDataItem name="GUI/AutoresizeGuest" value="on"/> + <ExtraDataItem name="GUI/Fullscreen" value="on"/> + <ExtraDataItem name="GUI/LastCloseAction" value="powerOff"/> + <ExtraDataItem name="GUI/MiniToolBarAutoHide" value="on"/> + <ExtraDataItem name="GUI/MiniToolBarAlignment" value="top"/> + <ExtraDataItem name="GUI/ShowMiniToolBar" value="yes"/> + <ExtraDataItem name="GUI/SaveMountedAtRuntime" value="yes"/> + <ExtraDataItem name="GUI/Seamless" value="off"/> + </ExtraData> + <Hardware version="2"> + <CPU count="${cpu_cores}"> + <HardwareVirtEx enabled="${enablevt}" exclusive="true"/> + <HardwareVirtExNestedPaging enabled="${npaging}"/> + <HardwareVirtExVPID enabled="false"/> + <PAE enabled="true"/> + </CPU> + <Memory RAMSize="${mem}"/> + <Boot> + <Order position="1" device="${boot}"/> <!-- HardDisk, DVD, Network, Floppy --> + <Order position="2" device="None"/> + <Order position="3" device="None"/> + <Order position="4" device="None"/> + </Boot> + <!-- check for xml configured enable3d parameter --> + <Display VRAMSize="${vram}" monitorCount="1" accelerate3D="${enable3d}" accelerate2DVideo="${enable2d}"/> + <!-- authType="External", "Guest", "Null" --> + <RemoteDisplay enabled="false" port="${vrdpport}" authType="Null" authTimeout="5000"/> + <BIOS> + <ACPI enabled="true"/> + <IOAPIC enabled="true"/> + <Logo fadeIn="false" fadeOut="false" displayTime="0"/> + <BootMenu mode="MessageAndMenu"/> + <TimeOffset value="0"/> + <PXEDebug enabled="false"/> + </BIOS> + <USBController enabled="true" enabledEhci="true"/> + <Network> + <Adapter slot="0" enabled="true" MACAddress="${macaddr}" cable="true" speed="0" type="${vb_network_card}"> + <${network_kind}/> + </Adapter> + <Adapter slot="1" enabled="false" MACAddress="0800279312CC" cable="true" speed="0" type="Am79C973"/> + <Adapter slot="2" enabled="false" MACAddress="080027A3A3CC" cable="true" speed="0" type="Am79C973"/> + <Adapter slot="3" enabled="false" MACAddress="0800277356CC" cable="true" speed="0" type="Am79C973"/> + <Adapter slot="4" enabled="false" MACAddress="080027CEA8CC" cable="true" speed="0" type="Am79C973"/> + <Adapter slot="5" enabled="false" MACAddress="0800271B8DCC" cable="true" speed="0" type="Am79C973"/> + <Adapter slot="6" enabled="false" MACAddress="08002771BBCC" cable="true" speed="0" type="Am79C973"/> + <Adapter slot="7" enabled="false" MACAddress="080027EB6ACC" cable="true" speed="0" type="Am79C973"/> + </Network> + <UART> + <Port slot="0" enabled="false" IOBase="0x3f8" IRQ="4" hostMode="Disconnected"/> + <Port slot="1" enabled="false" IOBase="0x3f8" IRQ="4" hostMode="Disconnected"/> + </UART> + <LPT> + <Port slot="0" enabled="false" IOBase="0x378" IRQ="4"/> + <Port slot="1" enabled="false" IOBase="0x378" IRQ="4"/> + </LPT> + <!-- should be configured depending on the chosen operating system --> + <AudioAdapter controller="${guestaudio}" driver="Alsa" enabled="${audio}"/> <!-- OSS, Alsa, Pulse --> + <!-- should be configured depending on the chosen operating system --> + <SharedFolders> + <SharedFolder name="${sharename}" hostPath="${sharepath}" writable="true"/> + </SharedFolders> + <Clipboard mode="Bidirectional"/> + <Guest memoryBalloonSize="0" statisticsUpdateInterval="0"/> + <!-- + <GuestProperties> + <GuestProperty name="/VirtualBox/HostGuest/SysprepExec" value="" timestamp="1268140071072799000" flags="TRANSIENT, RDONLYGUEST"/> + <GuestProperty name="/VirtualBox/HostGuest/SysprepArgs" value="" timestamp="1268140071072949000" flags="TRANSIENT, RDONLYGUEST"/> + <GuestProperty name="/VirtualBox/GuestInfo/OS/Product" value="Linux" timestamp="1268140267864540000" flags=""/> + <GuestProperty name="/VirtualBox/GuestInfo/OS/Release" value="4.1.2" timestamp="1268140267894449000" flags=""/> + <GuestProperty name="/VirtualBox/GuestInfo/OS/LoggedInUsersList" value="vbox" timestamp="1268164075149967000" flags=""/> + </GuestProperties> + --> + </Hardware> + <!-- should be configured depending on the chosen operating system --> + <StorageControllers> + <StorageController name="IDE Controller" type="PIIX4" PortCount="2"> + <AttachedDevice type="HardDisk" port="0" device="0"> + <Image uuid="{${imageuuid}}"/> + </AttachedDevice> <!-- PLEASE DO NOT REMOVE THIS COMMENT (HD)!!! --> + <AttachedDevice passthrough="false" type="DVD" port="0" device="1"> + <HostDrive src="${cdrom_0}"/> + </AttachedDevice> <!-- PLEASE DO NOT REMOVE THIS COMMENT (CD)!!! --> + </StorageController> + <StorageController name="Floppy Controller" type="I82078" PortCount="1"> + <AttachedDevice type="Floppy" port="0" device="0"> + </AttachedDevice> + <AttachedDevice type="Floppy" port="0" device="1"> + <Image uuid="{288d5452-2dd3-44f2-bfc8-78e205a4fa87}"/> + </AttachedDevice> + </StorageController> + <!-- + <StorageController name="SCSI Controller" type="LsiLogic" PortCount="16"> + <AttachedDevice type="HardDisk" port="0" device="0"> + <Image uuid="{812c82bf-bd1a-4f59-a5b6-b54ae2f6c669}"/> + </AttachedDevice> + </StorageController> + --> + </StorageControllers> + </Machine> +</VirtualBox> +EOF diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/run-virt.include b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/run-virt.include new file mode 100644 index 00000000..cd5329a1 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/run-virt.include @@ -0,0 +1,441 @@ +# run-virt.include +# ----------------------------------------------------------------------------- +# Copyright (c) 2009..2011 - RZ Uni Freiburg +# Copyright (c) 2009..2012 - 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 the VirtualBox 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 +################################################################################ + +PLUGINCONFVIRTUALBOX="${PLUGINCONFROOT}/${self}" +PLUGINDIRVIRTUALBOX="${OPENSLX_DEFAULT_DIR}/plugin-repo/${self}" +# create TMPDIR for all users +TMPDIR=/tmp/virt/${self} +mkdir -m 1777 ${TMPDIR} 2>/dev/null +# dir for configs +confdir="/tmp/virt/${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/virt/.vbox-${USER}-ipc" +rm -rf ${RMDIRS} 2>/dev/null +machfolder="${confdir}/Machines" +# use vm_shortname for dir and config names since vm_name can be very long +machconfig="${machfolder}/${vm_shortname}/${vm_shortname}.xml" +diskfolder="${confdir}/HardDisks" +snapshotdir=${machfolder}/${vm_shortname}/Snapshots +mkdir -p ${diskfolder} ${snapshotdir} 2>/dev/null +# check if diskless var empty? +[ -z "${diskless}" ] && diskless=0 +# default guest audio controller (SB16, AC97, HDA) +guestaudio="HDA" +# default guest network adaptor +vb_network_card="Am79C973" +# default setting for accelerated 2D grapics (OS dependent) +enable2d="true" +# set default graphics ram +vram="128" + +# configure our own rwimg, empty image which we provide +if [ "${imgmode}" = "rwimg" ]; then + # what is our rwimg called? + imgname="${vm_shortname}.vdi" + vmpath=${imgpath}/${imgname} + if ! [ -e "${vmpath}" ]; then + cat ${PLUGINDIRVIRTUALBOX}/rwimg.vdi.gz | gunzip > "${vmpath}" + fi +fi + +# link to image +diskfile="${diskfolder}/${imgname}" +[ ${diskless} -eq 0 ] && ln -sf ${vmpath} ${diskfile} + +# check the file type +if echo ${imgname} | grep -qiE "vdi|vmdk|vhd" && [ ${diskless} -eq 0 ]; then + imgfmt=$(echo ${imgname##*.} | tr "[a-z]" "[A-Z]") +elif [ ${diskless} -eq 0 ]; then + writelog "${imgname} is not a valid image format (vdi|vmdk|vhd), exiting!" + cleanexit 1 +fi + +# nested paging +npaging="false" +# enable VT +enablevt="false" +# check for VT, if not available use only 1 cpu (only 1 supported) +[ ${vtflag} -eq 0 ] && cpu_cores=1 +[ ${vtflag} -eq 1 ] && enablevt="true" + +# set some base configuration depending on the guest operating system +case "${vmostype}" in + win31*) + guestaudio="SB16" + vmostype="Windows31" + mem="32" + vram="16" + cpu_cores=1 + enablevt="false" + ;; + win95*) + vmostype="Windows95" + guestaudio="SB16" + mem="92" + vram="32" + cpu_cores=1 + enablevt="false" + ;; + win98*) + vmostype="Windows98" + guestaudio="SB16" + mem="256" + vram="64" + cpu_cores=1 + ;; + winme*) + vmostype="WindowsMe" + guestaudio="AC97" + mem="256" + vram="64" + cpu_cores=1 + ;; + winxp*|windowsxp*) + vmostype="WindowsXP" + guestaudio="AC97" + ;; + winvista*|windowsvista*) + vmostype="WindowsVista" + ;; + windows7*) + vmostype="Windows7" + ;; + linux*|*ubuntu*|*suse*|debian*|*sci*) + if echo "${vmostype}" | grep -q "64"; then + vmostype="Linux26_64" + # check for vtflag + if [ ${vtflag} -ne 1 ]; then + writelog "You are trying to boot a 64 bit OS without a VT enabled CPU" + writelog "This is not supported, exiting!" + cleanexit 1 + fi + # check if host is only 32 bit, then use only 1 cpu (only 1 supported) + if echo "${host_arch}" | grep -qE "i.86"; then + cpu_cores=1 + fi + else + vmostype="Linux26" + fi + ;; + os2*) + mem="256" + vmostype="OS2eCS" + cpu_cores=1 + enable2d="false" + ;; + macos*|MacOS*) + vmostype="MacOS" + enable2d="false" + ;; + *) + vmostype="Other" + enable2d="false" + ;; +esac + +writelog "Directories:" +writelog "\tConfig dir:\t\t$confdir" +writelog "\tMachines dir:\t\t$machfolder" +writelog "\tMachine config:\t\t$machconfig" +[ ${diskless} -eq 0 ] && 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, if not diskless +[ ${diskless} -eq 0 ] && diskuuid=$(VBoxManage -q showvdiinfo ${diskfile} \ + | grep UUID | awk '{print $2}') +# make disk immutable +imgtype="Immutable" +# snapshot UUID is static +snapshotuuid="34f617be-192a-46b3-a8ae-bce1029e093f" +# imageuuid in machine.include, dafault snapshotuuid +imageuuid=${snapshotuuid} + +# check if rw image +# remove disk and add rwimg if set +if echo "${imgmode}" | grep -q rw; then + # lock existing? + if [ -e "${vmpath}.lock" ]; then + writelog "This rw image is already in use." + writelog "Found lock: ${vmpath}.lock, exiting!" + writelog "Remove lock if you are sure that this is not the case" + cleanexit 1 + # image rw? + elif ! [ -w ${vmpath} ]; then + writelog "You defined mode rw, but image ${vmpath} is not rw! \c" + writelog "Please correct, exiting!" + cleanexit 1 + fi + # add lock + touch "${vmpath}.lock" + # remove lock after VM stopped + RMDIRS="${RMDIRS} ${vmpath}.lock" + imgtype="Normal" + # replace image uuid in machine config + imageuuid=${diskuuid} +elif [ ${diskless} -eq 0 ]; then + # use temp disk as snapshot + cat ${PLUGINDIRVIRTUALBOX}/empty-diff.vdi.gz \ + | gunzip > "${snapshotdir}/{${snapshotuuid}}.vdi" + # patch the disk file uuid into the snapshot vdi file + dd if=${diskfile} of="${snapshotdir}/{${snapshotuuid}}.vdi" seek=424 \ + skip=392 bs=1 count=16 conv=notrunc +fi + +# TODO: MEM muss noch angepasst werden. Maschine crasht wenn mehr als 50% MEM +# 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 +# hostmem=$(expr ${totalmem} - ${mem}) +# else +# hostmem=$(expr ${totalmem} - ${mem} - ${mem}) +# fi +# #permem=40 +# #mem=$(expr ${totalmem} * ${permem}) +#fi + +# translate network cards +case "${network_card}" in + e1000) + vb_network_card="82540EM" + ;; + virtio) + vb_network_card="virtio" + ;; + *) + network_card="pcnet" + vb_network_card="Am79C973" +esac + +# translate network kinds (nat, bridged, host-only) +case "${network_kind}" in + bridge*) + network_kind='BridgedInterface name="br0"' + ;; + host*) + network_kind='HostOnlyInterface name="vboxnet0"' + ;; + *) + network_kind="NAT" +esac + +# configure 3d settings +case "${enable3d}" in + *true*|*yes*) + enable3d="true" + ;; + *) + enable3d="false" + ;; +esac + +# translate boot, use if set else set to HardDisk +# usually support for a,c,d,n, stands for Floppy, HD, CD-ROM, Network +# support nfs and tftp as well +case ${boot} in + n*|tftp) + boot="Network" + if [ "${network_kind}" = "NAT" ] && [ -n "${virtualbox_tftpdir}" ]; then + # use vm_shortname to avoid Problems /w TFTP in NAT + vm_name=${vm_shortname} + # link TFTP dir for NAT TFTP boots + mkdir -p ${confdir}/TFTP + if [ -e ${virtualbox_tftpdir}/pxelinux.0 ]; then + cp ${virtualbox_tftpdir}/pxelinux.0 ${confdir}/TFTP/${vm_name}.pxe + else + writelog "${virtualbox_tftpdir}/pxelinux.0 not found!" + writelog "Network boot won't work, exiting!" + cleanexit 1 + fi + for i in $(ls ${virtualbox_tftpdir}); do + ln -sf ${virtualbox_tftpdir}/${i} ${confdir}/TFTP/${i} + done + fi + ;; + # later maybe c|disk|hd*|sd*) for HD and d|cd*) for CD-ROM + *) + boot="HardDisk" + ;; +esac + +# external GUI +vrdpport=${remotedesktopport} + +[ ${diskless} -eq 0 ] && writelog "\tSnapshots dir:\t\t$snapshotdir" +writelog "Diskimage:" +[ ${diskless} -eq 0 ] && writelog "\tDisk file:\t\t$diskfile" +[ ${diskless} -eq 0 ] && writelog "\tDisk format:\t\t$imgfmt" +[ ${diskless} -eq 0 ] && writelog "\tDisk type:\t\t$imgtype" + writelog "\tVMostype:\t\t$vmostype" + writelog "\tMachine UUID:\t\t$machineuuid" +[ ${diskless} -eq 0 ] && writelog "\tDisk UUID:\t\t$diskuuid" +writelog "Virtual Hardware:" +writelog "\tCPU cores:\t\t${cpu_cores}\c" +[ ${vtflag} -eq 0 ] && writelog "" +[ ${vtflag} -eq 1 ] && writelog " (VT enabled CPU)" +writelog "\tGuest RAM:\t\t${mem} MB" +# echo nur wenn hostmem gesetzt +[ -n "${hostmem}" ] && writelog "\tHost RAM:\t\t${hostmem} MB" +writelog "\tMAC address:\t\t$macaddr" +writelog "\tNetwork card:\t\t${vb_network_card}" +writelog "\tNetwork kind:\t\t${network_kind}" +writelog "\tBooting from:\t\t${boot}\c" +[ ${diskless} -eq 0 ] && writelog "" +[ ${diskless} -eq 1 ] && writelog " 'diskless'" +# TODO: server start activate via xml, etc... +#writelog "\tGuest VRDP port:\t${vrdpport}" +writelog "\tCD-ROM1:\t\t${cdrom0}" +#writelog "\tCD-ROM2:\t\t${cdrom1}" +writelog "\tFloppy_A:\t\t${floppy0}" +writelog "\tFloppy_B:\t\t${floppy1}" +# defined in run-virt.sh and run-vmgrid.sh +writelog "\tShared Folders '${sharename}':\t${sharepath}" + +################################################################################ +### Pepare and configure virtual machine and disk image +################################################################################ + +# create Virtualbox.xml +. ${PLUGINCONFVIRTUALBOX}/virtualbox.include + +# remove snapshot disk when using rw images +if [ "${imgtype}" != "Immutable" ]; then + sed -i "/${snapshotuuid}/d" "${confdir}/VirtualBox.xml" +fi + +# TODO: add rawdisk if requested +#"raw.vmdk" format="VMDK" type="Writethrough"/> + +# create machine.xml +. ${PLUGINCONFVIRTUALBOX}/machine.include + +# remove CD-ROM if not available +if [ "${cdrom0}" != "TRUE" ]; then + sed -i "/HostDrive/d" ${machconfig} + sed -i '/AttachedDevice.*type="DVD"/d' ${machconfig} + sed -i "/<!-- PLEASE DO NOT REMOVE THIS COMMENT (CD)!!! -->/d" ${machconfig} +fi + +# if diskless remove all disks +if [ ${diskless} -eq 1 ]; then + sed -i "/<HardDisk/d;/<\/HardDisk/d" "${confdir}/VirtualBox.xml" + sed -i "/${imageuuid}/d" ${machconfig} + sed -i '/AttachedDevice type="HardDisk"/d' ${machconfig} + sed -i "/<!-- PLEASE DO NOT REMOVE THIS COMMENT (HD)!!! -->/d" ${machconfig} +fi + +# define redirects +if [ ${redirects} -ge 1 ]; then + (( i=1 )) + writelog "\tGuest redirects:\t\c" + while [ ${i} -le ${redirects} ]; do + extradataitem='<ExtraDataItem name="VBoxInternal/Devices' + extradataitem="${extradataitem}/${network_card}/0/LUN#0/Config" + extradataitem="${extradataitem}/${redirect_name[$i]}/" + extradataprotocol="Protocol\" value=\"${redirect_proto[$i]}\"/>" + extradatahostport="HostPort\" value=\"${redirect_hport[$i]}\"/>" + extradataguestport="GuestPort\" value=\"${redirect_gport[$i]}\"/>" + sed -i "s,</ExtraData>, ${extradataitem}${extradataguestport}\n\ + ${extradataitem}${extradatahostport}\n\ + ${extradataitem}${extradataprotocol}\n\ + </ExtraData>," "${machconfig}" + writelog "${tabspace}${redirect_name[$i]} port: ${redirect_hport[$i]}" + tabspace='\t\t\t\t' + (( i=$i+1 )) + done +fi + +################################################################################ +### finally set env for run-virt.sh +################################################################################ + +# configure and start samba service to provide user's home directory +if [ -f /usr/sbin/smbd ] ; then + sudo /opt/openslx/rootfs/bin/sed -i /etc/vbox/smb.conf -e "s,USER,$USER," + sudo /usr/sbin/nmbd -s /etc/vbox/smb.conf + sudo /usr/sbin/smbd -s /etc/vbox/smb.conf +fi + +# wait for a certain command to settle +# get the PID of the right process +# kill PID, seems to work +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 + +# set the variables appropriately (several interfaces with different names) +VIRTCMD=$(which VirtualBox 2>/dev/null) +VIRTCMDOPTS="--startvm ${machineuuid} --start-running" + +# set headless mode (-v off to disable vrdp) +VIRTCMDHL=$(which VBoxHeadless 2>/dev/null) +VIRTCMDOPTSHL="-s ${machineuuid}" +RMDIRS="${TMPDIR}" + diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.conf b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.conf new file mode 100644 index 00000000..e6e185f2 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.conf @@ -0,0 +1,4 @@ +virtualbox_active="1" +virtualbox_bridge="0" +virtualbox_imagesrc="" +virtualbox_tftpdir="/var/lib/virt/virtualbox" diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.include b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.include new file mode 100644 index 00000000..70ca394c --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/virtualbox/virtualbox.include @@ -0,0 +1,56 @@ +# ----------------------------------------------------------------------------- +# Copyright (c) 2010..2012 - 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 +# ----------------------------------------------------------------------------- +# Include file (general template) for run-virt.include of the virtualbox plugin +cat << EOF > "${confdir}/VirtualBox.xml" +<?xml version="1.0"?> +<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.12-linux"> <!-- 1.12-linux --> + <Global> + <ExtraData> + <ExtraDataItem name="GUI/Input/AutoCapture" value="true"/> + <ExtraDataItem name="GUI/Input/HostKey" value="65300"/> <!-- scroll lock / Rollen --> + <ExtraDataItem name="GUI/LastVMSelected" value="${machineuuid}"/> + <ExtraDataItem name="GUI/LicenseAgreed" value="1,2,3,4,5,6,7,8,9"/> + <ExtraDataItem name="GUI/MaxGuestResolution" value="any"/> <!-- auto, width,height --> + <ExtraDataItem name="GUI/UpdateCheckCount" value="2"/> + <ExtraDataItem name="GUI/UpdateDate" value="never"/> + <ExtraDataItem name="GUI/SuppressMessages" value=",remindAboutAutoCapture,confirmInputCapture,remindAboutWrongColorDepth,confirmGoingFullscreen,remindAboutMouseIntegrationOn,remindAboutMouseIntegrationOff,showRuntimeError.warning.DevATA_DISKFULL,remindAboutPausedVMInput,confirmVMReset,showRuntimeError.warning.HostAudioNotResponding,showRuntimeError.warning.ExtPackNoEhci"/> + <ExtraDataItem name="GUI/TrayIcon/Enabled" value="false"/> + </ExtraData> + <MachineRegistry> + <MachineEntry uuid="{${machineuuid}}" src="Machines/${vm_shortname}/${vm_shortname}.xml"/> + </MachineRegistry> + <MediaRegistry> + <HardDisks> + <HardDisk uuid="{${diskuuid}}" location="${diskfile}" format="${imgfmt}" type="${imgtype}"> + <HardDisk uuid="{${snapshotuuid}}" location="${snapshotdir}/{${snapshotuuid}}.vdi" format="VDI" autoReset="true"/> + </HardDisk> + </HardDisks> + <!-- + <DVDImages/> + --> + <FloppyImages> + <Image uuid="{288d5452-2dd3-44f2-bfc8-78e205a4fa87}" location="${floppy1name}"/> + </FloppyImages> + </MediaRegistry> + <NetserviceRegistry> + <DHCPServers> + <DHCPServer networkName="HostInterfaceNetworking-vboxnet0" IPAddress="192.168.102.100" networkMask="255.255.255.0" lowerIP="192.168.102.101" upperIP="192.168.102.254" enabled="1"/> + <!-- + <DHCPServer networkName="HostInterfaceNetworking-vboxnet1" IPAddress="0.0.0.0" networkMask="0.0.0.0" lowerIP="0.0.0.0" upperIP="0.0.0.0" enabled="0"/> + --> + </DHCPServers> + </NetserviceRegistry> + <SystemProperties defaultMachineFolder="${machfolder}" defaultHardDiskFolder="${diskfolder}" defaultHardDiskFormat="VDI" remoteDisplayAuthLibrary="VBoxAuth" webServiceAuthLibrary="VBoxAuth" LogHistoryCount="3"/> + <USBDeviceFilters/> + </Global> +</VirtualBox> +EOF diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/run-virt.include b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/run-virt.include new file mode 100644 index 00000000..603c8e9b --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/run-virt.include @@ -0,0 +1,532 @@ +# run-virt.include +# ----------------------------------------------------------------------------- +# Copyright (c) 2009..2012 - RZ Uni Freiburg +# Copyright (c) 2009..2013 - OpenSLX GmbH +# +# This program 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 suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# run-virt.include +# - component for vmware/player of the vmchooser plugin run-virt.sh +################################################################################ + +# configuration writer functions +################################################################################ + +runvmwareconfheader () +{ +echo "# This configuration file was generated by $0" >${conffile} + +# check for the ostype +case "${vmostype}" in + win31*) + mem="32" + cpu_cores="1" + sound="sb16" + shfolders="FALSE" + ;; + win95*) + mem="92" + cpu_cores="1" + shfolders="FALSE" + ;; + win98*|winme*) + mem="256" + cpu_cores="1" + shfolders="FALSE" + ;; + winxp*|windowsxp*) + shfolders="TRUE" + ;; + winvista*|windowsvista*) + shfolders="TRUE" + ;; + windows7*) + shfolders="TRUE" + ;; + windows8*) + shfolders="TRUE" + ;; + linux*|*ubuntu*|*suse*|debian*|*sci*) + vmostype="linux" + shfolders="TRUE" + ;; + macos*) + cpu_cores="1" + vmostype="other" + shfolders="FALSE" + ;; + beos*) + cpu_cores="1" + vmostype="other" + shfolders="FALSE" + ;; + *) + vmostype="other" + shfolders="FALSE" + ;; +esac +case "$vmversion" in + *) + svga_autodetect="TRUE" + numvcpus="1" + echo ".encoding = \"UTF-8\" +# version specific stuff - all versions +config.version = \"8\"" >>${conffile} + ;; +esac +case "$vmversion" in + 2.*|3.*|4.*|5.*|6.*|7.*|8.*|9.*) + [ ${shfolders} == FALSE ] || echo " +# version specific stuff - ver. 2.*|3.*|6.*|7.*|8.*|9.* +sharedFolder.option = \"alwaysEnabled\"" >>${conffile} + ;; +esac +case "$vmversion" in + 2.5|3.*|4.*|5.*|6.5|7.*|8.*|9.*) + if [ "${cpu_cores}" -ge "2" 2>/dev/null ]; then + numvcpus="2" + fi + if [ "${mem}" -ge "8000" 2>/dev/null ]; then + mem=8000 + fi + cap3d="TRUE" # helper var for loging output + echo " +# version specific stuff - ver. 2.5|3.*|6.5|7.* +ehci.present = \"TRUE\" +mks.enable3d = \"${enable3d}\"" >>${conffile} + ;; +esac +case "$vmversion" in + 3.*|4.*|7.*|8.*|9.*) + numvcpus="${cpu_cores}" + if [ "${cpu_cores}" -ge "4" 2>/dev/null ]; then + numvcpus="4" + fi + # svga_autodetect="FALSE" # if defined manual, see below + echo " +# version specific stuff - ver. 3.*|7.* +cpuid.coresPerSocket = \"${cpu_cores}\" +maxvcpus = \"4\" +monitor.virtual_mmu = \"automatic\" +monitor.virtual_exec = \"automatic\" +floppy1.clientDevice = \"FALSE\" +floppy1.readonly = \"TRUE\"" >>${conffile} + ;; +esac + +echo " +# id +virtualHW.version = \"${hwver}\" +displayName = \"${displayname}\" +guestOS = \"${vmostype}\" + +# CPU/MEM +numvcpus = \"${numvcpus}\" +memsize = \"${mem}\" +MemAllowAutoScaleDown = \"FALSE\" +MemTrimRate = \"-1\" + +# ide-disks +ide0:0.present = \"${ide}\" +ide0:0.fileName = \"${diskfile}\" +ide0:0.mode = \"independent-nonpersistent\" +ide1:0.present = \"${cdrom0}\" +ide1:0.autodetect = \"TRUE\" +ide1:0.fileName = \"auto detect\" +ide1:0.deviceType = \"cdrom-raw\" +ide1:1.present = \"${cdrom1}\" +ide1:1.autodetect = \"TRUE\" +ide1:1.fileName = \"auto detect\" +ide1:1.deviceType = \"cdrom-raw\" + +# scsi-disks +scsi0.present = \"${scsi}\" +scsi0:0.present = \"${scsi}\" +scsi0:0.fileName = \"${diskfile}\" +scsi0.virtualDev = \"${hddrv}\" +scsi0:0.mode = \"independent-nonpersistent\" + +# floppies +floppy0.present = \"${floppy0}\" +floppy0.startConnected = \"FALSE\" +floppy0.autodetect = \"TRUE\" +floppy0.fileName = \"auto detect\" +# we need floppy b: for our windows client configuration +floppy1.present = \"${floppy1}\" +floppy1.startConnected = \"TRUE\" +floppy1.fileType = \"file\" +floppy1.fileName = \"${floppy1name}\" + +# nics +ethernet0.present = \"TRUE\" +ethernet0.addressType = \"static\" +${network_virtualDev} +ethernet0.connectionType = \"${network_kind}\" +#ethernet1.connectionType = \"custom\" +#ethernet1.vnet = \"/dev/vmnet2\" +ethernet0.address = \"00:50:56:${VM_ID}:${machostpart}\" +ethernet0.wakeOnPcktRcv = \"FALSE\" + +# sound +sound.present = \"TRUE\" +sound.fileName = \"-1\" +sound.autodetect = \"TRUE\" +sound.virtualdev = \"${sound}\" + +# svga +svga.autodetect = \"${svga_autodetect}\" + +# usb +usb.present = \"TRUE\" +usb.generic.autoconnect = \"TRUE\" + +# pci configuration +usb.pciSlotNumber = "16" +ethernet0.pciSlotNumber = "17" +sound.pciSlotNumber = "18" +ehci.pciSlotNumber = "19" +scsi0.pciSlotNumber = "20" + +# shared folders +sharedFolder0.present = \"${shfolders}\" +sharedFolder0.enabled = \"${shfolders}\" +sharedFolder0.expiration = \"never\" +sharedFolder0.guestName = \"${sharename}\" +sharedFolder0.hostPath = \"${sharepath}\" +sharedFolder0.readAccess = \"TRUE\" +sharedFolder0.writeAccess = \"TRUE\" +sharedFolder.maxNum = \"1\" + +# dirs/configs +tmpDirectory = \"${redodir}\" +redoLogDir = \"${redodir}\" +mainMem.useNamedFile = \"TRUE\" +snapshot.disabled = \"TRUE\" +tools.syncTime = \"TRUE\" +isolation.tools.hgfs.disable = \"FALSE\" +hgfs.mapRootShare = \"TRUE\" +isolation.tools.dnd.disable = \"FALSE\" +isolation.tools.copy.enable = \"TRUE\" +isolation.tools.paste.enabled = \"TRUE\" + +# serial port +serial0.present = \"${serial}\" +${serialdev} + +# parallel port +parallel0.present = \"${parallel}\" +parallel0.bidirectional = \"${paralbidi}\" +${paraldev}" >>${conffile} + +# set the appropriate permissions for the vmware config file +chmod u+rwx ${conffile} >/dev/null 2>&1 +} + +preferencesheader () +{ +echo ".encoding = \"UTF-8\" +# This configuration file was generated by $0 + +# updates/tips +webUpdate.enabled = \"FALSE\" +pref.downloadPermission = \"deny\" +pref.vmplayer.downloadPermission = \"deny\" +pref.vmplayer.webUpdateOnStartup = \"FALSE\" +pref.tip.startup = \"FALSE\" +hints.hideAll = \"TRUE\" +hint.vmui.showAllUSBDevs = \"FALSE\" + +# configs +prefvmx.defaultVMPath = \"${vmhome}\" +prefvmx.mru.config = \"${conffile}:\" + +# hot keys +pref.hotkey.control = \"true\" +pref.hotkey.alt = \"true\" +pref.hotkey.shift = \"true\" +pref.hotkey.gui = \"true\" +gui.restricted = \"true\" + +# fullscreen/mouse/keyboard +pref.fullscreen.toolbarPixels = \"0\" +pref.vmplayer.fullscreen.autohide = \"TRUE\" +pref.grabOnMouseClick = \"TRUE\" +pref.grabOnKeyPress = \"FALSE\" +pref.motionGrab = \"TRUE\" +pref.motionUngrab = \"TRUE\" +pref.hideCursorOnUngrab = \"TRUE\" +pref.autoFit = \"TRUE\" +pref.autoFitFullScreen = \"fitGuestToHost\" +pref.vmplayer.exit.vmAction = \"poweroff\" +pref.vmplayer.confirmOnExit = \"TRUE\" + +# shared folders +pref.enableAllSharedFolders = \"TRUE\" + +# eula" >${vmhome}/preferences + +# different eula parameters from Workstation 9+/ Player 5+ +case "$vmversion" in + 3.*|4.*|7.*|8.*) + echo " +pref.eula.size = \"2\" +pref.eula.0.appName = \"VMware Player\" +pref.eula.0.buildNumber = \"${vmbuild}\" +pref.eula.1.appName = \"VMware Workstation\" +pref.eula.1.buildNumber = \"${vmbuild}\"" >>${vmhome}/preferences + ;; + 5.*|9.*) + # code + echo " +pref.eula.count = \"2\" +pref.eula0.product = \"VMware Player\" +pref.eula0.build = \"${vmbuild}\" +pref.eula1.product = \"VMware Workstation\" +pref.eula1.build = \"${vmbuild}\"" >>${vmhome}/preferences + ;; +esac + +} + + +# declaration of default variables +################################################################################ + +# VM-ID static (0D), remove if changed to 00 +VM_ID="0D" +# should be dynamic +if [ "x$(which bc)" != "x" ]; then + VM_ID=$(echo "obase=16; $$" | bc) + VM_ID=$(expr substr $VM_ID $(expr ${#VM_ID} - 1) 2) +fi +# temporary disk space for logs, etc... +redodir=/tmp/vmware/${USER}.$$ +# dir for configs and vmem file +confdir=/tmp/vmware/${USER}.$$ +# configfile +conffile="${confdir}/run-vmware.conf" +# diskfile +diskfile=${vmpath} +# users vmware config folder +vmhome="${HOME}/.vmware" + +# get several version infos for vmware/player +. ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf +vmbuild=$buildversion +vmversion=$version + +# VMware start options +# "-X": start in fullscreen +vmopt="-X" + + +# hardware checks +################################################################################ + +# use different network card (default e1000, vlance, vmxnet) +if [ -n "${network_card}" ]; then + network_virtualDev="ethernet0.virtualDev = \"${network_card}\"" +else + network_virtualDev='# using default virtualDev for ethernet0' +fi + +# set standard sound card, overwrite depending on OS (options sb16, es1371, hdaudio) +sound="es1371" + +# check for 3D configuration setting +case "${enable3d}" in + *true*|*yes*) + enable3d="TRUE" + ;; + *) + enable3d="FALSE" + ;; +esac + +# serial/parallel port defined (e.g. "ttyS0, lp0" or "autodetect") +case "$serial" in + tty*) + serialdev="serial0.filename = \"/dev/${serial}\"" + serial="TRUE" + ;; + auto*) + serialdev="serial0.autodetect = \"TRUE\"" + serial="TRUE" + ;; + *) + serialdev="# no serial port configured" + serial="FALSE" + ;; +esac +case "$parallel" in + lp*|parport*) + paraldev="parallel0.filename = \"/dev/${parallel}\"" + paralbidi="TRUE" + parallel="TRUE" + ;; + auto*) + paraldev="parallel0.autodetect = \"TRUE\"" + paralbidi="TRUE" + parallel="TRUE" + ;; + *) + paraldev="# no parallel port configured" + paralbidi="FALSE" + parallel="FALSE" + ;; +esac + +# adjust memory available for vmware guests +#if [ -n "${forcemem}" ]; then +# mem="${forcemem}" +#else +# case "$vmversion" in +# 2.*|6.*) +# permem=30 +# ;; +# 3.*|7.*) +# permem=25 +# ;; +# esac +# if [ "${totalmem}" -ge "2500" ]; 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 +# if [ "${totalmem}" -ge "2500" ]; then +# permem=40 +# confdir=/dev/shm/vmware/$USER +# conffile=${confdir}/run-vmware.conf +# mkdir -p /dev/shm/vmware/$USER +# fi +# fi +# mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4) +# if [ "${id44}" = "1" ]; then +# hostmem=$(expr ${totalmem} - ${mem}) +# else +# hostmem=$(expr ${totalmem} - ${mem} - ${mem}) +# fi +#fi + +# check if ide/scsi and hwver of image +# read only the first 30 lines to be shure +imghead=$(head -30 ${diskfile}) +hddrv=$(echo "${imghead}" | grep -m1 -ia "ddb.adapterType" |\ + awk -F '"' '{print $2}') +hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" |\ + awk -F '"' '{print $2}') +case "${hddrv}" in + ide) + ide="TRUE" + scsi="FALSE" + ;; + lsilogic|buslogic) + ide="FALSE" + scsi="TRUE" + ;; +esac + +# write configuration files +################################################################################ + +# create vmware directories +mkdir -p ${redodir} >/dev/null 2>&1 +mkdir -p ${confdir} >/dev/null 2>&1 +mkdir -p ${vmhome}/dndlogs >/dev/null 2>&1 +touch ${vmhome}/dndlogs/dndlog.conf >/dev/null 2>&1 + +# create preferences +preferencesheader + +# create VMware startup file +runvmwareconfheader +# link to conffile if confdir != redodir +ln -s ${conffile} ${redodir}/run-vmware.conf >/dev/null 2>&1 + +# sync is needed to ensure that data is really written to virtual disk +sync + +# own nvram. We need it for floppy drive b, default nvram has just drive a +# TODO: optimize, currently kinda inefficient, too much copys, but we +# don't know which one is installed... +for i in /opt/openslx/plugin-repo/vmware/*; do + cp ${i}/nvram ${confdir}/nvram 2>/dev/null +done + + +# logging and stdout +################################################################################ + +# log script information +writelog "# File created by $0 (VMversion ${vmversion})\n# on $(date)\n" +writelog "Starting with non-persistent mode ...\n" + +# write all results to logfile +# log disksetup +writelog "Directories:" +writelog "\tConfdir:\t${confdir}" +writelog "\tConffile:\t${conffile}" +writelog "\tRedodir:\t${redodir}" +writelog "\tVMhome:\t\t${vmhome}" +writelog "\t/tmp info: \ + $(grep "/tmp " /proc/mounts) $(df -h | grep " /tmp$" | awk '{print $2}')" +# hw setup +writelog "Hardware:" +writelog "\tMAC:\t\t00:50:56:${VM_ID}:${machostpart}" +if [ -n "${network_card}" ]; then + writelog "\tNet Adaptor:\t${network_card}" +fi +writelog "\tMem:\t\t${mem} MB" +# echo nur wenn hostmem gesetzt +[ -n "${hostmem}" ] && writelog "\tHostmem:\t${hostmem} MB" +writelog "\tMax. res.:\t${xres}x${yres}" +writelog "\tCD-ROM1:\t${cdrom0}" +writelog "\tCD-ROM2:\t${cdrom1}" +writelog "\tFloppy_A:\t${floppy0}" +if [ "${serial}" = "TRUE" ]; then + writelog "\tSerial Port:\t${serialdev}" +fi +if [ "${parallel}" = "TRUE" ]; then + writelog "\tParallel Port:\t${paraldev}" +fi +# image +writelog "Diskimage:" +writelog "\tDiskfile:\t${diskfile}" +writelog "\tDisktype:\t${hddrv}" +writelog "\tHWVersion:\t${hwver}" +writelog "\tVMostype:\t${vmostype}" +# misc +writelog "Misc:" +writelog "\tDisplayname:\t${displayname}" +if [ "${cap3d}" = "TRUE" -a "${enable3d}" = "TRUE" ]; then + writelog "\t3D Graphics:\tenabled" +fi +# empty line at end +writelog "" + + +# finally set env for run-virt.sh +################################################################################ + +# configure and start samba service to provide user's home directory +if [ -f /usr/sbin/smbd ] ; then + sudo /opt/openslx/rootfs/bin/sed -i /etc/vmware/smb.conf -e "s,USER,$USER," + sudo /usr/sbin/nmbd -s /etc/vmware/smb.conf + sudo /usr/sbin/smbd -s /etc/vmware/smb.conf +fi + +# using the modified version of the wrapper script +VIRTCMD="${OPENSLX_DEFAULT_BINDIR}/vmplayer" +VIRTCMDOPTS="${vmopt} ${conffile}" +RMDIRS="${redodir} ${conffile}" diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/vmware.conf b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/vmware.conf new file mode 100644 index 00000000..a67adc18 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/plugins/vmware/vmware.conf @@ -0,0 +1,8 @@ +# configuration file for vmware background services written in stage3 setup +vmnet0=true +vmnet1=192.168.101.1/24 +vmnet1nat=true +vmnet8=192.168.102.1/24 +# stage1 variables produced during plugin install +version="5.0" +buildversion="1031769" diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/udhcpd.conf b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/udhcpd.conf new file mode 100644 index 00000000..b1e02ba2 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/opt/openslx/udhcpd.conf @@ -0,0 +1,37 @@ +# general udhcpd configuration file for virtual machines written by +# /bin/init-wrapper during OpenSLX stage3 configuration + +# start and end of the IP lease block +start CNETWORK.20 +end CNETWORK.100 + +# interface that udhcpd will use +interface NWIF + +# how long an offered address is reserved (leased) in seconds +offer_time 6000 + +# location of the leases file +lease_file LEASEFILE + +# location of the pid file +pidfile PIDFILE + +option dns 132.230.200.200 +option subnet 255.255.255.0 +option router CNETWORK.1 +option wins CNETWORK.10 +option domain virtual.site + +# additional options known to udhcpd +#subnet #timezone +#router #timesvr +#namesvr #dns +#logsvr #cookiesvr +#lprsvr #bootsize +#domain #swapsvr +#rootpath #ipttl +#mtu #broadcast +#wins #lease +#ntpsrv #tftp +#bootfile diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/config b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/config new file mode 100644 index 00000000..eb5d01c0 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/config @@ -0,0 +1,4 @@ +.encoding = "UTF-8" +prefvmx.minVmMemPct = "100" +prefvmx.useRecommendedLockedMemSize = "TRUE" +libdir = "/usr/lib/vmware" diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/nat.conf b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/nat.conf new file mode 100644 index 00000000..18dfcc24 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/nat.conf @@ -0,0 +1,9 @@ +# Linux NAT configuration file +[host] +ip = 192.168.102.2/24 +device = /dev/vmnet8 +activeFTP = 1 +[udp] +timeout = 60 +[incomingtcp] +[incomingudp] diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/smb.conf b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/smb.conf new file mode 100644 index 00000000..e7a1d2c1 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/smb.conf @@ -0,0 +1,25 @@ +# basic samba configuration file for OpenSLX host-internal networking +[global] + workgroup = OPENSLX + netbios name = HOMESERVER + security = SHARE + server string = Home and Print Provider + bind interfaces only = Yes + interfaces = vmnet1,vmnet8 + pid directory = /var/run/vmware + +[userhome] + comment = Home Directory of USER + path = /home/USER + create mask = 0700 + guest ok = No + read only = No + +[scratch] + comment = Host System Temp Folder + path = /tmp + create mask = 0700 + guest ok = Yes + read only = No + browseable = Yes + diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet1.conf b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet1.conf new file mode 100644 index 00000000..62045d21 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet1.conf @@ -0,0 +1,37 @@ +# general udhcpd configuration file for virtual machines written by +# /bin/init-wrapper during OpenSLX stage3 configuration + +# start and end of the IP lease block +start 192.168.101.20 +end 192.168.101.100 + +# interface that udhcpd will use +interface vmnet1 + +# how long an offered address is reserved (leased) in seconds +offer_time 6000 + +# location of the leases file +lease_file /var/run/vmware/udhcpd-vmnet1.leases + +# location of the pid file +pidfile /var/run/vmware/udhcpd-vmnet1.pid + +option dns 132.230.200.200 +option subnet 255.255.255.0 +option router 192.168.101.1 +option wins 192.168.101.10 +option domain virtual.site + +# additional options known to udhcpd +#subnet #timezone +#router #timesvr +#namesvr #dns +#logsvr #cookiesvr +#lprsvr #bootsize +#domain #swapsvr +#rootpath #ipttl +#mtu #broadcast +#wins #lease +#ntpsrv #tftp +#bootfile diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet8.conf b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet8.conf new file mode 100644 index 00000000..d89a8bee --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/udhcpd/udhcpd-vmnet8.conf @@ -0,0 +1,37 @@ +# general udhcpd configuration file for virtual machines written by +# /bin/init-wrapper during OpenSLX stage3 configuration + +# start and end of the IP lease block +start 192.168.102.20 +end 192.168.102.100 + +# interface that udhcpd will use +interface vmnet8 + +# how long an offered address is reserved (leased) in seconds +offer_time 6000 + +# location of the leases file +lease_file /var/run/vmware/udhcpd-vmnet8.leases + +# location of the pid file +pidfile /var/run/vmware/udhcpd-vmnet8.pid + +option dns 132.230.200.200 +option subnet 255.255.255.0 +option router 192.168.102.1 +option wins 192.168.102.10 +option domain virtual.site + +# additional options known to udhcpd +#subnet #timezone +#router #timesvr +#namesvr #dns +#logsvr #cookiesvr +#lprsvr #bootsize +#domain #swapsvr +#rootpath #ipttl +#mtu #broadcast +#wins #lease +#ntpsrv #tftp +#bootfile diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/usbarb.rules b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/usbarb.rules new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/usbarb.rules diff --git a/remote/modules/vmchooser/vmchooser-temp/etc/vmware/vmnet-natd-8.mac b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/vmnet-natd-8.mac new file mode 100644 index 00000000..ef6cc5ce --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/etc/vmware/vmnet-natd-8.mac @@ -0,0 +1 @@ +00:50:56:F1:30:50 diff --git a/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/run-virt.sh b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/run-virt.sh new file mode 100755 index 00000000..070581d2 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/run-virt.sh @@ -0,0 +1,440 @@ +#!/bin/bash +# ----------------------------------------------------------------------------- +# Copyright (c) 2007..2010 - RZ Uni FR +# Copyright (c) 2007..2011 - OpenSLX GmbH +# +# This program 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 suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# run-virt.sh +# - This is the generic wrapper for the several virtualization solutions. +# The idea is to setup a set of variables used by at least two different +# tools and then include the specific plugin which configures the speci- +# fied virtualization tool. +################################################################################ + +. /etc/opt/openslx/openslx.conf + +################################################################################ +### Define default dirs / get configs +################################################################################ + +PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins +PLUGINCONFDIR=${PLUGINCONFROOT}/vmchooser +# include general configuration from vmchooser +[ -f ${PLUGINCONFROOT}/vmchooser/vmchooser.conf ] && \ + . ${PLUGINCONFROOT}/vmchooser/vmchooser.conf +# load general virtualization information +[ -f ${PLUGINCONFROOT}/virtualization/virtualization.conf ] && \ + . ${PLUGINCONFROOT}/virtualization/virtualization.conf + +################################################################################ +### Functions used throughout the script +################################################################################ + +# function to write to stdout and logfile +LOGFILE=${OPENSLX_DEFAULT_LOGDIR}/run-virt.${USER}.$$.log +writelog () { + # write to stdout + echo -e "$1" + # log into file + echo -e "$1" >> ${LOGFILE} +} + +# remove config dirs when exit +cleanexit () { + if echo "${RMDIRS}" 2>/dev/null | grep -q ${xmlvirt}; then + writelog "${xmlvirt} exited. Cleanning up... \c" + rm -rf ${RMDIRS} >/dev/null 2>&1 + writelog "done" + fi + + exit "$1" +} + +# check for important files used +filecheck () +{ + filecheck=$(LANG=us ls -lh ${diskfile} 2>&1) + writelog "Filecheck:\n${filecheck}\n" + noimage=$(echo ${filecheck} | grep -i "no such file or directory" | wc -l) + rightsfile=${diskfile} + + # check if link + if [ -L "${diskfile}" ]; then + # take link target + rightsfile=$(ls -lh ${diskfile} 2>&1 | awk -F '-> *' '{print $2}') + rightsfile=${vmdir}/${rightsfile} + filecheck=$(LANG=us ls -lh ${rightsfile} 2>&1) + fi + + # does file exist + if [ "${noimage}" -ge "1" ]; then + writelog "Virtual Machine Image Problem:\c " + writelog "\tThe image you've specified doesn't exist." + writelog "Filecheck says:\c " + writelog "\t\t${diskfile}:\n\t\t\tNo such file or directory" + writelog "Hint:\c " + writelog "\t\t\tCompare spelling of the image with your options.\n" + exit 1 + fi + + # readable by calling user + if ! [ -r "${diskfile}" >/dev/null 2>&1 \ + -o -r "${diskfile}" >/dev/null 2>&1 ]; then + writelog "Vmware Image Problem:\c " + writelog "\tThe image you've specified has wrong rights." + writelog "Filecheck says:\t\t$(echo ${filecheck} \ + | awk '{print $1" "$3" "$4}') ${rightsfile}" + writelog "Hint:\t\t\tChange rights with: chmod a+r ${rightsfile}\n" + exit 1 + fi + + # writable (for persistent-mode)? + if ! [ -w "${diskfile}" >/dev/null 2>&1 \ + -o -w "${diskfile}" >/dev/null 2>&1 ] \ + && [ "${np}" = "independent-persistent" ]; then + writelog "Vmware Image Problem:\c " + writelog "\tThe image you have specified has wrong rights." + writelog "Filecheck says:\t\t$(echo ${filecheck} \ + | awk '{print $1" "$3" "$4}') ${rightsfile}" + writelog "Hint:\t\t\tUse nonpersistent-mode or change rights to rw\n" + exit 1 + fi +} + +################################################################################ +### Get XML file and dir +################################################################################ + +# absolute or relative path? +xmlfile=$1 +if ls ${xmlfile} 2>/dev/null | grep '/' >/dev/null 2>&1; then + xmlpath=$(dirname ${xmlfile}) + xmlfile=$(basename ${xmlfile}) +else + xmlpath=${vmchooser_xmlpath} +fi +# full path +xmlfile="${xmlpath}/${xmlfile%.xml}.xml" + +################################################################################ +### Sanity checks +################################################################################ + +# test if the xml file is valid +if ! [ -r "${xmlfile}" ]; then + writelog "${xmlfile} not a readable XML file!" + exit 1 +fi + +# test if XML file +if ! grep '<?xml' "${xmlfile}" >/dev/null 2>&1; then + writelog \ + "Submitted configuration file ${xmlfile} seems to have wrong XML format" + exit 1 +fi + +# check for running in graphical environment otherwise no much use here +[ -z "$DISPLAY" ] && echo -e "\n\tStart only within a graphical desktop!\n" \ + && exit 1 + +################################################################################ +### Logo for console +################################################################################ + +cat <<EOL + __ __ + .----.--.--.-----.___.--.--.|__|.----.| |_ + | _| | | |___| | || || _|| _| + |__| |_____|__|__| \___/ |__||__| |____| + OpenSLX virtual machine environment preparation script ... + +EOL + +################################################################################ +### Read needed variables from XML file +################################################################################ + +writelog "Starting configuration..." +writelog "\tLogfile:\t\t${LOGFILE}" +writelog "\t/tmp info:\t\t$(df -h | grep " /tmp$" | awk '{print $2}') \c" +writelog "$(grep "/tmp " /proc/mounts | awk '{print $1" "$2" "$3" "$4}')" +writelog "\tVM XML dir:\t\t$(dirname ${xmlfile})" +writelog "\tXML file:\t\t${xmlfile}" +writelog "VM config:" + +# Name of the virt image +imgname=$(grep -io '<image_name param=.*"' ${xmlfile} \ + | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }') + +# Imagename /w full path +if echo ${imgname} 2>/dev/null | grep -q '^/' >/dev/null 2>&1; then + imgpath=$(dirname ${imgname}) + imgname=$(basename ${imgname}) + vmpath=${imgpath}/${imgname} +# If old vmchooser binary stuff +# We do not need folder name as it is already included by vmchooser +elif echo ${xmlfile} 2>/dev/null | grep -q '^/tmp/' >/dev/null 2>&1; then + vmpath=$imgname + imgname=$(basename ${imgname}) +# Else use same path as xml +else + imgpath=${xmlpath} + vmpath=${imgpath}/${imgname} +fi + +# Check if virtual machine container file exists +if ! [ -e "${vmpath}" ]; then + writelog "Virtual machine image ${vmpath} not found!" + exit 1 +fi + +# Name of the virt machine, sed because of Windows formatting +vm_name=$(grep -o 'short_description param=.*"' ${xmlfile} \ + | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}') +# If ${vm_name} not defined use ${xmlfile} +vm_name=${vm_name:-${xmlfile%.xml}} + +# Define vm_shortname since vm_name can be very long +vm_shortname=$(basename ${xmlfile%.xml} | sed -e "s, ,-,g") + +# vm_name = displayname, define for old scripts +displayname=${vm_name} + +# image is for the following virtual machine +xmlvirt=$(grep -o 'virtualmachine param=.*"' ${xmlfile} \ + | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}') + +# choose the proper virtualization/emulator plugin +[ "x${xmlvirt}" != "x" -a "x${xmlvirt}" != "xqemukvm" -a \ + "x${xmlvirt}" != "xvirtualbox" -a "x${xmlvirt}" != "xvmware" ] && \ + xmlvirt="emufe" + +# make a guess from the filename extension if ${xmlvirt} is empty +# (not set within the XML file) +# TODO: implement possibility to submit own configuration files +if [ -z "${xmlvirt}" ] && [ -n "${additional_config}" ]; then + writelog "No virtual machine parameter defined in ${xmlfile}" + writelog "Trying to guess VM...\c" + case "$(cat ${additional_config} | tr \"[A-Z]\" \"[a-z]\")" in + *config.version*|*virtualhw.version*|*independent-nonpersistent*|*vmdk*) + xmlvirt="vmware" + ;; + *innotek*|*virtualbox*) + xmlvirt="virtualbox" + ;; + *qemu*|*kvm*) + xmlvirt="qemukvm" + ;; + *) + xmlvirt="none" + ;; + esac +elif [ -z "${xmlvirt}" ]; then + case "$(echo ${imgname##*.} | tr \"[A-Z]\" \"[a-z]\")" in + vmdk) + xmlvirt="vmware" + ;; + vbox|vdi) + xmlvirt="virtualbox" + ;; + qcow*) + xmlvirt="qemukvm" + ;; + *) + xmlvirt="emufe" + ;; + esac + writelog "result:\t${xmlvirt}" +fi + +# Definition of the client system +vmostype=$(grep -io '<os param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }' |\ + tr "[A-Z]" "[a-z]") + +# Definition of the networking the client system is connected to +network_kind=$(grep -io '<network param=.*"' ${xmlfile} \ + | awk -F '"' '{ print $2 }' | tr "[A-Z]" "[a-z]") +network_card=$(grep -io '<netcard param=.*"' ${xmlfile} \ + | awk -F '"' '{ print $2 }'| tr "[A-Z]" "[a-z]") + +# Set redirects to 0, see vmgrid if you want to define some +redirects=0 + +# Serial/parallel ports defined (e.g. "ttyS0" or "autodetect") +serial=$(grep -io '<serialport param=.*"' ${xmlfile} \ + | awk -F '"' '{ print $2 }') +parallel=$(grep -io '<parport param=.*"' ${xmlfile} \ + | awk -F '"' '{ print $2 }') + +writelog "\tVirtualization:\t\t$xmlvirt" +writelog "\tVM name:\t\t$vm_name" +writelog "\tVM short name:\t\t$vm_shortname" + +############################################################################### +### Declaration of default variables +############################################################################### + +# VM-ID static (00) +VM_ID="00" +# take last two digits of current pid... +VM_ID=$(expr substr $$ $(expr ${#$} - 1) 2) + +# Make sure cpu_cores is not empty +cpu_cores=${cpu_cores:-"1"} + +# Total amount of memory defined in stage 3 +# TODO: Should be dependent on the setup (if diff is written to RAM ...) +permem=60 +if [ "x${VMCHOOSER_FORCE_HALF_MEM}" == "x1" ]; then + permem=30 +fi +# Get a result which can be divided through 4 +mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4) +if [ -n "${mainvirtmem}" ]; then + forcemem=$(expr ${mainvirtmem} / 4 \* 4) + mem=${forcemem} +fi +hostmem=$(expr ${totalmem} - ${mem}) + +# Configuring ethernet mac address: first 3 bytes are fixed (00:50:56) +# 4th byte is the VM-ID (0D) +# last two bytes are taken from the bridge of the host +# define one MAC per guest +macguestpart="00:50:56:${VM_ID}" +machostpart=$(echo ${hostmacaddr} | awk -F ":" '{print $(NF-1)":"$NF}') +macaddr=$(echo "${macguestpart}:${machostpart}" | tr "[a-z]" "[A-Z]") + +# 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="${PLUGINCONFDIR}/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" +scsi="FALSE" +hddrv="ide" +audio="true" +remotedesktopport="590${VM_ID}" + +# Display resolution within the host system +hostres=$(xvidtune -show 2>/dev/null| grep -ve "^$") +xres=$(echo "${hostres}" | awk '{print $3}') +yres=$(echo "${hostres}" | awk '{print $7}') + +# Resolution defined via xml parameter: fullscreen, full/X*Y/depth; windowed, +# win/X*Y/depth +userres=$(grep -io '<screen param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }' | \ + tr "A-Z" "a-z") +case "${userres}" in + full*) + res=$(echo "${hostres}" | awk -F "/" '{print $2}') + uxres=${res%\**} + uyres=${#*\*} + userres="full" + ;; + win*) + res=$(echo "${hostres}" | awk -F "/" '{print $2}') + uxres=${res%\**} + uyres=${#*\*} + userres="win" + ;; +esac + + +# Enable 3D +enable3d=$(grep -i "<enable3d param=.*" ${xmlfile} 2>/dev/null | \ + awk -F '=' {'print $2'} | tr "[A-Z]" "[a-z]") + +# Add rw share +sharepath="${HOME}" +sharename="home" + +# Set hostname: using original hostname and adding string +hostname="virt-$(hostname)" + +writelog "\tVM Hostname:\t\t$hostname" + +################################################################################ +### Setup the rest of the environment and run the configured vm +################################################################################ + +# Adjust sound volume +writelog "Unmuting sound...\c " +amixer -q sset Master 100% unmute 2>/dev/null +amixer -q sset PCM 100% unmute 2>/dev/null +amixer -q sset CD 100% unmute 2>/dev/null +amixer -q sset Headphone 100% unmute 2>/dev/null +amixer -q sset Front 100% unmute 2>/dev/null # in SUSE 11.0 it's headphone +amixer -q sset Speaker 100% unmute 2>/dev/null # annoying built-in speaker +writelog "finished\n" + +# Copy guest configuration (with added information) config.xml to be accessed +# via virtual floppy +# fixme -> to be changed (vmchooser adapts the file content!?) +#TODO: wozu echo? +#echo "Please fix the config.xml generation" +cp ${xmlfile} ${PLUGINCONFDIR}/fd-loop/config.xml + +# Get all virtual machine specific stuff from the respective include file +if [ -e ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include ] ; then + self=${xmlvirt} + . ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include + # start a windowmanager for easier handling + # (expect problems /w windows opening in background /w vmware without wm) + for dm in xfwm4 metacity openbox blackbox kwin fvwm2 ; do + if which $dm >/dev/null 2>&1 ; then + if [ "$dm" = "fvwm2" ] ; then + echo "EdgeScroll 0 0" > ${redodir}/fvwm + fvwm2 -f ${redodir}/fvwm >/dev/null 2>&1 & + else + $dm >/dev/null 2>&1 & + fi + break + fi + done + # Start poolvideoswitch if we find the autostarter file + if [ -e /etc/xdg/autostart/pvsgui.desktop ]; then + /usr/local/bin/pvsgui -p 2 -b >/dev/null 2>&1 & + fi + eval ${VIRTCMD} ${VIRTCMDOPTS} + writelog "Bye." + + # Postrun for commands after virtualization finishes + if [ -n "${POSTRUN}" ]; then + eval ${POSTRUN} >/dev/null 2>&1 + fi + + cleanexit 0 +else + writelog "Failed because of missing ${xmlvirt} plugin." + cleanexit 1 +fi + +# Postrun for commands after virtualization finishes +if [ -n "${POSTRUN}" ]; then + eval ${POSTRUN} >/dev/null 2>&1 +fi + +cleanexit 0 +exit 0 diff --git a/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/vmchooser b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/vmchooser Binary files differnew file mode 100755 index 00000000..c4ec59e2 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/vmchooser diff --git a/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/xmlfilter.sh b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/xmlfilter.sh new file mode 100755 index 00000000..ded5d114 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmchooser/xmlfilter.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# ----------------------------------------------------------------------------- +# Copyright (c) 2007..2009 - RZ Uni FR +# Copyright (c) 2007..2011 - OpenSLX GmbH +# +# This program 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 suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# xmlfilter.sh +# - This script is invoked by the vmchooser tool. It simply filters xml- +# files (taking the path to these files in $1). You might modify it in any +# way to match your needs, e.g. ask some database instead. You can re- +# implement it in any other programming language too. You simply have to +# return a list of proper xml files to be interpreted by the vmchooser +# binary). Please check for vmchooser.sh too ... +# ----------------------------------------------------------------------------- + +# This script . +# +# currently: +# - filter for slxgrp (which comes from /etc/machine-setup) +# + +# include default directories +. /etc/opt/openslx/openslx.conf + +if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf ]; then + . ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf +fi + +for FILE in $(find $1 -iname "*.xml"); do + # filter all xmls which aren't set active + if [ $(grep "<active param=.*true.*" ${FILE} | wc -l) -eq 1 ]; then + if [ -n ${vmchooser_env} ]; then + # filter all xmls with pool-param not equal to vmchooser::env + if [ $(grep "<pools param=\"${vmchooser_env}\"" ${FILE} | wc -l) -eq 1 ];\ + then + echo ${FILE}; + fi + else + # if there is no pool set, just take all available xmls + echo -e ${active} + fi + fi +done diff --git a/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmware/run-virt.include b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmware/run-virt.include new file mode 100644 index 00000000..603c8e9b --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/opt/openslx/plugin-repo/vmware/run-virt.include @@ -0,0 +1,532 @@ +# run-virt.include +# ----------------------------------------------------------------------------- +# Copyright (c) 2009..2012 - RZ Uni Freiburg +# Copyright (c) 2009..2013 - OpenSLX GmbH +# +# This program 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 suggestions, praise, or complaints to feedback@openslx.org +# +# General information about OpenSLX can be found at http://openslx.org/ +# ----------------------------------------------------------------------------- +# run-virt.include +# - component for vmware/player of the vmchooser plugin run-virt.sh +################################################################################ + +# configuration writer functions +################################################################################ + +runvmwareconfheader () +{ +echo "# This configuration file was generated by $0" >${conffile} + +# check for the ostype +case "${vmostype}" in + win31*) + mem="32" + cpu_cores="1" + sound="sb16" + shfolders="FALSE" + ;; + win95*) + mem="92" + cpu_cores="1" + shfolders="FALSE" + ;; + win98*|winme*) + mem="256" + cpu_cores="1" + shfolders="FALSE" + ;; + winxp*|windowsxp*) + shfolders="TRUE" + ;; + winvista*|windowsvista*) + shfolders="TRUE" + ;; + windows7*) + shfolders="TRUE" + ;; + windows8*) + shfolders="TRUE" + ;; + linux*|*ubuntu*|*suse*|debian*|*sci*) + vmostype="linux" + shfolders="TRUE" + ;; + macos*) + cpu_cores="1" + vmostype="other" + shfolders="FALSE" + ;; + beos*) + cpu_cores="1" + vmostype="other" + shfolders="FALSE" + ;; + *) + vmostype="other" + shfolders="FALSE" + ;; +esac +case "$vmversion" in + *) + svga_autodetect="TRUE" + numvcpus="1" + echo ".encoding = \"UTF-8\" +# version specific stuff - all versions +config.version = \"8\"" >>${conffile} + ;; +esac +case "$vmversion" in + 2.*|3.*|4.*|5.*|6.*|7.*|8.*|9.*) + [ ${shfolders} == FALSE ] || echo " +# version specific stuff - ver. 2.*|3.*|6.*|7.*|8.*|9.* +sharedFolder.option = \"alwaysEnabled\"" >>${conffile} + ;; +esac +case "$vmversion" in + 2.5|3.*|4.*|5.*|6.5|7.*|8.*|9.*) + if [ "${cpu_cores}" -ge "2" 2>/dev/null ]; then + numvcpus="2" + fi + if [ "${mem}" -ge "8000" 2>/dev/null ]; then + mem=8000 + fi + cap3d="TRUE" # helper var for loging output + echo " +# version specific stuff - ver. 2.5|3.*|6.5|7.* +ehci.present = \"TRUE\" +mks.enable3d = \"${enable3d}\"" >>${conffile} + ;; +esac +case "$vmversion" in + 3.*|4.*|7.*|8.*|9.*) + numvcpus="${cpu_cores}" + if [ "${cpu_cores}" -ge "4" 2>/dev/null ]; then + numvcpus="4" + fi + # svga_autodetect="FALSE" # if defined manual, see below + echo " +# version specific stuff - ver. 3.*|7.* +cpuid.coresPerSocket = \"${cpu_cores}\" +maxvcpus = \"4\" +monitor.virtual_mmu = \"automatic\" +monitor.virtual_exec = \"automatic\" +floppy1.clientDevice = \"FALSE\" +floppy1.readonly = \"TRUE\"" >>${conffile} + ;; +esac + +echo " +# id +virtualHW.version = \"${hwver}\" +displayName = \"${displayname}\" +guestOS = \"${vmostype}\" + +# CPU/MEM +numvcpus = \"${numvcpus}\" +memsize = \"${mem}\" +MemAllowAutoScaleDown = \"FALSE\" +MemTrimRate = \"-1\" + +# ide-disks +ide0:0.present = \"${ide}\" +ide0:0.fileName = \"${diskfile}\" +ide0:0.mode = \"independent-nonpersistent\" +ide1:0.present = \"${cdrom0}\" +ide1:0.autodetect = \"TRUE\" +ide1:0.fileName = \"auto detect\" +ide1:0.deviceType = \"cdrom-raw\" +ide1:1.present = \"${cdrom1}\" +ide1:1.autodetect = \"TRUE\" +ide1:1.fileName = \"auto detect\" +ide1:1.deviceType = \"cdrom-raw\" + +# scsi-disks +scsi0.present = \"${scsi}\" +scsi0:0.present = \"${scsi}\" +scsi0:0.fileName = \"${diskfile}\" +scsi0.virtualDev = \"${hddrv}\" +scsi0:0.mode = \"independent-nonpersistent\" + +# floppies +floppy0.present = \"${floppy0}\" +floppy0.startConnected = \"FALSE\" +floppy0.autodetect = \"TRUE\" +floppy0.fileName = \"auto detect\" +# we need floppy b: for our windows client configuration +floppy1.present = \"${floppy1}\" +floppy1.startConnected = \"TRUE\" +floppy1.fileType = \"file\" +floppy1.fileName = \"${floppy1name}\" + +# nics +ethernet0.present = \"TRUE\" +ethernet0.addressType = \"static\" +${network_virtualDev} +ethernet0.connectionType = \"${network_kind}\" +#ethernet1.connectionType = \"custom\" +#ethernet1.vnet = \"/dev/vmnet2\" +ethernet0.address = \"00:50:56:${VM_ID}:${machostpart}\" +ethernet0.wakeOnPcktRcv = \"FALSE\" + +# sound +sound.present = \"TRUE\" +sound.fileName = \"-1\" +sound.autodetect = \"TRUE\" +sound.virtualdev = \"${sound}\" + +# svga +svga.autodetect = \"${svga_autodetect}\" + +# usb +usb.present = \"TRUE\" +usb.generic.autoconnect = \"TRUE\" + +# pci configuration +usb.pciSlotNumber = "16" +ethernet0.pciSlotNumber = "17" +sound.pciSlotNumber = "18" +ehci.pciSlotNumber = "19" +scsi0.pciSlotNumber = "20" + +# shared folders +sharedFolder0.present = \"${shfolders}\" +sharedFolder0.enabled = \"${shfolders}\" +sharedFolder0.expiration = \"never\" +sharedFolder0.guestName = \"${sharename}\" +sharedFolder0.hostPath = \"${sharepath}\" +sharedFolder0.readAccess = \"TRUE\" +sharedFolder0.writeAccess = \"TRUE\" +sharedFolder.maxNum = \"1\" + +# dirs/configs +tmpDirectory = \"${redodir}\" +redoLogDir = \"${redodir}\" +mainMem.useNamedFile = \"TRUE\" +snapshot.disabled = \"TRUE\" +tools.syncTime = \"TRUE\" +isolation.tools.hgfs.disable = \"FALSE\" +hgfs.mapRootShare = \"TRUE\" +isolation.tools.dnd.disable = \"FALSE\" +isolation.tools.copy.enable = \"TRUE\" +isolation.tools.paste.enabled = \"TRUE\" + +# serial port +serial0.present = \"${serial}\" +${serialdev} + +# parallel port +parallel0.present = \"${parallel}\" +parallel0.bidirectional = \"${paralbidi}\" +${paraldev}" >>${conffile} + +# set the appropriate permissions for the vmware config file +chmod u+rwx ${conffile} >/dev/null 2>&1 +} + +preferencesheader () +{ +echo ".encoding = \"UTF-8\" +# This configuration file was generated by $0 + +# updates/tips +webUpdate.enabled = \"FALSE\" +pref.downloadPermission = \"deny\" +pref.vmplayer.downloadPermission = \"deny\" +pref.vmplayer.webUpdateOnStartup = \"FALSE\" +pref.tip.startup = \"FALSE\" +hints.hideAll = \"TRUE\" +hint.vmui.showAllUSBDevs = \"FALSE\" + +# configs +prefvmx.defaultVMPath = \"${vmhome}\" +prefvmx.mru.config = \"${conffile}:\" + +# hot keys +pref.hotkey.control = \"true\" +pref.hotkey.alt = \"true\" +pref.hotkey.shift = \"true\" +pref.hotkey.gui = \"true\" +gui.restricted = \"true\" + +# fullscreen/mouse/keyboard +pref.fullscreen.toolbarPixels = \"0\" +pref.vmplayer.fullscreen.autohide = \"TRUE\" +pref.grabOnMouseClick = \"TRUE\" +pref.grabOnKeyPress = \"FALSE\" +pref.motionGrab = \"TRUE\" +pref.motionUngrab = \"TRUE\" +pref.hideCursorOnUngrab = \"TRUE\" +pref.autoFit = \"TRUE\" +pref.autoFitFullScreen = \"fitGuestToHost\" +pref.vmplayer.exit.vmAction = \"poweroff\" +pref.vmplayer.confirmOnExit = \"TRUE\" + +# shared folders +pref.enableAllSharedFolders = \"TRUE\" + +# eula" >${vmhome}/preferences + +# different eula parameters from Workstation 9+/ Player 5+ +case "$vmversion" in + 3.*|4.*|7.*|8.*) + echo " +pref.eula.size = \"2\" +pref.eula.0.appName = \"VMware Player\" +pref.eula.0.buildNumber = \"${vmbuild}\" +pref.eula.1.appName = \"VMware Workstation\" +pref.eula.1.buildNumber = \"${vmbuild}\"" >>${vmhome}/preferences + ;; + 5.*|9.*) + # code + echo " +pref.eula.count = \"2\" +pref.eula0.product = \"VMware Player\" +pref.eula0.build = \"${vmbuild}\" +pref.eula1.product = \"VMware Workstation\" +pref.eula1.build = \"${vmbuild}\"" >>${vmhome}/preferences + ;; +esac + +} + + +# declaration of default variables +################################################################################ + +# VM-ID static (0D), remove if changed to 00 +VM_ID="0D" +# should be dynamic +if [ "x$(which bc)" != "x" ]; then + VM_ID=$(echo "obase=16; $$" | bc) + VM_ID=$(expr substr $VM_ID $(expr ${#VM_ID} - 1) 2) +fi +# temporary disk space for logs, etc... +redodir=/tmp/vmware/${USER}.$$ +# dir for configs and vmem file +confdir=/tmp/vmware/${USER}.$$ +# configfile +conffile="${confdir}/run-vmware.conf" +# diskfile +diskfile=${vmpath} +# users vmware config folder +vmhome="${HOME}/.vmware" + +# get several version infos for vmware/player +. ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmware/vmware.conf +vmbuild=$buildversion +vmversion=$version + +# VMware start options +# "-X": start in fullscreen +vmopt="-X" + + +# hardware checks +################################################################################ + +# use different network card (default e1000, vlance, vmxnet) +if [ -n "${network_card}" ]; then + network_virtualDev="ethernet0.virtualDev = \"${network_card}\"" +else + network_virtualDev='# using default virtualDev for ethernet0' +fi + +# set standard sound card, overwrite depending on OS (options sb16, es1371, hdaudio) +sound="es1371" + +# check for 3D configuration setting +case "${enable3d}" in + *true*|*yes*) + enable3d="TRUE" + ;; + *) + enable3d="FALSE" + ;; +esac + +# serial/parallel port defined (e.g. "ttyS0, lp0" or "autodetect") +case "$serial" in + tty*) + serialdev="serial0.filename = \"/dev/${serial}\"" + serial="TRUE" + ;; + auto*) + serialdev="serial0.autodetect = \"TRUE\"" + serial="TRUE" + ;; + *) + serialdev="# no serial port configured" + serial="FALSE" + ;; +esac +case "$parallel" in + lp*|parport*) + paraldev="parallel0.filename = \"/dev/${parallel}\"" + paralbidi="TRUE" + parallel="TRUE" + ;; + auto*) + paraldev="parallel0.autodetect = \"TRUE\"" + paralbidi="TRUE" + parallel="TRUE" + ;; + *) + paraldev="# no parallel port configured" + paralbidi="FALSE" + parallel="FALSE" + ;; +esac + +# adjust memory available for vmware guests +#if [ -n "${forcemem}" ]; then +# mem="${forcemem}" +#else +# case "$vmversion" in +# 2.*|6.*) +# permem=30 +# ;; +# 3.*|7.*) +# permem=25 +# ;; +# esac +# if [ "${totalmem}" -ge "2500" ]; 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 +# if [ "${totalmem}" -ge "2500" ]; then +# permem=40 +# confdir=/dev/shm/vmware/$USER +# conffile=${confdir}/run-vmware.conf +# mkdir -p /dev/shm/vmware/$USER +# fi +# fi +# mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4) +# if [ "${id44}" = "1" ]; then +# hostmem=$(expr ${totalmem} - ${mem}) +# else +# hostmem=$(expr ${totalmem} - ${mem} - ${mem}) +# fi +#fi + +# check if ide/scsi and hwver of image +# read only the first 30 lines to be shure +imghead=$(head -30 ${diskfile}) +hddrv=$(echo "${imghead}" | grep -m1 -ia "ddb.adapterType" |\ + awk -F '"' '{print $2}') +hwver=$(echo "${imghead}" | grep -m1 -ia "ddb.virtualHWVersion" |\ + awk -F '"' '{print $2}') +case "${hddrv}" in + ide) + ide="TRUE" + scsi="FALSE" + ;; + lsilogic|buslogic) + ide="FALSE" + scsi="TRUE" + ;; +esac + +# write configuration files +################################################################################ + +# create vmware directories +mkdir -p ${redodir} >/dev/null 2>&1 +mkdir -p ${confdir} >/dev/null 2>&1 +mkdir -p ${vmhome}/dndlogs >/dev/null 2>&1 +touch ${vmhome}/dndlogs/dndlog.conf >/dev/null 2>&1 + +# create preferences +preferencesheader + +# create VMware startup file +runvmwareconfheader +# link to conffile if confdir != redodir +ln -s ${conffile} ${redodir}/run-vmware.conf >/dev/null 2>&1 + +# sync is needed to ensure that data is really written to virtual disk +sync + +# own nvram. We need it for floppy drive b, default nvram has just drive a +# TODO: optimize, currently kinda inefficient, too much copys, but we +# don't know which one is installed... +for i in /opt/openslx/plugin-repo/vmware/*; do + cp ${i}/nvram ${confdir}/nvram 2>/dev/null +done + + +# logging and stdout +################################################################################ + +# log script information +writelog "# File created by $0 (VMversion ${vmversion})\n# on $(date)\n" +writelog "Starting with non-persistent mode ...\n" + +# write all results to logfile +# log disksetup +writelog "Directories:" +writelog "\tConfdir:\t${confdir}" +writelog "\tConffile:\t${conffile}" +writelog "\tRedodir:\t${redodir}" +writelog "\tVMhome:\t\t${vmhome}" +writelog "\t/tmp info: \ + $(grep "/tmp " /proc/mounts) $(df -h | grep " /tmp$" | awk '{print $2}')" +# hw setup +writelog "Hardware:" +writelog "\tMAC:\t\t00:50:56:${VM_ID}:${machostpart}" +if [ -n "${network_card}" ]; then + writelog "\tNet Adaptor:\t${network_card}" +fi +writelog "\tMem:\t\t${mem} MB" +# echo nur wenn hostmem gesetzt +[ -n "${hostmem}" ] && writelog "\tHostmem:\t${hostmem} MB" +writelog "\tMax. res.:\t${xres}x${yres}" +writelog "\tCD-ROM1:\t${cdrom0}" +writelog "\tCD-ROM2:\t${cdrom1}" +writelog "\tFloppy_A:\t${floppy0}" +if [ "${serial}" = "TRUE" ]; then + writelog "\tSerial Port:\t${serialdev}" +fi +if [ "${parallel}" = "TRUE" ]; then + writelog "\tParallel Port:\t${paraldev}" +fi +# image +writelog "Diskimage:" +writelog "\tDiskfile:\t${diskfile}" +writelog "\tDisktype:\t${hddrv}" +writelog "\tHWVersion:\t${hwver}" +writelog "\tVMostype:\t${vmostype}" +# misc +writelog "Misc:" +writelog "\tDisplayname:\t${displayname}" +if [ "${cap3d}" = "TRUE" -a "${enable3d}" = "TRUE" ]; then + writelog "\t3D Graphics:\tenabled" +fi +# empty line at end +writelog "" + + +# finally set env for run-virt.sh +################################################################################ + +# configure and start samba service to provide user's home directory +if [ -f /usr/sbin/smbd ] ; then + sudo /opt/openslx/rootfs/bin/sed -i /etc/vmware/smb.conf -e "s,USER,$USER," + sudo /usr/sbin/nmbd -s /etc/vmware/smb.conf + sudo /usr/sbin/smbd -s /etc/vmware/smb.conf +fi + +# using the modified version of the wrapper script +VIRTCMD="${OPENSLX_DEFAULT_BINDIR}/vmplayer" +VIRTCMDOPTS="${vmopt} ${conffile}" +RMDIRS="${redodir} ${conffile}" diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/run-virt.sh b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/run-virt.sh new file mode 120000 index 00000000..39d83f46 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/run-virt.sh @@ -0,0 +1 @@ +/opt/openslx/plugin-repo/vmchooser/run-virt.sh
\ No newline at end of file diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmchooser b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmchooser new file mode 120000 index 00000000..b247c383 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmchooser @@ -0,0 +1 @@ +/opt/openslx/plugin-repo/vmchooser/vmchooser
\ No newline at end of file diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmplayer b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmplayer new file mode 100755 index 00000000..c9b57a65 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmplayer @@ -0,0 +1,8 @@ +#!/bin/sh +# written by OpenSLX-plugin 'vmware' in Stage1 +# radically simplified version of the original script vmplayer by VMware Inc. +PREFIX=/usr/lib/vmware # depends on the vmware location +exec "$PREFIX"'/lib/wrapper-gtk24.sh' \ + "$PREFIX"'/lib' \ + "$PREFIX"'/bin/vmplayer' \ + "$PREFIX"'/libconf' "$@" diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmware b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmware new file mode 100755 index 00000000..8b568f53 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/vmware @@ -0,0 +1,8 @@ +#!/bin/sh +# written by OpenSLX-plugin 'vmware' in Stage1 +# radically simplified version of the original script vmware by VMware Inc. +PREFIX=/usr/lib/vmware # depends on the vmware location +exec "$PREFIX"'/lib/wrapper-gtk24.sh' \ + "$PREFIX"'/lib' \ + "$PREFIX"'/bin/vmware' \ + "$PREFIX"'/libconf' "$@" diff --git a/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/xmlfilter.sh b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/xmlfilter.sh new file mode 120000 index 00000000..809dc7b7 --- /dev/null +++ b/remote/modules/vmchooser/vmchooser-temp/var/opt/openslx/bin/xmlfilter.sh @@ -0,0 +1 @@ +/opt/openslx/plugin-repo/vmchooser/xmlfilter.sh
\ No newline at end of file diff --git a/remote/modules/vmchooser/data/vmchooser/default.desktop b/remote/modules/vmchooser/vmchooser-temp/vmchooser/default.desktop index 91540228..91540228 100755 --- a/remote/modules/vmchooser/data/vmchooser/default.desktop +++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/default.desktop diff --git a/remote/modules/vmchooser/data/vmchooser/mesgdisp b/remote/modules/vmchooser/vmchooser-temp/vmchooser/mesgdisp Binary files differindex 41e3721c..41e3721c 100755 --- a/remote/modules/vmchooser/data/vmchooser/mesgdisp +++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/mesgdisp diff --git a/remote/modules/vmchooser/data/vmchooser/printer.sh b/remote/modules/vmchooser/vmchooser-temp/vmchooser/printer.sh index 8f1d5ffa..8f1d5ffa 100755 --- a/remote/modules/vmchooser/data/vmchooser/printer.sh +++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/printer.sh diff --git a/remote/modules/vmchooser/data/vmchooser/scanner.sh b/remote/modules/vmchooser/vmchooser-temp/vmchooser/scanner.sh index dcb94c68..dcb94c68 100755 --- a/remote/modules/vmchooser/data/vmchooser/scanner.sh +++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/scanner.sh diff --git a/remote/modules/vmchooser/data/vmchooser/smb.conf b/remote/modules/vmchooser/vmchooser-temp/vmchooser/smb.conf index ec757ce4..ec757ce4 100755 --- a/remote/modules/vmchooser/data/vmchooser/smb.conf +++ b/remote/modules/vmchooser/vmchooser-temp/vmchooser/smb.conf diff --git a/remote/modules/vmchooser/vmchooser.conf b/remote/modules/vmchooser/vmchooser.conf index ec1ceb86..4054d59b 100644 --- a/remote/modules/vmchooser/vmchooser.conf +++ b/remote/modules/vmchooser/vmchooser.conf @@ -1,5 +1,5 @@ GIT=git://git.openslx.org/openslx/tools/vmchooser.git REQUIRED_DEPENDENCIES=" cmake libqt4-dev" -TARGET_DIR="openslx" +TARGET_DIR="opt/openslx/vmchooser/bin" REQUIRED_BINARIES="vmchooser" diff --git a/remote/modules/xorg/data/etc/X11/Xsession b/remote/modules/xorg/data/etc/X11/Xsession index 6b071c74..e239d586 100755 --- a/remote/modules/xorg/data/etc/X11/Xsession +++ b/remote/modules/xorg/data/etc/X11/Xsession @@ -84,11 +84,6 @@ exec >>"$ERRFILE" 2>&1 echo "$PROGNAME: X session started for $LOGNAME at $(date)" -# sanity check; is our session script directory present? -if [ ! -d "$SYSSESSIONDIR" ]; then - errormsg "no \"$SYSSESSIONDIR\" directory found; aborting." -fi - # Attempt to create a file of non-zero length in /tmp; a full filesystem can # cause mysterious X session failures. We do not use touch, :, or test -w # because they won't actually create a file with contents. We also let standard |
