$Id: INSTALL,v 1.13 2001/10/12 20:51:55 robbiew Exp $

Quick Start
-----------

1> tar xzf ltp-XXXXXXXX.tar.gz
2> cd ltp
3> make
4> ./runalltests.sh

*NOTE: The LTP assumes the existence of the nobody, bin, and daemon users and their groups.  
If these ids do not exist, certain tests will fail. The users and groups IDs should be the 
same, i.e. if user "nobody" is 99, then it's group should also be "99". The names of the 
groups are irrelevant.  


Detailed Installation
---------------------

Beyond the "Quick Start" instructions, there are only a few other things
that should be done.  The Linux Test Project build process uses a
minimalist approach.  There is a lot of room for improvement and
contributions are welcome.

1. Log in as root.

2. Untar the ltp tarball into a spare directory.  There is not a
   standard location for it yet.  We put it in out home directory
   while we're working on it.  

3. Run "make" to build everything.  

4. You can run all of the tests sequentially by using the example test
   script runalltests.sh.  The script is there just to get you started.
   See pan(1) for more information on the test driver we have provided.
   It is simple, but it can do a lot of stuff. 

   NOTE: The diskio and network tests will NOT be run by the runalltests.sh 
   script.  We chose to seperate these tests because of there required setup
   overhead. 

5. The disk i/o tests can be ran by executing the diskio.sh script.  Inorder
   for these tests to successfully operate a writable high-density 3.5" floppy
   must be in the disk drive and a CD-ROM with more than 100Mb of data must be
   in the CD-ROM drive.  The corresponding tests will fail if either disk is
   missing.

6. The network tests are executed by running the networktests.sh script. The
   network tests require some configuration for them to work correctly:

     i) First, there MUST be another test machine setup to act as the server
	to these client side tests.  This machine MUST have the LTP installed
	in the same exact location, i.e. if the client has /root/ltp, then the
	server must have /root/ltp.  This is required because certain tests
	expect to find server files in certain locations.  Make sure to compile
	the LTP on this server machine also.

    ii) Second, the server must be setup to allow the client to connect using the
	"r" commands, such as rsh.  This is done by simply creating/editing the
	".rhosts" file under /root.  Place the hostname of the client machine
	in this file to allow root to remotely connect without the use of a 
	password.

   iii) Next, certain services must be activated in order for certain tests to 
	execute.  The following services are activated via inetd/xinetd:
		rlogind
		ftpd
		telnetd
		echo (stream)
		fingerd
		rshd
	Also, because certain RPC programs are tested, the "portmapper" daemon MUST
	be started, as well as NFS server AND lock services.

    iv) Finally, before running the networktests.sh script, two variables must be set 
	within the script file.  The "RHOST" variable should be set to the hostname 
	of the server.  The "PASSWD" variable should be set to root's password on the 
	server machine.  This is neccessary for tests such as telnet01 and ftp01.       

   You can now successfully execute the networktests.sh script.
