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.
nfsd_binary_14_Oct_2000.lzx | 19257 bytes | md5:eaa8bb30eb82862573497bf61c28f00c |
nfsd_binary_2003-10-14.lzx | 25702 bytes | md5:3ad0baaae8b4d138cd54c9d58fd320ae |
nfsd_source_14_Oct_2000.lha | 78572 bytes | md5:e99de3972e8075289ebf0b0a832769a5 |
nfsd_source_2003-10-14.lha | 78834 bytes | md5:a837a1428fa40a25d017712871bf324f |
nfsd_source_2003-10-14.tar.gz | 60714 bytes | md5:20bc6875d646c449503a0183cca8f459 |
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:
root
but,
by default, root
maps to nobody
as a security
measure. Pass the command line option ALLOWROOT
to 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.inode
is not found on the first run.
nfsd
itself no longer uses excessive stack and fits comfortably into the default.
Joseph Walton, 14th October 2000
Where were you when what happened when?
FLUSHINT
patches.