#!/bin/sh # # Description: Kernel of a generic runlevel script file for use with # Diskless X Stations (v4.0) - script prepares vmware # environment. Start and stop functionality is added within # initial ramdisk # # Author(s): Michael Janczyk , 15-04-2006 # Dirk von Suchodoletz , 10-05-2006 # Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg # # Version: 0.2d ################################################################################ ### VERBOSE? ################################################################### # set verbose mode (set -x(v)) #set -xv ### CONFIGURATION ############################################################## # read configuration information . /etc/machine-setup ### VARIABLES SECTION ########################################################## # Declaration of default variables vmdir=/var/lib/vmware path=/var/X11R6/bin sessions= session_name= ### FUNCTIONS SECTION ########################################################## # unionfs used? pathtest () { if `touch /usr/X11R6/bin/touch >/dev/null 2>&1`; then path=/usr/X11R6/bin/ rm ${path}/touch >/dev/null 2>&1 else test -d ${path} || mkdir -p ${path} fi } # loop file for exchanging information between linux and vmware mount_loop () { modprobe loop >/dev/null 2>&1 mkdir -p /tmp/loop0 cp ${vmdir}/templ/fd0.img /tmp/${clientip}-fd0.img chmod a+rw /tmp/${clientip}-fd0.img mount -n -t msdos -o loop,umask=000 /tmp/${clientip}-fd0.img \ /tmp/loop0 } # device creation - the module does not trigger udev properly vmnet () { for i in 0 1 2 3 4 5 6 7 8 9; do [ -c /dev/vmnet${i} ] || mknod /dev/vmnet${i} c 119 ${i}; done chmod 0700 /dev/vmnet* } # special start script for vmware with predefined image copyscript () { # runvmware cp ${vmdir}/templ/runvmware ${path} chmod 755 ${path}/runvmware >/dev/null 2>&1 # default kdm session. Xdialog with WM and VMware images cp ${vmdir}/templ/defaultwm ${path}/defaultwm chmod 755 ${path}/defaultwm >/dev/null 2>&1 } # blabla sessiondinens desktop_session () { echo -e "#!/bin/sh\n#\n# file generated by ${0} at ${date}\ \n# set to black background\nxsetroot -solid \"black\"\ \nstartvm=\$(echo \$0 | sed -e \"s,.*/,,\")\ \nxterm -bg black -fg white -geometry 100x30+0-0 +sb \ -e \"${path}/runvmware -s \${startvm} ${debug}\"\n" \ > ${path}/desktop-session chmod 755 ${path}/desktop-session } # copy nach blabla vmsession2desktop_session () { sessions=$(ls ${vmdir}/vmsessions/*.desktop 2>/dev/null) if [ -n "${sessions}" ]; then for i in ${vmdir}/vmsessions/*.desktop; do session_name=$(cat ${i} | grep -iw "exec" \ | awk -F "=" '{print $2}') ln -s ${path}/desktop-session ${path}/${session_name} done fi } ### START SCRIPT ############################################################### # create vmdir #mkdir -p /var/lib/vmware 2>&1 # mount von zeugs (wohl besser in der InitRD, da sonst Sessions nicht # rechtzeitig fuer gdm/kdm verfuegbar) #mount -t nfs -o ro,nolock,intr,nodev,soft,timeo=2,nosuid ${imgsrv} ${vmdir} # check path pathtest # device creation - the module does not trigger udev properly vmnet # special start script for vmware with predefined image copyscript # loop file for exchanging information between linux and vmware guest mount_loop # blabla sessiondinens desktop_session # copy nach blabla vmsession2desktop_session