Skip to content

X2Go Install

John Yocum edited this page May 16, 2019 · 3 revisions

While computing clusters are typically used for batch processing and command-line tasks, some users may prefer to use a graphical environment. To accommodate those use cases, X2Go can be installed on the head node. Once installed, if the user runs any X11 applications on a compute node, the UI will appear within their X2Go session.

  1. Download X2Go, IceWM, and any dependencies

     yumdownloader --enablerepo=epel --destdir=/export/rocks/install/contrib/7.0/x86_64/RPMS/ x2goserver x2goserver-xsession x2goserver-common perl-X2Go-Server-DB sshfs pwgen x2goagent perl-File-BaseDir perl-X2Go-Server perl-X2Go-Log nxagent libXcompshad libNX_X11 libXcomp nx-libs
     yumdownloader --enablerepo=epel --destdir=/export/rocks/install/contrib/7.0/x86_64/RPMS/ icewm icewm-xdgmenu icewm-clearlooks pyxdg
    
  2. Rebuild the local Rocks yum repository

     cd /export/rocks/install/
     rocks create distro
    
  3. Install the packages on the head node

     yum clean all
     yum install x2goserver x2goserver-xsession
     yum install icewm icewm-xdgmenu icewm-clearlooks
    
  4. Edit /etc/ssh/ssh_config on the head node, and add the following:

     ForwardX11Trusted       yes
    
  5. Edit the qlogin configuration on the head node, using the following command:

     qconf -mconf global
    

    And, make the following changes:

     qlogin_command               /opt/gridengine/bin/rocks-qlogin.sh
     qlogin_daemon                /usr/sbin/sshd -i
    
  6. Modify the cluster's extend-compute.xml, to create a helper script that will import various SGE supplied environment variables into the user's environment. Once the modifications are performed, rebuild the Rocks distribution.

     <file name="/etc/profile.d/sge-interactive-env.sh" owner="root.root" perms="0644">
     # https://arc.liv.ac.uk/pipermail/gridengine-users/2010-February/029106.html
    
     # Find the job ID by looking at the sge_shepherd process
     MYPARENT=`ps -p $$ -o ppid --no-header`
     MYPARENT=`ps -p $MYPARENT -o ppid --no-header`
     MYPARENT=`ps -p $MYPARENT -o ppid --no-header`
     MYSTARTUP=`ps -p $MYPARENT -o command --no-header`
     if [ "${MYSTARTUP:0:13}" = "sge_shepherd-" ]; then
         echo -n "Entering SGE interactive session: "
         MYJOBID=${MYSTARTUP:13}
         MYJOBID=${MYJOBID% -bg}
         echo "Job ${MYJOBID}"
    
         # Source parts of the sge_shepherd's environment file and export them in to our environment
         SGE_SPOOL=/opt/gridengine/default/spool
         ENVFILE=${SGE_SPOOL}/$(hostname -s)/active_jobs/${MYJOBID}.1/environment
         source &lt;(sed -n -e 's/^SGE_\|^TMPDIR/export &amp;/p' $ENVFILE)
     fi
     </file>