summaryrefslogblamecommitdiffstats
path: root/src/os-plugins/plugins/emufe/files/run-virt.include
blob: 6e8850c8d0557bbd0ee5607ee90957ada15057e0 (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
    USERCMDOPTS="$(echo "${emulator}" | tr "A-Z" "a-z")"
    USERCMDOPTS="${USERCMDOPTS#*hatari}"
    VIRTCMDOPTS="${VIRTCMDOPTS} ${rom} --memsize 14 --confirm-quite false"
    VIRTCMDOPTS="${VIRTCMDOPTS} -d ${HOME} ${USERCMDOPTS}"
    VIRTCMD="hatari"
  ;;
  *mess*)
    [ "x${rombios}" != "x" ] && rom="${imgpath}/${rombios}"
    VIRTCMDOPTS="${VIRTCMDOPTS} ${rom}"
  ;;
  *uae*)
    [ "x${rombios}" != "x" ] && rom="-s kickstart_rom_file=${imgpath}/${rombios}"
    VIRTCMDOPTS="${VIRTCMDOPTS} ${rom}"
    VIRTCMDOPTS="${VIRTCMDOPTS} -s floppy0=${diskfile}"
  ;;
  *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
################################################################################