EGG Host Site Setup
This is a brief and very general discussion of the installation and operation of the egg software, and it provides a few Unix/Linux commands, needed when we had only Linux software.
For clarity, I‘ll type computer commands inside quotes; invoke the command by typing it without the quotes and hitting enter. In a Linux terminal window, retrieve recent commands with the cursor up arrow and edit them by backspacing. If you encounter problems, take good notes on what happened so we can do efficient troubleshooting. For immediate help, email the Project director.
Installation on Linux
The GCP software should be installed in its own subdirectory within your primary directory, usually in the /home directory tree. We will assume you have made an egg directory called /home/yourdir/egg and installed the software there. Go there by typing
ls for a simple listing of files or
ls -al for a more informative list with dates, sizes, and more. The eggsh executable and the .eggrc configuration file should be in the listing, and the eggsh listing should indicate it is executable. When the system is running, the eggsh program will create subdirectories for data storage, using the year and month for directory name.
Make sure the time on your computer is accurate before starting other things. The hardware (CMOS) clock should be set to GMT (or UTC) time, and you can check this time by typing
date -u. The local time is given if you simply type
date. If you are root (become root using the command
su), you can set the time with the command:
date -s "hh:mm:ss"
(note the quotes around the time.) The date command can be used to set the whole date if necessary. Use the same format as the you see when invoking the date command, but put it in quotes. Do this as accurately as you can, by getting a telephone time or other service to synchronize to. If the UTC time is off, you can set it correctly after you have set the local time accurately, by typing
Unfortunately, PC clocks lose or gain amazing amounts of time, so you must automate the time synchronization. How to do that is described later in the section on Keeping Correct Time.
There are two parts:
- the eggsh program to read, store, and transmit data
The program that records, archives, and sends data is called
eggshand must be executable, that is, it must have appropriate permissions, which will show as
xin the long listing. This is the default when you download the files from the GCP website.
- the .eggrc configuration file
a configuration file used by the eggsh program and called
.eggrc— notice the leading
.or dot. The dot is part of the filename, and makes it a hidden file, which can only be seen in a directory listing with a different switch
ls -al.This configuration file contains the information to specify the egg‘s name, its ID number, its IP address, its basket (the server where it will send data) and its communication parameters. This information is near the end of the file in uncommented lines (no leading #).
Both the program and configuration file should be installed in the
You can edit the configuration file using the
vi editor, or a more user-friendly editor called
joe. For the latter, the command would be
for a help screen with commands. Here is a sample of the informational lines in the .eggrc:
EGG egg.name.loc 172 18.104.22.168 noosphere PERM 1 BASKET noosphere 22.214.171.124 PROTOCOL 10 10 30 200 REG PEAR 0 9600
The first line identifies your EGG by name, ID, and IP address. It says the server is noosphere and the connection is permanent and attempts to communicate data occur at 1-minute intervals. You will need to edit the file to put in your egg‘s actual name, ID, and IP address. The second line gives the server name and IP address. Line three specifies the structure of the data packets that will be sent to the server, and the last line shows the type of REG device, which COM port it is connected to, and its transmission speed. You may need to edit the COM port designation. The zero in the sample means COM1, a 1 would specify COM2. (In Unix/Linux the first COM port is ttyS0 and the second one is ttyS1.) The long version of the .eggrc has explanations and more information in comments.
Keeping correct time
The eggs must all be synchronized within a small range, and it is possible to make this within one second using programs that get correct time from
timeservers and keep your local clock synchronized by making small adjustments. Begin by setting your CMOS (hardware) clock to UTC (also known as GMT) as indicated earlier.
The xntpd program is the preferred way to set the time, and it must be configured in the setup. It is not installed by default is some Linux distributions, so you may have to add it to your system. If this works correctly, you will need only check to be sure the time is set correctly if you reboot. Check the time occasionally by looking at the output of the eggsh program. If it appears to be drifting by more than a second or two, let me know, and we will try to correct the situation.
The xntpd configuration files require specification of timeservers. You can use the ones specified in the following, but you may prefer to use timeservers closer to home. This configuration information for xntpd must be available in /etc/ntp.conf.
server www.global-mind.org server www.leyline.org driftfile /etc/ntp.drift
The driftfile should be created as an empty file; it will become the place where adjustment coefficients are written.
Useful Linux terminal commands
mkdir <name> (makes a new directory called "name") cd <name> (change directory to "name"; cd (without argument) goes to home directory (e.g. /home/yourusername) mount /dos_a (or /mnt/dos_a) (allows reading files from floppy disk) umount /dos_a (unmounts floppy) ls (lists files and subdirectories) ls -l (long listing, gives much information) ls -al (long listing, including hidden files) more (displays files one screen at a time) space-bar (to go on) q (to quit) ctrl-c (stops program and returns to prompt) cp <from> <to> (copies files) mv <from> <to> (moves or renames files) locate <file or command name> (where to find files) df (reports disk usage) ps aux |grep eggsh (gives the process number of eggsh program) su (become another user or root, password req'd) vi or joe (text editors: vi is arcane, but everywhere; joe is simpler, can be used with a little experimentation)
Documentation, man pages, info
If you want terse but useful information on commands, the
man pages (manual pages) are excellent. Just type
Be forewarned that this is very condensed reading. There are also so-called info pages that have broader information with hyperlinks; just type
info. For larger-scale questions on getting things working, there is a collection of excellent documentation in
(An older version of the instructions above with information about dial up connections, which we no longer use.)
A low-tech way to do the job is using dialup scripts which specify how the information should be routed, and provide necessary parameters. If you use these, they should be installed in the /home/yourdir/egg directory. One is called pppscript, and you probably will not need to edit it. The other is called pppchat, and it has an example of a phone number that will be dialed if pppscript is invoked (it will be automatically dialed at times we can specify.) The pppchat also has the login information; these are the difficult items as the format of the login negotiation is not the same everywhere, so you must learn exactly what is required at your ISP. To actually use the pppscript file, make it executable by typing
chmod a+x pppscript
# The "pppscript", which you will not need to modify: #!/bin/csh if ("$1" == "up") then echo "Bringing net up" /usr/sbin/pppd /dev/cua1 115200 connect '/usr/sbin/chat -v -f /egg/pppchat' crtscts modem defaultroute noipdefault # Wait for connection success set timer = 120 while ($timer > 0) if (-e "/var/run/ppp0.pid") exit 0 sleep 1 @ timer = $timer - 1 end echo "Couldn't get connected!" exit -1 endif if ("$1" == "down") then echo "Bringing net down" if (! -e "/var/run/ppp0.pid") exit 0 set pid = `cat /var/run/ppp0.pid` kill $pid exit 0 endif echo "Usage: pppscript up down" exit 1
# The CHAT script: ABORT BUSY ABORT "NO CARRIER" '' ATZ OK ATQ0V1EX4T # following ####### is local telephone number of ISP OK ATDT####### TIMEOUT 60 CONNECT '' # following is a possible style of ISP negotiation; there is usually # a "challenge" and a "response" or an expect/reply pair, but varies # by ISP so get help from your ISP. sername <username> assword ------ # next line starts ppp on a computer named comserv at Princeton comserv 'ppp roger.remote.princeton.edu' assword ------