This is an early beta version of an networking file system for MiNT.

Copyright 1993, 1994 by Ulrich Khn. All rights reserved.


DISCLAIMER:
===========
THIS PROGRAM COMES WITH ABSOLUTELY NO WARRANTY, NOT
EVEN THE IMPLIED WARRANTIES OF MERCHANTIBILITY OR
FITNESS FOR A PARTICULAR PURPOSE. USE AT YOUR OWN
RISK.

See also the file COPYING for further details.



EXPLANATION:
============
A network file system allows computers to access file that are physically
located on another computer transparently. Therefor the must be a means of
data transport between these two computers (see above for the current 
situation). The computer accessing the remote file is called the client, 
the computer being physically the owner of that file is the server.
On the server, there must be a service program running, that satisfies the
access requests of the client. This program is called nfs daemon, short
named nfsd. Because normally the client does not know which files can be
accessed by it, it must be told so; this is called mounting of a remote
directory or file and done with a program called mount on the client.
On the server side there must run another service program, the mount daemon
called mountd, which serves these mount requests by clients. 
So: without nfsd no file access, without mountd no mounts to access files.

Another point is that both server and client can be the same computer!
Then the daemon programs run on that machine, and also the mount program is
executed there. This is the easiest way to test this package.



INSTALLATION:
=============
There are a few things to do (better try first server and client on the
same computer) :
- (both server and client) make sure to have Kay Roemer's mint-net (a socket
  device) installed correctly. Version >= 0.30
  (eMail: roemer@hera.rbi.informatik.uni-frankfurt.de)
  This includes:
    - make sure to have a directory u:\etc  (make a symbolic link to 
      your preferred place in mint.cnf)
	  - place the following files in u:\etc
	      hostname, hosts, networks, services, resolv.conf
    - name your host by writing a name into u:\etc\hostname
- (client) copy the nfs.xfs (the client filesystem driver) to a place where
  MiNT can find it at boot time (that is \mint or \multitos on your boot drive)
- (server) install the portmapper daemon from the sun rpc package. Place 
  the rpc file into u:\etc
	The portmapper is essential as both the mount daemon and the mount 
	command rely on that, but as a temporary hack, they can also work without
	the portmapper.
- (server) create a file u:\etc\xtab containing all the exported directories
  or files. This file is necessary for both nfsd and mountd (if necessary,
  rename them to nfsd.ttp and mountd.ttp). Please look into the bundled 
  example, as no further docs are availbale at the moment. (or look into 
  some unix adm doc)
- reboot


Then start the mountd and the nfsd. Now the system is ready to do some
nfs mounts. Here an example: (suppose \etc\xtab contains a line
\f\source ....)
mount hostname:\f\source \nfs\source
where hostname is the name of your host. (all operations done while drive 
u: is the current. It should be, as mount treats the ':' as separator 
betweeen hostname and directory name)
Another point is that if you are trying to run server and client stuff on
the same machine, the hostname for the mount command must be 'localhost'
or 'loopback' (there should be such a line in \etc\hosts), as the resolver
otherwise does not find the correct host (this behavior might depend on the
version of the mint-net your are using, or on your configuration)
After this operation you should have a directory source in u:\nfs which has
all the contents of the original \f\source

All this can be done within mint.cnf (or better use a shell script which
is started from mint.cnf -- look at the example rc.mup and mint.cnf)

A new feature of the mountd and nfsd is that they can be started by
the inetd and terminate themselfes in this case after a short time, so
there is no need to hold the all the time running in memory. Just install
the inetd and make sure that the mount and nfs lines in u:\etc\inetd.conf
are correct, that means they are active and the paths are correct.



COMPILATION:
============
If you want to rebuild the binaries by yourself, you have first to edit
the paths in the Makevars file, especially the BUILDDIR variable.
Then simply type make all or make install and wait...



BUGS:
=====
- the nfsd is not able to find a file on a TOSFS (in the state of MiNT 
  <= 1.10) if it has only its nfs handle and no internal information. So 
  it does not work properly on such a file system, sorry. But it works on
  a patched TOSFS with Julian Reschke's crc patch applied and enabled.
  This patch is included in MiNT 1.12 (get this anyway, as binaries are
  available!), but it seems to be disabled by default (take a look into 
  tosfs.c in the MiNT source).
- no caching of results for nonidempotent requests. So if the anser of a
  file remove request gets lost and the client resends this request, it 
  will fail because the file is already gone.
- no authentifying on the server side. That means that any client can
  mount and access files that are exported.
- no exportfs command, so you have to edit your \etc\xtab yourself and
  cannot use the \etc\exports file.

- several mount options are still not supported by the XFS, such as 
  hard mounts



MY CONFIGURATION:
=================
I am running this system on a TT030 with 4/4 Mb ram, TOS 3.06, a patched 
MiNT 1.11beta, using both minixfs and the patched tosfs, and it seems to be 
quite stable now, but who knows?


THANKS:
=======
Many thanks go to Kay Roemer for his great socket device, which made this
nfs possible. He also constantly supplied me with critics, suggestions,
ideas and bug fixes.


CONTACT ADDRESS:
================
If you have questions, bug reports, suggestions, etc. please contact 
me under:

kuehn@math.uni-muenster.de  (Ulrich Kuehn)                 preferred

Ulrich Kuehn, Geibelstr.9, 48161 Muenster, Germany  


Have fun
Ulrich
