Chromium Renderserver Setup Guide

Contents
  1. Introduction
  2. XF4VNC Setup
  3. DMX Setup
  4. Chromium Setup
  5. VNC Proxy Setup
  6. VNC Viewer Setup
  7. Environment Variable Summary

1. Introduction

Setting up the Chromium Renderserver system involves a setting up a number of separate components.  This page describes those steps.

Since the Chromium Renderserserver is primarily intended for use with a graphics cluster, the software components usually need to be installed on all systems in the cluster.  Ideally, everything should be installed on a shared filesystem so that the software doesn't have to be replicated everywhere.

Speak to your system administrator if you need assistance.

2. XF4VNC Setup

Install and configure the XF4VNC package as described on the website.  The Chromium Renderserver will use the VNC-server capability of the Xserver (the vnc.so module) plus the VNC and Xcliplist extensions included in XF4VNC.

Check that your VNC-enabled X server is working by attaching a VNC viewer to the server:

vncviewer displayName

where displayName is your X server's display name.

Alternately, use xdpyinfo to check if the VNC-enabled X server lists the VNC and XClipList extensions. Note: the Xdmx server will not report the VNC extension.

You'll need to install the XF4VNC software on each of the back-end nodes in your rendering cluster if you're running a DMX system.


The usual location for the libvnc.so and libxcliplist.so modules is in /usr/X11R6/lib/modules/extensions:
$ ls -l /usr/X11R6/lib/modules/extensions/
-rwxr-xr-x  1 brian users 746364 Sep 20 10:42 libvnc.so
-rwxr-xr-x  1 brian users  17501 Sep 20 10:25 libxcliplist.so

3. DMX Setup

You may skip this section if you're not using a DMX display wall.

The XF4VNC project also includes a VNC-enabled DMX X server (after building XF4VNC you'll have an Xdmx executable.)  Note that this DMX X server is not fully VNC-aware; it only accepts VNC input events and does not respond to RFB update-request messages.  This is all the functionality that's required for Chromium Renderserver since the VNC Proxy will obtain RFB updates from the back-end X servers, not the DMX server.

The DMX man page explains how to configure and run the DMX X server.

The VNC-enabled DMX server only needs to be installed on the front-end system (the DMX X server host) in your graphics cluster (not the back-end hosts).

NOTE: If you're testing DMX and find that your keyboard isn't working properly (i.e. pressing 'r' produces '9') check the DMX start-up messages to see if xkbcomp is failing.

4. Chromium Setup

This section describes how to setup Chromium.  Chromium will need to be installed on all the nodes of your rendering cluster.

4.1 Chromium Source Code

Chromium may either be obtained as a prepackaged tarball or from the CVS repository.

The latest packaged releases can be downloaded from SourceForge or obtained from CVS.

You should have a cr directory when done.

4.2 Building Chromium

First, change into the cr directory and set the CR_HOME environment variable.
export CR_HOME=${PWD}
You should also set the variable to the actual path in your ~/.bashrc file.

Next, examine the cr/options.mk file and set these variables as follows:
RELEASE=0
THREADSAFE=1
USE_DMX=1 # this can be 0 if not using DMX
DMX_INCDIR=/usr/X11R6/include # adjust as needed, if USE_DMX=1
DMX_LIB=/usr/X11R6/lib/libdmx.so # adjust as needed, if USE_DMX=1
USE_VNC=1
USE_XCLIPLIST=1
Compile Chromium:
make
After compilation has completed, make symlinks so that Chromium's libcrfaker.so is used instead of the normal OpenGL libraries:
cd ${CR_HOME}/lib/Linux
ln -s libcrfaker.so libGL.so.1
ln -s libGL.so.1 libGL.so
Next, set the LD_LIBRARY_PATH environment variable (probably add this to your ~/.bashrc file):
export LD_LIBRARY_PATH=${CR_HOME}/lib/Linux
Verify that the Chromium libs are set up correctly by running ldd on an OpenGL program:
ldd ${CR_HOME}/bin/Linux/atlantis
Make sure all the library dependencies are resolved.  In particular, verify that libGL.so resolves to Chrmoium's libGL, similar to this:
libGL.so => /shared/crrs/cr/lib/Linux/libGL.so (0xf6f73000)

4.3 Chromium Runtime Configuration

Put the vncproxy/config/crrs.conf config file into ${CR_HOME}/mothership/configs.

Next, setup the Chromium auto-start environment variable.  Add the following to your ~/.bashrc file:
export CR_CONFIG="${CR_HOME}/mothership/configs/vncdmx.conf %m %d %p"
This will cause the crfaker library (aka libGL.so) to automatically start all the Chromium components.

I.e. when this is set up correctly, you'll be able to just run an OpenGL application from your shell in the usual manner and it will use Chromium automatically.  You should inspect the crrs.conf file to see if the auto-start mechanism (i.e. rsh vs. ssh, etc) is correct.  It might take some experimentation to get it all right.

4.4 Using Chromium on a DMX Display

After the DMX display is up and running, you'll want to be sure that your DISPLAY environtment variable is set correctly before running any X/OpenGL applications.  For example, if your DMX X server is running on the host dmxhost as server number 1:

export DISPLAY=dmxhost:1

You can test that things are operating correctly by running an OpenGL test program such as atlantis:

$(CR_HOME}/bin/Linux/atlantis

If the atlantis window does not appear on your DMX display, double-check that you followed all the above instructions.

4.5 Using Chromium on a non-DMX Display

In this case, the OpenGL application should work as it normally does. The difference is OpenGL rendering will go through the VNC SPU.


5. VNC Proxy Setup

The VNC Proxy is typically run on the same host as the DMX X server.  It doesn't have to be installed on every computer in your graphics cluster.

5.1 Download and Unpack

The VNC Proxy code can be obtained from CVS as follows:

By anonymous CVS (press enter when prompted for a password):

cvs -d:pserver:anonymous@vncproxy.cvs.sourceforge.net:/cvsroot/vncproxy login
cvs -z3 -d:pserver:anonymous@vncproxy.cvs.sourceforge.net:/cvsroot/vncproxy co -P vncproxy

Or, as a SourceForge developer:

export CVS_RSH=ssh
cvs -z3 -d:ext:developername@vncproxy.cvs.sourceforge.net:/cvsroot/vncproxy co -P vncproxy


5.2 Compile

Since there are no configuration options, compilation is very simple:

cd VNCProxy/src
make

5.3 Install

Copy the vncproxy executable to your /usr/X11R6/bin/ directory (or other location if desired):

su
cp vncproxy /usr/X11R6/bin/

5.4 Running

When you run the VNC Proxy you need to specify an X desktop to connect to. For example:

vncproxy workstation:0

For a DMX desktop, the display will often be something like dmxhost:1. If the VNC Proxy detects that the desktop is a DMX X server it will contact all the back-end X/VNC servers. The output of all the back-end X/VNC servers will be collected by the proxy and sent to any VNC clients/viewers that connect.

VNC viewers can connect to the VNC Proxy on it's default display hostname:99 which corresponds to hostname/port hostname::5999.

If you want the VNC Proxy to listen to a different port for client connections, use the -l option.  See the VNC Proxy User Guide for more information.


6. VNC Viewer

The Chromium Renderserver is meant to work with any VNC viewer running on any type of computer.  VNC Viewers exist for almost all types of computers (including hand-helds) and operating systems.

Some of the more popular VNC viewers include:
Remember that when using the VNC Proxy you'll want to connect the VNC viewer to the VNC Proxy, not an X server.


7. Environment Variable Summary

The following environment variables are important for Chromium Renderserver: