U9FS(4) U9FS(4)
NAME
u9fs - serve 9P from Unix
SYNOPSIS
u9fs [-r] [-u onlyuser onlyuid]
DESCRIPTION
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, output, and error connected
to a network connection, typically TCP on an Ethernet. It
typically runs as user root and multiplexes access to multi-
ple Plan 9 clients over the single wire. It assumes Plan 9
uids match Unix login names, and changes to the correspond-
ing Unix effective uid when processing requests.
When run as a user other than root, only attaches from that
user are allow. With the -u option, u9fs must be run as
onlyuid, and does not look in /etc/passwd or /etc/group to
translate login names to uids.
The -r option disallows any writes to the files system.
Plan 9 calls this service 9fs with TCP service number 564 on
the Ethernet. Set up this way on a machine called, say,
kremvax, u9fs may be connected to the name space of a Plan 9
process by
9fs kremvax
Due to a bug in some versions of the IP software, some sys-
tems 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:
srv tcp!kremvax!u9fs
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):
srv tcp!kremvax!9fs
Page 1 Plan 9 (printed 10/24/25)
U9FS(4) U9FS(4)
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
SOURCE
/sys/src/cmd/unix/u9fs
DIAGNOSTICS
Problems are reported to /tmp/u9fs.log. A compile-time flag
enables chatty debugging.
SEE ALSO
bind(1), srv(4), ip(3), nfsserver(8)
BUGS
The implementation of devices is unsatisfactory.
Page 2 Plan 9 (printed 10/24/25)