blob: f70c9c42c0ca7290430a01671112cd7efa44fccc (
plain) (
tree)
|
|
# run-virt.include
# -----------------------------------------------------------------------------
# Copyright (c) 2011 - RZ Uni Freiburg
# Copyright (c) 2011 - 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 various emulators via a common frontend
# script via the common run-virt.sh of the vmchooser
################################################################################
################################################################################
### 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"
# TODO: exit wenn conf wichtig
#exit 1
fi
################################################################################
### Declaration of default variables
################################################################################
PLUGINCONF="${PLUGINCONFROOT}/${self}"
PLUGINDIR=${OPENSLX_DEFAULT_DIR}/plugin-repo/${self}
# create TMPDIR for all users
mkdir -m 1777 /tmp/${self} 2>/dev/null
# TMPDIR
TMPDIR="/tmp/${self}/${USER}"
# define dirs and files which can be removed after exit, be carefull!
RMDIRS="${TMPDIR}"
rm -rf ${RMDIRS} 2>/dev/null
mkdir -m 1777 -p ${TMPDIR} 2>/dev/null
# vmpath is the path to the emulator/original system image
diskfile=${vmpath}
# emulator is the information provided via xml file
emulator=$(grep -o 'virtualmachine param=.*"' ${xmlfile} \
| sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')
rombios=$(grep -o 'rombios param=.*"' ${xmlfile} \
| sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')
displayname=$(echo ${displayname} | sed -e "s, ,-,g")
VIRTCMD="${emulator}"
case "${emulator}" in
dosbox*|Dosbox*)
tar -xpzf ${diskfile} -C "${TMPDIR}"
emudir=$(ls ${TMPDIR})
[ $(echo ${emudir}|wc|awk '{print $2}') -eq 1 ] && \
{ mv ${TMPDIR}/${emudir}/* ${TMPDIR}; rmdir ${TMPDIR}/${emudir}; }
echo "# empty" > ${TMPDIR}/dosbox.conf
VIRTCMDOPTS="${emulator#*dosbox}"
VIRTCMDOPTS="${VIRTCMDOPTS} -conf ${TMPDIR}/dosbox.conf -fullscreen"
# the directory mount has to be first
VIRTCMD="dosbox -c \"mount c ${TMPDIR}\""
;;
SheepShaver*|sheepshaver*)
if [ "x${rombios}" != "x" ] ; then
rom="--rom ${imgpath}/${rombios}"
else
echo "problem"
fi
rm ~/.sheepshaver*
cp ${diskfile} ${TMPDIR}
# add cdrom if detected --cdrom /dev/srN
# --screen win/1024/768 / dga/${xres}/${yres}
# if duplicated options the last one wins - user defined options should over-
# rule system options set here
USERCMDOPTS="$(echo "${emulator}" | tr "A-Z" "a-z")"
USERCMDOPTS="${USERCMDOPTS#*sheepshaver}"
VIRTCMDOPTS="${VIRTCMDOPTS} ${rom} --ramsize 128800000 --extfs ${HOME}"
VIRTCMDOPTS="${VIRTCMDOPTS} --ignoresegv true --ignoreillegal true --gfxaccel true"
VIRTCMDOPTS="${VIRTCMDOPTS} --disk ${TMPDIR}/${imgname} ${USERCMDOPTS}"
VIRTCMD="SheepShaver"
;;
basilisk*|Basilisk*)
if [ "x${rombios}" != "x" ] ; then
rom="--rom ${imgpath}/${rombios}"
else
echo "problem"
fi
rm ~/.basilisk*
cp ${diskfile} ${TMPDIR}
# check ordering of duplicated options (user defined options should over-
# rule system options set here
USERCMDOPTS="$(echo "${emulator}" | tr "A-Z" "a-z")"
USERCMDOPTS="${USERCMDOPTS#*basiliskii}"
VIRTCMDOPTS="${VIRTCMDOPTS} ${rom} --ramsize 16800000 --extfs ${HOME}"
VIRTCMDOPTS="${VIRTCMDOPTS} --ignoresegv true --disk ${TMPDIR}/${imgname}"
VIRTCMDOPTS="${VIRTCMDOPTS} ${USERCMDOPTS}"
VIRTCMD="BasiliskII"
;;
hatari*|Hatari*)
if [ "x${rombios}" != "x" ] ; then
rom="--tos ${imgpath}/${rombios}"
else
echo "problem"
fi
cp ${diskfile} ${TMPDIR}
USERCMDOPTS="$(echo "${emulator}" | tr "A-Z" "a-z")"
USERCMDOPTS="${USERCMDOPTS#*hatari}"
VIRTCMDOPTS="${VIRTCMDOPTS} ${rom} --memsize 14 --confirm-quit false --monitor vga"
# if fullscreen use -f option
VIRTCMDOPTS="${VIRTCMDOPTS} --vdi true --vdi-width 1024 --vdi-height 768"
VIRTCMDOPTS="${VIRTCMDOPTS} -d ${HOME} --acsi ${TMPDIR}/${imgname} ${USERCMDOPTS}"
VIRTCMD="hatari"
;;
*mess*)
[ "x${rombios}" != "x" ] && rom="${imgpath}/${rombios}"
VIRTCMDOPTS="${VIRTCMDOPTS} ${rom}"
;;
*uae*)
rm ${HOME}/.uaerc
if [ "${imgname##*.}" == "hdf" ] ; then
diskoption="-s hardfile2=ro,:${diskfile},32,1,2,512,0,,uae"
else
diskoption="-s floppy0=${diskfile}"
fi
[ "x${rombios}" != "x" ] && rom="-s kickstart_rom_file=${imgpath}/${rombios}"
VIRTCMDOPTS="${VIRTCMDOPTS} ${rom} ${diskoption}"
VIRTCMDOPTS="${VIRTCMDOPTS} -s gfx_color_mode=8bit -s gfx_linemode=double"
;;
*qemu*)
# disable kvm for a range of older operating systems
case "${vmostype}" in
beos*)
VIRTCMDOPTS="${VIRTCMDOPTS} -no-kvm -m 256"
;;
win3*|win*3*|Win*3*)
VIRTCMDOPTS="${VIRTCMDOPTS} -no-kvm -m 32"
;;
win95*|Win*95)
VIRTCMDOPTS="${VIRTCMDOPTS} -no-kvm -m 96"
;;
win*)
VIRTCMDOPTS="${VIRTCMDOPTS} -no-kvm -m 256"
;;
esac
[ "x${rombios}" != "x" ] && rom="-bios ${imgpath}/${rombios}"
VIRTCMDOPTS="${VIRTCMDOPTS} ${rom} -name \"${displayname}\" -snapshot ${diskfile}"
;;
esac
writelog "Directories:"
writelog "\tTMPDIR:\t\t\t$TMPDIR"
writelog "Diskimage:"
writelog "\tDisk type:\t\t$imgtype"
writelog "\tDisk file:\t\t$diskfile"
################################################################################
### Emulator definitions
################################################################################
writelog "Virtual Hardware:"
writelog "\tGuest RAM:\t\t${mem} MB"
# echo nur wenn memhost gesetzt
[ -n "${memhost}" ] && writelog "\tHost RAM:\t\t${memhost} MB"
writelog "\tMAC address:\t\t$macaddr"
writelog "\tNetwork card:\t\t${network_card}"
writelog "\tNetwork kind:\t\t${network_kind}"
#writelog "\tCD-ROM1:\t${cdrom0}"
#writelog "\tCD-ROM2:\t${cdrom1}"
#writelog "\tFloppy_A:\t${floppy0}"
#writelog "\tFloppy_B:\t${floppy1}"
#writelog "\tShared Folders 'home':\t/home/${USER}"
################################################################################
### finally set env for run-virt.sh
################################################################################
|