aboutsummaryrefslogtreecommitdiff
path: root/man/man1/0intro.1
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-01-13 04:49:19 +0000
committerrsc <devnull@localhost>2005-01-13 04:49:19 +0000
commitc8b6342d3c2a167dec16931815926e9e4387e7ef (patch)
tree80d3ec6ea074462b30639168113def880476dad6 /man/man1/0intro.1
parent741f510ce758f77ed5193256fb693a09a7daecce (diff)
downloadplan9port-c8b6342d3c2a167dec16931815926e9e4387e7ef.tar.gz
plan9port-c8b6342d3c2a167dec16931815926e9e4387e7ef.tar.bz2
plan9port-c8b6342d3c2a167dec16931815926e9e4387e7ef.zip
Many small edits.
Diffstat (limited to 'man/man1/0intro.1')
-rw-r--r--man/man1/0intro.1300
1 files changed, 300 insertions, 0 deletions
diff --git a/man/man1/0intro.1 b/man/man1/0intro.1
new file mode 100644
index 00000000..610e7911
--- /dev/null
+++ b/man/man1/0intro.1
@@ -0,0 +1,300 @@
+.TH INTRO 1
+.SH NAME
+intro \- introduction to Plan 9 from User Space
+.SH DESCRIPTION
+Plan 9 is a distributed computing environment built
+at Bell Labs starting in the late 1980s.
+The system can be obtained from Bell Labs at
+.B http://plan9.bell-labs.com/plan9
+and runs on PCs and a variety of other platforms.
+Plan 9 became a convenient platform for experimenting
+with new ideas, applications, and services.
+.PP
+Plan 9 from User Space provides many of the ideas,
+applications, and services from Plan 9
+on Unix-like systems.
+It runs on
+FreeBSD (x86),
+Linux (x86 and PowerPC),
+Mac OS X (PowerPC),
+OpenBSD (x86),
+and
+SunOS (Sparc).
+.SS Commands
+Plan 9 from User Space expects its own directory tree,
+conventionally
+.BR /usr/local/plan9 .
+When programs need to access files in the tree,
+they expect the
+.B $PLAN9
+environment variable
+to contain the name of the root of the tree.
+See
+.IR install (8)
+for details about installation.
+.PP
+Many of the familiar Unix commands,
+for example
+.IR cat (1),
+.IR ls (1),
+and
+.IR wc (1),
+are present, but in their Plan 9 forms:
+.I cat
+takes no arguments,
+.I ls
+does not columnate its output when printing to a terminal,
+and
+.I wc
+counts UTF characters.
+In some cases, the differences are quite noticeable:
+.IR grep (1)
+and
+.IR sed (1)
+expect Plan 9 regular expressions
+(see
+.IR regexp (7)),
+which are closest to what Unix calls extended regular expressions.
+Because of these differences, it is not recommended to put
+.B $PLAN9/bin
+before the usual system
+.B bin
+directories in your search path.
+Instead, put it at the end of your path and use the
+.IR 9 (1)
+script when you want to invoke the Plan 9 version of a
+traditional Unix command.
+.PP
+Occasionally the Plan 9 programs have been
+changed to adapt to Unix.
+.IR Mk (1)
+now allows mkfiles to choose their own shell,
+and
+.IR rc (1)
+has a
+.I ulimit
+builtin and manages
+.BR $PATH .
+.PP
+Many of the graphical programs from Plan 9 are present,
+including
+.IR sam (1)
+and
+.IR acme (1).
+An X11 window manager
+.IR rio (1)
+mimics Plan 9's window system, with command windows
+implemented by the external program
+.IR 9term (1).
+Following the style of X Windows, these programs run in new
+windows rather than the one in which they are invoked.
+They all take a
+.B -W
+option to specify the size and placement of the new window.
+The argument is one of
+\fIwidth\^\^\fLx\fI\^\^height\fR,
+\fIwidth\^\^\fLx\fI\^\^height\^\^\fL@\fI\^\^xmin\fL,\fIxmax\fR,
+\fL'\fIxmin ymin xmax ymax\fL'\fR,
+\fRor
+\fIxmin\fL,\fIymin\fL,\fIxmax\fL,\fIymax\fR.
+.PP
+The
+.IR plumber (4)
+helps to connect the various Plan 9 programs together,
+and fittings like
+.IR web (1)
+connect it to external programs such as web browsers;
+one can click on a URL in
+.I acme
+and see the page load in
+.IR Firefox .
+.SS User-level file servers
+In Plan 9, user-level file servers present file trees via the Plan 9 file protocol, 9P.
+Processes can mount arbitrary file servers and customize their own name spaces.
+These facilities are used to connect programs. Clients interact
+with file servers by reading and writing files.
+.PP
+This cannot be done directly on Unix.
+Instead the servers listen for 9P connections on Unix domain sockets;
+clients connect to these sockets and speak 9P directly using the
+.IR 9pclient (3)
+library.
+.IR Intro (4)
+tells more of the story.
+The effect is not as clean as on Plan 9, but it gets the job done
+and still provides a uniform and easy-to-understand mechanism.
+The
+.IR 9p (1)
+client can be used in shell scripts or by hand to carry out
+simple interactions with servers.
+.SS Programming
+The shell scripts
+.I 9c
+and
+.I 9l
+(see
+.IR 9c (1))
+provide a simple interface to the underlying system compiler and linker,
+similar to the
+.I 2c
+and
+.I 2l
+families on Plan 9.
+.I 9c
+compiles source files, and
+.I 9l
+links object files into executables.
+When using Plan 9 libraries,
+.I 9l
+infers the correct set of libraries from the object files,
+so that no
+.B -l
+options are needed.
+.PP
+The only way to write multithreaded programs is to use the
+.IR thread (3)
+library.
+.IR Rfork (3)
+exists but is not as capable as on Plan 9.
+There are many unfortunate by necessary preprocessor
+diversions to make Plan 9 and Unix libraries coexist.
+See
+.IR intro (3)
+for details.
+.PP
+The debuggers
+.IR acid (1)
+and
+.IR db (1)
+and the debugging library
+.IR mach (3)
+are works in progress.
+They are platform-independent, so that x86 Linux core dumps
+can be inspected on PowerPC Mac OS X machines,
+but they are also fairly incomplete.
+The x86 target is the most mature; initial PowerPC support
+exists; and other targets are unimplemented.
+The debuggers can only inspect, not manipulate, target processes.
+Support for operating system threads and for 64-bit architectures
+needs to be rethought.
+On x86 Linux systems,
+.I acid
+and
+.I db
+can be relied upon to produce reasonable stack traces
+(often in cases when GNU
+.I gdb
+cannot)
+and dump data structures,
+but that it is the extent to which they have been developed and exercised.
+.SS External databases
+Some programs rely on large databases that would be
+cumbersome to include in every release.
+Scripts are provided that download these databases separately.
+These databases can be downloaded separately.
+See
+.B $PLAN9/dict/README
+and
+.BR $PLAN9/sky/README .
+.SS Porting programs
+The vast majority of the familiar Plan 9 programs
+have been ported, including the Unicode-aware
+.IR troff (1).
+.PP
+Of the more recent additions to Plan 9,
+the
+.IR secstore (1)
+client has been ported, though
+.I secstored
+has not.
+.IR Vac (1)
+has been ported, though
+.I vacfs
+has not.
+.IR Factotum
+and
+.IR venti
+are in progress.
+.PP
+A backup system providing a dump file system built atop Venti
+is also in progress.
+.SS Porting to new systems
+Porting the tree to new operating systems or architectures
+should be straightforward, as system-specific code has been
+kept to a minimum.
+The largest pieces of system-specific code are
+.BR <u.h> ,
+which must include the right system files and
+set up the right integer type definitions,
+and
+.IR libthread ,
+which must implement spin locks, operating system thread
+creation, and context switching routines.
+Portable implementations of these using
+.B <pthread.h>
+and
+.B <ucontext.h>
+already exist. If your system supports them, you may not
+need to write any system specific code at all.
+.PP
+There are other smaller system dependencies,
+such as the terminal handling code in
+.IR 9term (1)
+and the implementation of
+.IR getcallerpc (3),
+but these are usually simple and are not on the critical
+path for getting the system up and running.
+.SS SEE ALSO
+The system's documentation is these manual pages.
+Many of the man pages have been brought from Plan 9,
+but they have been updated, and others have been written from scratch.
+.PP
+The manual pages are in a Unix style tree, with names like
+.B $PLAN9/man/man1/cat.1
+instead of Plan 9's simpler
+.BR $PLAN9/man/1/cat ,
+so that the Unix
+.IR man (1)
+utility can handle it.
+Some systems, for example Debian Linux,
+deduce the man page locations from the search path, so that
+adding
+.B $PLAN9/bin
+to your path is sufficient to cause
+.B $PLAN9/man
+to be consulted for manual pages using the system
+.IR man .
+On other systems, or to look at manual pages with the
+same name as a system page,
+invoke the Plan 9
+.I man
+directly, as in
+.B 9
+.B man
+.BR cat .
+.PP
+The manual sections follow the Unix numbering conventions,
+not the Plan 9 ones.
+.PP
+Section (1) describes general publicly accessible commands.
+.PP
+Section (3) describes C library functions.
+.PP
+Section (4) describes user-level file servers.
+.PP
+Section (7) describes file formats and protocols.
+(On Unix, section (5) is technically for file formats but
+seems now to be used for describing specific files.)
+.PP
+Section (8) describes commands used for system administration.
+.PP
+Section (9p) describes the Plan 9 file protocol 9P.
+.SH DIAGNOSTICS
+In Plan 9, a program's exit status is an arbitrary text string,
+while on Unix it is an integer.
+Section (1) of this manual describes commands as though they
+exit with string statuses. In fact, exiting with an empty status
+corresponds to exiting with status 0,
+and exiting with any non-empty string corresponds to exiting with status 1.
+See
+.IR exits (3).