Booting into BCCD
From BCCD 3.0
BCCDv3 -- Getting Started
Well, now that you've followed Burning the BCCD to CD and have your very own version of the BCCD, how do you boot the thing up? Below is a brief tutorial to help you get started.
Understanding the motivation of the BCCD
The zeroth step that you need to understand is one of pedagogy. The BCCD image was put together for supporting high-performance computing education. Therefore you may find some configuration steps not automated for educational sake. If you would like a quicker, more configuration-specific way to boot up the BCCD, check out the new BCCD Bootup Modes.
To the right is the initial BCCD splash screen, which is the first thing you should see booting from the CD. Pressing F1 will display the current screen. Pressing F2 through F4 will give you different advanced bootup modes. For the sake of simplicity we won't discuss any of them in this tutorial, but instead you can learn about them in BCCD Bootup Modes. Note that networking configuration is for now relegated to the startup process.
If you don't do anything for 10 seconds, the BCCD will boot with the default options (automode), or you can just hit Enter to boot without anything special.
At this point, a lot should be scrolling past on the screen. The BCCD takes care of a lot of complex configurations without you needing to, so you don't need to worry about most of it. As long as you see at least one Tux in the upper left hand corner, you should be good. If there's an error at some point, you'll know it from the output. Otherwise, just sit tight and wait for when it needs your input again.
The next chance for user input will be when the system waits for the user to set the password for the default user bccd. You will be prompted for the same password twice before the system continues. This password can be anything - even empty. Of course, if it's empty, don't expect to be able to SSH into it! (This actually makes a blank password more secure than any other password in some respects.)
If this is the first node in the cluster, you will see a question or two concerning network interfaces. The most common questions are No DHCP for eth0, skip? or eth0 has IP address aaa.bbb.ccc.ddd from OTHER. Take this address? In each case, you are being informed that this node did not get a response from a BCCD headnode already on the network. Answering "Yes" to either question will load default configurations ideal for most networks.
An alternative question might be Choose NIC to have BCCD network. You'll only see this if your machine has more than one network interface. This is to determine which one will be used to communicate with the other nodes and which will be used to communicate with the rest of the world. Most of the time the first option is sufficient.
After setting up the network and waiting for the system to finish booting, the system will proceed to boot, and will automatically log you into an graphical session. For many things, you will never have to supply a password. If you are prompted for a password, use the BCCD user password you supplied during boot-up, or "letmein" if you need to go to root (admin).
The public key broadcast
Many of the software packages -- MPI programs in particular -- require certain abilities of the environment. One of these is the ability to execute certain commands on remote machines without requiring the user to input a password. These commands relate to the creation of processes, the administration of cluster-supporting daemons, etc.. The BCCD fosters this ability via ssh key pairs. When the system boots up, ssh key pairs are generated randomly for the host computer and for the default user, bccd. The local bccd user can leverage the corresponding private key (which is not disclosed) to execute commands and gain access to the remote machine. Hosts booted with the BCCD on the same network can be located and brought together into a single computational environment.
During the system boot process, among the many daemons started are bccd-allowall and pkbast. In the latest version of the BCCD, the user will rarely need to worry about these processes. This is largely just an informational section.
The pkbcast program is a simple heartbeat daemon used to announce the presence of a node on the network. When it receives an announcement from another node, a cookie is placed in the filesystem for that node. bccd-allowall uses those cookies as the list of nodes from which to receive SSH keys. After fetching the public SSH key from a node on the network, bccd-allowall puts it in a place recognized by SSH to allow users on other nodes access to your node. As mentioned above, this is required in order to foster the use of MPI and other clustering technologies.
Generating a hosts file
With the approach above, we get a list of the machines on the network running the BCCD. Many of the parallel programing and cluster computing technologies -- MPI especially -- require a specially formatted list of nodes. You can generate a new version of this list by running this command at any time:
This creates a file in your home directory, machines-openmpi, that contains the proper node list formatting for the MPI implementation that you have loaded. If OpenMPI were loaded, an example machines file could look like this:
node000.bccd.net slots=2 node009.bccd.net slots=2 node010.bccd.net slots=2 node011.bccd.net slots=2
You can review what the contents of this file are at any time by doing:
- cat ~/machines-openmpi
bccd-snarfhosts takes a number of options:
- -v - Print the contents of the machine file when snarfhosts is run
- -f <path> - Use an alternate machine file location
- -m <mpi> - Use an alternate MPI implementation without resorting to using modules
- -s <normal-sort> - Use normal sort, placing head node first, rather than the default of placing the head node last