Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Liquid Galaxy HOWTO
If you just want to try out view synchronization, head over to the QuickStart.
This page shows how we keep our sanity while managing multiple machines working together in a Liquid Galaxy. It's aimed at system administrators. Don't forget to read up on the SecurityConsiderations, too.
We use Ubuntu Linux for its stability and ease of administration, but the view synchronization features should work just fine on OSX or Windows.
There are lots of ways to build a reliable Liquid Galaxy. This is just how we do it.
Check out the ComputerHardware page for our computer and LCD screen specs.
Operating System Install
We typically start with a command-line install of Ubuntu 10.04 ("Lucid").
If you plan to use a distributed squid proxy, consider setting the "Typical usage" setting to "news" while partitioning the disk to allocate extra inodes for all the small files squid will create.
Create a user account called "lg" if you want to use our scripts as-is.
Configure LABELs for each of your filesystems so that the disk partitions will mount after cloning the disk to the other machines. Configure your
/etc/fstab to mount by
LABEL=* instead of by
Once your system is installed and running, add these packages and allow installation of their dependencies:
$ sudo apt-get install xinput lxdm xorg rxvt-unicode fvwm fvwm-icons nitrogen graphicsmagick-imagemagick-compat librsvg2-bin subversion build-essential apache2 php5 php5-cgi xdotool squid3 squid3-cgi
Our scripts utilize the common names of applications as represented in the Debian Alternatives system (see here).
Update the alternatives on your freshly installed system as follows:
$ sudo update-alternatives --set x-window-manager /usr/bin/fvwm2 $ sudo update-alternatives --set x-terminal-emulator /usr/bin/urxvt $ sudo update-alternatives --set x-www-browser /usr/bin/chromium-browser $ sudo update-alternatives --set gnome-www-browser /usr/bin/chromium-browser $ sudo update-alternatives --set lxdm.conf /etc/lxdm/lxdm.conf
Check out the Liquid Galaxy files from git
We checked all the scripts and config files into git. Head over to the Source tab and check out a local copy.
We use gigabit ethernet to connect the machines in a Liquid Galaxy. The view synchronization messages are small and Google Earth's bandwidth will be limited by your upstream internet connection, so gigabit ethernet isn't really necessary.
Later, in the personality assignment section, we'll set each machine up with an alias interface and a private IP address so that the machines can always reach each other, even if DHCP isn't available.
And as we mentioned earlier, make sure you check out the SecurityConsiderations and make sure you set up your network so that outsiders can't send you unwanted
If you're planning to use a multi-axis controller, visit the LinuxSpaceNavigator page to set up the
/dev/input/spacenavigator device our scripts are configured for.
In the source repository: the conf file,
gnu_linux/home/lg/etc/shell.conf and a helper script,
earth/scripts/write-drivers-ini.sh work together at launch of Google Earth to configure it to use the specified device.
Configure Xorg with the touchscreen as its "CorePointer".
If you're using a podium with a touch screen, and your video card supports multi-headed displays, configure the second video card output for use with the touch screen.
/etc/X11/xorg.conf configuration in the source control repository of this project is just one example and may need to be adjusted dramatically to fit your systems.
- Create a user called "
lg" and rsync
home/lgfrom your git checkout to
- Rename the files and directories within the
home/lg/dotfilessubdirectory to contain a "
." (dot) as the first character and place them directly into the user's home directory. (e.g. "
home/lg/dotfiles/fvwm2rc" becomes "
- Play close attention to
home/lg/dotfiles/xsession, as this is how the window manager is executed upon auto-login by the Display Manager.
gnu_linux/etc/lxdm/lxdm.conf from your git checkout to configure LXDM to automatically login as the
lg user and execute a default Xsession. This is how your preferred window manager (and hence the startup-script) will be executed in a minimal installation.
An example configuration for the FVWM2 window manager is included within the
home/lg/dotfiles directory in the source control repository of this project.
If you use a different window manager, make sure you run
home/lg/bin/startup-script.sh automatically on login.
ViewSync functionality has been in Google Earth since version 5.2. Be sure to download the most recent version and look over the license agreement when you download Google Earth if you have any questions about how you can use it.
Install Google Earth into a directory called
Create a symlink in
$ cd /home/lg/earth/builds $ ln -s ./5.2.X.XXXX latest
This will let our scripts find your Google Earth install.
earth/config/slave directories are used by
run-earth-bin.sh to overwrite the files in
.config/Google/ before starting Google Earth.
See the Google Earth ViewSync Document for more information on the specific workings of the ViewSync Feature in Google Earth.
SSH Key setup
We use SSH extensively to communicate between galaxy nodes. The source repository contains a fairly dangerous clean-ssh.sh file which can be executed with root privileges to initialize various SSH key items including:
- generating a keypair for the
- adding the generated keypair to
- generating all-new host keys for sshd.
- adding the host key to
known_hoststo squelch warnings.
DO NOT use this script on a server or your own desktop system.
DO use this script BEFORE cloning to make things easy on yourself.
Clone the disk of the machine you've completed setting up BEFORE you perform personality assignment in the next section.
Try using dd over netcat, or a g4u boot disk.
Note that udev likes to remember your network hardware's MAC address, so you may need to edit
/etc/udev/rules.d/70-persistent-net.rules just before cloning, so that the new machines don't end up with, eg.,
eth1 instead of
For Galaxy systems fitting the current MechanicalDesign, we've settled upon a clockwise numbering scheme beginning with the "master" system as 1. Connect any input devices, such as a mouse or multi-axis controller, to "master" system.
Setting a personality sets the system hostname and prepares an alias interface ( eth0:0 ) via a new script dropped into
/etc/network/if-up.d. Scripts in that directory are executed whenever an interface is brought up.
Run this on each machine, where "X" is the screen number (clockwise from the master):
$sudo /home/lg/bin/personality.sh X