add directory Linux-0.98
This commit is contained in:
248
Linux-0.98/sources/system/NFS/nfs-client-0.3a.README
Normal file
248
Linux-0.98/sources/system/NFS/nfs-client-0.3a.README
Normal file
@@ -0,0 +1,248 @@
|
||||
These are the release notes for the NFS filesystem for Linux.
|
||||
|
||||
* Current Version
|
||||
|
||||
- NFS version 0.3a for Linux 0.98 patchlevel 6
|
||||
|
||||
* Status
|
||||
|
||||
- BETA, use with caution
|
||||
|
||||
* Limitations
|
||||
|
||||
- no read/write caching, minimal lookup/attribute caching, can't run binaries
|
||||
|
||||
* Copyright
|
||||
|
||||
- Rick Sladkey <jrs@world.std.com>
|
||||
|
||||
* Distrubution
|
||||
|
||||
- GNU copyleft as outlined in the GNU Public License version 2
|
||||
|
||||
* Where Available
|
||||
|
||||
- anonymous ftp from tsx-11.mit.edu:/pub/linux/ALPHA/NFS/nfs-client-0.3a.tar.Z
|
||||
|
||||
* References
|
||||
|
||||
- "NFS: Network File System Protocol specification," RFC 1094
|
||||
- "RPC: Remote Procedure Call Protocol specification version 2," RFC 1057
|
||||
- "XDR: External Data Representation standard," RFC 1014
|
||||
- "User Datagram Protocol," RFC 768
|
||||
- "Managing NFS and NIS," Hal Stern, O'Reilly, ISBN 0-937175-75-7
|
||||
|
||||
* How to Install
|
||||
|
||||
- please read this entire document before performing any installation
|
||||
- ensure that TCP/IP is in your kernel and your network is set up and works
|
||||
- unpack the main distribution somewhere
|
||||
- unpack linux.tar in /usr/src, no existing kernel files will be overwritten
|
||||
- patch the kernel from /usr/src using nfs.diffs, e.g. "patch -p0 <nfs.diffs"
|
||||
- carefully note and manually install any failed patches or stop now
|
||||
- run make dep in the kernel source directory
|
||||
- rebuild the new kernel remembering to save your old one
|
||||
- unpack mount.tar and shutdown.tar somewhere
|
||||
- backup or save your old "mount", "umount" and "shutdown" commands
|
||||
- install the new "mount", "umount" and "shutdown" commands
|
||||
- recompile and install the "ps" suite of programs
|
||||
- if your fstab mounts /proc then change the device from /dev/ram to none
|
||||
- install and reboot the new kernel
|
||||
|
||||
* How to Use
|
||||
|
||||
- locate an NFS server and a directory that you can mount
|
||||
- ensure that your server's sysadmin has exported the filesystem to you
|
||||
- ensure that your uids and gids match those used by the server
|
||||
- ensure that you have created the mount point for the directory
|
||||
- issue the command "/etc/mount server-name:/server-dir /local-dir"
|
||||
- cd into the new filesystem and test it
|
||||
- optionally add one or more entries to your /etc/fstab with a type of "nfs"
|
||||
|
||||
* Special Notes
|
||||
|
||||
- modified mount command
|
||||
|
||||
I have included a modified mount command based on Doug Quale's
|
||||
fstab-based mount package for Linux. This section describes the new
|
||||
mount command and why I had to modify it.
|
||||
|
||||
The mount program plays a crucial role in the NFS filesystem. Unlike
|
||||
many other filesystems, mount "knows about" NFS and performs actions
|
||||
specific to the nfs type. Things such as looking up the IP addresses
|
||||
of hostnames or contacting portmappers and mount daemons are done by
|
||||
the mount program on behalf of the kernel. Then the mount program
|
||||
passes a special data structure to the kernel through the mount system
|
||||
call.
|
||||
|
||||
New options specific to the nfs type of filesystem:
|
||||
|
||||
option (default) meaning
|
||||
-------------------------------------------------------------
|
||||
noac (off) no attribute caching
|
||||
rsize=n (1024) read buffer size
|
||||
wsize=n (1024) write buffer size
|
||||
hard (on) retry operations indefinitely
|
||||
soft (off) return I/O error after a major timeout
|
||||
timeo=n (7) timeout before retransmission in tenths of a second
|
||||
retrans=n (3) number of minor timeouts before a major timeout
|
||||
acregmin=n (3) minimum seconds to cache attributes of regular files
|
||||
acregmax=n (30) maximum seconds to cache attributes of regular files
|
||||
acdirmin=n (30) minimum seconds to cache attributes of directories
|
||||
acdirmax=n (60) maximum seconds to cache attributes of directories
|
||||
actimeo=n sets all attribute caching timeouts at once
|
||||
port=n (2049) which port to find the nfs service on
|
||||
|
||||
Other options which are parsed but not yet implemented:
|
||||
|
||||
option (default) meaning
|
||||
-------------------------------------------------------------
|
||||
nocto off supress fresh attribute on file creation
|
||||
posix off request posix semantics on the mounted filesystem
|
||||
intr off allow signals to interrupt a pending transaction
|
||||
bg off retry the mount in the background
|
||||
fg on try the remote mount only in the foreground
|
||||
|
||||
For example to mount a filesystem with a read and write buffer sizes
|
||||
of 2048, use "mount -o rsize=2048,wsize=2048 server:/server-dir /local-dir".
|
||||
|
||||
- modified umount command
|
||||
|
||||
I also modified Doug's umount command. This sections describes why.
|
||||
|
||||
The traditional umount system call accepted the name of a block device
|
||||
as its argument. For "virtual" filesystems that are not assosicated
|
||||
with true hardware block devices, it is awkward to provide a suitable
|
||||
argument to umount. For this reason, the mount system call now
|
||||
accepts and understands mount points as well as block devices. Since
|
||||
all filesystems must have a distinct mount point by definition, this
|
||||
interface is better suited for systems supporting virtual filesystems.
|
||||
The umount command must use this new system call interface to properly
|
||||
unmount virtual filesystems.
|
||||
|
||||
- modified shutdown command
|
||||
|
||||
I have included the shutdown command from Peter Orbaek's admutils-1.4
|
||||
package. It includes some changes I made for NFS. If you already
|
||||
have installed admutils-1.4, you don't need this version.
|
||||
|
||||
This version of shutdown (and reboot and halt) attempts to call
|
||||
"umount -a" to unmount all filesystems and then, if that fails, it
|
||||
tries to unmount them itself using the umount principles described
|
||||
above. In such a case it offers a few new features such as unmounting
|
||||
filesystems in reverse order and not giving a message about failing to
|
||||
unmount the root partition.
|
||||
|
||||
- backward compatibility of mount, umount and shutdown
|
||||
|
||||
I made some small concessions to purity to allow all the modified
|
||||
commands to continue to work correctly with older kernels. Therefore,
|
||||
these versions are suitable for general use by older kernels, as well
|
||||
as newer kernels with or without TCP/IP and NFS.
|
||||
|
||||
- /etc/rc and fstab considerations
|
||||
|
||||
If you include nfs mounts in your fstab, then you should change your
|
||||
/etc/rc to run "mount -vat nonfs" instead of "mount -va" because your
|
||||
networking will not have been configured yet and any NFS mounts will
|
||||
fail at that point. Then you can add "mount -vat nfs" to the end of
|
||||
your rc.net file to mount any NFS filesystems after the network is up.
|
||||
|
||||
- increasing the maximum number of mounted filesystems
|
||||
|
||||
The standard Linux kernel allows 16 filesystems to be mounted.
|
||||
With your ordinary filesystems and several NFS filesystems, you may
|
||||
run up against this limit. The limit of 16 is coded as
|
||||
NR_SUPER in /usr/src/linux/include/linux/limits.h. You may increase
|
||||
this value as needed.
|
||||
|
||||
- retransmission timeout values
|
||||
|
||||
If you have a slow or busy server or your system is separated from your
|
||||
server by a router or serveral bridges, you may get better performance
|
||||
by increasing the default retransmission timeout value. The value of
|
||||
7 equations to 0.7 seconds. You might try doubling it and see if it
|
||||
improves performance. See the Stern book for a detailed explanation
|
||||
on how the timeout mechanism works.
|
||||
|
||||
- nomenclature
|
||||
|
||||
It may seem redundant to use the phrase "NFS filesystem" since NFS
|
||||
stands for "Network File System" but the name actually refers to an
|
||||
NFS client as opposed to an NFS server. Thus, an unqualified
|
||||
reference to NFS includes both aspects of the NFS protocol. In this
|
||||
context, "NFS filesystem" refers to the implementation of an NFS
|
||||
client within an operating system or to the local directory structure
|
||||
of a remote filesystem.
|
||||
|
||||
* General NFS Usage Guidelines
|
||||
|
||||
- read-only filesystems
|
||||
|
||||
Your mount of a server's filesystem should match the ro/rw option with
|
||||
that of the server. However, you may still mount it read-only even if
|
||||
the server exports it read-write for extra safety during testing. If
|
||||
you mount it read-write and the server exports it as read-only you
|
||||
will receive EROFS (Read-only filesystem) errors from the server when
|
||||
attempting to write to the filesystem.
|
||||
|
||||
- mapping of root privileges
|
||||
|
||||
It is quite likely that your server will not allow root on your system
|
||||
to be mapped into root on the server. For this reason, you should
|
||||
generally access NFS mounted filesystems using a uid that is valid on
|
||||
that system. Even so, root will be allowed to access world-readable or
|
||||
world-writable files and directories. Just be aware that being root
|
||||
on an NFS client is sometimes the least privileged user you could
|
||||
possibly be.
|
||||
|
||||
* Change Log
|
||||
|
||||
- Version 0.3 dated 92-11-09
|
||||
|
||||
Bug fixes:
|
||||
|
||||
Fixed a problem where current->timeout was not being reset to zero.
|
||||
|
||||
Fixed a minor memory leak in nfs_follow_link (reported and fixed
|
||||
by Phil Packer <pep@wicked.demon.co.uk>).
|
||||
|
||||
New features:
|
||||
|
||||
NFS kernel diffs now incorporated into Linux kernel 0.98 patchlevel 4.
|
||||
Shutdown diffs now incorporated into admutils-1.4.
|
||||
Changed malloc functions to use new kmalloc interface.
|
||||
|
||||
- Version 0.2a dated 92-11-02
|
||||
|
||||
Bug fixes:
|
||||
|
||||
Fixed a "bug" where symlinks would crash SunOS (reported and fixed
|
||||
by <jon@robots.ox.ac.uk>).
|
||||
|
||||
Fixed a minor memory leak and a fence-post bug in nfs_symlink.
|
||||
|
||||
- Version 0.2 dated 92-11-01
|
||||
|
||||
New features:
|
||||
|
||||
Timeout and retransmission are fully implemented (should fix any "hangs").
|
||||
Preliminary lookup and attribute caching (better results with ls, pwd, etc.).
|
||||
All mount options parsed and many implemented (rsize, timeo, etc.).
|
||||
|
||||
Bug fixes:
|
||||
|
||||
Now du reports block counts correctly (reported by Bob Green
|
||||
<bob@inmos.co.uk>).
|
||||
|
||||
Fixed chmod on directories (reported by Ray Bellis <rpb@psy.oxford.ac.uk>).
|
||||
|
||||
Fixed hard links (reported by Ray Bellis <rpb@psy.oxford.ac.uk>).
|
||||
|
||||
Fixed mount points inside NFS filesystems (reported by Peter Chubb
|
||||
<peterc@suite.sw.oz.au>).
|
||||
|
||||
- Version 0.1 dated 92-10-28
|
||||
|
||||
First released version. No timeout or retransmission. Only readir caching.
|
||||
|
||||
222
Linux-0.98/sources/system/NFS/rpc/sunrpc-bin-4.0.README
Normal file
222
Linux-0.98/sources/system/NFS/rpc/sunrpc-bin-4.0.README
Normal file
@@ -0,0 +1,222 @@
|
||||
This is a binary distribution of sunrpc-4.0 compiled for Linux.
|
||||
|
||||
It is the RPC (Remote Procedure Call) and XDR (eXternal Data Represenation)
|
||||
library together with support programs. The original freely distributable
|
||||
sunrpc was written by Sun Microsystems for BSD systems. I did not include
|
||||
any secure_rpc stuff because I don't think it is very widely used and the
|
||||
secure_rpc distribution didn't include the necessary DES encrpytion.
|
||||
|
||||
I did a fair amount of hacking to get it to work with Linux. Plus
|
||||
I fixed a couple of ugly bugs.
|
||||
|
||||
The archive includes:
|
||||
|
||||
README this file
|
||||
etc/rpc RPC services files
|
||||
etc/portmap RPC portmapper daemon
|
||||
etc/rpcinfo RPC status reporting program
|
||||
usr/bin/rpcgen RPC protocol compiler
|
||||
usr/bin/rstat RPC sample remote status program
|
||||
usr/lib/librpclib.a RPC and XDR library
|
||||
usr/include/rpc/* RPC library include files
|
||||
usr/include/rpcsvc/* RPC protocol descriptions and header files
|
||||
usr/man/man[1358]/* RPC man pages
|
||||
|
||||
The binaries were compiled with version 4.1 jump-table libraries.
|
||||
They will not work with Linux TCP/IP 0.8.1 without the kernel patch at the
|
||||
end of this file. I have sent it to Ross and he may include in the next
|
||||
release. Even if you don't apply the patch you can still use the library
|
||||
and header files for porting.
|
||||
|
||||
You must have a /usr/etc/inet/protocols file for some of the programs
|
||||
to work. Here is one I cooked up:
|
||||
|
||||
$ cat /usr/etc/inet/protocols
|
||||
# protocols - standard well defined IP protocols
|
||||
ip 0
|
||||
icmp 1
|
||||
ggp 2
|
||||
tcp 6
|
||||
egp 8
|
||||
pup 12
|
||||
udp 17
|
||||
idp 22
|
||||
raw 255
|
||||
|
||||
Also make sure you have the following lines in /usr/etc/inet/services:
|
||||
|
||||
$ grep sunrpc /usr/etc/inet/services
|
||||
sunrpc 111/tcp
|
||||
sunrpc 111/udp
|
||||
|
||||
Here is how you use the portmapper. In your rc/rc.local/rc.net or whatever
|
||||
put the following fragment after you configure TCP/IP:
|
||||
|
||||
if [ -f /etc/portmap ]
|
||||
then
|
||||
echo "Starting portmapper..."
|
||||
/etc/portmap
|
||||
fi
|
||||
|
||||
Then if you have TCP/IP in your kernel and have applied the patch you
|
||||
can say:
|
||||
|
||||
$ /etc/rpcinfo -p
|
||||
program vers proto port
|
||||
100000 2 tcp 111 portmapper
|
||||
100000 2 udp 111 portmapper
|
||||
|
||||
If you get "Connection refused" you probably haven't applied the patch.
|
||||
|
||||
If all is well you can go to another machine on the net and say:
|
||||
|
||||
$ /etc/rpcinfo -p your-hostname
|
||||
program vers proto port
|
||||
100000 2 tcp 111 portmapper
|
||||
100000 2 udp 111 portmapper
|
||||
|
||||
This is not very useful unless you have some RPC services to provide.
|
||||
I have not yet finished porting rstat_svc which is very BSD-kernel oriented.
|
||||
When I do, you will be apply to run Sun's Performance Meter to display
|
||||
information about your Linux machine.
|
||||
|
||||
I will be releasing my port of a mount daemon and nfs server daemon shortly.
|
||||
|
||||
You don't need to run the portmapper or apply the patch to use RPC services
|
||||
on other machines. The only programs in this distribution that can do that
|
||||
are rpcinfo and rstat.
|
||||
|
||||
Enjoy,
|
||||
|
||||
Rick Sladkey
|
||||
jrs@world.std.com
|
||||
|
||||
Patch relative to TCP/IP version 0.8.1 follows:
|
||||
|
||||
*** sock.h~ Thu Sep 10 12:34:07 1992
|
||||
--- sock.h Tue Sep 15 01:12:37 1992
|
||||
***************
|
||||
*** 41,47 ****
|
||||
unsigned long inuse:1, dead:1, urginline:1,
|
||||
intr:1, blog:1, done:1, reuse:1, keepopen:1, linger:1,
|
||||
delay_acks:1, timeout:3, destroy:1, ack_timed:1, no_check:1,
|
||||
! exp_growth:1;
|
||||
int proc;
|
||||
volatile struct sock *next;
|
||||
volatile struct sock *pair;
|
||||
--- 41,47 ----
|
||||
unsigned long inuse:1, dead:1, urginline:1,
|
||||
intr:1, blog:1, done:1, reuse:1, keepopen:1, linger:1,
|
||||
delay_acks:1, timeout:3, destroy:1, ack_timed:1, no_check:1,
|
||||
! exp_growth:1, user_bound:1;
|
||||
int proc;
|
||||
volatile struct sock *next;
|
||||
volatile struct sock *pair;
|
||||
*** sock.c~ Sat Sep 12 12:26:56 1992
|
||||
--- sock.c Tue Sep 15 01:10:05 1992
|
||||
***************
|
||||
*** 729,735 ****
|
||||
if (!suser())
|
||||
{
|
||||
free_s ((void *)sk, sizeof (*sk));
|
||||
! return (-EPERM);
|
||||
}
|
||||
|
||||
if (!protocol)
|
||||
--- 729,735 ----
|
||||
if (!suser())
|
||||
{
|
||||
free_s ((void *)sk, sizeof (*sk));
|
||||
! return (-EACCES);
|
||||
}
|
||||
|
||||
if (!protocol)
|
||||
***************
|
||||
*** 748,754 ****
|
||||
if (!suser())
|
||||
{
|
||||
free_s ((void *)sk, sizeof (*sk));
|
||||
! return (-EPERM);
|
||||
}
|
||||
|
||||
if (!protocol)
|
||||
--- 748,754 ----
|
||||
if (!suser())
|
||||
{
|
||||
free_s ((void *)sk, sizeof (*sk));
|
||||
! return (-EACCES);
|
||||
}
|
||||
|
||||
if (!protocol)
|
||||
***************
|
||||
*** 800,805 ****
|
||||
--- 800,806 ----
|
||||
sk->state = TCP_CLOSE;
|
||||
sk->dead = 0;
|
||||
sk->ack_timed = 0;
|
||||
+ sk->user_bound = 0;
|
||||
|
||||
/* this is how many unacked bytes we will accept for
|
||||
this socket. */
|
||||
***************
|
||||
*** 936,942 ****
|
||||
return (0);
|
||||
}
|
||||
/* check this error. */
|
||||
! if (sk->state != TCP_CLOSE) return (-EIO);
|
||||
verify_area (uaddr, addr_len);
|
||||
memcpy_fromfs (&addr, uaddr, min (sizeof (addr), addr_len));
|
||||
if (addr.sin_family && addr.sin_family != AF_INET)
|
||||
--- 937,944 ----
|
||||
return (0);
|
||||
}
|
||||
/* check this error. */
|
||||
! if (sk->state != TCP_CLOSE) return (-EINVAL);
|
||||
! if (sk->user_bound) return (-EINVAL);
|
||||
verify_area (uaddr, addr_len);
|
||||
memcpy_fromfs (&addr, uaddr, min (sizeof (addr), addr_len));
|
||||
if (addr.sin_family && addr.sin_family != AF_INET)
|
||||
***************
|
||||
*** 957,963 ****
|
||||
}
|
||||
|
||||
if (snum <= PROT_SOCK && !suser())
|
||||
! return (-EPERM);
|
||||
|
||||
if (my_ip_addr(addr.sin_addr.s_addr) || addr.sin_addr.s_addr == 0)
|
||||
sk->saddr = addr.sin_addr.s_addr;
|
||||
--- 959,965 ----
|
||||
}
|
||||
|
||||
if (snum <= PROT_SOCK && !suser())
|
||||
! return (-EACCES);
|
||||
|
||||
if (my_ip_addr(addr.sin_addr.s_addr) || addr.sin_addr.s_addr == 0)
|
||||
sk->saddr = addr.sin_addr.s_addr;
|
||||
***************
|
||||
*** 980,985 ****
|
||||
--- 982,988 ----
|
||||
sk->dummy_th.source = net16(sk->num);
|
||||
sk->daddr = 0;
|
||||
sk->dummy_th.dest = 0;
|
||||
+ sk->user_bound = 1;
|
||||
return (0);
|
||||
}
|
||||
|
||||
***************
|
||||
*** 1290,1296 ****
|
||||
|
||||
case IP_SET_DEV:
|
||||
if (!suser())
|
||||
! return (-EPERM);
|
||||
return (ip_set_dev((struct ip_config *)arg));
|
||||
#if 0
|
||||
case IP_ADD_ROUTE:
|
||||
--- 1293,1299 ----
|
||||
|
||||
case IP_SET_DEV:
|
||||
if (!suser())
|
||||
! return (-EACCES);
|
||||
return (ip_set_dev((struct ip_config *)arg));
|
||||
#if 0
|
||||
case IP_ADD_ROUTE:
|
||||
Reference in New Issue
Block a user