GAHnix is a modified version of Trinux, tailored for the Distributed Computing community, allowing users to build cheap systems
that do not require hard drives. The boot floppy contains the 2.2.19 Linux kernel, minimal software and configuration
files. The majority of the Linux system is stored on a central HTTP server and loaded across the network
at boot time. Nodes may mount network drives using NFS (Network File System). GAHnix includes all library modules (glibc2.1)
as required for many of the popular distributed computing projects. User configurable boot scripts allow for the automated
starting of your required DC client, including the Tuxtime client.
GAHnix is provided in the form of raw disk image, that must be copied to a 1.44MB 3.5" floppy disk.
This boot disk load's the linux kernel, mount's the initrd (initial ramdisk), create additional ramdisks, configure's networking, and load's additional packages from a central HTTP server (Apache).
GAHnix requires a central Linux server providing NFS shares, HTTP server for GAHnix packages and also optionally functions as a gateway for access to the Internet. Any number of GAHnix nodes may be configured and connected to the central server.
User access to a GAHnix node may be using a directly connected monitor and keyboard, or via a remote SSH login. GAHnix does not provide user management, all logins are as root.
News |
Features |
Requirements |
Links |
Tested DC Clients |
Download |
Installation |
Using GAHnix |
Copyright
Development News
Development News |
|
Sat 13 September 2003
|
Completed ECC2-109 tests, no problems found, stats where registered on the project stats.
|
|
Fri 20 September 2002
|
Completed testing of the Seventeen or Bust Linux client (0.92). Tested on Pentium I-150, Pentium II-450, AMD K7.
No problems found, the client runs well.
|
|
Sun 8 September 2002
|
Documentation updates:- Added minimum memory requirements to the DC client information table, added list of supported network cards.
Added more detail to the "Using GAHnix" section.
|
|
Sun 25 August 2002
|
Released the first Alpha of GAHnix, version 0.0.1 [Alpha].
|
|
Mon 12 August 2002
|
Completed testing of the Distributed Folding client, using a Pentium III 450.
No problems found, the client runs well. Note, in order to run this client, the library libncurses.so.4 is required, this dependancy was satisfied by making a symbolic link to libncurses.so.5 and an NFS mount for /tmp is required, since the client requires a larger /tmp partition than is provided in the RAM filesystem.
|
|
Sun 21 July 2002
|
Attempted to run D2OL using the controller:cli command line option (non-GUI console controller).
D2OL tests abandoned as the client runs in a Java VM and therefore requires the Java libraries to run.
|
|
Sat 20 July 2002
|
Both the SSH daemon and SSH client have been tested using DSL keys and both function well.
Public keys must be created on a seprate system using: ssh-keygen -d (to create protocol 2.0 DSL keys).
|
|
Thur 18 July 2002
|
Completed ECCp-109 tests, no problems found, stats where registered on the project stats.
Awaiting a copy of the D2OL client to be delivered on CD (30Mb download). I beleive this client may run without the
Java VM (as a console client) so tests should proceed in several days.
|
|
Wed 17 July 2002
|
Completed RC5 tests, discovered that the client should be configured to point at my Squid HTTP proxy, on port 3128.
The client was configured to only work on RC5 packets. Otherwise, the default client configuration works ok.
Distributed Folding - I discovered that the client minimum requirement is a Pentium II processor,
client to be re-tested at a later date on a suitable platform.
|
|
Tue 16 July 2002
|
Completed Seti@Home tests, prior client issues where due to tests on a Pentium I with the i686 client :rolleyes:.
Results where uploaded to the project site and where registered on the project stats.
Ubero tests abandoned as the client runs in a Java VM and therefore requires a GUI to run.
|
|
Sun 14 July 2002
|
Completed Gimps (Prime 95) tests, no problems found, stats where registered on the project stats.
Completed Genome@Home (FAH3.1) and Folding@Home tests,
no problems found, stats where registered on the project stats.
|
|
Sat 13 July 2002
|
Completed Genome@Home (Classic) tests. The older 0.99 client compiled for glibc2.0 is required. otherwise,
no problems found, stats where registered on the project stats.
Completed Tuxtime (0.2.0) tests, no problems found.
Distributed Folding tests failed, reason to be investigated.
|
|
Mon 8 July 2002 type="disc"
|
Completed setup of Network package loading and Network File System (NFS). Server exports must be with the option
"no_root_squash". SSH packages are loaded and installed, yet to configure and test SSH support. There is and shall
never be any support of telnet.
|
|
Sat 6 July 2002
|
Completed build of boot floppy. NFS and Network package loading are yet to be sorted.
|
Features
- RAM disk operation
- Boot floppy (initital system)
- No hard drive needed
- Network loading of package modules
- Kernel 2.2.19
- glibc 2.1
- SSH
- NFS
- bash
- TuxTime client
Requirements
GAHnix Central Server
- Linux Installation
- Local Area Network installed and running
- Apache HTTP server installed and running
- Network File System (NFS) installed and running
- OpenSSH installed and configured
GAHnix Node
- Intel 486 or higher
- 32MB RAM (64MB or more preffered, see the client table)
- 3.5" 1.44MB Floppy Drive
- 10/100Mbps Ethernet Network Card:-
- 3Com Etherlink 509 series (ISA)
- 3Com Etherlink 590/905 series (PCI)
- Realtek 8139 (PCI)
- NE2000/Realtek 8129 (PCI)
- NE2000 (ISA)A (Most old ISA NIC's)
- AMD PCNet 32
- Intel EtherExpress Pro 10/100
- SMC EtherPower II
- DEC Tulip
Links to Related Pages
Tested Distributed Computing Clients
Tested Distributed Computing Clients |
| DC Project |
Status |
Results |
Comments |
Memory (MB) |
| Tuxtime 0.2.0 |
Complete |
OK |
No issues, client runs well using cron. |
32 |
| Genome@Home (Classic) |
Complete |
OK |
Requires client 0.99 compiled for glibc2.0 |
64 |
| Genome@Home (FAH3.1) |
Complete |
OK |
No issues, client runs well. |
64 |
| Folding@Home (FAH3.1) |
Complete |
OK |
No issues, client runs well. |
64 |
| Distributed Folding |
Complete |
OK |
No issues, client runs well. Large /tmp required. |
128 |
| Seti@Home |
Complete |
OK |
No issues, client runs well. |
64 |
| Distributed.net (RC5/OGR) |
Complete |
OK |
No issues, client runs well. |
32 |
| Gimps (Prime 95) |
Complete |
OK |
No issues, client runs well. |
32 |
| ECCp-109 |
Complete |
OK |
No issues, client runs well. |
32 |
| ECC2-109 |
Complete |
OK |
No issues, client runs well. |
32 |
| Seventeen or Bust |
Complete |
OK |
No issues, client runs well. |
32 |
| Ubero |
Complete |
Failed |
Unable to support, client requires Java VM & GUI. |
- |
| D2OL (Sengent) |
Complete |
Failed |
Unable to support, client requires Java VM libraries. |
- |
| TSC |
Complete |
Failed |
Unable to support, client requires Java VM libraries. |
- |
Download
Below is a list of all files of the project. Download both files to your local Linux machine as per the installation instructions.
| File |
Arch. |
Date |
Size |
Description |
| gahnix.img |
i486 |
Aug 25 13:32 |
1474560 |
GAHnix Boot Image |
| gahnix_modules.tgz |
i486 |
Aug 25 12:54 |
3350308 |
GAHnix Module Tarball |
Installation
Overview
The installation process consists of several stages, follow each stage in logical order. Installation involves
setting up the following equiempent and software, note that the Central Server and Workstation may be the same machine:
- A Central Linux Server
- A Linux Workstation
- Any number of GAHnix Nodes
Preparing the Central Server
This part of the installation assumes the default Apache installation, with your public HTML at /var/www/html/
Refer to the Apache HOWTO for a more detailed guide to installing and configuring Apache.
Refer to the NFS HOWTO for a more detailed guide on installing and configring NFS.
The following steps are performed on the central server as root:
- Setting up the GAHnix modules under Apache, to be used by all GAHnix nodes
- Make a new directory called: /var/www/html/gahnix
- Download the GAHnix module tarball into the directory /var/www/html/gahnix/
- Unpack the tarball: tar -zxvf gahnix_modules.tgz
- Test the Apache server by pointing your browser to: http://localhost/gahnix
You should see a filelist, listing the 21 packages contained in /var/www/html/gahnix
- Setting up NFS shares for each GAHnix node
- Create a new directory for each GAHnix node. ie. /exports/cruncher1
- Create a temporary directory for the GAHnix node. ie. /exports/cruncher1/tmp
- Add the new share to your NFS configuration, by editing /etc/exports, for example:
/exports/cruncher1 (rw,no_root_squash,insecure)
- Repeat steps i to iii for each GAHnix node you wish to add to the system
- Restart the NFS service: /etc/init.d/nfs restart
- Setting up the application software for use by each GAHnix node. Installing the Distributed Folding client as an example:
- Download and install the Distributed Folding client (gcc version), install the software in the directory: /exports/cruncher1/distribfold
- Ensure that the software binary is exectuable. If not, set the executable bit: chmod +x program_name
Preparing the Linux Workstation
To prepare GAHnix for remote connections using SSH, you must first setup an SSH keypair.
The private key is stored on your Linux SSH workstation, while the public key is copied to the GAHnix boot floppy.
On the Linux SSH workstation, open a terminal window and as root do the following:
- Creating a public/private SSH key pair (you probably want to do this once only)
- Generate the SSH keys: ssh-keygen -d
The private key is stored on your Linux SSH workstation (in /root/.ssh/id_dsa),
the public key is created as /root/.ssh/id_dsa.pub and is later copied to the GAHnix boot disk, once the boot disk has been created (see the next section titled "Preparing the GAHnix Nodes").
- Adding the hostname of each GAHnix node to /etc/hosts
- Add the IP/hostname of the GAHnix node to /etc/hosts, for example:
192.168.0.10 cruncher1
Preparing the GAHnix Nodes
The following installation process is performed on the Linux workstation. When editing GAHnix configuration files,
ensure that each line containing text is terminated by a carriage return.
The following configuration files are pre-configured, you must modify them to suit your application.
- Building a GAHnix boot floppy for each node
- Download the GAHnix floppy image
- Insert a blank 1.44MB 3.5" floppy disk into the floppy drive (fd0).
- Open a terminal window, change to the directory containing gahnix.img
- Type: dd if=gahnix.img of=/dev/fd0
(Substitute /dev/fd0 with your floppy device if it is not fd0)
- Configuring the GAHnix boot floppy
- Mount the boot floppy on the installation workstation using: mount -t vfat /dev/fd0 /mnt/floppy
- Edit /mnt/floppy/tux/config/eth0 and define the IP address and network mask for the GAHnix node, for example:
192.168.0.10 255.255.255.0
- Edit /mnt/floppy/tux/config/gateway and define the IP address of the gateway machine or router, used to access the internet, for example:
192.168.0.1
- Edit /mnt/floppy/tux/config/dns and define the IP address of the DNS machine.
This would be typically be your gateway machine (assuming that it runs as a caching name server) or it may be the IP address of your ISP's DNS machine. For example:
192.168.0.1
- Edit /mnt/floppy/tux/config/server and define the IP adress and path of your central HTTP server, for example:
http://192.168.0.1/gahnix/
- Edit /mnt/floppy/tux/config/hostname and define the host name for the GAHnix node, for example
cruncher1
- Edit /mnt/floppy/tux/init/last and setup the application NFS mount for this node, for example:
mount -o nolock 192.168.0.1:/exports/cruncher1 /mnt
- And also setup the temporary directory NFS mount for this node, for example:
mount -o nolock 192.168.0.1:/exports/cruncher1/tmp /tmp
- Unmount the floppy drive: umount /mnt/floppy
- Loading the SSH public key onto each GAHnix boot floppy
To prepare GAHnix for remote connections using SSH, you must have first generated a SSH keypair,
as covered in the previous section titled "Preparing the Linux Workstation".
We now copy the public key to the GAHnix boot disk, open a terminal window on the SSH Workstation and as root do the following:
- Mount the boot floppy on the installation workstation using: mount -t vfat /dev/fd0 /mnt/floppy
- Copy the public key to the GAHnix boot floppy: cp /root/.ssh/id_dsa.pub /mnt/floppy/tux/pkg/opensshd/keys
- Unmount the floppy drive: umount /mnt/floppy
Testing a GAHnix Node
- Insert the GAHnix boot floppy into a suitable node machine
- Ensure the machine is connected to the central server
- Power up the GAHnix node
- The GAHnix system should now boot. Ensure that the modules are loaded fromt he central server, this can be confirmed at boot time by observing the bootup messages
- When the system is ready, hit you should be greeted with a bash prompt
- Check that the NFS mounts are mounted: mount
You should see the following:
root@cruncher1> mount
192.168.0.1:/exports/cruncher1 on /mnt type nfs (rw,nolock,addr=192.168.0.1)
192.168.0.1:/exports/cruncher1/tmp on /tmp type nfs (rw,nolock,addr=192.168.0.1)
- Check the SSH login, as root on the SSH workstation, type: ssh -2 -l root cruncher1
You should be greeted with an SSH session from cruncher1 like so:
**************************************
* Welcome to GAHnix! *
* *
* Ctl-D to close this SSH session. *
**************************************
root@cruncher1
Using GAHnix
General
GAHnix does not use login authorisation, and there is one one user - root. A total of 4 consoles are provided,
each may be accessed with Alt-F1 to Alt-F4. Most of the standard Linux command line utilities are available such as
ls, cd, cp, mv, rm, ps, grep, vi, more, chmod, chown, grep, cat, cut, date, dd, mount, umount, ln, pwd, tail, head, telnet, sort, tar etc.
Accessing a GAHnix node using SSH is quite straight forward. From a Linux or Windows machine, type: ssh -2 -l root node_name where 'node_name' is the host name of the GAHnix node.
It is important that SSH seesions are closed by pressing Ctl-D and not by closing the X-Windows window, otherwise the SSH daemon on the GAHnix node will not be killed.
GAHnix should run flawlessly and not require regular maintenance. Should you wish to shutdown or reboot a GAHnix node, use
poweroff or reboot.
Configuration
The GAHnix configuration files are stored in /etc/tux/config. You may edit these files using
vi, however as the GAHnix
filesystem resides in RAM disk, to keep any changes over a re-boot, you must save the configuration to disk using
savecfg. Savecfg is a Linux bash script that writes the /etc/tux configuration directories back to the floppy drive.
The NFS mounts are mounted into /mnt by default, as determined by the boot-time script in /etc/tux/init/last.
These mounts may be modified as required. You can modify configuration files in /etc/tux at any time, just be sure to save the
configuration to disk using
savecfg. Alternately, the floppy disk may be edited using a DOS or Windows machine, simply load
the disk into a DOS drive and edit the files in A:\tux. This is the same as the /etc/tux directory under Linux.
You may set application's to run at startup by adding them to
/etc/tux/init/last, but ensure you add them to the end
of the file, after the remote NFS mounts have been mounted. For example, assuming you have the rc5 client mounted in
/mnt/dnet your
/etc/tux/init/last would look something like this:
#
# Here is where you can add any last-minute commands/scripts
# you want executed before consoles' are opened up
#
echo "Tweaking libraries"
ln -s /usr/lib/libncurses.so.5 /lib/libncurses.so.4
ldconfig
echo "Executing [last]"
echo "Mounting NFS mount point in /mnt"
mount -o nolock 192.168.0.1:/exports/kochanski /mnt
echo "Mounting NFS mount point in /tmp"
mount -o nolock 192.168.0.1:/exports/kochanski/tmp /tmp
cd /mnt/dnet
./dnetc
The GAHnix boot floppy may be mounted under GAHnix, using
fmount, this will mount the floppy into /floppy.
To un-mount the floppy, use
fumount.
Config file summary
| Config File |
Description |
Example |
| /etc/tux/config/hostname |
GAHnix node hostname |
cruncher1 |
| /etc/tux/config/eth0 |
GAHnix node IP address/network mask |
192.168.0.10 255.255.255.0 |
| /etc/tux/config/gateway |
The IP address of your Internet Gateway/Router |
192.168.0.1 |
| /etc/tux/config/dns |
The IP address of your DNS server |
192.168.0.1 |
| /etc/tux/config/server |
The URL to your HTTP server (GAHnix packages) |
http://192.168.0.1/gahnix/ |
| /etc/tux/init/last |
Boot time script, executed once the system is up. Also contains the NFS mount commands. |
(Add your program' to be run at boot time here)
mount -o nolock 192.168.0.1:/exports/cruncher1 /mnt |
Backing-up boot floppies
You can back-up a GAHnix boot floppy to a Linux workstation, allowing you to make new boot disks with your configuration settings.
Lets say you have a GAHnix boot floppy that is configured correctly, and you wish to back-up this floppy to your Linux workstation
and later use this backup to make new GAHnix boot floppies, simply follow these steps:-
- Insert the GAHnix boot floppy disk into the floppy drive (fd0) of the Linux workstation.
- Open a terminal window, change to the directory that you wish to stoore your backup in.
- Type: dd if=/dev/fd0 of=my_gahnix_boot_disk.img
(Substitute /dev/fd0 with your floppy device if it is not fd0, my_gahnix_boot_disk.img may be any name you choose.)
This will make a disk-image of the boot floppy, called
my_gahnix_boot_disk.img on your Linux workstation. You may make new
GAHnix boot floppies from this image, like so:-
- Insert a blank 1.44MB 3.5" floppy disk into the floppy drive (fd0).
- Open a terminal window, change to the directory containing my_gahnix_boot_disk.img
- Type: dd if=my_gahnix_boot_disk.img of=/dev/fd0
(Substitute /dev/fd0 with your floppy device if it is not fd0)
This method is very convinient, as your GAHnix boot disk will all generally have the same
dns, server & gateway settings.
Only the
eth0 & hostname files require modifying from one node to the the next.
Cron
GAHnix includes a cron daemon. The crontab is configured at boot-time using /etc/tux/config/crontab.
You may add your own cron tasks by adding them to this configuration file, but remember to save your configuration using
savecfg.
When adding new cron tasks to a running GAHnix system, you must add the task to both the running crontab in
/var/spool/cron/crontabs/root (alternately you may edit the running crontab using
crontab -e) as well as modifying
the boot-time crontab as outlined in the previous paragraph above. Failure to modify /etc/tux/config/crontab will result in the loss
of crontab modifications over a reboot.
TuxTime
GAHnix includes the version 0.2.0 TuxTime client in
/bin/tuxtime.bin. You may add the TuxTime client to your
crontab by adding the following to
/etc/tux/config/crontab (and also to
/var/spool/cron/crontab/root if you dont wish
to re-boot the system):
0 * * * * tuxtime.bin username password 12345 > /dev/null
Where:
0 * * * * runs the TuxTime client once per hour.
username is your TuxTime account name.
password is your account password.
12345 is the TuxTime ID of the GAHnix computer.
CopyRight Information
GAHnix
A small compact Linux distribution based on Trinux, for disk-less network booting nodes.
Copyright (c) 2001, 2002 by Wayne Osborn
aka dna of Ninja Micros/Team 3DHQ/Team Picard
Released under the LMAO Public License
GAHnix is free software. This means that it's yours to try, for free non-commercial use, forever.
If you enjoy the product, please send in a donation to help support further development and web-server costs.