Beowulf technology, as pioneered by the Beowulf Project, is a method of networking a large number of commodity off the shelf PCs to work together as a single powerful computer.
The Astronomy Unit at Queen Mary, University of London was able to obtain a JREI grant to build a Beowulf cluster for heavy duty simulation in the fields of Space, Solar and Stellar research. I was involved in the construction of the cluster and was responsible for the installation and configuration of the software.
The cluster consists of a dual Pentium III Xeon server with 32 Pentium III nodes. I was also able to write a code to conduct full 3-D hybrid plasma simulations. We had not been able to do this kind of work previously due to the huge amount of memory required. A Beowulf cluster solves this problem by allowing the memory from all the nodes to be pooled. Inter-node communication is then conducted using PVM or, in our case, MPI.
Below are a few notes on the methods that I used to enable the cluster to remote boot from an operating system stored on the server. I found that much of the documentation on the internet relating so configuring Beowulfs was showing its age and it is quite likely that by this time these notes are equally outdated.
cat floppyload.bin.pre 3c905c-tpo.lzrom > /dev/fd0
mknod /dev/nfsroot b 0 255Now, the tell the kernel image to use it as root by running the following command on the kernel image (which will be a file called bzImage in a directory called something like /usr/src/linux/arch/i386/boot)
rdev bzImage /dev/nfsrootSome HOWTOs will encourage you to change some settings in the nfsroot.c header file in order to change the default NFS root directory. We don't have to worry about this because we can use the mknbi program later to change those settings. In order to remote boot from your newly compiled kernel, you need to let Etherboot know how to start it running. For this purpose, Etherboot uses the mknbi utility to convert the kernel into tagged image format. Unfortuanately, I found the mknbi utility supplied with Etherboot to be unusable, so I downloaded the version supplied with Netboot at http://www.han.de/~gero/netboot.html. You'll want the version in the mknbi-linux directory. The man pages supplied with mknbi were out of date, so I had to find the command line options by looking at the source code. In our case, I used the following command on a kernel image called bzImage with an NFS root directory called /nfsroot. The tagged image file is called kernel:
mknbi --root-dir=/nfsroot bzImage kernelI also created an image file called kernel.install for installation purposes. This starts with a root directory of /nfsroot/install.
mknbi --root-dir=/nfsroot/install bzImage kernel.install
sfdisk -d /dev/hda > hda.outIn order to configure a virgin node using this information, I used a bootstrap installation script, listed here. The script uses sfdisk to partition the local hard disk. It creates two ext2 and six swap file systems. Finally, it copies over the node specific system files. I ran it from /nfsroot/install/etc/rc.d/rc4.d/S99local. You'll also need to set the default runlevel to 4 in /nfsroot/install/etc/inittab. The reason I used a runlevel of 4 is that I really don't want this script to be run accidentally (and runlevel 4 is unused on RedHat systems).