SOSS(1) NAME soss Son of Stan's Server SYNOPSIS soss [-rtv] DESCRIPTION SOSS is a file server conforming to SUN Microsystems' NFS protocol version 2. It will run on IBM-PC compatibles under Microsoft MS-DOS, using any Ethernet interface supported by Clarkson University's packet drivers. Performance and reliability have been significantly enhanced over the original SOS released in 1989. The file "export.us" must exist in the default directory on the server. The format is similar to Sun NFS's "/etc/exports" as defined in exports(5), except that directories on the server side are specified in MS-DOS format, ie. ":." SOSS will parse this file to learn which filesystems on the local machine it will accept mount requests for. Up to 50 individual clients may be specified for any exported directory. SOSS requires the system clock to be set correctly. The MS-DOS timezone environment variable should be set the way it is under Unix. (E.g., for Eastern Time, use SET TZ=EST5EDT or SET TZ=EDT4; daylight savings time isn't handled correctly by the Microsoft C library linked with this version.) Note that MS-DOS does not understand dates prior to January 1, 1980. If you have a Network Time Server established on your network, you should run PC/IP SETCLOCK prior to running SOSS. Before running SOSS, configure your Ethernet interface card and the packet driver software. Using CUSTOM, set correct parameters (IP address, name and time server addresses) in NETDEV.SYS, then add the line "DEVICE=NETDEV.SYS" to CONFIG.SYS, and reboot your system. Run the appropriate packet driver, specifying software interrupt vector 0x7e; here is an example: ni5210 -n 0x7e 5 0x300 0xd000 You can then run NetWare, if desired, and then invoke SOSS. There should be a capacity for at least fifteen files to be opened at a time. SOSS caches file handles for faster access during reads. File names in filesystems mounted with SOSS are limited to eight characters, with a three character extension. Attempts to create a file with a name not matching the above restrictions will result in an error message, NFSERR_NAMETOOLONG, unless the truncation option is specified. All file names are mapped to lowercase. The owner ID of any directory or file in a SOSS filesystem will appear to be that of the user accessing it. Files have three possible modes: regular files, which are global read, write and executable, read only, which are global read and executable, and subdirectories, which are global read, write and executable. Chmod(1) may not work as expected with SOSS files, and chown(1) will not work at all. An SOSS filesystem may be mounted by mount(1). On the client system's mount command line, a filesystem is specifed by the sequence "/drive/directory." On the server side, a root directory may be exported by using the form "c:\"; a subdirectory may be exported using the form "c:\foo". The rsize and wsize parameters must be specified less than or equal to 512 bytes. An example of a typical mount command issued on a client system: # mount -f NFS,intr,rsize=512,wsize=512 dosbox:/c /usr/sos If you modify the EXPORT.US file, you should remove the INODE.DMP file before restarting the server, and unmount/remount any exported filesystems on each client. In general, if you remove INODE.DMP, you should remount the filesystems from the client side, in order to get rid of any stale file handles. One product you may wish to use in conjunction with SOSS, if you are using it to export a hard drive physically connected to the SOSS server PC, is a disk cache which keeps data blocks in extended memory. This functionality was not added to SOS itself due to the low cost of high-quality commercial products like PCKWIK. PREREQUISITES The basic hardware and software requirements for SOSS are as follows: 1. The Clarkson University packet drivers, configured for your Ethernet board. (These are available via anonymous ftp on sun.soe.clarkson.edu plus other sites which carry SOSS.) 2. A 286- or 386-based PC. (It may work with an XT.) 3. A single Ethernet card which is supported by Clarkson; this includes most popular products. 4. Another system with NFS client support (DOS, Unix, VAX/VMS, VxWorks, or whatever) and TCP/IP. 5. Some free disk space (usually well under 0.5 megabytes) on the default disk drive, for maintaining the inode list. OPTIONS -r The -r option causes all exported filesystems to be read only. -t To suppress filename-too-long errors when a client system specifies a filename longer than the eight-point-three characters allowable under DOS, use the -t (silently truncate) option. -v The -v option causes SOSS to announce successful completion of each NFS request (verbose mode). SOSS normally announces only errors and mount requests. FILES These files should exist in the default directory from which the server was started: export.us list of exported filesystems and clients. If you specify a client list, be sure you are running a domain name server and that its IP address has been provided in NETDEV.SYS. inode.dmp index node information for crash recovery. novell.id UID mapping for Novell filesystems (not supported). netdev.sys device configuration file for PC/IP, set up for your system using custom.exe. (A device entry for this file must be placed in config.sys.) BUGS AND LIMITATIONS - Portmapper and mount daemons are incomplete. See below. - The portmapper operates on datagrams. TCP requests are not supported. - There is no support for large packets (> 512 bytes). - The server crashes as soon as about 7,500 inodes are created. - NFS_RENAME cannot rename directories, and cannot move files from one directory to another. - Inodes are not recycled as files are deleted. - A filename beginning with dot is unsupported, and the 'rm' command under AIX creates such files. - The server requires a dedicated PC and does not use extended memory. DEBUGGING A set of debugging macros is available to help you in debugging run-time problems or to provide useful diagnostics when modifying SOSS source code. This feature uses two environment variables: NFSDEBUG and DEBUGFILE. By default, debugging is disabled; you can selectively enable trace messages by setting NFSDEBUG to a list of flags as follows: *rpctrace - RPC-level messages mountd - mount requests nfserr - error conditions for certain requests nfsdebug - miscellaneous debugging information nfsdisp - main NFS dispatcher (like SOSS -v) nfslookup - file lookups nfsread - file reads nfswrite - file writes *nfstime - timing information *inode - inode information Asterisked items are not used in the released version. Debugging output goes to the console display unless DEBUGFILE is set to a file or device name. If you want all trace messages, set NFSDEBUG=all; if you want all but a few, you can use negated flags, as in "set NFSDEBUG=all;-nfsread;-nfswrite". REQUESTS "Port Mapper Requests" Only one call is supported: PMAPPROC_GETPORT. The port mapper knows of only the NFS and mount daemon ports. In version two of the NFS protocol, NFS port is bound to 2049. This is a bug in the NFS protocol which Sun Microsystem claims it will fix in the near future. "Mount Daemon Requests" Three calls are supported: MOUNTPROC_MOUNT, MOUNTPROC_UMOUNT, and MOUNTPROC_EXPORT. These reply to mount and unmount requests for specified filesystems. The MOUNTPROC_EXPORT function provides a list of exported file systems (in Unix-style syntax), but does not include the list of authorized clients for each. "NFS Server Requests" SOSS supports the whole range of valid requests for version two of the NFS protocol, except NFSPROC_READLINK, NFSPROC_LINK and NFSPROC_SYMLINK. MS-DOS does not support links. This is a list of requests: Procedure 0: NFSPROC_NULL /* for server response and timing */ Procedure 1: NFSPROC_GETATTR /* get file attributes */ Procedure 2: NFSPROC_SETATTR /* set file attributes */ Procedure 3: NFSPROC_ROOT /* obsolete em not supported */ Procedure 4: NFSPROC_LOOKUP /* lookup file in directory */ Procedure 5: NFSPROC_READLINK /* not supported */ Procedure 6: NFSPROC_READ /* read from file */ Procedure 7: NFSPROC_WRITECACHE /* obsolete em not supported */ Procedure 8: NFSPROC_WRITE /* write to file */ Procedure 9: NFSPROC_CREATE /* create file */ Procedure 10: NFSPROC_REMOVE /* remove file */ Procedure 11: NFSPROC_RENAME /* rename a file */ Procedure 12: NFSPROC_LINK /* not supported */ Procedure 13: NFSPROC_SYMLINK /* not supported */ Procedure 14: NFSPROC_MKDIR /* make directory */ Procedure 15: NFSPROC_RMDIR /* remove directory */ Procedure 16: NFSPROC_READDIR /* read directory */ Procedure 17: NFSPROC_STATFS /* status of filesystem */ COMMENTS Comments and bugs should be addressed to: rbraun@spdcc.com, stan@cs.uiuc.edu, or stan@lbl-csam.arpa AUTHORS See-Mong Tan, Harvard Holmes, Craig Eades, Rich Braun SEE ALSO d2x(1), x2d(1), nfs(4p), nfsd(8), mount(1), mount(8), umount(1), exports(5) "A Low-Cost Unix/DOS Network Solution for Software Engineering", Richard Braun (rbraun@spdcc.com), Kronos, Inc., April 1991. "Network File System Protocol Specification", RFC-1094, Bill Nowicki (nowicki@sun.com), Sun Microsystems Inc., March 1989. "Networking on the Sun Workstation", Sun Part No. 800-1324-03. "Packet Drivers Made Simple", Joe R. Doupnik (jrd@cc.usu.edu), Utah State University, January 1990. "PC/IP User's Guide", Jerome H. Saltzer and John L. Romkey, Massachusetts Institute of Technology Laboratory for Computer Science, March 1986. "User Documentation for the Packet Driver Collection", Russ Nelson, Clarkson University (nelson@clutx.clarkson.edu).