Chromium Renderserver Setup Guide
Contents
- Introduction
- XF4VNC Setup
- DMX Setup
- Chromium Setup
- VNC Proxy Setup
- VNC Viewer Setup
- 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:
- Chicken of the
VNC (for Mac OS X)
- Real VNC (for many systems)
- TightVNC (for many systems)
- XF4VNC Viewer
(Note that this viewer, based on the original AT&T code, has some
enhancements with fixes the appearance of flickering black rectangles
and improves the performance of hextile decoding)
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:
- CR_HOME this should
point to the location of your Chromium installation (the cr/ directory). It's used to
define other environment variables. This variable should be set
on all hosts in the cluster.
- LD_LIBRARY_PATH this
should include ${CR_HOME}/lib/Linux. It's used to find the
libGL.so symlink which points to libcrfaker.so. This variable
should be set on all hosts in the cluster.
- CR_CONFIG this
tells Chromium where to find the crrs.conf
file. See section 4.3 above for details. This variable only
needs to be set on the cluster host that runs OpenGL applications.
- DISPLAY this tells
X and OpenGL applications which X server to use. It should name
the DMX X server when using a DMX display wall.