U9FS(4) Kernel Interfaces Manual U9FS(4)
u9fs - serve 9P from Unix
u9fs [ directory ]
U9fs is not a Plan 9 program. Instead it is a program that serves Unix
files to Plan 9 machines using the 9P protocol (see intro(5)). It is
to be invoked on a Unix machine by inetd with its standard input, out-
put, and error connected to a network connection, typically TCP on an
Ethernet. It runs as user root and multiplexes access to multiple Plan
9 clients over the single wire. It simulates Unix permissions itself
by assuming Plan 9 uids match Unix login names.
If a directory is specified u9fs first does a Unix chroot system call
to that directory.
Plan 9 calls this service 9fs with TCP service number 564 on the Ether-
net. Set up this way on a machine called, say, kremvax, u9fs may be
connected to the name space of a Plan 9 process by
Due to a bug in some versions of the IP software, some systems will not
accept the service name 9fs, thinking it a service number because of
the initial digit. If so, run the service as u9fs or 564 and do the
srv and mount by hand:
mount -c /srv/tcp!kremvax!u9fs /n/kremvax
For more information on this procedure, see srv(4) and bind(1).
U9fs serves the entire file system of the Unix machine. It forbids
access to devices because the program is single-threaded and may block
unpredictably. Using the attach specifier device connects to a file
system identical to the usual system except it permits device access
(and may block unpredictably):
mount -c /srv/tcp!kremvax!9fs /n/kremvax device
(The 9fs command does not accept an attach specifier.) Even so, device
access may produce unpredictable results if the block size of the
device is greater than 8192, the maximum data size of a 9P message.
The source to u9fs is in the Plan 9 directory /sys/src/cmd/unix/u9fs.
To install u9fs on a Unix system, copy the source to a directory on
that system. Edit the makefile to set LOG to a proper place for a log
file and to set the compile-time configuration correctly. Then compile
with an ANSI C compiler and install in /usr/etc/u9fs. Install this
line in inetd.conf:
9fs stream tcp nowait root /usr/etc/u9fs u9fs
and this in services:
9fs 564/tcp 9fs # Plan 9 fs
Problems are reported to /tmp/u9fs.log. A compile-time flag enables
bind(1), srv(4), ip(3), nfsserver(8)
The implementation of devices is unsatisfactory.