This project aims to be as compatible with the BCCD as possible. If it's not, report the inconsistency as a bug.

Start X

  1. Log in as bccd with the password "letmein". Note that ssh is not started by default, but you should change the password with "passwd" if you do want to start it.
  2. startx
  3. If you run into problems, send email to littlefe@… with the error output.

USB automounting

The BCCD is setup to automatically mount removable USB drives when the drive is inserted. If you're in X, it will pop up a message saying where it mounted the drive (e.g. /mnt/sdg1). If you're not in X, you can figure out what the last device to be mounted was by doing tail -1 /var/log/mount.log. The BCCD won't automatically unmount the drive, so be sure to unmount the drive first, e.g. umount /mnt/sdg1.

Boot options

You can supply these options when you start the system up (in the form "linux startdhcp"):

  1. startdhcp - Make this system a DHCP server.
  2. automode - Don't prompt for anything in boot-up.
  3. quickboot - Same as above (for now).
  4. masterserver=server - Merge a client's /cluster/software directory with another server's. Leave blank w/o = to broadcast for server.
  5. dhcp_masterserver=server - Option for DHCP server to set a pointer to a master software server.
  6. startnfs - Start NFS services appropriate for being a master server.
  7. nics=ip0/mask0:ip1/mask1:etc - Set IP address information for NICs. The system will prompt you to plug cables into the NICs, which are presented in alphabetical order. In place of an IP/mask combination, you can supply dhcp to have dhclient query for network information.
  8. dhcp_router=aaa.bbb.ccc.ddd - Have DHCP hand out this IP address for the default router.
  9. dhcp_net="A.B.C.D/NN:resaddrs:dhcpaddrs:pxeaddrs" - Use this to supply your own settings for the liberation DHCP server. "A.B.C.D/NN" is the network address in CIDR notation you wish to use, resaddrs is the number of non-DHCP address you wish to reserve, dhcpaddrs is the number of regular DHCP addresses to hand out, and pxeaddrs is the number of PXE addresses to use.
  10. lockdhcp - Only process DHCP requests from a BCCD server.
  11. namenic=nic - Use IP address from this interface to get hostname
  12. allowpxe - Allow PXE booting. Note that this has the side effect of having the server answer any DHCP request, while the default is to only answer requests with the bccd-client tag.

A summary of these options is also available in the F4 menu at boot-up.

Shared NFS

In the live CD, you can merge /cluster/software from another node (known as the master node) with your own node. This is done through the magic pixie dust of AUFS and DHCP. You should set one live CD system to run DHCP like so:

linux startdhcp dhcp_routernic=eth0

Linux dhclient requires an IP address for a router to be passed in, so if you're uncertain of what to provide just provide eth0. Note that the DHCP server need not be the master server; the address of the master server is merely handed out via DHCP. Boot the master server like so:

linux startnfs

If your master server is the DHCP server, include startnfs on the line with startdhcp. On the client systems, boot like so:

linux masterserver

and the client system will find the master server using DHCPINFORM packets.

Keyboard mapping

The keyboard mapping in the BCCD defaults to US English. You can change it by logging in as the bccd user, and running sudo dpkg-reconfigure console-data, hit OK, and then go to "Select keymap from full list". In X, you can set the keymap using setxkbmap ''country-code'', which doesn't require root privileges. A full list of country codes is in /usr/share/X11/xkb/symbols/.

No video on bootup

Confucius say: "The video isn't always the problem when the video doesn't work"

NVidia 8600 GTS and NVidia 8800 GTS

  • Recall that these didn't "initialize" the display upon boot. A black screen was rendered irregardless of the vga= and video= options given to the kernel. It turned out that the *motherboard* was the culprit, and supplying "noapic" did the trick (without the noapic, the kernel was panic'ing before initializing the display so there was no way to see the kernel panic message). Serial ports are wonderful things sometimes.


You can setup BCCD systems to NAT through their BCCD DHCP server. To do that, boot the server like so:

linux nics="a.b.c.d/" dhcp_net="a.b.c.0/xx:10:100:100 dhcp_routernic=eth''n''"

For example:

linux startdhcp nics="" dhcp_net="" dhcp_routernic="eth1"

Make sure your routernic is set properly. Once the system is up, run /bin/bccd-nat as root. Supply a routable IP, DNS server, and next-hop router. Then boot the client systems like this:

linux lockdhcp

Your system will then route through the DHCP server.


The BCCD is built in North American Eastern time, so the default time zone is EST5EDT. Hardware time is kept in UTC, so just set your TZ variable for the bccd user to something else (e.g. PST8PDT for Pacific time). Look in /usr/share/zoneinfo/ for more options.

You might also find your hardware clock is off. The BCCD is set to use the Debian project's NTP pool by default. If your network's DHCP server provides its own ntp-servers option, a /etc/ntp.conf.dhcp file will be created automatically and NTP will use that instead of the stock file. If your hardware clock is more than a few minutes off, NTP will be unable to slew the time fast enough in most cases. If you don't care about large time corrections, perform these steps to correct your time quickly:

  1. date # Get the current time
  2. invoke-rc.d ntp stop # Stop the NTP daemon
  3. ntpd -gqx # Run a one-off time correction without slew limits
  4. date # To make sure that the time is now correct
  5. invoke-rc.d ntp start # Start the NTP server with slew limits

Node check-in

When running in liberated mode, cluster nodes do not need to use pkbcast to broadcast public keys, nor does bccd-allowall need to be run to allow all public keys that pkbcast detected. Nodes check in to the master node's /cluster/home/meta/nodes directory with their hostname as a file, and files that haven't been touched in less than a few minutes are considered stale. For this to work properly, the master node must be at the first IP in a network block (i.e. To change what hostname a master node reports, edit the /etc/cron.d/node-checkin file on the master node and remove the old /cluster/home/meta/node000 file.

Environment management

The BCCD uses a framework called Modules to provide user environment management. Thus system allows users to swap in and out different software packages without having to manage complex shell profiles. It also provides some dependency and conflict management; for instance, you cannot load both MPICH and LAM modules at the same time since their binary names overlap. The BCCD loads most modules out of the box, so in many instances you won't even need to touch modules. If you do, here's some basic commands for working with modules:

  • module list - Print out the modules that are currently loaded into the user environment.
  • module avail - Print out all modules that are present on the system.
  • module load module - Load module named module into the user environment. By default, this will load the version that comes last lexigraphically, unless a symlink to default from the version that should be default is provided. If you want to load a non-default version, simply provide the version after the slash, e.g. gromacs could be represented as gromacs/3.3.3_openmpi.
  • module unload module - Unload module named module from the user environment.
  • module purge - Unload all modules.
Last modified 12 years ago Last modified on Feb 6, 2009 11:33:02 PM