As you can probably tell from the three-year gap between releases, this code is very, very dead. I don’t use an Amiga any more: I managed to build this under UAE, but not to test it. I’ve left the previous release up as well, just in case. I’ve no idea if anyone’s still using it, or if there are any remaining bugs, but if anyone’s still interested, you’re more than welcome to take over maintenance: the latest source is up for download, so let me know and I’ll put a link here.
Joseph Walton, 14th October 2003
Sun’s NFS (rfc1094) is a protocol for sharing hierarchical filing systems over (typically) TCP/IP networks. Despite being widely supported on other platforms, the only server for the Amiga is incorrigibly commercial.
Like all protocols, NFS becomes interesting only when it becomes ubiquitous. I’ve got an Amiga and a PC sitting on my desk right now, and I could only easily share files in one direction. It looked like a fairly concise system, so I starting programming and I soon had a working server.
Joseph Walton [mail] [web], a graduate who’s managed to leave the Amiga behind, only to fall into Linux and Java.
Yes, it still has known “quirks” (albeit rather fewer now). But if you want to try it out, binary and source are available. Caveat downloador.
I’m developing under DiceC
and the Miami SDK. Stefan Haubenthal
submitted a number of patches to get it to compile under SAS with the AmiTCP
SDK. I’d be particularly interested in what GCC says. If you get it to work in
a different environment, please let me know (and send me any changes
you made). Make sure
portmap is running, make sure it’s in a
directory it can write to, and make sure you understand what your
nfsd.config means. Logging is minimal unless the
VERBOSE argument is passed.
Firstly, fully compliant NFS over FFS is impossible. However, nfsd achieves a first approximation. It works for my purposes, so if there’s something missing - tell me about it! Better still, fix it yourself and send me the code. A couple of things I’d specifically like to request help with:
I’m intentionally not considering NFS v3 (rfc1813). Once of its major changes is the use of 64-bit fields throughout, and this doesn’t sit well with the current Amiga architecture and APIs. (And, to keep at the cutting edge, I’m now ignoring NFS v4 as well!)
The program is freely distributable as both binary and source. It’s GPL’d, so I’ll have to make my fortune through lucrative file server support and services.
A couple of problems people have been noticing getting this thing working:
rootbut, by default,
nobodyas a security measure. Pass the command line option
ALLOWROOTto change this behaviour.
nfsd.inode- All files dealt with over NFS need to be given a unique 32-bit value known as an
inode. Unix relies on uniqueness, and as such we must make sure never to return the same value for different files. As an inelegant solution, a persistent counter is kept in a file - this ensures that it remains unique over invocations. It should be initialised with
0x00000001, although nfsd will do this itself (with a printed warning) if
nfsd.inodeis not found on the first run.
nfsditself no longer uses excessive stack and fits comfortably into the default.
Joseph Walton, 14th October 2000
Where were you when what happened when?