aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--handbook/authors.sgml20
-rw-r--r--handbook/basics.sgml73
-rw-r--r--handbook/bibliography.sgml110
-rw-r--r--handbook/ctm.sgml199
-rw-r--r--handbook/current.sgml179
-rw-r--r--handbook/dialup.sgml809
-rw-r--r--handbook/diskless.sgml153
-rw-r--r--handbook/eresources.sgml118
-rw-r--r--handbook/glossary.sgml5
-rw-r--r--handbook/handbook.sgml237
-rw-r--r--handbook/kerberos.sgml329
-rw-r--r--handbook/nfs.sgml79
-rw-r--r--handbook/porting.sgml414
-rw-r--r--handbook/ports.sgml240
-rw-r--r--handbook/ppp.sgml372
-rw-r--r--handbook/scsi.sgml688
-rw-r--r--handbook/slipc.sgml196
-rw-r--r--handbook/slips.sgml488
-rw-r--r--handbook/submitters.sgml181
-rw-r--r--handbook/sup.sgml92
-rw-r--r--handbook/troubleshooting.sgml185
21 files changed, 5167 insertions, 0 deletions
diff --git a/handbook/authors.sgml b/handbook/authors.sgml
new file mode 100644
index 0000000000..336549c96b
--- /dev/null
+++ b/handbook/authors.sgml
@@ -0,0 +1,20 @@
+<!-- $Id: authors.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<!--
+Names and email address of contributing authors. Use these
+entities when referencing people.
+-->
+
+<!ENTITY a.jkh "Jordan Hubbard <tt>&lt;jkh@FreeBSD.org&gt;</tt>">
+<!ENTITY a.jfieber "John Fieber <tt>&lt;jfieber@FreeBSD.org&gt;</tt>">
+<!ENTITY a.phk "Poul-Henning Kamp <tt>&lt;phk@FreeBSD.org&gt;</tt>">
+<!ENTITY a.gclarkii "Gary Clark II <tt>&lt;gclarkii@FreeBSD.org&gt;</tt>">
+<!ENTITY a.gena "Gennady B. Sorokopud <tt>&lt;gena@NetVision.net.il&gt;</tt>">
+<!ENTITY a.ghelmer "Guy Helmer <tt>&lt;ghelmer@alpha.dsu.edu&gt;</tt>">
+<!ENTITY a.md "Mark Dapoz <tt>&lt;md@bsc.no&gt;</tt>">
+<!ENTITY a.martin "Martin Renters <tt>&lt;martin@innovus.com&gt;</tt>">
+<!ENTITY a.gpalmer "Gary Palmer <tt>&lt;gpalmer@FreeBSD.org&gt;</tt>">
+<!ENTITY a.john "John Lind <tt>&lt;john@starfire.MN.ORG&gt;</tt>">
+<!ENTITY a.asami "Satoshi Asami <tt>&lt;asami@FreeBSD.org&gt;</tt>">
+<!ENTITY a.wilko "Wilko Bulte <tt>&lt;wilko@yedi.iaf.nl&gt;</tt>">
diff --git a/handbook/basics.sgml b/handbook/basics.sgml
new file mode 100644
index 0000000000..dfa49b6569
--- /dev/null
+++ b/handbook/basics.sgml
@@ -0,0 +1,73 @@
+<!-- $Id: basics.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<chapt><heading>Unix Basics</heading>
+
+ <sect>
+ <heading>The online manual</heading>
+
+ <p>The most comprehensive documentation on FreeBSD is in
+ the form of <em>man pages</em>. Nearly every program
+ on the system comes with a short reference manual
+ explaining the basic operation and various argument.
+ These manuals can be view with the
+ <tt><bf>man</bf></tt> command. Use of the
+ <tt><bf>man</bf></tt> command is simple:
+ <tscreen>
+ <tt><bf>man</bf> <it>command</it></tt>
+ </tscreen>
+ where <it>command</it> is the name of the command
+ you wish to find. For example, to learn more about
+ <tt><bf>ls</bf></tt> command type:
+ <tscreen>
+ <tt><bf>man</bf> ls</tt>
+ </tscreen>
+
+ <p>The online manual is divided up into numbered
+ sections:
+ <enum>
+ <item>User commands</item>
+ <item>System calls and error numbers</item>
+ <item>Functions in the C libraries</item>
+ <item>Device drivers</item>
+ <item>File formats</item>
+ <item>Games and other diversions</item>
+ <item>Miscellaneous information</item>
+ <item>System maintenance and operation commands</item>
+ </enum>
+ in some cases, the same topic may appear in more than
+ one section of the on-line manual. For example, there
+ is a <tt><bf>chmod</bf></tt> user command and a
+ <tt><bf>chmod()</bf></tt> system call. In this case,
+ you can tell the <tt><bf>man</bf></tt> command which
+ you want by specifying the section:
+ <tscreen>
+ <tt><bf>man</bf> 1 chmod</tt>
+ </tscreen>
+ which will display the manual page for the user command
+ <tt><bf>chmod</bf></tt>.
+
+ <p>This is fine if you know the name of the command and
+ forgot how to use it, but what if you cannot recall the
+ command name? You can use <tt><bf>man</bf></tt> to
+ search through the command <em>descriptions</em> by
+ using the <tt><bf>-k</bf></tt> switch:
+ <tscreen>
+ <tt><bf>man</bf> -k mail</tt>
+ </tscreen>
+ With this command you will be presented with a list of
+ commands that have the keyword `mail' in their
+ descriptions.
+
+ <sect>
+ <heading>GNU Info files</heading>
+
+ <p>FreeBSD includes many applications and utilities
+ produced by the Free Software Foundation (FSF). In
+ addition to man pages, these programs come with more
+ extensive <em>info</em> files which can be viewed with
+ the <tt>info</tt> command or, if you installed
+ <tt>emacs</tt>, the info mode of <tt>emacs</tt>.
+
+ </sect>
+
diff --git a/handbook/bibliography.sgml b/handbook/bibliography.sgml
new file mode 100644
index 0000000000..fea48a3cb9
--- /dev/null
+++ b/handbook/bibliography.sgml
@@ -0,0 +1,110 @@
+<!-- $Id: bibliography.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+ <chapt>
+ <heading>Bibliography</heading>
+
+ <p>While the manual pages provide the definative reference
+ for individual pieces of the FreeBSD operating system,
+ they are notorious for not illustrating how to put the
+ pieces together to make the whole operating system run
+ smoothly. For this, there is no substitute for a good
+ book on Unix system administration, and a good users'
+ manual.
+
+ <sect>
+ <heading>Users' guides</heading>
+
+ <p><itemize>
+ <item>Gilley, Daniel. <sl>Unix in a Nutshell</sl>.
+ O'Reilly &amp; Associates, Inc. 1990</item>
+ </itemize>
+
+ <sect>
+ <heading>Administrators' guides</heading>
+
+ <p><itemize>
+
+ <item>Albitz, Paul; Liu, Cricket. <em>DNS and
+ BIND</em>. O'Reilley &amp; Associates. 1993. ISBN
+ 1-56592-010-4 </item>
+
+ <item>Costales, Brian; Allman, Eric; Rickert,
+ Neil. <em>sendmail</em> O'Reilley &amp;
+ Associates. 1993. ISBN 1-56592-056-2 </item>
+
+ <item>Frisch, &AElig;leen. <em>Essential System
+ Administration</em>. O'Reilley &amp;
+ Associates. 1993. ISBN 0-937175-80-3 </item>
+
+ <item>Hunt, Craig. <em>TCP/IP Network Administration</em>
+ O'Reilley &amp; Associates. 1992. ISBN 0-937175-82-X</item>
+
+ <item>Nemeth, Evi. <em>Unix System Administration
+ Handbook</em>. Prentice Hall. 1989. ISBN
+ 0-13-933441-6</item>
+
+ </itemize>
+
+
+
+ <sect>
+ <heading>Programmers' guides</heading>
+
+ <p><itemize>
+
+ <item>Asente, Paul. <em>X Window System
+ Toolkit</em>. Digital Press. ISBN
+ 1-55558-051-3</item>
+
+ <item>Ellis, Margaret A. and Stroustrup,
+ Bjarne. <em>The Annotated C++ Reference
+ Manual</em>. Addison-Wesley. 1990. ISBN
+ 0-201-51459-1</item>
+
+ <item>Harbison, Samuel P. and Steele, Guy
+ L. Jr. <em>C: A Reference Manual</em>. Prentice
+ Hall. 3rd Edition, 1991. ISBN
+ 0-13-110933-2</item>
+
+ <item>Jolitz, William. "Porting UNIX to the
+ 386". <em>Dr. Dobb's Journal</em>. January
+ 1991-July 1992.</item>
+
+ <item>Leffler, Samuel J. <em>The Design and
+ implementation of the 4.3BSD UNIX operating
+ system</em>. Addison-Wesley. 1989.</item>
+
+ <item>Plauger, P. J. <em>The Standard C
+ Library</em>. Prentice Hall. 1992. ISBN
+ 0-13-131509-9</item>
+
+ <item>Wells, Bill. "Writing Serial Drivers for UNIX".
+ <em>Dr. Dobb's Journal</em>. 19(15), December
+ 1994. pp68-71, 97-99.</item>
+
+ </itemize>
+
+ <sect>
+ <heading>Hardware reference</heading>
+
+ <p><itemize>
+
+ <item>Stanley, Tom; Anderson, Don. <em>PCI System
+ Architechure</em>. Mindshare, Inc. ISBN
+ 1-881609-08-1</item>
+
+ </itemize>
+
+ <sect>
+ <heading>Magazines and journals</heading>
+
+ <p><itemize>
+
+ <item><em>The C/C++ Users Journal</em>. R&amp;D Publications
+ Inc. ISSN 1075-2838</item>
+
+ </itemize>
+
+ </sect>
+
diff --git a/handbook/ctm.sgml b/handbook/ctm.sgml
new file mode 100644
index 0000000000..be80df0e25
--- /dev/null
+++ b/handbook/ctm.sgml
@@ -0,0 +1,199 @@
+<!--
+# This is the sgml version of the ctm.FAQ file.
+#
+# Converted by Ollivier RObert <roberto@FreeBSD.ORG>
+#
+# $Id: ctm.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $
+#
+# ----------------------------------------------------------------------------
+# "THE BEER-WARE LICENSE" (Revision 42):
+# <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
+# can do whatever you want with this stuff. If we meet some day, and you think
+# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+# ----------------------------------------------------------------------------
+#
+-->
+
+<sect><heading>CTM</heading>
+
+<p><em>Contributed by &a.phk;. Updated 16-Mar-1995.</em>
+
+ <tt/CTM/ is a method for keeping a remote directory tree in sync with a
+ central one. It has been developed for usage with FreeBSD's source
+ trees, though other people may find it useful for other purposes as
+ time goes by. Little, if any, documentation currently exists at
+ this time on the process of creating deltas, so talk to &a.phk;
+ for more information should you wish to use <tt/CTM/ for other things.
+
+ <sect1>Why should I use <tt/CTM/ ?
+ <p><tt/CTM/ will give you a local copy of the ``FreeBSD-current''
+ sources. If you are an active developer on FreeBSD, but have lousy
+ or non-existent TCP/IP connectivity, <tt/CTM/ was made for you.
+ You will need to transfer up to four deltas per day (or you can
+ have them arrive in email automatically), the sizes for which are
+ always kept as small as possible. This is typically less than 5K,
+ with the occasional (one in ten) being 10-50K and every now and
+ then a biggie of 100K+ or more coming around.
+
+ You will also need to make yourself aware of the various caveats in
+ running ``current'' sources, and for this it is recommended that
+ you refer to the relevant FAQ which can be found in
+ <verb>
+ /usr/share/FAQ/Text/current-policy.FAQ
+ </verb>
+ <!-- XXX -->
+
+ <sect1>What do I need to use <tt/CTM/?
+
+ <p>You will need two things: The ``<tt/CTM/'' program and the initial
+ deltas to feed it (to get up to ``current'' levels).
+
+ The <tt/CTM/ program is in the <tt/FreeBSD-current/ tree from
+ version 2.0.0 and forward (<tt>/usr/src/usr.sbin/<tt/CTM/</tt>).
+ If you are running an older version of FreeBSD, you can fetch the
+ current <tt/CTM/ sources directly from:
+
+ <url
+ url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm">
+
+ The ``deltas'' you feed <tt/CTM/ can be had two ways, ftp or email.
+ If you have general ftp access to the Internet, then the following
+ ftp sites support access to <tt/CTM/:
+
+ <url url="ftp://freefall.cdrom.com/pub/CTM">
+
+ Ftp the the relevant directory and fetch the <tt/README/ file,
+ starting from there.
+
+ If you only have access to electronic mail or are otherwise blocked
+ from using ftp, then you may wish to your deltas via email:
+
+ Send email to <tt/&lt;majordomo@freebsd.org&gt;/ to subscribe to
+ the list ``ctm-src-cur''. (If you do not know how to subscribe
+ yourself using majordomo, send a message first containing the
+ word ``help'', it will send you back usage instructions.)
+
+ When you begin receiving your <tt/CTM/ updates in the mail, you may
+ use the <tt/ctm_rmail/ program to unpack and apply them with. You
+ can actually use the <tt/ctm_rmail/ program directly from a entry
+ in <tt>/etc/aliases</tt> if you want. Check the <tt/ctm_rmail/ man
+ page for more details.
+
+ <bf/NOTE/: No matter what method you use to get the <tt/CTM/
+ deltas, you should subscribe to the <tt/ctm-announce@freebsd.org/
+ mailing list. In the future this will be the only place where
+ announcements about the operation of the <tt/CTM/ system will be
+ posted. Send an email to <tt/majordomo@freebsd.org/ with a single
+ line of ``<tt/subscribe ctm-announce/'' to get added to the list.
+
+ <sect1>Starting off with <tt/CTM/ for the first time:
+ <p>Before you can start using <tt/CTM/ deltas, you will need to get a
+ special ``base'' delta that provides a starting point for all
+ deltas produced subsequently to it.
+
+ You can recognize a base delta by the ``<tt/A/'' appended to the
+ number (<tt/src-cur.0341A.gz/ for instance). As a rule a base
+ delta is produced every 100 deltas, the next one will be
+ <tt/src-cur.0400A.gz/. By the way, they are large! 25 to 30
+ Megabytes of <tt/gzip/'ed data is common for a base delta.
+
+ If you do have the 2.0-RELEASE <tt/srcdist/, you can instead
+ retreive the <tt/src-cur.0372R20.gz/ file, it's only 4Mb and it
+ will take you to current from the 2.0-RELEASE sources.
+
+ Once you've picked a base delta to start from, you will also need
+ all deltas with higher numbers following it.
+
+ <sect1>Using <tt/CTM/ in your daily life:
+ <p>To apply the deltas, simply say
+ <verb>
+ cd /where/ever/you/want/the/stuff
+ ctm -v -v /where/you/store/your/deltas/src-cur.*
+ </verb>
+ <tt/CTM/ understands deltas which have been put through <tt/gzip/,
+ so you don't need to gunzip them first, this saves diskspace.
+
+ Unless it feels very secure about the entire process, <tt/CTM/ will
+ not touch your tree. To check out a delta you can also use the
+ ``<tt/-c/'' flag and <tt/CTM/ won't actually touch your tree, but
+ only check the integrity of the delta, and see if it would apply
+ cleanly to the tree.
+
+ There are other options to <tt/CTM/ as well, look in the sources.
+
+ I would also be very happy if somebody could help with the ``user
+ interface'' portions, as I have realized that I can't make up my
+ mind on what options should do what, how and when...
+
+ That's really all there is to it. Everytime you get a new delta,
+ you run it through <tt/CTM/.
+
+ Don't remove the deltas if they are hard to download again. You
+ just might want to keep them around in case something bad happens.
+ Even if you only have floppy disks, consider using <tt/fdwrite/ to
+ make a copy.
+
+
+ <sect1>Future plans for <tt/CTM/
+ <p>
+ Tons of them:
+ <itemize>
+ <item>
+ Make local modifications to the tree possible. One way to do
+ it could be this:<p> When <tt/CTM/ wants to edit the file
+ ``<tt>foo/bar.c</tt>'', it would first check for the existence
+ of <tt>foo/bar.c&num;CTM</tt> If this file exists, the delta is
+ applied to it instead. This way the <tt>foo/bar.c</tt> file
+ can be edited to suit local needs.
+ <item>
+ Make a ``restore file(s)'' option to <tt/CTM/, something like:
+ <verb>
+ ctm -r src/sys/i386/wd.c /here/are/my/deltas/src-cur.*
+ </verb>
+ would restore <tt/wd.c/ to the current status from the files.
+ <item>
+ Clean up the options to <tt/CTM/, they became confusing and
+ counter intuitive.
+ </itemize>
+
+ The bad news is that I am very busy, so any help in doing this will
+ be most welcome. And don't forget to tell me what you want also...
+
+ <sect1>Miscellaneous stuff
+ <p>
+ All the ``DES infected'' (e.g. export controlled) source is not
+ included. You will get the ``international'' version only. If
+ sufficient interest appears, we will set up a ``<tt/sec-cur/''
+ sequence too.
+
+ If you are a frequent or valuable contributor to FreeBSD, I will be
+ willing to arrange special services, one option is delivery via
+ <tt/ftp/ or <tt/rcp/ to a machine closer to you. You need to have
+ earned this, since it takes time to do, but I'll be all the more
+ happy to do it for you then.
+
+ There is a sequence of deltas for the <tt/ports/ collection too,
+ but interest has not been all that high yet. Tell me if you want
+ an email list for that too and we'll consider setting it up.
+
+ If you have commit priviledges or are similary authorized by the
+ FreeBSD core team, you can also get access to the CVS repository
+ tree by the same means. Contact &a.phk;
+ for details.
+
+
+ <sect1>Thanks!
+ <p>
+ <descrip>
+ <tag/Bruce Evans/
+ for his pointed pen and invaluable comments.
+ <tag/Soren Schmidt/
+ for patience.
+ <tag/Stephen McKay/
+ wrote <tt/ctm_&lsqb;rs&rsqb;mail/, much appreciated.
+ <tag/Jordan Hubbard/
+ for being so stubborn that I had to make it better.
+ <tag/All the users/
+ I hope you like it...
+ </descrip>
+
diff --git a/handbook/current.sgml b/handbook/current.sgml
new file mode 100644
index 0000000000..bfb0751121
--- /dev/null
+++ b/handbook/current.sgml
@@ -0,0 +1,179 @@
+<!-- $Id: current.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+
+<chapt><heading>Staying current with FreeBSD</heading>
+
+<p><em>Contributed by &a.jkh;.</em>
+
+<!--
+
+ THE FREEBSD CURRENT POLICY
+
+Last updated: $Date: 1995-04-28 16:19:59 $
+
+This document attempts to explain the rationale behind FreeBSD-current,
+what you should expect should you decide to run it, and states some
+prerequisites for making sure the process goes as smoothly as possible.
+-->
+
+<sect><heading>What is FreeBSD-current?</heading>
+
+<p>FreeBSD-current is, quite literally, nothing more than a daily snapshot of
+the working sources for FreeBSD. These include work in progress, experimental
+changes, and transitional mechanisms that may or may not be present in
+the next official release of the software. While many of us compile
+almost daily from FreeBSD-current sources, there are periods of time when
+the sources are literally uncompilable. These problems are generally resolved
+as expeditiously as possible, but whether or not FreeBSD-current sources bring
+disaster or greatly desired functionality can literally be a matter of which
+part of any given 24 hour period you grabbed them in!
+
+Under certain circumstances we will sometimes make binaries for parts of
+FreeBSD-current available, but only because we're interested in getting
+something tested, not because we're in the business of providing binary
+releases of current. If we don't offer, please don't ask! It takes far
+too much time to do this as a general task.
+
+<sect><heading>Who needs FreeBSD-current?</heading>
+
+<p>FreeBSD-current is made generally available for 3 primary interest groups:
+<enum>
+ <item> Members of the FreeBSD group who are actively working on one
+ part or another of the source tree and for whom keeping `current'
+ is an absolute requirement.
+
+ <item> Members of the FreeBSD group who are active ALPHA or BETA testers
+ and willing to spend time working through problems in order to
+ ensure that FreeBSD-current remains as sane as possible. These
+ are also people who wish to make topical suggestions on changes
+ and the general direction of FreeBSD.
+
+ <item> Peripheral members of the FreeBSD (or some other) group who merely
+ wish to keep an eye on things and use the current sources for
+ reference purposes (e.g. for <em>reading</em>, not running). These
+ people also make the occasional comment or contribute code.
+</enum>
+
+<sect><heading>What is FreeBSD-current <em>NOT</em>?</heading>
+
+<p><enum>
+ <item> A fast-track to getting pre-release bits because there's something
+ you heard was pretty cool in there and you want to be the first on
+ your block to have it.
+
+ <item> A quick way of getting bug fixes.
+
+ <item> In any way ``officially supported'' by us.
+
+ We do our best to help people genuinely in one of the 3
+ ``legitimate'' FreeBSD-current catagories, but we simply <em>do not
+ have the time</em> to help every person who jumps into FreeBSD-current
+ with more enthusiasm than knowledge of how to deal with
+ experimental system software. This is not because we're mean and
+ nasty people who don't like helping people out (we wouldn't even be
+ doing FreeBSD if we were), it's literally because we can't answer
+ 400 messages a day <em>and</em> actually work on FreeBSD! I'm sure if
+ given the choice between having us answer lots of questions or
+ continue to improve FreeBSD, most of you would vote for us
+ improving it.
+</enum>
+
+<sect><heading>Using FreeBSD-current</heading>
+
+<p><enum> <item> Join the freebsd-hackers and freebsd-commit
+ mailing lists. This is not just a good idea, it's
+ <em>essential</em>. If you aren't on freebsd-hackers, you
+ won't read the comments that people are making about the
+ current state of the system and thus will end up stumbling
+ over a lot of problems that others have already found and
+ solved. Even more importantly, you will miss out on
+ potentially critical information (e.g. ``Yo, Everybody!
+ Before you rebuild <tt>/usr/src</tt>, you <em>must</em>
+ rebuild the kernel or your system will crash horribly!").
+
+ The freebsd-commit list will allow you to see the commit log
+ entry for each change as its made. This can also contain
+ important information, and will let you know what parts of
+ the system are being actively changed.
+
+ To join these lists, send mail to `majordomo@FreeBSD.ORG'
+ and say:
+<verb>
+ subscribe freebsd-hackers
+ subscribe freebsd-commit
+</verb>
+ In the body of your message. Optionally, you can also say `help'
+ and MajorDomo will send you full help on how to subscribe and
+ unsubscribe to the various other mailing lists we support.
+
+ <item> Grab the sources from ftp.FreeBSD.ORG. You can do this in
+ three ways:
+
+ <enum>
+ <item> Using the CTM facility desribed below. Unless you
+ have a good TCP/IP connection at a flat rate, this is
+ the way to do it.
+
+ <item> Use the CMU `sup' program (Software Update
+ Protocol), also described below.
+ This is the second most recommended method, since it allows
+ you to grab the entire collection once and then only what's
+ changed from then on. Many people run sup from cron
+ and keep their sources up-to-date automatically.
+
+ The problem is that sup does not use the bandwidth efficient,
+ unless the round-trip is very fast. If the cost of connection
+ or the duration of the session is a concern, use CTM.
+
+ <item> Use ftp. The source tree for FreeBSD-current is always
+ "exported" on:
+<verb>
+ ftp.FreeBSD.ORG:~ftp/pub/FreeBSD/FreeBSD-current
+</verb>
+ We use `wu-ftpd' which allows compressed/tar'd grabbing
+ of whole trees. e.g. you see:
+<verb>
+ usr.bin/lex
+</verb>
+ You can do:
+<verb>
+ ftp> cd usr.bin
+ ftp> get lex.tar.Z
+</verb>
+ And it will get the whole directory for you as a compressed
+ tar file.
+ </enum>
+
+ <item> If you're grabbing the sources to run, and not just look at,
+ then grab <em>all</em> of current, not just selected portions. The
+ reason for this is that various parts of the source depend on
+ updates elsewhere and trying to compile just a subset is almost
+ guaranteed to get you into trouble.
+
+ <item> Before compiling current, read the Makefile in /usr/src
+ carefully. You'll see one-time targets like `bootstrapld'
+ which <em><bf>must</bf></em> be run as part of the upgrading process. Reading
+ freebsd-hackers will keep you up-to-date on other bootstrapping
+ procedures that sometimes become necessary as we move towards
+ the next release.
+
+ <item> Be active! If you're running FreeBSD-current, we want to know
+ what you have to say about it, especially if you have suggestions
+ for enhancements or bug fixes. Suggestions with accompanying code
+ are received most enthusiastically!
+</enum>
+
+<!--
+Thank you for taking the time to read this all the way through. We're
+always very keen to remain "open" and share the fruits of our labor
+with the widest possible audience, but sharing development sources has
+always had certain pitfalls associated with it (which is why most
+commercial organizations won't even consider it) and I want to make
+sure that people at least come into this with their eyes open, and
+don't make the leap unless they're good at working without a net!
+-->
+
+
+
+
diff --git a/handbook/dialup.sgml b/handbook/dialup.sgml
new file mode 100644
index 0000000000..4eeaf28471
--- /dev/null
+++ b/handbook/dialup.sgml
@@ -0,0 +1,809 @@
+<!-- This is an SGML document in the linuxdoc DTD of the Tutorial for
+ Configuring a FreeBSD for Dialup Services by Guy Helmer.
+ $Id: dialup.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $
+
+<!DOCTYPE linuxdoc PUBLIC "-//Linux//DTD linuxdoc//EN">
+
+
+<article>
+
+<title>
+Configuring FreeBSD for Dialup Services
+<author>Guy Helmer, <tt/ghelmer@alpha.dsu.edu/
+<date>v0.1, 28 March 1995
+<abstract>
+
+-->
+
+<sect><heading>Dialup access</heading>
+
+<p><em>Contributed by &a.ghelmer;.</em>
+
+This document provides suggestions for configuring a FreeBSD system to
+handle dialup modems. This document is written based on the author's
+experience with FreeBSD versions 1.0, 1.1, and 1.1.5.1 (and experience
+with dialup modems on other UNIX-like operating systems); however,
+this document may not answer all of your questions or provide examples
+specific enough to your environment. The author cannot be responsible
+if you damage your system or lose data due to attempting to follow the
+suggestions here.
+
+<sect1><heading>Prerequisites<label id="dialup:prereqs"></>
+<p>
+
+To begin with, the author assumes you have some basic knowledge of
+FreeBSD. You need to have FreeBSD installed, know how to edit files
+in a UNIX-like environment, and how to look up manual pages on the
+system. As discussed below, you'll need certain versions of FreeBSD,
+and knowledge of some terminology &amp; modem and cabling.
+
+<sect2>FreeBSD Version
+<p>
+
+First, it is assumed that you are using FreeBSD version 1.1 or higher
+(including versions 2.x). FreeBSD version 1.0 included two different
+serial drivers, which complicates the situation. Also, the serial
+device driver (<tt/sio/) has improved in every release of FreeBSD, so
+more recent versions of FreeBSD are assumed to have better and more
+efficient drivers than earlier versions.
+
+<sect2>Terminology
+<p>
+
+A quick rundown of terminology:
+
+<descrip>
+
+<tag/bps/ Bits per Second - the rate at which data is transmitted
+
+<tag/DTE/ Data Terminal Equipment - for example, your computer
+
+<tag/DCE/ Data Communications Equipment - your modem
+
+<tag/RS-232/ EIA standard for serial communications via hardware
+
+</descrip>
+
+If you need more information about these terms and data communications
+in general, the author remembers reading that <em/The RS-232 Bible/
+(anybody have an ISBN?) is a good reference.
+
+When talking about communications data rates, the author doesn't use
+the term <bf/baud/. Baud refers to the number of electrical state
+transitions that may be made in a period of time, while <bf/bps/ (bits
+per second) is the ``correct'' term to use (at least it doesn't seem
+to bother the curmudgeons quite a much).
+
+<sect2>External vs. Internal Modems
+<p>
+
+External modems seem to be more convenient for dialup, because
+external modems often can be semi-permanently configured via
+parameters stored in non-volatile RAM and they usually provide lighted
+indicators that display the state of important RS-232 signals.
+Blinking lights impress visitors, but lights are also very useful to
+see whether a modem is operating properly.
+
+Internal modems usually lack non-volatile RAM, so their configuration
+may be limited only to setting DIP switches. If your internal modem
+has any signal indicator lights, it is probably difficult to view the
+lights when the system's cover is in place.
+
+<sect2>Modems and Cables
+<p>
+
+A background knowledge of these items is assumed
+
+<itemize>
+
+<item> You know how to connect your modem to your computer so that the
+two can communicate (unless you have an internal modem, which doesn't
+need such a cable)
+
+<item> You are familiar with your modem's command set, or know where
+to look up needed commands
+
+<item> You know how to configure your modem (probably via a terminal
+communications program) so you can set the non-volatile RAM
+parameters
+
+</itemize>
+
+The first, connecting your modem, is usually simple - most
+straight-through serial cables work without any problems. You need to
+have a cable with appropriate connectors (DB-25 or DB-9, male or
+female) on each end, and the cable must be a DCE-to-DTE cable with
+these signals wired:
+
+<itemize>
+<item> Transmitted Data (<tt/SD/)
+<item> Received Data (<tt/RD/)
+<item> Request to Send (<tt/RTS/)
+<item> Clear to Send (<tt/CTS/)
+<item> Data Set Ready (<tt/DSR/)
+<item> Data Terminal Ready (<tt/DTR/)
+<item> Carrier Detect (<tt/CD/)
+<item> Signal Ground (<tt/SG/)
+</itemize>
+
+FreeBSD needs the <tt/RTS/ and <tt/CTS/ signals for flow-control at
+speeds above 2400bps, the <tt/CD/ signal to detect when a call has
+been answered or the line has been hung up, and the <tt/DTR/ signal to
+reset the modem after a session is complete. Some cables are wired
+without all of the needed signals, so if you have problems, such as
+a login session not going away when the line hangs up, you may have a
+problem with your cable.
+
+The second prerequisite depends on the modem(s) you use. If you don't
+know your modem's command set by heart, you will need to have the
+modem's reference book or user's guide handy. Sample commands for USR
+Sportster 14,400 external modems will be given, which you may be able
+to use as a reference for your own modem's commands.
+
+Lastly, you'll need to know how to setup your modem so that it will
+work well with FreeBSD. Like other UNIX-like operating systems,
+FreeBSD uses the hardware signals to find out when a call has been
+answered or a line has been hung up and to hangup and reset the modem
+after a call. FreeBSD avoids sending commands to the modem or
+watching for status reports from the modem. If you are familiar with
+connecting modems to PC-based bulletin board systems, this may seem
+awkward.
+
+<sect2>Serial Interface Considerations
+<p>
+
+FreeBSD supports NS8250-, NS16450-, NS16550-, and NS16550A-based EIA
+RS-232C (CCITT V.24) communications interfaces. The 8250 and 16450
+devices have single-character buffers. The 16550 device provides a
+16-character buffer, which allows for better system performance.
+(Bugs in plain 16550's prevent the use of the 16-character buffer, so
+use 16550A's if possible). Because single-character-buffer devices
+require more work by the operating system than the 16-character-buffer
+devices, 16550A-based serial interface cards are much prefered. If
+the system has many active serial ports or will have a heavy load,
+16550A-based cards are better for low-error-rate communications.
+
+<sect1>Quick Overview
+<p>
+
+Here is the process that FreeBSD follows to accept dialup logins. A
+<tt/getty/ process, spawned by <tt/init/, patiently waits to open the
+assigned serial port (<tt>/dev/ttyd0</tt>, for our example). The
+command <tt/ps ax/ might show this:
+
+<tscreen><verb>
+ 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0
+</verb></tscreen>
+
+When a user dials the modem's line and the modems connect, the <tt/CD/
+line is asserted by the modem. The kernel notices that carrier has
+been detected and completes <tt/getty/'s open of the port. <tt/getty/
+sends a <tt/login:/ prompt at the specified initial line speed.
+<tt/getty/ watches to see if legitimate characters are received, and,
+in a typical configuration, if it finds junk (probably due to the
+modem's connection speed being different than <tt/getty/'s speed),
+<tt/getty/ tries adjusting the line speeds until it receives
+reasonable characters.
+
+We hope <tt/getty/ finds the correct speed and the user sees a
+<tt/login:/ prompt. After the user enters his/her login name,
+<tt/getty/ executes <tt>/usr/bin/login</tt>, which completes the login
+by asking for the user's password and then starting the user's shell.
+
+Let's dive into the configuration...
+
+<sect1>Kernel Configuration
+<p>
+
+FreeBSD kernels typically come prepared to search for four serial
+ports, known in the PC-DOS world as <tt/COM1:/, <tt/COM2:/,
+<tt/COM3:/, and <tt/COM4:/. FreeBSD can presently also handle
+``dumb'' multiport serial interface cards, such as the Boca Board
+1008 and 2016 (please see the manual page <tt/sio(4)/ for kernel
+configuration information if you have a multiport serial card). The
+default kernel only looks for the standard COM ports, though.
+
+To see if your kernel recognizes any of your serial ports, watch for
+messages while the kernel is booting, or use the
+<tt>/sbin/dmesg</tt> command to replay the kernel's boot messages. In
+particular, look for messages that start with the characters <tt/sio/.
+Hint: to view just the messages that have the word <tt/sio/, use the
+command
+
+<tscreen><verb>
+/usr/sbin/dmesg | grep 'sio'
+</verb></tscreen>
+
+For example, on a system with four serial ports, these are the
+serial-port specific kernel boot messages:
+
+<tscreen><verb>
+sio0 at 0x3f8-0x3ff irq 4 on isa
+sio0: type 16550A
+sio1 at 0x2f8-0x2ff irq 3 on isa
+sio1: type 16550A
+sio2 at 0x3e8-0x3ef irq 5 on isa
+sio2: type 16550A
+sio3 at 0x2e8-0x2ef irq 9 on isa
+sio3: type 16550A
+</verb></tscreen>
+
+If your kernel doesn't recognize all of your serial ports, you'll
+probably need to configure a custom FreeBSD kernel for your system.
+
+Please see the BSD System Manager's Manual chapter on ``Building
+Berkeley Kernels with Config'' &lsqb;the source for which is in
+<tt>/usr/src/share/doc/smm</tt>&rsqb; and ``FreeBSD Configuration
+Options'' &lsqb;in <tt>/sys/doc/options.doc</tt>&rsqb; for more
+information on configuring and building kernels. You may have to
+unpack the kernel source distribution if haven't installed the system
+sources already (<tt>srcdist/srcsys.??</tt> in FreeBSD 1.1,
+<tt>srcdist/sys.??</tt> in FreeBSD 1.1.5.1, or the entire source
+distribution in FreeBSD 2.0) to be able to configure and build
+kernels.
+
+Create a kernel configuration file for your system (if you haven't
+already) by <tt/cd/ing to <tt>/sys/i386/conf</tt>. Then, if you are
+creating a new custom configuration file, copy the file GENERICAH (or
+GENERICBT, if you have a BusTek SCSI controller on FreeBSD 1.x) to
+<em/YOURSYS/, where <em/YOURSYS/ is the name of your system, but in
+upper-case letters. Edit the file, and change the device lines
+
+<tscreen><verb>
+device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr
+device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr
+device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr
+device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr
+</verb></tscreen>
+
+You can comment-out or completely remove lines for devices you don't
+have. If you have a multiport serial board, such as the Boca Board
+BB2016, please see the <tt/sio(4)/ man page for complete information
+on how to write configuration lines for multiport boards. Be careful
+if you are using a configuration file that was previously used for a
+different version of FreeBSD because the device flags have changed
+between versions.
+
+Note that <tt/port "IO_COM1"/ is a substitution for <tt/port 0x3f8/,
+<tt/IO_COM2/ is <tt/0x2f8/, <tt/IO_COM3/ is <tt/0x3e8/, and
+<tt/IO_COM4/ is <tt/0x2e8/, which are fairly common port addresses for
+their respective serial ports; interrupts 4, 3, 5, and 9 are fairly
+common interrupt request lines. Also note that regular serial ports
+<bf>can't</bf> share interrupts on ISA-bus PCs (multiport boards have
+on-board electronics that allow all the 16550A's on the board to share
+one or two interrupt request lines).
+
+When you are finished adjusting the kernel configuration file, use the
+program <tt/config/ as documented in ``Building Berkeley Kernels with
+Config'' and the <tt/config(8)/ manual page to prepare a kernel
+building directory, then build, install, and test the new kernel.
+
+<sect1>Device Special Files
+<p>
+
+Most devices in the kernel are accessed through ``device special
+files'', which are located in the <tt>/dev</tt> directory. The
+<tt/sio/ devices are accessed through the <tt>/dev/ttyd?</tt>
+(dial-in) and <tt>/dev/cua0?</tt> (call-out) devices. On FreeBSD
+version 1.1.5 and higher, there are also initialization devices
+(<tt>/dev/ttyid?</tt> and <tt>/dev/cuai0?</tt>) and locking devices
+(<tt>/dev/ttyld?</tt> and <tt>/dev/cual0?</tt>). The initialization
+devices are used to initialize communications port parameters each
+time a port is opened, such as <tt>crtscts</tt> for modems which use
+<tt>CTS/RTS</tt> signalling for flow control. The locking devices are
+used to lock flags on ports to prevent users or programs changing
+certain parameters; see the manual pages <tt/termios(4)/, <tt/sio(4)/,
+and <tt/stty(1)/ for information on the terminal settings, locking
+&amp; initializing devices, and setting terminal options,
+respectively.
+
+<sect2>Making Device Special Files
+<p>
+
+A shell script called <tt/MAKEDEV/ in the <tt>/dev</tt> directory
+manages the device special files. (The manual page for
+<tt/MAKEDEV(8)/ on FreeBSD 1.1.5 is fairly bogus in its discussion of
+<tt/COM/ ports, so ignore it.) To use <tt/MAKEDEV/ to make dialup
+device special files for <tt/COM1:/ (port 0), <tt/cd/ to <tt>/dev</tt>
+and issue the command <tt/MAKEDEV ttyd0/. Likewise, to make dialup
+device special files for <tt/COM2:/ (port 1), use <tt/MAKEDEV ttyd1/.
+
+<tt/MAKDEV/ not only creates the <tt>/dev/ttyd?</tt> device special
+files, but also creates the <tt>/dev/cua0?</tt> (and all of the
+initializing and locking special files under FreeBSD 1.1.5 and up) and
+removes the hardwired terminal special file <tt>/dev/tty0?</tt>, if it
+exists.
+
+After making new device special files, be sure to check the
+permissions on the files (especially the <tt>/dev/cua*</tt> files) to
+make sure that only users who should have access to those device
+special files can read &amp; write on them - you probably don't want
+to allow your average user to use your modems to dialout. The default
+permissions on the <tt>/dev/cua*</tt> files should be sufficient:
+
+<tscreen><verb>
+crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cua01
+crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuai01
+crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cual01
+</verb></tscreen>
+
+These permissions allow the user <tt/uucp/ and users in the group
+<tt/dialer/ to use the call-out devices.
+
+<sect1>Configuration Files
+<p>
+
+There are three system configuration files in the <tt>/etc</tt>
+directory that you'll probably need to edit to allow dialup access to
+your FreeBSD system. The first, <tt>/etc/gettytab</tt>, contains
+configuration information for the <tt>/usr/libexec/getty</tt> daemon.
+Second, <tt>/etc/ttys</tt> holds information that tells
+<tt>/sbin/init</tt> what <tt/tty/ devices should have <tt/getty/
+processes running on them. Lastly, you can place port initialization
+commands in the <tt>/etc/rc.serial</tt> script if you have FreeBSD
+1.1.5.1 or higher; otherwise, you can initialize ports in the
+<tt>/etc/rc.local</tt> script.
+
+There are two schools of thought regarding dialup modems on UNIX. One
+group likes to configure their modems and system so that no matter at
+what speed a remote user dials in, the local computer-to-modem RS-232
+interface runs at a locked speed. The benefit of this configuration
+is that the remote user always sees a system login prompt immediately.
+The downside is that the system doesn't know what a user's true data
+rate is, so full-screen programs like Emacs won't adjust their
+screen-painting methods to make their response better for slower
+connections.
+
+The other school configures their modems' RS-232 interface to vary its
+speed based on the remote user's connection speed. For example,
+V.32bis (14.4 Kbps) connections to the modem might make the modem run
+its RS-232 interface at 19.2 Kbps, while 2400 bps connections make the
+modem's RS-232 interface run at 2400 bps. Because <tt/getty/ doesn't
+understand any particular modem's connection speed reporting,
+<tt/getty/ gives a <tt/login:/ message at an initial speed and watches
+the characters that come back in response. If the user sees junk,
+it's assumed that they know they should press the
+<tt>&lt;Enter&gt;</tt> key until they see a recognizable prompt. If
+the data rates don't match, <tt/getty/ sees anything the user types as
+``junk'', tries going to the next speed and gives the <tt/login:/
+prompt again. This procedure can continue ad nauseum, but normally
+only takes a keystroke or two before the user sees a good prompt.
+Obviously, this login sequence doesn't look as clean as the former
+``locked-speed'' method, but a user on a low-speed connection should
+receive better interactive response from full-screen programs.
+
+The author will try to give balanced configuration information, but is
+biased towards having the modem's data rate follow the connection
+rate.
+
+<sect2>/etc/gettytab
+<p>
+
+<tt>/etc/gettytab</tt> is a <tt/termcap(5)/-style file of
+configuration information for <tt/getty(8)/. Please see the
+<tt/gettytab(4)/ manual page for complete information on the format of
+the file and the list of capabilities.
+
+<sect3>Locked-Speed Config
+<p>
+
+If you are locking your modem's data communications rate at a
+particular speed, you probably won't need to make any changes to
+<tt>/etc/gettytab</tt>.
+
+<sect3>Matching-Speed Config
+<p>
+
+You'll need to setup an entry in <tt>/etc/gettytab</tt> to give
+<tt/getty/ information about the speeds you wish to use for your
+modem. If you have a 2400 bps modem, you can probably use the
+existing <tt/D2400/ entry. This entry already exists in the FreeBSD
+1.1.5.1 <tt/gettytab/ file, so you don't need to add it unless it is
+missing under your version of FreeBSD:
+
+<tscreen><verb>
+#
+# Fast dialup terminals, 2400/1200/300 rotary (can start either way)
+#
+D2400|d2400|Fast-Dial-2400:\
+ :nx=D1200:tc=2400-baud:
+3|D1200|Fast-Dial-1200:\
+ :nx=D300:tc=1200-baud:
+5|D300|Fast-Dial-300:\
+ :nx=D2400:tc=300-baud:
+</verb></tscreen>
+
+If you have a higher speed modem, you'll probably need to add an entry
+in <tt>/etc/gettytab</tt>; here's an entry you could use for a 14.4
+Kbps modem with a top interface speed of 19.2 Kpbs:
+
+<tscreen><verb>
+#
+# Additions for a V.32bis Modem
+#
+um|V300|High Speed Modem at 300,8-bit:\
+ :nx=V19200:tc=std.300:
+un|V1200|High Speed Modem at 1200,8-bit:\
+ :nx=V300:tc=std.1200:
+uo|V2400|High Speed Modem at 2400,8-bit:\
+ :nx=V1200:tc=std.2400:
+up|V9600|High Speed Modem at 9600,8-bit:\
+ :nx=V2400:tc=std.9600:
+uq|V19200|High Speed Modem at 19200,8-bit:\
+ :nx=V9600:tc=std.19200:
+</verb></tscreen>
+
+On FreeBSD 1.1.5 and later, this will result in 8-bit, no parity
+connections. Under FreeBSD 1.1, add <tt/:np:/ parameters to the
+<tt>std.<em/xxx/</tt> entries at the top of the file for 8 bits, no
+parity; otherwise, the default is 7 bits, even parity.
+
+The example above starts the communications rate at 19.2 Kbps (for a
+V.32bis connection), then cycles through 9600 bps (for V.32), 2400
+bps, 1200 bps, 300 bps, and back to 19.2 Kbps. Communcations rate
+cycling is implemented with the <tt/nx=/ (<bf/next table/) capability.
+Each of the lines uses a <tt/tc=/ (<bf/table continuation/) entry to
+pick up the rest of the ``standard'' settings for a particular data
+rate.
+
+If you have a 28.8 Kbps modem and/or you want to take advantage of
+compression on a 14.4 Kbps modem, you need to use a higher
+communications rate than 19.2 Kbps. Here's an example of a
+<tt/gettytab/ entry starting a 57.6 Kpbs:
+
+<tscreen><verb>
+#
+# Additions for a V.32bis or V.34 Modem
+# Starting at 57.6 Kpbs
+#
+vm|VH300|Very High Speed Modem at 300,8-bit:\
+ :nx=VH57600:tc=std.300:
+vn|VH1200|Very High Speed Modem at 1200,8-bit:\
+ :nx=VH300:tc=std.1200:
+vo|VH2400|Very High Speed Modem at 2400,8-bit:\
+ :nx=VH1200:tc=std.2400:
+vp|VH9600|Very High Speed Modem at 9600,8-bit:\
+ :nx=VH2400:tc=std.9600:
+vq|VH57600|Very High Speed Modem at 57600,8-bit:\
+ :nx=VH9600:tc=std.57600:
+</verb></tscreen>
+
+If you have a slow CPU or a heavily loaded system and you don't have
+16550A-based serial ports, you may receive sio ``silo'' errors at 57.6
+Kbps.
+
+<sect2>/etc/ttys
+<p>
+
+<tt>/etc/ttys</tt> is the list of <tt/ttys/ for <tt/init/ to monitor.
+<tt>/etc/ttys</tt> also provides security information to <tt/login/
+(user <tt/root/ may only login on ttys marked <tt/secure/). See the
+manual page for <tt/ttys(5)/ for more information.
+
+You'll need to either modify existing lines in <tt>/etc/ttys</tt> or
+add new lines to make <tt/init/ run <tt/getty/ processes automatically
+on your new dialup ports. The general format of the line will be the
+same, whether you are using a locked-speed or matching-speed
+configuration:
+
+<tscreen><verb>
+ttyd0 "/usr/libexec/getty xxx" dialup on
+</verb></tscreen>
+
+The first item in the above line is the device special file for this
+entry - <tt/ttyd0/ means <tt>/dev/ttyd0</tt> is the file that this
+<tt/getty/ will be watching. The second item, <tt>"/usr/libexec/getty
+<em/xxx/"</tt> (<em/xxx/ will be replaced by the initial <tt/gettytab/
+capability) is the process <tt/init/ will run on the device. The
+third item, <tt/dialup/, is the default terminal type. The fourth
+parameter, <tt/on/, indicates to <tt/init/ that the line is
+operational. There can be a fifth parameter, <tt>secure</tt>, but it
+should only be used for terminals which are physically secure (such as
+the system console).
+
+The default terminal type (<tt/dialup/ in the example above) may
+depend on local preferences. <tt/dialup/ is the traditional default
+terminal type on dialup lines so that users may customize their login
+scripts to notice when the terminal is <tt/dialup/ and automatically
+adjust their terminal type. However, the author finds it easier at
+his site to specify <tt/vt102/ as the default terminal type, since the
+users just use VT102 emulation on their remote systems.
+
+After you have made changes to <tt>/etc/ttys</tt>, you may send the
+<tt/init/ process a <tt/HUP/ signal to re-read the file. You can use
+the command
+
+<tscreen><verb>
+kill -1 1
+</verb></tscreen>
+
+to send the signal. If this is your first time setting up the system,
+though, you may want to wait until your modem(s) are properly
+configured and connected before signalling <tt/init/.
+
+<sect3>Locked-Speed Config
+<p>
+
+For a locked-speed configuration, your <tt/ttys/ entry needs to
+have a fixed-speed entry provided to <tt/getty/. For a modem whose
+port speed is locked at 19.2 Kbps, the <tt/ttys/ entry might look like
+this:
+
+<tscreen><verb>
+ttyd0 "/usr/libexec/getty std.19200" dialup on
+</verb></tscreen>
+
+If your modem is locked at a different data rate, substitute the
+appropriate name for the <tt>std.<em/speed/</tt> entry for
+<tt/std.19200/ from <tt>/etc/gettytab</tt> for your modem's data rate.
+
+<sect3>Matching-Speed Config
+<p>
+
+In a matching-speed configuration, your <tt/ttys/ entry needs to
+reference the appropriate beginning ``auto-baud'' (sic) entry in
+<tt>/etc/gettytab</tt>. For example, if you added the above suggested
+entry for a matching-speed modem that starts at 19.2 Kbps (the
+<tt/gettytab/ entry containing the <tt/V19200/ starting point), your
+<tt/ttys/ entry might look like this:
+
+<tscreen><verb>
+ttyd0 "/usr/libexec/getty V19200" dialup on
+</verb></tscreen>
+
+<sect2>/etc/rc.serial or /etc/rc.local
+<p>
+
+High-speed modems, like V.32, V.32bis, and V.34 modems, need to use
+hardware (<tt>RTS/CTS</tt>) flow control. You can add <tt/stty/
+commands to <tt>/etc/rc.serial</tt> on FreeBSD 1.1.5.1 and up, or
+<tt>/etc/rc.local</tt> on FreeBSD 1.1, to set the hardware flow
+control flag in the FreeBSD kernel for the modem ports.
+
+For example, on a sample FreeBSD 1.1.5.1 system,
+<tt>/etc/rc.serial</tt> reads:
+
+<tscreen><verb>
+#!/bin/sh
+#
+# Serial port initial configuration
+
+stty -f /dev/ttyid1 crtscts
+stty -f /dev/cuai01 crtscts
+</verb></tscreen>
+
+which sets the <tt/termios/ flag <tt/crtscts/ on serial port &num;1's
+(<tt/COM2:/) dialin and dialout initialization devices.
+
+On an old FreeBSD 1.1 system, these entries were added to
+/etc/rc.local to set the <tt/crtscts/ flag on the devices:
+
+<tscreen><verb>
+# Set serial ports to use RTS/CTS flow control
+stty -f /dev/ttyd0 crtscts
+stty -f /dev/ttyd1 crtscts
+stty -f /dev/ttyd2 crtscts
+stty -f /dev/ttyd3 crtscts
+</verb></tscreen>
+
+Since there isn't an initialization device special file on FreeBSD
+1.1, one has to just set the flags on the sole device special file and
+hope the flags aren't cleared by a miscreant.
+
+<sect1>Modem Settings
+<p>
+
+If you have a modem whose parameters may be permanently set in
+non-volatile RAM, you'll need to use a terminal program (such as Telix
+under PC-DOS or <tt/tip/ under FreeBSD) to set the parameters.
+Connect to the modem using the same communications speed as the
+initial speed <tt/getty/ will use and configure the modem's
+non-volatile RAM to match these requirements:
+
+<itemize>
+
+<item> <tt/CD/ asserted when connected
+
+<item> <tt/DTR/ asserted for operation; dropping DTR hangs up line
+&amp; resets modem
+
+<item> <tt/CTS/ transmitted data flow control
+
+<item> Disable <tt>XON/XOFF</tt> flow control
+
+<item> <tt/RTS/ received data flow control
+
+<item> Quiet mode (no result codes)
+
+<item> No command echo
+
+</itemize>
+
+Please read the documentation for your modem to find out what commands
+and/or DIP switch settings you need to give it.
+
+For example, to set the above parameters on a USRobotics Sportster
+14,400 external modem, one could give these commands to the modem:
+
+<tscreen><verb>
+ATZ
+AT&amp;C1&amp;D2&amp;H1&amp;I0&amp;R2&amp;W
+</verb></tscreen>
+
+You might also want to take this opportunity to adjust other settings
+in the modem, such as whether it will use V.42bis and/or MNP5
+compression.
+
+The USR Sportster 14,400 external modem also has some DIP switches
+that need to be set; for other modems, perhaps you can use these
+settings as an example:
+
+<itemize>
+
+<item> Switch 1: UP - DTR Normal
+
+<item> Switch 2: Don't care (Verbal Result Codes/Numeric Result Codes)
+
+<item> Switch 3: UP - Suppress Result Codes
+
+<item> Switch 4: DOWN - No echo, offline commands
+
+<item> Switch 5: UP - Auto Answer
+
+<item> Switch 6: UP - Carrier Detect Normal
+
+<item> Switch 7: UP - Load NVRAM Defaults
+
+<item> Switch 8: Don't care (Smart Mode/Dumb Mode)
+
+</itemize>
+
+Result codes should be disabled/suppressed for dialup modems to avoid
+problems that can occur if <tt/getty/ mistakenly gives a <tt/login:/
+prompt to a modem that is in command mode and the modem echoes the
+command or returns a result code. I've heard this sequence can result
+in a extended, silly conversation between <tt/getty/ and the modem.
+
+<sect2>Locked-speed Config
+<p>
+
+For a locked-speed configuration, you'll need to configure the modem
+to maintain a constant modem-to-computer data rate independent of the
+communications rate. On a USR Sportster 14,400 external modem, these
+commands will lock the modem-to-computer data rate at the speed used
+to issue the commands:
+
+<tscreen><verb>
+ATZ
+AT&amp;B1&amp;W
+</verb></tscreen>
+
+<sect2>Matching-speed Config
+<p>
+
+For a variable-speed configuration, you'll need to configure your
+modem to adjust its serial port data rate to match the incoming call
+rate. On a USR Sportster 14,400 external modem, these commands will
+lock the modem's error-corrected data rate to the speed used to issue
+the commands, but allow the serial port rate to vary for
+non-error-corrected connections:
+
+<tscreen><verb>
+ATZ
+AT&amp;B2&amp;W
+</verb></tscreen>
+
+<sect2>Checking the Modem's Configuration
+<p>
+
+Most high-speed modems provide commands to view the modem's current
+operating parameters in a somewhat human-readable fashion. On the USR
+Sportster 14,400 external modems, the command <tt/ATI5/ displays the
+settings that are stored in the non-volatile RAM. To see the true
+operating parameters of the modem (as influenced by the USR's DIP
+switch settings), use the commands <tt/ATZ/ and then <tt/ATI4/.
+
+If you have a different brand of modem, check your modem's manual to
+see how to double-check your modem's configuration parameters.
+
+<sect1>Troubleshooting
+<p>
+
+Here are a few steps you can follow to check out the dialup modem on
+your system.
+
+<sect2>Checking out the FreeBSD system
+<p>
+
+Hook up your modem to your FreeBSD system, boot the system, and, if
+your modem has status indication lights, watch to see whether the
+modem's <tt/DTR/ indicator lights when the <tt/login:/ prompt appears
+on the system's console - if it lights up, that should mean that
+FreeBSD has started a <tt/getty/ process on the appropriate
+communications port and is waiting for the modem to accept a call.
+
+If the <tt/DTR/ indicator doesn't light, login to the FreeBSD system
+through the console and issue a <tt/ps ax/ to see if FreeBSD is trying
+to run a <tt/getty/ process on the correct port. You should see a
+lines like this among the processes displayed:
+
+<tscreen><verb>
+ 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
+ 115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1
+</verb></tscreen>
+
+If you see something different, like this:
+
+<tscreen><verb>
+ 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0
+ ^^
+</verb></tscreen>
+
+and the modem hasn't accepted a call yet, this means that <tt/getty/
+has completed its open on the communications port. This could
+indicate a problem with the cabling or a mis-configured modem, because
+<tt/getty/ should not be able to open the communications port until
+<tt/CD/ (carrier detect) has been asserted by the modem.
+
+If you don't see any <tt/getty/ processes waiting to open the desired
+<tt/ttyd?/ port, double-check your entries in <tt>/etc/ttys</tt> to
+see if there are any mistakes there. Also, check the log file
+<tt>/var/log/messages</tt> to see if there are any log messages from
+<tt/init/ or <tt/getty/ regarding any problems. If there are any
+messages, triple-check the configuration files <tt>/etc/ttys</tt> and
+<tt>/etc/gettytab</tt>, as well as the appropriate device special
+files <tt>/dev/ttyd?</tt>, for any mistakes, missing entries, or
+missing device special files.
+
+<sect2>Try Dialing In
+<p>
+
+Try dialing into the system; be sure to use 8 bits, no parity, 1 stop
+bit on the remote system. If you don't get a prompt right away, or
+get garbage, try pressing <tt>&lt;Enter&gt;</tt> about once per
+second. If you still don't see a <tt/login:/ prompt after a while,
+try sending a <tt>BREAK</tt>. If you are using a high-speed modem to
+do the dialing, try dialing again after locking the dialing modem's
+interface speed (via <tt>AT&amp;B1</tt> on a USR Sportster, for
+example).
+
+If you still can't get a <tt/login:/ prompt, check
+<tt>/etc/gettytab</tt> again and double-check that
+
+<itemize>
+<item> The initial capability name specified in <tt>/etc/ttys</tt> for
+the line matches a name of a capability in <tt>/etc/gettytab</tt>
+
+<item> Each <tt/nx=/ entry matches another <tt/gettytab/ capabilty
+name
+
+<item> Each <tt/tc=/ entry matches another <tt/gettytab/ capability
+name
+
+</itemize>
+
+If you dial but the modem on the FreeBSD system won't answer, make
+sure that the modem is configured to answer the phone when <tt/DTR/ is
+asserted. If the modem seems to be configured correctly, verify that
+the <tt/DTR/ line is asserted by checking the modem's indicator lights
+(if it has any).
+
+If you've gone over everything several times and it still doesn't work,
+take a break and come back to it later. If it still doesn't work,
+perhaps you can send an electronic mail message to
+<tt>FreeBSD-Questions@freebsd.org</tt> describing your modem and your
+problem, and the good folks on the list will try to help.
+
+<sect1>Acknowledgements
+<p>
+
+Thanks to these people for comments and advice:
+
+<descrip>
+
+<tag/Sean Kelly/ &lt;kelly@fsl.noaa.gov&gt; for a number of good
+suggestions
+
+</descrip>
+
+
diff --git a/handbook/diskless.sgml b/handbook/diskless.sgml
new file mode 100644
index 0000000000..25baa4dc03
--- /dev/null
+++ b/handbook/diskless.sgml
@@ -0,0 +1,153 @@
+<!-- $Id: diskless.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<sect><heading>Diskless operation</heading>
+
+<p><em>Contributed by &a.martin;.</em>
+
+ <tt>netboot.com/netboot.rom</tt> allow you to boot your
+ FreeBSD machine over the network and run FreeBSD without
+ having a disk on your client. Under 2.0 it is now
+ possible to have local swap. Swapping over NFS is also
+ still supported.
+
+ Supported Ethernet cards include: Western Digital/SMC
+ 8003, 8013, 8216 and compatibles; NE1000/NE2000 and
+ compatibles (requires recompile)
+
+ <sect1>
+ <heading>Setup Instructions</heading>
+
+ <p><enum>
+ <item> Find a machine that will be your server. This
+ machine will require enough disk space to hold the
+ FreeBSD 2.0 binaries and have bootp, tftp and NFS
+ services available.
+
+ Tested machines:
+ <itemize>
+ <item>HP9000/8xx running HP-UX 9.04 or later (pre
+ 9.04 doesn't work)</item>
+ <item>Sun/Solaries 2.3. (you may need to get
+ bootp)</item>
+ </itemize>
+
+ <item>Set up a bootp server to provide the client with
+ IP, gateway, netmask.
+<tscreen><verb>
+diskless:\
+ :ht=ether:\
+ :ha=0000c01f848a:\
+ :sm=255.255.255.0:\
+ :hn:\
+ :ds=192.1.2.3:\
+ :ip=192.1.2.4:\
+ :gw=192.1.2.5:\
+ :vm=rfc1048:
+</verb></tscreen></item>
+
+ <item>Set up a TFTP server (on same machine as bootp
+ server) to provide booting information to client.
+ The name of this file is <tt>cfg.X.X.X.X</tt> (or
+ <tt>/tftpboot/cfg.X.X.X.X</tt>, it will try both)
+ where <tt>X.X.X.X</tt> is the IP address of the
+ client. The contents of this file can be any valid
+ netboot commands. Under 2.0, netboot has the
+ following commands:
+<tscreen><verb>
+help - print help list
+ip <X.X.X.X> - print/set client's IP address
+server <X.X.X.X> - print/set bootp/tftp server address
+netmask <X.X.X.X> - print/set netmask
+hostname <name> - print/set hostname
+kernel <name> - print/set kernel name
+rootfs <ip:/fs> - print/set rootfilesystem
+swapfs <ip:/fs> - print/set swapfilesystem
+swapsize <size> - set diskless swapsize in Kbytes
+diskboot - boot from disk
+autoboot - continue boot process
+</verb></tscreen>
+ A typical completely diskless cfg file might contain:
+<tscreen><verb>
+rootfs 192.1.2.3:/rootfs/myclient
+swapfs 192.1.2.3:/swapfs
+swapsize 20000
+hostname myclient.mydomain
+</verb></tscreen>
+ A cfg file for a machine with local swap might contain:
+<tscreen><verb>
+rootfs 192.1.2.3:/rootfs/myclient
+hostname myclient.mydomain
+</verb></tscreen>
+
+ <item>Ensure that your NFS server has exported the root
+ (and swap if applicable) filesystems to your client,
+ and that the client has root access to these
+ filesystems
+
+ A typical <tt>/etc/exports</tt> file on FreeBSD might
+ look like:
+<tscreen><verb>
+/rootfs/myclient -maproot=0:0 myclient.mydomain
+/swapfs -maproot=0:0 myclient.mydomain
+</verb></tscreen>
+
+ And on HP-UX:
+<tscreen><verb>
+/rootfs/myclient -root=myclient.mydomain
+/swapfs -root=myclient.mydomain
+</verb></tscreen>
+
+ <item>If you are swapping over NFS (completely diskless
+ configuration) create a swap file for your client
+ using touch. If your <tt>swapfs</tt> command has the
+ argument <tt>/swapfs</tt> as in the example above,
+ the swapfile for myclient will be called
+ <tt>/swapfs/swap.X.X.X.X</tt> where <tt>X.X.X.X</tt>
+ is the client's IP addr, eg:
+<tscreen><verb>
+# touch /swapfs/swap.192.1.2.4
+</verb></tscreen>
+
+ <item> Unpack the root filesystem in the directory the
+ client will use for its root filesystem
+ (<tt>/rootfs/myclient</tt> in the example above).
+
+ <itemize>
+
+ <item> On HP-UX systems: The server should be
+ running HP-UX 9.04 or later for HP9000/800 series
+ machines. Prior versions don't allow the
+ creation of device files over NFS.
+
+ <item> When extracting <tt>/dev</tt> in
+ <tt>/rootfs/myclient</tt>, beware that some
+ systems (HPUX) will not create device files that
+ FreeBSD is happy with. You may have to go to
+ single user mode on the first bootup (press
+ control-c during the bootup phase), cd
+ <tt>/dev</tt> and do a "<tt>sh ./MAKEDEV
+ all</tt>" from the client to fix this.
+ </itemize>
+
+ <item>Run <tt>netboot.com</tt> on the client or make an EPROM
+ from the <tt>netboot.rom</tt> file
+ </enum>
+
+ <sect1>
+ <heading>Using Shared <tt>/</tt> and <tt>/usr</tt> filesystems</heading>
+
+ <p>At present there isn't an officially sanctioned way of
+ doing this, although I have been using a shared <tt>/usr</tt>
+ filesystem and individual <tt>/</tt> filesystems for each client.
+ If anyone has any suggestions on how to do this cleanly,
+ please let me and/or the core group know.
+
+ <sect1>
+ <heading>Compiling netboot for specific setups</heading>
+
+ <p>Netboot can be compiled to support NE1000/2000 cards by
+ changing the configuration in
+ <tt>/sys/i386/boot/netboot/Makefile</tt>. See the
+ comments at the top of this file.
+
diff --git a/handbook/eresources.sgml b/handbook/eresources.sgml
new file mode 100644
index 0000000000..c8da616aae
--- /dev/null
+++ b/handbook/eresources.sgml
@@ -0,0 +1,118 @@
+<!-- $Id: eresources.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+ <chapt>
+ <heading>Additional resources on the Internet</heading>
+
+ <sect>
+ <heading>Mailing lists</heading>
+
+ <p>The FreeBSD Project runs a number of Internet mailing
+ lists dedicated to the discussion of FreeBSD and
+ related topics. Users with access to Internet mail are
+ encouraged to subscribe to the lists that interest them
+ and ask questions. The procedure is quite simple, just
+ send a mail message to:
+ <tscreen>
+ <tt>majordomo@freebsd.org</tt>
+ </tscreen>
+ with a message body of:
+ <tscreen>
+ <tt><bf>subscribe <it>listname</it></bf></tt>
+ </tscreen>
+ where <em>listname</em> is one of the lists described
+ below. You can subscribe to multiple lists with a
+ single message by having several <em>subscribe</em>
+ lines. For more detailed information, send a message
+ to:
+ <tscreen>
+ <tt>majordomo@freebsd.org</tt>
+ </tscreen>
+ with a message body of
+ <tscreen>
+ <tt><bf>help</bf></tt>
+ </tscreen>
+
+ <sect1>
+ <heading>General discussion lists</heading>
+ <p><descrip>
+ <tag>freebsd-announce</tag> Important announcements
+ about FreeBSD are posted here.
+
+ <tag>freebsd-questions</tag> General discussion of
+ problems people experience in setting up and using
+ FreeBSD.
+
+ <tag>freebsd-hackers</tag> Technical discussions
+ about the design and implementation of FreeBSD.
+
+ <tag>freebsd-bugs</tag> Bug reports and discussions
+ of reported bugs are posted here, although the
+ discussions are usually moved over to the
+ <em>freebsd-hackers</em> mailing list if the become involved.
+ </descrip>
+
+ <sect1>
+ <heading>CVS lists</heading>
+
+ <sect>
+ <heading>Usenet newsgroups</heading>
+
+ <p>While no newsgroups dedicated to FreeBSD exist, there
+ are many in which FreeBSD is discussed or are otherwise
+ relevant to FreeBSD users.
+
+ <sect1>
+ <heading>BSD specific newsgroups</heading>
+
+ <p><itemize>
+ <item> comp.unix.bsd.freebsd.announce
+ <item> comp.unix.bsd.freebsd.misc
+ </itemize>
+
+ <sect1>
+ <heading>Other Unix newsgroups of interest</heading>
+
+ <p><itemize>
+ <item> comp.unix
+ <item> comp.unix.questions
+ <item> comp.unix.admin
+ <item> comp.unix.programmer
+ <item> comp.unix.shell
+ <item> comp.unix.user-friendly
+ <item> comp.security.unix
+ <item> comp.sources.unix
+ <item> comp.unix.advocacy
+ <item> comp.unix.misc
+ <item> comp.os.386bsd.announce
+ <item> comp.os.386bsd.apps
+ <item> comp.os.386bsd.bugs
+ <item> comp.os.386bsd.development
+ <item> comp.os.386bsd.misc
+ <item> comp.os.386bsd.questions
+ <item> comp.bugs.4bsd
+ <item> comp.bugs.4bsd.ucb-fixes
+ <item> comp.unix.bsd
+ </itemize>
+
+ <sect1>
+ <heading>X-Window system</heading>
+
+ <p><itemize>
+ <item> comp.windows.x.i386unix
+ <item> comp.windows.x
+ <item> comp.windows.x.apps
+ <item> comp.windows.x.announce
+ <item> comp.windows.x.intrinsics
+ <item> comp.windows.x.motif
+ <item> comp.windows.x.pex
+ <item> comp.emulators.ms-windows.wine
+ </itemize>
+
+ <sect>
+ <heading>Word Wide Web servers</heading>
+
+ <p><itemize>
+ <item> <url url="http://www.freebsd.org/"></item>
+ </itemize>
+ </sect>
diff --git a/handbook/glossary.sgml b/handbook/glossary.sgml
new file mode 100644
index 0000000000..385e6731a6
--- /dev/null
+++ b/handbook/glossary.sgml
@@ -0,0 +1,5 @@
+<!-- $Id: glossary.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<chapt><heading>Glossary</heading>
+
diff --git a/handbook/handbook.sgml b/handbook/handbook.sgml
new file mode 100644
index 0000000000..a53bb2638a
--- /dev/null
+++ b/handbook/handbook.sgml
@@ -0,0 +1,237 @@
+<!-- $Id: handbook.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<!DOCTYPE linuxdoc PUBLIC "-//Linux//DTD linuxdoc//EN" [
+<!ENTITY % authors SYSTEM "authors.sgml">
+%authors;
+
+<!ENTITY bibliography SYSTEM "bibliography.sgml">
+<!ENTITY basics SYSTEM "basics.sgml">
+<!ENTITY ctm SYSTEM "ctm.sgml">
+<!ENTITY current SYSTEM "current.sgml">
+<!ENTITY dialup SYSTEM "dialup.sgml">
+<!ENTITY diskless SYSTEM "diskless.sgml">
+<!ENTITY eresources SYSTEM "eresources.sgml">
+<!ENTITY glossary SYSTEM "glossary.sgml">
+<!ENTITY kerberos SYSTEM "kerberos.sgml">
+<!ENTITY nfs SYSTEM "nfs.sgml">
+<!ENTITY porting SYSTEM "porting.sgml">
+<!ENTITY ports SYSTEM "ports.sgml">
+<!ENTITY ppp SYSTEM "ppp.sgml">
+<!ENTITY scsi SYSTEM "scsi.sgml">
+<!ENTITY slipc SYSTEM "slipc.sgml">
+<!ENTITY slips SYSTEM "slips.sgml">
+<!ENTITY submitters SYSTEM "submitters.sgml">
+<!ENTITY sup SYSTEM "sup.sgml">
+<!ENTITY troubleshooting SYSTEM "troubleshooting.sgml">
+
+]>
+
+<!--
+
+Potential target audience:
+ 1. Potential users
+ a. new to unix
+ b. somewhat familiar with unix
+ c. veterans
+ 2. Existing users
+ a. new to unix
+ b. somewhat familiar with unix
+ c. veterans
+
+
+OUTLINE:
+
+-->
+
+<linuxdoc>
+ <book>
+
+ <title>FreeBSD Handbook
+ <author>
+ <name></name>
+ <!-- <date> -->
+
+
+ <abstract>Welcome to FreeBSD! This handbook covers the
+ installation and day to day use of FreeBSD.
+
+ This manual is a <bf>work in progress</bf> and is the
+ work of many individials. Many sections do not yet exist
+ and some of those that do exist need to be updated. If
+ you are interested in helping with this project, send
+ email to &a.jfieber; or to the FreeBSD Documentantion
+ Project mailing list <tt>&lt;doc@freebsd.org&gt;</tt>.
+ </abstract>
+
+ <toc>
+
+
+ <chapt><heading>Introduction</heading>
+
+ <sect><heading>FreeBSD In a nutshell</heading>
+
+ <sect><heading>History</heading>
+
+ <sect><heading>About this release</heading>
+
+ <sect><heading>FreeBSD now and in the future</heading>
+
+
+ <chapt><heading>Installing FreeBSD</heading>
+
+ <sect><heading>Preparing for the installation</heading>
+
+ <sect1><heading>Hardware checklist</heading>
+
+ <sect2><heading>minimal requirements</heading>
+
+ <sect2><heading>IRQs, IO Addresses, and DMA channels</heading>
+
+ <sect1><heading>Software checklist</heading>
+
+ <sect2><heading>Making the installation floppies</heading>
+
+ <sect2><heading>CD-ROM</heading>
+
+ <sect2><heading>Tape</heading>
+
+ <sect2><heading>Disk</heading>
+
+ <sect><heading>Installation</heading>
+
+ <sect><heading>Set up a user account</heading>
+
+ &basics;
+
+ <chapt><heading>Installing applications</heading>
+
+ <sect><heading>Installing packages</heading>
+ &ports;
+ &porting;
+
+ <chapt><heading>Reconfiguring the kernel</heading>
+
+ <p>Once you have your FreeBSD system installed and
+ operational it is a good idead to re-configure the
+ kernel. You may also need to re-configure the kernel if
+ you add, change, or remove hardware from your system.
+
+ <p>
+
+ <chapt><heading>Basic Networking</heading>
+ <sect><heading>Ethernet basics</heading>
+ <sect><heading>Serial basics</heading>
+ <sect><heading>Hardwired Terminals</heading>
+ &dialup;
+
+ <chapt><heading>PPP and SLIP</heading>
+
+ &ppp;
+ &slipc;
+ &slips;
+
+ <chapt><heading>Advanced networking</heading>
+ <sect><heading>Gateways and routing</heading>
+ &nfs;
+ <sect><heading>Yellow Pages/NIS</heading>
+ &diskless;
+ <sect><heading>ISDN</heading>
+
+ <chapt><heading>Mail</heading>
+
+ <chapt><heading>Printing</heading>
+
+ <chapt><heading>Users, groups and security</heading>
+
+ <sect><heading>DES, MD5 and Crypt</heading>
+
+ &kerberos;
+
+ <sect><heading>S/Key</heading>
+
+ <sect><heading>Firewalls</heading>
+
+ <chapt><heading>The X-Window System</heading>
+
+ <chapt><heading>Managing hardware</heading>
+ &scsi;
+ <sect><heading>adding/reconfiguring disks</heading>
+ <sect><heading>tapes and backups</heading>
+ <sect><heading>serial ports</heading>
+ <sect><heading>sound cards</heading>
+
+ <chapt><heading>PC Hardware compatibility</heading>
+
+ <sect><heading>CORE/PROCESSING</heading>
+
+ <sect1><heading>Motherboards</heading>
+
+ <sect2><heading>ISA</heading>
+
+ <sect2><heading>EISA</heading>
+
+ <sect2><heading>VLB</heading>
+
+ <sect2><heading>PCI</heading>
+
+ <sect1><heading>CPUs/FPUs</heading>
+
+ <sect1><heading>Memory</heading>
+
+ <sect1><heading>BIOS</heading>
+
+ <sect><heading>INPUT/OUTPUT</heading>
+
+ <sect1><heading>Video cards</heading>
+
+ <sect1><heading>Sound cards</heading>
+
+ <sect1><heading>Serial ports (including multiport cards)</heading>
+
+ <sect1><heading>Parallel ports</heading>
+
+ <sect1><heading>Modems</heading>
+
+ <sect1><heading>Etherenet cards</heading>
+
+ <sect1><heading>Keyboards</heading>
+
+ <sect1><heading>Mice</heading>
+
+ <sect1><heading>Other (joysticks? tablets?)</heading>
+
+ <sect><heading>STORAGE</heading>
+
+ <sect1><heading>Disk/tape controllers</heading>
+
+ <sect2><heading>SCSI</heading>
+
+ <sect2><heading>IDE</heading>
+
+ <sect2><heading>Floppy</heading>
+
+ <sect1><heading>Hard drives</heading>
+
+ <sect1><heading>Tape drives</heading>
+
+ <sect1><heading>CD-ROM drives</heading>
+
+ <sect1><heading>Other</heading>
+
+ <sect><heading>OTHER</heading>
+
+ <sect1><heading>PCMCIA</heading>
+
+ &current;
+ &ctm;
+ &sup;
+ &troubleshooting;
+ &submitters;
+
+ &bibliography;
+ &eresources;
+ &glossary;
+
+ </book>
+</linuxdoc>
diff --git a/handbook/kerberos.sgml b/handbook/kerberos.sgml
new file mode 100644
index 0000000000..7eca30e497
--- /dev/null
+++ b/handbook/kerberos.sgml
@@ -0,0 +1,329 @@
+<!-- $Id: kerberos.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<sect><heading>Kerberos</heading>
+
+<p><em>Contributed by &a.md;.</em>
+
+ <p>The following instructions can be used as a quick
+ guide on how to set up kerberos as distributed in 4.4
+ BSD. However, you should refer to the original Athena
+ documentation for a complete description.
+
+ <sect1>
+ <heading>Creating the initial database</heading>
+
+ <p>First make sure that you don't have any old kerberos
+ databases around. You should change to the directory
+ <tt>/etc/kerberosIV</tt> and check that only the
+ following files are present:
+
+<tscreen><verb>
+mideon# cd /etc/kerberosIV
+mideon# ls
+README krb.conf krb.realms register_keys
+ </verb></tscreen>
+
+ If any additional files (such as <tt>principal.dir</tt>) exist,
+ then use the <tt>kdb_destroy</tt> command to destroy the
+ old kerberos database.
+
+ <p>You should now edit the <tt>krb.conf</tt> and
+ <tt>krb.realms</tt> files to define your kerberos realm.
+ In this case the realm will be <it>BSC.NO</it> and the
+ server is <it>mideon.bsc.no</it>. We would edit the
+ <tt>krb.conf</tt> file to be as follows:
+
+<tscreen><verb>
+mideon# cat krb.conf
+BSC.NO
+BSC.NO mideon.bsc.no admin server
+CS.BERKELEY.EDU okeeffe.berkeley.edu
+ATHENA.MIT.EDU kerberos.mit.edu
+ATHENA.MIT.EDU kerberos-1.mit.edu
+ATHENA.MIT.EDU kerberos-2.mit.edu
+ATHENA.MIT.EDU kerberos-3.mit.edu
+LCS.MIT.EDU kerberos.lcs.mit.edu
+TELECOM.MIT.EDU bitsy.mit.edu
+ARC.NASA.GOV trident.arc.nasa.gov
+ </verb></tscreen>
+
+ <p>Now we have to add <it>mideon.bsc.no</it> to the
+ <it>BSC.NO</it> realm and also add an entry to put all
+ hosts in the <it>.bsc.no</it> domain in the
+ <it>BSC.NO</it> realm. The <tt>krb.realms</tt> file
+ would be updated as follows:
+
+<tscreen><verb>
+ mideon# cat krb.realms
+ mideon.bsc.no BSC.NO
+ .bsc.no BSC.NO
+ .berkeley.edu CS.BERKELEY.EDU
+ .MIT.EDU ATHENA.MIT.EDU
+ .mit.edu ATHENA.MIT.EDU
+</verb></tscreen>
+
+ <p>Now we're ready to create the database, issue the
+ <tt>kdb_init</tt> command to do this:
+
+<tscreen><verb>
+mideon# kdb_init
+Realm name [default CS.BERKELEY.EDU ]: BSC.NO
+You will be prompted for the database Master Password.
+It is important that you NOT FORGET this password.
+
+Enter Kerberos master key:
+ </verb></tscreen>
+
+ <p>Now we have to save the key so that servers on the local
+ machine can pick it up. Use the <tt>kstash</tt> command to
+ do this.
+
+<tscreen><verb>
+mideon# kstash
+
+Enter Kerberos master key:
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+ </verb></tscreen>
+
+ <sect1>
+ <heading>Populating the database</heading>
+
+ <p>We now have to add some entries into the database.
+ First lets create an entry for the user <it>md</it>. Use
+ the <tt>kdb_edit</tt> command to do this:
+
+<tscreen><verb>
+mideon# kdb_edit
+Opening database...
+
+Enter Kerberos master key:
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Previous or default values are in [brackets] ,
+enter return to leave the same, or new value.
+
+Principal name: md
+Instance:
+md. not found, Create [y] ?
+Principal: md, Instance: , kdc_key_ver: 1
+New Password:
+New Password:
+
+Principal's new key version = 1
+Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
+Max ticket lifetime (*5 minutes) [ 255 ] ? 100
+Attributes [ 0 ] ?
+Edit O.K.
+ </verb></tscreen>
+
+ <p>Now lets add an entry for the password changing daemon,
+ <tt>kpasswd</tt>. The principal name must be <it>kpasswd</it> and
+ the instance must be the name of the local machine,
+ <it>mideon</it> in this case. Similarily, we must also
+ add an entry for the principal <it>rcmd</it> with an
+ instance equal to the hostname of the local machine.
+
+<tscreen><verb>
+Principal name: kpasswd
+Instance: mideon
+kpasswd.mideon not found, Create [y] ?
+Principal: kpasswd, Instance: mideon, kdc_key_ver: 1
+New Password: <---- enter RANDOM here
+New Password: <---- and here
+Random password [y] ?
+
+Principal's new key version = 1
+Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
+Max ticket lifetime (*5 minutes) [ 255 ] ?
+Attributes [ 0 ] ?
+Edit O.K.
+Principal name: rcmd
+Instance: mideon
+rcmd.mideon not found, Create [y] ?
+Principal: rcmd, Instance: mideon, kdc_key_ver: 1
+New Password: <---- enter RANDOM here
+New Password: <---- and here
+Random password [y] ?
+
+Principal's new key version = 1
+Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
+Max ticket lifetime (*5 minutes) [ 255 ] ?
+Attributes [ 0 ] ?
+Edit O.K.
+Principal name: <---- null entry here will cause an exit
+ </verb></tscreen>
+
+ <sect1>
+ <heading>Creating the server file</heading>
+
+ <p>We now have to extract all the instances which define
+ the services on this machine. For this we use the
+ <tt>ext_srvtab</tt> command.
+
+<tscreen><verb>
+mideon# ext_srvtab mideon
+
+Enter Kerberos master key:
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Generating 'mideon-new-srvtab'....
+ </verb></tscreen>
+
+ <p>Now, this command only generates a temporary file
+ which must be renamed to <tt>srvtab</tt> so that all the
+ server can pick it up. Use the <tt>mv</tt> command to move it
+ into place:
+
+<tscreen><verb>
+mideon# mv mideon-new-srvtab srvtab
+ </verb></tscreen>
+
+ <sect1>
+ <heading>Testing it all out</heading>
+
+ <p>First we have to start the kerberos daemon:
+
+<tscreen><verb>
+mideon# kerberos &
+[1] 774
+mideon# Kerberos server starting
+ Sleep forever on error
+ Log file is /var/log/kerberos.log
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+
+Current Kerberos master key version is 1
+Local realm: BSC.NO
+ </verb></tscreen>
+
+ Now we can try using the <tt>kinit</tt> command to get
+ tokens for the id <it>md</it> that we created above:
+
+<tscreen><verb>
+mideon# kinit md
+Kerberos Initialization for "md"
+Kerberos Password:
+ </verb></tscreen>
+
+ Try listing the tokens using <tt>klist</tt> to see if we
+ really have them:
+
+<tscreen><verb>
+mideon# klist
+Ticket file: /tmp/tkt0
+Principal: md@BSC.NO
+
+ Issued Expires Principal
+Mar 23 21:06:52 Mar 24 05:06:52 krbtgt.BSC.NO@BSC.NO
+ </verb></tscreen>
+
+ And now try changing the password using <tt>passwd</tt>
+ to check if the kpasswd daemon can get authorisation to
+ the kerberos database:
+
+<tscreen><verb>
+mideon# passwd md
+Changing Kerberos password for md.@BSC.NO.
+Old Kerberos password:
+New Kerberos password:
+Retype new Kerberos password:
+Update complete.
+ </verb></tscreen>
+
+ <sect1>
+ <heading>Adding <tt>su</tt> priviledges</heading>
+
+ <p>We should now add an id which is authorised to <tt>su</tt> to
+ <it>root</it>. This is controlled by having an instance of
+ <it>root</it> associated with a principal. Using
+ <tt>kdb_edit</tt> we can create the entry
+ <it>md.root</it> in the kerberos database:
+
+<tscreen><verb>
+mideon# kdb_edit
+Opening database...
+
+Enter Kerberos master key:
+
+Current Kerberos master key version is 1.
+
+Master key entered. BEWARE!
+Previous or default values are in [brackets] ,
+enter return to leave the same, or new value.
+
+Principal name: md
+Instance: root
+md.admin not found, Create [y] ?
+Principal: md, Instance: admin, kdc_key_ver: 1
+New Password:
+New Password:
+
+Principal's new key version = 1
+Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
+Max ticket lifetime (*5 minutes) [ 255 ] ? 12
+Attributes [ 0 ] ?
+Edit O.K.
+Principal name:
+ </verb></tscreen>
+
+ Now try getting tokens for it to make sure it works:
+
+<tscreen><verb>
+mideon# kinit md.root
+Kerberos Initialization for "md.root"
+Kerberos Password:
+ </verb></tscreen>
+
+ And list them to check expiry times:
+
+<tscreen><verb>
+mideon# klist
+Ticket file: /tmp/tkt0
+Principal: md.root@BSC.NO
+
+ Issued Expires Principal
+Mar 23 21:08:47 Mar 23 22:08:47 krbtgt.BSC.NO@BSC.NO
+mideon#
+ </verb></tscreen>
+
+ Now we need to add the user to root's <tt>.klogin</tt> file:
+
+<tscreen><verb>
+mideon# cat /root/.klogin
+md.root@BSC.NO
+ </verb></tscreen>
+
+ Now try doing the <tt>su</tt>:
+
+<tscreen><verb>
+[md@mideon.bsc.no 10407] su
+Kerberos Password:
+Warning: tgt not verified.
+ </verb></tscreen>
+
+ and take a look at what tokens we have:
+
+<tscreen><verb>
+mideon# klist
+Ticket file: /tmp/tkt_root_1250
+Principal: md.root@BSC.NO
+
+ Issued Expires Principal
+Mar 23 22:09:59 Mar 23 22:19:59 krbtgt.BSC.NO@BSC.NO
+mideon#
+ </verb></tscreen>
+
+ Notice that with this setup each user has their own entry
+ for <tt>su</tt>'ing to root (the <it>user</it>.root entry
+ in kerberos). This can allow you to give root access to
+ multiple users without the need to share a common root
+ password.
diff --git a/handbook/nfs.sgml b/handbook/nfs.sgml
new file mode 100644
index 0000000000..8d0e4b25fb
--- /dev/null
+++ b/handbook/nfs.sgml
@@ -0,0 +1,79 @@
+<!-- $Id: nfs.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<sect><heading>NFS</heading>
+
+<p><em>Contributed by &a.john;.</em>
+
+Certain Ethernet adapters for ISA PC systems have limitations which
+can lead to serious network problems, particularly with NFS. This
+difficulty is not specific to FreeBSD, but FreeBSD systems are affected
+by it.
+
+The problem nearly always occurs when (FreeBSD) PC systems are networked
+with high-performance workstations, such as those made by Silicon Graphics,
+Inc., and Sun Microsystems, Inc. The NFS mount will work fine, and some
+operations may succeed, but suddenly the server will seem to become
+unresponsive to the client, even though requests to and from other systems
+continue to be processed. This happens to the client system, whether the
+client is the FreeBSD system or the workstation. On many systems, there is
+no way to shut down the client gracefully once this problem has manifested
+itself. The only solution is often to reset the client, because the NFS
+situation cannot be resolved.
+
+Though the "correct" solution is to get a higher performance and capacity
+Ethernet adapter for the FreeBSD system, there is a simple workaround that
+will allow satisfactory operation. If the FreeBSD system is the SERVER,
+include the option "wsize=1024" on the mount from the client. If the
+FreeBSD system is the CLIENT, then mount the NFS file system with the
+option "rsize=1024". These options may be specified using the fourth
+field of the fstab entry on the client for automatic mounts, or by using
+the "-o" parameter of the mount command for manual mounts.
+
+In the following examples, "fastws" is the host (interface) name of a
+high-performance workstation, and "freebox" is the host (interface) name of
+a FreeBSD system with a lower-performance Ethernet adapter. Also,
+"/sharedfs" will be the exported NFS filesystem (see "man exports"), and
+"/project" will be the mount point on the client for the exported file
+system. In all cases, note that additional options, such as "hard" or
+"soft" and "bg" may be desireable in your application.
+
+Examples for the FreeBSD system ("freebox") as the client:
+ in /etc/fstab on freebox:
+fastws:/sharedfs /project nfs rw,rsize=1024 0 0
+ as a manual mount command on freebox:
+mount -t nfs -o rsize=1024 fastws:/sharedfs /project
+
+Examples for the FreeBSD system as the server:
+ in /etc/fstab on fastws:
+freebox:/sharedfs /project nfs rw,wsize=1024 0 0
+ as a manual mount command on fastws:
+mount -t nfs -o wsize=1024 freebox:/sharedfs /project
+
+Nearly any 16-bit Ethernet adapter will allow operation without the above
+restrictions on the read or write size.
+
+For anyone who cares, here is what happens when the failure occurs, which
+also explains why it is unrecoverable. NFS typically works with a "block"
+size of 8k (though it may do fragments of smaller sizes). Since the maximum
+Ethernet packet is around 1500 bytes, the NFS "block" gets split into
+multiple Ethernet packets, even though it is still a single unit to the
+upper-level code, and must be received, assembled, and ACKNOWLEDGED as a
+unit. The high-performance workstations can pump out the packets which
+comprise the NFS unit one right after the other, just as close together as
+the standard allows. On the smaller, lower capacity cards, the later
+packets overrun the earlier packets of the same unit before they can be
+transferred to the host and the unit as a whole cannot be reconstructed or
+acknowledged. As a result, the workstation will time out and try again,
+but it will try again with the entire 8K unit, and the process will be
+repeated, ad infinitum.
+
+By keeping the unit size below the Ethernet packet size limitation, we
+ensure that any complete Ethernet packet received can be acknowledged
+individually, avoiding the deadlock situation.
+
+Overruns may still occur when a high-performance workstations is slamming
+data out to a PC system, but with the better cards, such overruns are
+not guarranteed on NFS "units". When an overrun occurs, the units affected
+will be retransmitted, and there will be a fair chance that they will be
+received, assembled, and acknowledged.
diff --git a/handbook/porting.sgml b/handbook/porting.sgml
new file mode 100644
index 0000000000..a633ac990b
--- /dev/null
+++ b/handbook/porting.sgml
@@ -0,0 +1,414 @@
+<!-- $Id: porting.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<sect><heading>Porting applications</heading>
+
+<p><em>Contributed by &a.jkh;.</em>
+
+Here are the guidelines one should follow in
+ creating a new port for FreeBSD 2.x . This documentation will
+ change as this process is progressively refined, so watch
+ this space for details. The <tt>&dollar;{..}</tt>
+ variable names you see in this document all refer to
+ various user-overridable defaults used (and documented)
+ by <tt>/usr/share/mk/bsd.port.mk</tt>. Please refer to
+ that file for more details.
+
+ <sect1>
+ <heading>Before starting the port</heading>
+
+ <p> <em>Note: Only a fraction of the overridable variables
+ are mentioned in this document. Most (if not all) are
+ documented at the start of the <tt>bsd.port.mk</tt>
+ file which can be found in /usr/share/mk. This file
+ uses a non-standard tab setting. <tt>Emacs</tt> should
+ recognise the setting on loading the file. <tt>vi</tt>
+ or <tt>ex</tt> can be set to using the correct value by
+ typing "<tt>:set tabstop=4</tt>" once the file has been
+ loaded. - &a.gpalmer;</em>
+
+ You may come across code that needs modifications or
+ conditional compilation based upon what version of UNIX
+ it's running under. If you need to make such changes to
+ the code for conditional compilation, make sure you make
+ the changes as general as possible so that we can
+ back-port code to FreeBSD 1.x systems and cross-port to
+ other BSD systems such as 4.4bsd from CSRG, BSD/386,
+ 386BSD and NetBSD.
+
+ The preferred way to tell 4.3BSD/Reno and newer versions
+ of the BSD code apart is by using the "<tt>BSD</tt>"
+ macro defined in <tt>&lt;sys/param.h&gt;</tt>. Hopefully
+ that file is already included; if not, add the code:
+
+<tscreen><verb>
+#ifdef _HAVE_PARAM_H
+#include <sys/param.h>
+#endif
+</verb></tscreen>
+
+ to the proper place in the <tt>.c</tt> file and add
+ <tt>-D_HAVE_PARAM_H</tt> to the <tt>CFLAGS</tt> in the
+ Makefile.
+
+ Then, you may use:
+
+<tscreen><verb>
+#if (defined(BSD) && (BSD >= 199103))
+</verb></tscreen>
+
+ to detect if the code is being compiled on a 4.3 Net2
+ code base or newer (e.g. FreeBSD 1.x, 4.3/Reno, NetBSD
+ 0.9, 386BSD, BSD/386 1.0).
+
+ Use:
+
+<tscreen><verb>
+#if (defined(BSD) && (BSD >= 199306))
+</verb></tscreen>
+
+ to detect if the code is being compiled on a 4.4 code
+ base or newer (e.g. FreeBSD 2.x, 4.4, NetBSD 1.0,
+ BSD/386 1.1).
+
+ Use sparingly:
+
+ <itemize>
+ <item><tt>__FreeBSD__</tt> is defined in all
+ versions of FreeBSD. Use it if the change you
+ are making ONLY affects FreeBSD. Porting gotchas
+ like the use of <tt>sys_errlist[]</tt> vs
+ <tt>strerror()</tt> are Berkeleyisms, not FreeBSD
+ changes.
+
+ <item>In FreeBSD 2.x, <tt>__FreeBSD__</tt> is
+ defined to be <tt>2</tt>. In earlier versions,
+ it's <tt>1</tt>.
+
+ <item>If you need to tell the difference between a
+ FreeBSD 1.x system and a FreeBSD 2.x system,
+ usually the right answer is to use the
+ <tt>BSD</tt> macros described above. If there
+ actually is a FreeBSD specific change (such as
+ special shared library options when using
+ '<tt>ld</tt>') then it's OK to use
+ <tt>__FreeBSD__</tt> and "<tt>#if __FreeBSD_ &gt;
+ 1</tt>" to detect a FreeBSD 2.x system.
+
+ </itemize>
+
+ In the dozens of ports that have been done, there have
+ only been one or two cases where <tt>__FreeBSD__</tt>
+ should have been used. Just because an earlier port
+ screwed up and used it in the wrong place doesn't mean
+ you should do so too.
+
+ <sect1>
+ <heading> Doing the port</heading>
+
+ <p>NOTE: If your sources work without change under FreeBSD,
+ skip to the next section.
+
+ <enum>
+ <item>Get the original sources (normally) as a
+ compressed tarball (<tt>&lt;foo&gt;.tar.gz</tt> or
+ <tt>&lt;foo&gt;.tar.Z</tt>) and copy it into
+ <tt>&dollar;{DISTDIR}</tt>. Always use
+ <em>mainstream</em> sources when and where you can,
+ and don't be tempted to patch a tarball 2 or 3
+ revisions ahead just to save yourself trouble. The
+ idea is that the ports collection should be usable
+ even with all of <tt>&dollar;{DISTDIR}</tt> blown
+ away, which is to say that it should be possible for
+ a user to repopulate all of
+ <tt>&dollar;{DISTDIR}</tt> with publically available
+ files.
+
+ <item>Unpack a copy of the tarball in a private
+ directory and make whatever changes are necessary to
+ get the port to compile properly under FreeBSD 2.0.
+ Keep <em>careful track</em> of everything you do, as
+ you will be automating the process shortly.
+ Everything, including the deletion, addition or
+ modification of files should be doable using an
+ automated script or patch file when your port is
+ finished. If your port requires significant user
+ interaction/customization to compile or install, you
+ should take a look at one of Larry Wall's classic
+ Configure scripts and perhaps do something similar
+ yourself. The goal of the new ports collection is to
+ make each port as `plug-and-play' as possible for the
+ end-user while using a minimum of disk space.
+
+ <item>Carefully consider the list of patches, shell
+ commands or user queries necessary for customizing
+ the port, then, making sure you understand the
+ following thoroughly, go for it. The sequence of
+ events you need to understand is that which occurs
+ when the user first types `<tt>make</tt>' in your
+ port's directory, and you may find that having
+ <tt>bsd.port.mk</tt> in another window while you read
+ this really helps to understand it:
+
+ Sequence of events:
+
+ <enum>
+ <item>The pre-fetch and fetch targets are run. The
+ fetch target is responsible for making sure that
+ the tarball exists locally in <tt>&dollar;{DISTDIR}</tt>.
+ The pre-fetch target hook is optional. If fetch
+ cannot find the required files in
+ <tt>&dollar;{DISTDIR}</tt> it will look up the URL
+ <tt>&dollar;{MASTER_SITES}</tt>, which can be set in the
+ Makefile or allowed to default to the Walnut
+ Creek CDROM archive site. It will then attempt
+ to fetch the named distribution file with
+ <tt>&dollar;{NCFTP}</tt>, assuming that the requesting
+ site has direct access to the Internet. If that
+ succeeds, it will save the file in
+ <tt>&dollar;{DISTDIR}</tt> for future use and proceed.
+
+ <item>The pre-extract target hook, if it exists, is
+ run.
+
+ <item>The extract target, if not disabled, is run.
+ It looks for your ports' distribution file in
+ <tt>&dollar;{DISTDIR}</tt> (typically a gzip'd
+ tarball) and unpacks it into a temporary
+ directory.
+
+ <item>The pre-configure target hook is run.
+
+ <item>The configure target is run. This can do any
+ one of many different things. First, if any
+ patches are found in the
+ <tt>&dollar;{PATCHDIR}</tt> subdirectory, they
+ are applied at this time in alphabetical order.
+ Next, a series of scripts, if detected, are run
+ in the following order:
+
+ <enum>
+
+ <item><tt>&dollar;{SCRIPTDIR}/pre-configure</tt>
+
+ <item><tt>&dollar;{SCRIPTDIR/configure</tt> or
+ <tt>&dollar;{WRKSRC}/configure</tt> if
+ <tt>&dollar;{HAS_CONFIGURE}</tt> is set.
+
+ <item>If <tt>&dollar;{USE_IMAKE}</tt> is set, an
+ xmkmf command is done.
+
+ <item><tt>&dollar;{SCRIPTDIR}/post-configure</tt>
+ </enum>
+
+ As you can see, it's possible to do just about anything to your
+ port, in a variety of stages!
+
+ <item>The pre-build target hook is run.
+
+ <item>The build target is run. This is responsible
+ for decending into the ports' private working
+ directory (<tt>&dollar;{WRKSRC}</tt>) and
+ building it. If <tt>&dollar;{USE_GMAKE}</tt> is
+ set, GNU <tt>make</tt> will be used, otherwise
+ the system <tt>&dollar;{MAKE}</tt>.
+ </enum>
+
+ <item>In the preparation of the port, files that have
+ been added or changed can be picked up with a
+ recursive diff for later feeding to patch. This is
+ the easiest kind of change to make as it doesn't
+ involve any mucking around with configuration files.
+ Each set of patches you wish to apply should be
+ collected into a file named
+ "<tt>patch-&lt;xx&gt;</tt>" where <tt>&lt;xx&gt;</tt>
+ denotes the sequence in which the patches will be
+ applied - these are done in <em>alphabetical
+ order</em>, thus "<tt>aa</tt>" first, "<tt>ab</tt>"
+ second and so on. These files should be stored in
+ <tt>&dollar;{PATCHDIR}</tt>, from where they will be
+ automatically applied. All patches should be
+ relative to <tt>&dollar;{WRKSRC}</tt> (generally the
+ directory your port's tarball unpacks itself into,
+ that being where the make is done).
+
+ <item>Include any additional customization commands to
+ your `<tt>configure</tt>' script and save it to
+ <tt>&dollar;{SCRIPTDIR}/configure</tt>. Add your
+ port to the Makefile one level above it so that it
+ will be made automatically.
+
+ <item>Always try to install relative to
+ <tt>&dollar;{PREFIX}</tt> in your Makefiles. This will
+ normally be set to <tt>/usr/local</tt>, though it can be can
+ be reassigned in your Makefile or in the users
+ environment. Not hardcoding <tt>/usr/local</tt> anywhere in
+ your installation will make the port much more
+ flexible and cater to the needs of other sites. Note
+ that this doesn't count for package `packing list'
+ files since they have their own scheme for relocating
+ themselves and can be left independant of
+ <tt>&dollar;{PREFIX}</tt> unless the package is one that
+ hardcodes itself to a compiled-in location.
+
+ <item>If your port requires user input to build,
+ configure or install, then set
+ <tt>IS_INTERACTIVE</tt> in your Makefile. This will
+ allow "overnight builds" to progress past your port
+ if the user sets the variable <tt>BATCH</tt> in his
+ environment (and if the user sets the variable
+ <tt>INTERACTIVE</tt>, then <em>only</em> those ports
+ requiring interaction are built).
+
+ For more details on any of this (since it may not be
+ clear at first reading), examine an existing port and
+ read the contents of <tt>/usr/share/mk/bsd.port.mk</tt>;
+ you'll see that it's not as difficult as it sounds!
+
+ </enum>
+
+<sect1>
+ <heading>Configuring the Makefile</heading>
+
+ <p>Configuring the Makefile is pretty simple, and again I
+ suggest that you look at existing examples before
+ starting. Consider the following problems in sequence as
+ you design your new Makefile:
+
+ <enum>
+ <item>Does it live in <tt>&dollar;{DISTDIR}</tt> as a
+ standard gzip'd tarball? If so, you can go on to the
+ next step. If not, you should look at overriding any
+ of the <tt>&dollar;{EXTRACT_CMD}</tt>,
+ <tt>&dollar;{EXTRACT_ARGS}</tt>,
+ <tt>&dollar;{EXTRACT_SUFX}</tt>, or
+ <tt>&dollar;{DISTFILE}</tt> variables, depending on
+ how alien a format your port's distribution file is.
+ In the worst case, you can simply create your own
+ `<tt>extract</tt>' target to override the default,
+ though this should be rarely, if ever, necessary. If
+ you do find it necessary to do your own, your extract
+ target should take care to "leave tracks" for itself
+ so that files are not unnecessarily extracted
+ twice---see the default extract rule in
+ <tt>bsd.port.mk</tt> for an example of this.
+
+ <item>If your port is integrated into the ports
+ directory directly (original sources are already part
+ of FreeBSD), you may also consider simply setting
+ <tt>NO_EXTRACT</tt> and dispensing with the idea of a
+ distribution file altogether.
+
+ <item>You should set <tt>&dollar;{DISTNAME}</tt> to be the base
+ name of your port. The default rules expect the
+ distribution file list (<tt>&dollar;{DISTFILES}</tt>) to be
+ named
+ <tt>&dollar;{DISTDIR}/&dollar;{DISTFILE}&dollar;{EXTRACT_SUFX}</tt>
+ by default which, if it's a normal tarball, is going
+ to be something like:
+<tscreen><verb>
+foozolix-1.0.tar.gz
+</verb></tscreen>
+ For a setting of "<tt>DISTNAME=foozolix-1.0</tt>"
+
+ The default rules also expect the tarball(s) to
+ extract into a subdirectory called
+ <tt>&dollar;{WRKDIR}/&dollar;{DISTNAME}</tt>, e.g.
+<tscreen><verb>
+"<blah>/foozolix-1.0/"
+</verb></tscreen>
+
+ All this behavior can be overridden, of course, it
+ simply represents the most common time-saving
+ defaults. For a port requiring multiple distribution
+ files, simply set <tt>&dollar;{DISTFILES}</tt> explicitly. If
+ only a subset of <tt>&dollar;{DISTFILES}</tt> are actual
+ extractable archives, then set them up in
+ <tt>&dollar;{EXTRACT_ONLY}</tt>, which will override the
+ <tt>&dollar;{DISTFILES}</tt> list when it comes to extraction.
+
+ <item>If your package uses GNU <tt>make</tt>, set
+ "<tt>USE_GMAKE=yes</tt>". If your package uses GNU
+ <tt>configure</tt>, set "<tt>GNU_CONFIGURE=yes</tt>".
+ If you want to override the default GNU <tt>configure</tt>
+ arguments from `<tt>i386--freebsd</tt>' to something else,
+ set those arguments in <tt>&dollar;{GNU_CONFIGURE_ARGS}</tt>.
+
+ If your package uses <tt>imake</tt> (e.g. is an X
+ application that has an <tt>Imakefile</tt>), then set
+ "<tt>USE_IMAKE=yes</tt>". This will cause the
+ configure stage to automatically do an <tt>xmkmf</tt> and then
+ a `<tt>make Makefiles</tt>'.
+
+ <item>If you have a URL pointing at the the original
+ tarball, record the directory containing the tarball
+ in <tt>&dollar;{MASTER_SITES}</tt>. This will provide a
+ backup site, as well as a direct pointer to the
+ original source location.
+
+ The make macros will currently try to use this
+ specification for grabbing the distribution file with
+ <tt>&dollar;{NCFTP}</tt> if they can't find it
+ already on the system. See some of the other ports
+ for examples.
+
+ <item>Due to a problem in some of the ports, 2.0 was
+ distributed with a setting which meant ports that
+ have <tt>&dollar;{USE_IMAKE}</tt> set do not install their
+ manpages by default. Although -current has the logic
+ reversed, for compatability with 2.0 systems (at
+ least until 2.1 comes out) you should set
+ "<tt>INSTALL_MANPAGES=yes</tt>". For complete forward
+ compatability, if the port doesn't understand the
+ "<tt>install.man</tt>" target, "<tt>NO_INSTALL_MANPAGES=yes</tt>"
+ should be set (which conforms with the current logic
+ in <tt>bsd.port.mk</tt>)
+
+ <item>Don't forget to include
+ <tt>&lt;bsd.port.mk&gt;</tt> at the bottom. That
+ should do it!
+
+ </enum>
+
+<sect1>
+ <heading>Do's and Dont's</heading>
+
+ <p><enum>
+
+ <item>Don't leave anything valuable lying around in
+ <tt>&dollar;{WRKDIR}</tt>, `<tt>make clean</tt>' will
+ <em>nuke</em> it completely! If you need auxilliary
+ files that aren't scripts or patches, put them in
+ <tt> &dollar;{FILESDIR}</tt>.
+
+ <item>Do install package information, if possible. It
+ would sure be nice if `<tt>make package</tt>' worked
+ for the whole ports tree this time.
+
+ <item>Do look at existing examples and the
+ <tt>bsd.port.mk</tt> file before asking me questions!
+ ;-)
+
+ <item>Do ask me questions if you have any trouble!
+ Don't just beat your head against a wall! :-)
+
+ <item>Don't rely on custom utilities in your local
+ configure script---they may not be there on the
+ user's system! If you really need something else to
+ be installed before you can work, detect this from
+ your configure script, print a helpful message and
+ exit with a non-zero status! At least you'll have
+ given the user some idea of what's needed. If the
+ custom utility or package is actually part of the
+ ports tree, then set a pointer to it in your
+ <tt>DEPENDS</tt> variable---the port structure will
+ ensure that all <tt>DEPENDS</tt> targets are built
+ first.
+
+ <item>Do send applicable changes/patches to the
+ original author/maintainer for inclusion in next
+ release of the code. This will only make your job
+ that much easier for the next release.
+
+ </enum>
+
diff --git a/handbook/ports.sgml b/handbook/ports.sgml
new file mode 100644
index 0000000000..702c232225
--- /dev/null
+++ b/handbook/ports.sgml
@@ -0,0 +1,240 @@
+<!-- $Id: ports.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<sect><heading>The Ports collection</heading>
+
+<p><em>Contributed by &a.gpalmer; and &a.jkh;.</em>
+
+ Unfortunately, there are more variations of UN*X than most people
+know of, and hence not all software for UN*X available on the Internet
+will work on all versions of UN*X (in fact, I can guarantee it!).
+Hence, some software needs modifications to work under some UN*Xs. The
+process of making those modifications is known as ``porting'' and the
+result known as a ``port'' (not to be confused with the sockets on the
+back of your computer!).
+
+
+<sect1><heading>What is the FreeBSD Ports Collection?</heading>
+
+<p> People who (allegedly) know what they are doing have automated the
+process of ``porting'' software to FreeBSD, and the result is the
+Ports Collection. The general idea is that a combination of various
+programming tools available in the base FreeBSD installation will
+allow you to fetch the port from a FreeBSD mirror site, type ``make''
+and get the fully working program.
+
+ The ports collection itself normally doesn't have any of the
+original source code necessary for the compilation in the tree, just
+those shell scripts, Makefiles and source code ``diffs'' that are
+necessary to compile the program under FreeBSD. This is meant to keep
+the entire system down to a manageable size, and the current system
+has over 100 ports in the master source tree, and yet a compressed tar
+file of that tree is about 2 megabytes (all the source code needed is
+over 100Mb's!).
+
+
+<sect1><heading>How does the system compile with no source code?</heading>
+
+<p> A ports' Makefile automatically looks in a central location on
+your system (usually /usr/ports/distfiles, though this value can be
+customized) for the associated set of original distribution files that
+have been ``ported''. These are generally provided at various places
+on the Internet, though if you have a CDROM distribution of FreeBSD
+then you've already got them available on your CD for ease of use.
+See section 3.1 if you have such a CD distribution, otherwise skip to
+section 3.2.
+
+<!--
+3.1 Compiling ports from CD
+
+ Type something profound here.
+-->
+
+<sect2><heading>Compiling ports using an Internet connection</heading>
+
+<p> The ports collection can also use an auto-fetch system to keep
+your ports collection source tree up to date, updating the central
+``distfiles'' version for you the next time you compile the port.
+
+ Of course, this always assumes you have a permanent network link,
+or don't mind heavy usage of your telephone. If you don't want heavy
+network usage when you compile your ports tree, you can pre-fetch the
+necessary tarballs beforehand and put them into /usr/ports/distfiles
+(or wherever DISTDIR points) by hand. A good way to see what files a
+port is going to need is to cd to that port's directory and do a
+``make -n fetch'' to see what it does.
+
+ You can also chose to get the source files either from the master
+FTP site as defined in the relevant Makefile (in the MASTER_SITES
+line), or some FreeBSD mirror site also carrying a set of distfiles,
+as does the master FTP site on ftp.FreeBSD.org (aka ftp.cdrom.com) in
+the directory /pub/FreeBSD/ports/distfiles. Note that the files in
+that directory are not guarenteed to be kept up to date - this is a
+volunteer project! We can't make any guarantees about the mirror
+sites either - they are obviously under independant control and don't
+even have to mirror the distfiles directory.
+
+ If you have a non-permanant link, you can fetch all the distfiles by
+going to the top of the tree and typing ``make fetch''.
+
+
+<sect1><heading>It doesn't work?!</heading>
+
+<p>Oh. You can do one of four (4) things :
+<enum>
+
+<item> Fix it yourself. Technical details can be found in the GUIDELINES file,
+ available from URL ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/GUIDELINES
+
+<item> Gripe. This is done by e-mail *ONLY*! The people at Walnut Creek are
+ in no way responsible for the functionality (or lack thereof) of the
+ FreeBSD system as a whole, and especially the ports system, which
+ is mainly contributed by 3rd parties. (If you don't believe me, check
+ the catalogue, especially the line saying "We cannot offer tech-support
+ on this product")
+
+ The e-mail address is Ports@FreeBSD.org. Please include details of
+ the port, where you got both the port source &amp; distfile(s) from, and
+ what the error was.
+
+ Note: At time of writing, lang/Sather doesn't seem to work on Pentium
+ machines due to the Intel Curse (aka the Floating Point Division Bug).
+ Please don't tell us about this - gripe to Intel instead - it's their
+ bug!
+
+<item> Forget it. This is the easiest for most - very few of the programs in
+ ports can be classed as `essential'!
+
+<item> Grab the pre-compiled package from a ftp server. The ``master'' package
+ collection is in:
+ ftp://ftp.FreeBSD.org/pub/FreeBSD/packages/
+
+ though check your local mirror first, please!
+
+ These are more likely to work (on the whole) than trying to compile from
+ source, and a lot faster!
+</enum>
+
+<sect1><heading>I've ported a program and I want to make a port out of it. What now?</heading>
+
+<p> See the file GUIDELINES, in:
+ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/GUIDELINES
+ This contains details of the procedure and structure involved.
+
+
+<sect1><heading>I've got a good port, what now?</heading>
+
+<p> Upload the fixed version to freefall.cdrom.com /pub/incoming or
+ftp.FreeBSD.org /pub/FreeBSD/incoming and send e-mail to
+ports@FreeBSD.org with the filename and details. Someone on the
+all-volunteer `ports committee' will (hopefully) look it over and
+commit it to the ports collection if they like the looks of it.
+
+
+<sect1><heading>Things go funny during the fetch stage of compilation!</heading>
+
+<p> We know. Please don't blame us. There is a program called `ncftp'
+which is used instead of the normal ftp as it can do so-called
+``background'' or ``batch'' transfers, ideal for this situation.
+Unfortunately it can do strange things, and has crashed at least one
+machine (during circumstances stranger than most, I'll admit, but it
+was still responsible). Hopefully a future release of ncftp will fix
+these problems (it is not maintained by the main FreeBSD team, but a
+third party, who is I believe aware of its shortcomings)
+
+
+<sect1><heading>I want to leave the compile going overnight, but some ports don't like this.</heading>
+
+<p> There is a way around this. Before starting the compilation, type:
+<verb>
+ setenv BATCH yes # (if you use csh/tcsh) or
+ BATCH=yes # (for sh/bash)
+</verb>
+ This should miss out ports which need user interaction. Unfortunately,
+ncftp doesn't know about this trick, and can often screw up and ask
+stupid questions in unattended batch mode. See (7).
+
+ To compile those ports left out by doing the above, using a
+different login shell (or unsetting the above BATCH variable), set the
+INTERACTIVE variable instead (you can use the same statements as above
+except replace ``BATCH'' with ``INTERACTIVE'') and re-run make. This
+should now compile only those ports which will definitely ask for user
+interaction.
+
+
+<sect1><heading>The ports collection is weak. What can I do to help?</heading>
+
+<p> First read the bsd.port.mk file (which may be found in
+/usr/share/mk/) and the associated bsd.port.subdir.mk file. A lot of
+the weirdness can be explained properly in there (most of the current
+weirdness is due to the lack of assumptions about anything, which is
+necessary due to the generic nature of these files). Also check that
+you have an up-to-date copy, as the file can change from minute to
+minute. A reasonably up-to-date copy can be found in:
+
+ <url url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/mk">
+
+ If you find that you still need to go in there and alter things,
+by all means do so, and then send the diffs to ports@FreeBSD.org if
+you'd like them to be a part of the default distribution. Please also
+remember that any changes must respect backwards-compatability with
+any and all older Makefiles, unless you want a real nightmare of
+/usr/ports munging ahead of you! Large scale changes will generally
+not be warmly welcomed unless all the existing makefiles work without
+alteration. Sorry!
+
+
+<sect1><heading>This FAQ is weak. What can I do?</heading>
+
+<p> Send changes to ports@FreeBSD.org. Changes are most welcome!
+This FAQ is also very green and should be considered no more than
+a `good start' for now. Authors? You can come out of hiding any
+time now! :-)
+
+
+<sect1><heading>How do I get more information on all the ports?</heading>
+
+<p> One good method is to cd to the top of the ports tree (say /usr/ports)
+and type something like:
+<verb>
+ make describe | sed -e '/===/D' -e 's;/usr/ports/;;' | expand -40
+</verb>
+The ``make describe'' will try to extract the one-line description from
+each port, and the ``sed'' will delete the extraneous output. ``expand''
+just makes it a little more readable (sort of - you may want to season
+the output of this more to taste).
+
+
+<sect1><heading>I've heard of a new checksum system. What is this for?</heading>
+
+<p> For various reasons, when using FTP over the Internet to obtain the
+source code, you may not always end up with the same copy of the code
+that the origional porter worked from, and this can lead to problems.
+So a simple checksumming system has been employed to try and highlight
+problems in this area.
+
+ To check the entire system, go to the top of the ports tree
+(defaults to /usr/ports) and type
+<verb>
+ make checksum
+</verb>
+This will give a report on the validity of the files you have FTP'd. If some
+are missing, the system will attempt to retrieve them before running the
+checksum routine. The same technique can be applied to a single port.
+
+ The system will complain if there is no pre-computed checksum available
+for that port. Not all ports currently have checksums, but this should be
+cured soon.
+
+ Some older versions of the system don't recognise the ``checksum''
+target. In that case, try the command
+<verb>
+ make check-md5
+</verb>
+(``check-md5'' was the pre-cursor to the ``checksum'' target). If neither
+work, get the latest copies of bsd.port.mk and bsd.port.subdir.mk from
+
+ <url url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/mk">
+
+and install them in /usr/share/mk. This will get you the latest version
+of the ports system.
diff --git a/handbook/ppp.sgml b/handbook/ppp.sgml
new file mode 100644
index 0000000000..92d82bc289
--- /dev/null
+++ b/handbook/ppp.sgml
@@ -0,0 +1,372 @@
+<!-- $Id: ppp.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<sect><heading>Setting up a PPP link</heading>
+
+<p><em>Contributed by &a.gena;.</em>
+
+Before you start setting up PPP on your machine make
+sure that pppd is located in /usr/sbin and directory /etc/ppp
+exists.
+
+pppd can work in two modes:
+<enum>
+<item> as a "client" , i.e. you want to connect your machine to outside
+world via PPP serial connection or modem line.
+
+<item> as a "server" , i.e. your machine is located on the network and
+used to connect other computers using PPP.
+</enum>
+In both cases you will need to set up an options file ( /etc/ppp/options
+or ~/.ppprc if you have more then one user on your machine that uses
+PPP ).
+
+You also will need some modem/serial software ( preferably kermit )
+so you can dial and establish connection with remote host.
+
+<sect1><heading>Working as a PPP client</heading>
+
+<p>I used the following /etc/ppp/options to connect to CISCO terminal server PPP
+line.
+<verb>
+crtscts # enable hardware flow control
+modem # modem control line
+noipdefault # remote PPP server must supply your IP address.
+ # if the remote host doesn't send your IP during IPCP
+ # negotiation , remove this option
+passive # wait for LCP packets
+domain ppp.foo.com # put your domain name here
+
+:<remote_ip> # put the IP of remote PPP host here
+ # it will be used to route packets via PPP link
+ # if you didn't specified the noipdefault option
+ # change this line to <local_ip>:<remote_ip>
+
+defaultroute # put this if you want that PPP server will be your
+ # default router
+</verb>
+
+To connect:
+<enum>
+<item> Dial to the remote host using kermit ( or other modem program )
+enter your user name and password ( or whatever is needed to enable PPP
+ont the remote host )
+
+<item> Exit kermit. ( without hanging up the line )
+
+<item> enter:
+<verb>
+/usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200
+</verb>
+( put the appropriate speed and device name )
+</enum>
+
+Now your computer is connected with PPP. If the connection fails for some
+reasons you can add the "debug" option to the /etc/ppp/options file
+and check messages on the console to track the problem
+
+Following /etc/ppp/pppup script will make all 3 stages automatically:
+<verb>
+#!/bin/sh
+ps ax |grep pppd |grep -v grep
+pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
+if [ "X${pid}" != "X" ] ; then
+ echo 'killing pppd, PID=' ${pid}
+ kill ${pid}
+fi
+ps ax |grep kermit |grep -v grep
+pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
+if [ "X${pid}" != "X" ] ; then
+ echo 'killing kermit, PID=' ${pid}
+ kill -9 ${pid}
+fi
+
+ifconfig ppp0 down
+ifconfig ppp0 delete
+
+kermit -y /etc/ppp/kermit.dial
+pppd /dev/tty01 19200
+</verb>
+
+/etc/ppp/kermit.dial is kermit script that dials and makes all
+necessary authorization on the remote host.
+( Example of such script is attached to the end of this document )
+
+Use the follwing /etc/ppp/pppdown script to disconnect the PPP line:
+<verb>
+#!/bin/sh
+pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
+if [ X${pid} != "X" ] ; then
+ echo 'killing pppd, PID=' ${pid}
+ kill -TERM ${pid}
+fi
+
+ps ax |grep kermit |grep -v grep
+pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
+if [ "X${pid}" != "X" ] ; then
+ echo 'killing kermit, PID=' ${pid}
+ kill -9 ${pid}
+fi
+
+/sbin/ifconfig ppp0 down
+/sbin/ifconfig ppp0 delete
+kermit -y /etc/ppp/kermit.hup
+/etc/ppp/ppptest
+</verb>
+
+Check if PPP is still running (/usr/etc/ppp/ppptest):
+<verb>
+#!/bin/sh
+pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
+if [ X${pid} != "X" ] ; then
+ echo 'pppd running: PID=' ${pid-NONE}
+else
+ echo 'No pppd running.'
+fi
+set -x
+netstat -n -I ppp0
+ifconfig ppp0
+</verb>
+
+Hangs up modem line (/etc/ppp/kermit.hup):
+<verb>
+set line /dev/tty01 ; put your modem device here
+set speed 19200
+set file type binary
+set file names literal
+set win 8
+set rec pack 1024
+set send pack 1024
+set block 3
+set term bytesize 8
+set command bytesize 8
+set flow none
+
+pau 1
+out +++
+inp 5 OK
+out ATH0\13
+echo \13
+exit
+</verb>
+
+<sect1><heading>Working as a PPP server</heading>
+
+<p>/etc/ppp/options:
+<verb>
+crtscts # Hardware flow control
+netmask 255.255.255.0 # netmask ( not required )
+192.114.208.20:192.114.208.165 # ip's of local and remote hosts
+ # local ip must be different from one
+ # you assigned to the ethernet ( or other )
+ # interface on your machine.
+ # remote IP is ip address that will be
+ # assigned to the remote machine
+domain ppp.foo.com # your domain
+passive # wait for LCP
+modem # modem line
+</verb>
+
+Following /etc/ppp/pppserv script will enable ppp server on your machine
+<verb>
+#!/bin/sh
+ps ax |grep pppd |grep -v grep
+pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
+if [ "X${pid}" != "X" ] ; then
+ echo 'killing pppd, PID=' ${pid}
+ kill ${pid}
+fi
+ps ax |grep kermit |grep -v grep
+pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
+if [ "X${pid}" != "X" ] ; then
+ echo 'killing kermit, PID=' ${pid}
+ kill -9 ${pid}
+fi
+
+# reset ppp interface
+ifconfig ppp0 down
+ifconfig ppp0 delete
+
+# enable autoanswer mode
+kermit -y /etc/ppp/kermit.ans
+
+# run ppp
+pppd /dev/tty01 19200
+</verb>
+
+Use this /etc/ppp/pppservdown script to stop ppp server:
+<verb>
+#!/bin/sh
+ps ax |grep pppd |grep -v grep
+pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
+if [ "X${pid}" != "X" ] ; then
+ echo 'killing pppd, PID=' ${pid}
+ kill ${pid}
+fi
+ps ax |grep kermit |grep -v grep
+pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
+if [ "X${pid}" != "X" ] ; then
+ echo 'killing kermit, PID=' ${pid}
+ kill -9 ${pid}
+fi
+ifconfig ppp0 down
+ifconfig ppp0 delete
+
+kermit -y /etc/ppp/kermit.noans
+</verb>
+
+Following kermit script will enable/disable autoanswer mode
+on your modem (/etc/ppp/kermit.ans):
+<verb>
+set line /dev/tty01
+set speed 19200
+set file type binary
+set file names literal
+set win 8
+set rec pack 1024
+set send pack 1024
+set block 3
+set term bytesize 8
+set command bytesize 8
+set flow none
+
+pau 1
+out +++
+inp 5 OK
+out ATH0\13
+inp 5 OK
+echo \13
+out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable
+ ; autoanswer mod
+inp 5 OK
+echo \13
+exit
+</verb>
+
+This /etc/ppp/kermit.dial script is used for dialing and authorizing on remote host.
+You will need to customize it for your needs.
+Put your login and password in this script , also you'll need
+to change input statement depending on responces from your modem
+and remote host.
+<verb>
+;
+; put the com line attached to the modem here:
+;
+set line /dev/tty01
+;
+; put the modem speed here:
+;
+set speed 19200
+set file type binary ; full 8 bit file xfer
+set file names literal
+set win 8
+set rec pack 1024
+set send pack 1024
+set block 3
+set term bytesize 8
+set command bytesize 8
+set flow none
+set modem hayes
+set dial hangup off
+set carrier auto ; Then SET CARRIER if necessary,
+set dial display on ; Then SET DIAL if necessary,
+set input echo on
+set input timeout proceed
+set input case ignore
+def \%x 0 ; login prompt counter
+goto slhup
+
+:slcmd ; put the modem in command mode
+echo Put the modem in command mode.
+clear ; Clear unread characters from input buffer
+pause 1
+output +++ ; hayes escape sequence
+input 1 OK\13\10 ; wait for OK
+if success goto slhup
+output \13
+pause 1
+output at\13
+input 1 OK\13\10
+if fail goto slcmd ; if modem doesn't answer OK, try again
+
+:slhup ; hang up the phone
+clear ; Clear unread characters from input buffer
+pause 1
+echo Hanging up the phone.
+output ath0\13 ; hayes command for on hook
+input 2 OK\13\10
+if fail goto slcmd ; if no OK answer, put modem in command mode
+
+:sldial ; dial the number
+pause 1
+echo Dialing.
+output atdt9,550311\13\10 ; put phone number here
+assign \%x 0 ; zero the time counter
+
+:look
+clear ; Clear unread characters from input buffer
+increment \%x ; Count the seconds
+input 1 {CONNECT }
+if success goto sllogin
+reinput 1 {NO CARRIER\13\10}
+if success goto sldial
+reinput 1 {NO DIALTONE\13\10}
+if success goto slnodial
+reinput 1 {\255}
+if success goto slhup
+reinput 1 {\127}
+if success goto slhup
+if < \%x 60 goto look
+else goto slhup
+
+:sllogin ; login
+assign \%x 0 ; zero the time counter
+pause 1
+echo Looking for login prompt.
+
+:slloop
+increment \%x ; Count the seconds
+clear ; Clear unread characters from input buffer
+output \13
+;
+; put your expected login prompt here:
+;
+input 1 {Username: }
+if success goto sluid
+reinput 1 {\255}
+if success goto slhup
+reinput 1 {\127}
+if success goto slhup
+if < \%x 10 goto slloop ; try 10 times to get a login prompt
+else goto slhup ; hang up and start again if 10 failures
+
+:sluid
+;
+; put your userid here:
+;
+output ppp-login\13
+input 1 {Password: }
+;
+; put your password here:
+;
+output ppp-password\13
+input 1 {Entering SLIP mode.}
+echo
+quit
+
+:slnodial
+echo \7No dialtone. Check the telephone line!\7
+exit 1
+
+; local variables:
+; mode: csh
+; comment-start: "; "
+; comment-start-skip: "; "
+; end:
+</verb>
+
+<!--
+###################################################################
+Gennady B. Sorokopud ( gena@NetVision.net.il ) 24/10/94 12:00
+-->
+
diff --git a/handbook/scsi.sgml b/handbook/scsi.sgml
new file mode 100644
index 0000000000..babcd0db8e
--- /dev/null
+++ b/handbook/scsi.sgml
@@ -0,0 +1,688 @@
+<!-- $Id: scsi.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<!--
+ <title>An introduction to SCSI and its use with FreeBSD</title>
+ <author>(c) 1995, Wilko Bulte, <tt/wilko@yedi.iaf.nl/
+ <date>V0.2, Thu Apr 20 22:45:23 MET DST 1995</date>
+ Copyright 1995, W. C. Bulte, Arnhem, The Netherlands
+
+ <abstract>
+ This document attempts to describe the background of SCSI, its
+ (mis)use with FreeBSD and some common pitfalls.
+ </abstract>
+
+-->
+ <sect><heading>SCSI</heading>
+
+ <p><em>&copy; 1995, &a.wilko;.</em>
+
+ SCSI is an acronym for Small Computer Systems Interface. It is an
+ ANSI standard that has become one of the leading I/O buses in the
+ computer industry. The foundation of the SCSI standard was laid by
+ Shugart Associates (the same guys that gave the world the first
+ mini floppy disks) when they introduced the SASI bus (Shugart Associates
+ Standard Interface).
+
+ After some time an industry effort was started to come to a more strict
+ standard allowing devices from different vendors to work together.
+ This effort was recognised in the ANSI SCSI-1 standard. The SCSI-1
+ standard (approx 1985) is now more or less obsolete. The current
+ standard is SCSI-2 (see <ref id="further-reading" name="Further
+ reading">), with SCSI-3 on the drawing boards.
+
+ In addition to a physical interconnection standard, SCSI defines a
+ logical (command set) standard to which disk devices must adhere.
+ This standard is called the Common Command Set (CCS) and was
+ developed more or less in parallel with ANSI SCSI-1. SCSI-2
+ includes the (revised) CCS as part of the standard itself. The
+ commands are dependent on the type of device at hand. It does not
+ make much sense of course to define a Write command for a
+ scanner...
+
+ The SCSI bus is a parallel bus, which comes in a number of
+ variants. The oldest and most used is an 8 bit wide bus, with
+ single-ended signals, carried on 50 wires. (If you don't know what
+ single-ended means, don't worry, that is what this document is all
+ about.) Modern designs also use 16 bit wides buses, with
+ differential signals. This allows transfer speeds of
+ 20Mbytes/second, on cables lengths of up to 25 meters. SCSI-2
+ allows a maximum buswidth of 32 bits, using an additional cable.
+
+ Of course the SCSI bus not only has data lines, but also a number
+ of control signals. A very elaborate protocol is part of the
+ standard to allow multiple devices to share the bus in an efficient
+ manner. In SCSI-2, the data is always checked using a seperate
+ parity line. In pre-SCSI-2 designs parity was optional.
+
+ In SCSI-3 even faster bustypes are introduced, along with a serial
+ SCSI bus that reduces the cabling overhead and allows a higher
+ maximum buslength.
+
+ As you could have guessed from the description above, SCSI devices
+ are intelligent. They have to be to adhere to the SCSI standard
+ (which is over 2 inches thick BTW). So, for a hard disk drive for
+ instance you do not specify a head/cylinder/sector to address a
+ particular block, but simply the number of the block you want.
+ Elaborate caching schemes, automatic badblock replacement etc
+ are all made possible by this 'intelligent device' approach.
+
+ On a SCSI bus, each possible pair of devices can communicate. If
+ their function allows this is another matter, but the standard does
+ not restrict it. To avoid signal contention, the 2 devices have to
+ arbitrate for the bus before using it.
+
+ The philosophy of SCSI is to have a standard that allows
+ older-standard devices to work with newer-standard ones. So, an
+ old SCSI-1 device should normally work on a SCSI-2 bus. Normally,
+ because it is not absolutely sure that the implementation of an old
+ device follows the (old) standard closely enough to be acceptable
+ on a new bus. Modern devices are usually more well-behaved,
+ because the standardisation has become more strict and is better
+ adhered to by the device manufacturers. Generally speaking, the
+ chances of getting a working set of devices on a single bus is
+ better when all the devices are SCSI-2 or newer. This does not
+ imply that you have to dump all your old stuff when you get that
+ shiny 2Gb disk: I own a system on which a pre-SCSI-1 disk, a SCSI-2
+ QIC tape unit, a SCSI-1 helical scan tape unit and 2 SCSI-1 disks
+ work together quite happily.
+
+ <sect1>Concepts of SCSI
+ <p>
+ <sect2>A <it>smart</it> interface
+ <p>
+ As said before, SCSI devices are smart. The idea is to put the
+ knowledge about intimate hardware details onto the SCSI device
+ itself. In this way, the host system does not have to worry
+ about things like how many heads are hard disks has, or how many
+ tracks there are on a specific tape device. If you are curious,
+ the standard specifies commands with which you can query your
+ devices on their hardware particulars.
+
+ The advantage of intelligent devices is obvious: the device
+ drivers on the host can be made in a much more generic fashion,
+ there is no longer a need to change (and qualify!) drivers for
+ every odd new device that is introduced.
+
+ <sect2>Do's and don't's on interconnections
+ <p>
+ For cabling and connectors there is a golden rule: get good
+ stuff. With bus speeds going up all the time you will save
+ yourself a lot of grief by using good material.
+
+ So, gold plated connectors, shielded cabling, sturdy connector
+ hoods with strain reliefs etc are the way to go. Second golden
+ rule: don't use cables longer than necessary. I once spent 3 days
+ hunting down a problem with a flaky machine only to discover that
+ shortening the SCSI bus with 1 meter solved the problem. And the
+ original bus length was well within the SCSI specification.
+ <sect2>SCSI bus types
+ <p>
+ From an electrical point of view, there are two Incompatible bus
+ types: single-ended and differential. This means that there are
+ two different main groups of SCSI devices and controllers, which
+ cannot be mixed on the same bus. It is possible however to use
+ special converter hardware to transform a single-ended bus into a
+ differential one (and vice versa). The differences between the
+ bus types are explained in the next sections.
+
+ In lots of SCSI related documentation there is a sort of jargon
+ in use to abbreviate the different bus types. A small list:
+
+ <itemize>
+ <item>FWD: Fast Wide Differential
+ <item>FND: Fast Narrow Differential
+ <item>SE: Single Ended
+ <item>FN: Fast Narrow
+ <item>etc.
+ </itemize>
+
+ With a minor amount of imagination one can usually imagine what
+ is meant.
+
+ Wide is a bit ambiguous, it can indicate 16 or 32 bit buses. As
+ far as I know, the 32 bit variant is not (yet) in use, so wide
+ normally means 16 bit.
+
+ Fast means that the timing on the bus is somewhat different, so
+ that on a narrow (8 bit) bus 10 Mbytes/sec are possible instead
+ of 5 Mbytes/sec for 'slow' SCSI. More on this later.
+
+ It should be noted that the datalines > 8 are only used for
+ datatransfers and device addressing. The transfers of commands
+ and status messages etc are only performed on the lowest 8
+ datalines. The standard allows narrow devices to operate on
+ a wide bus. The usable buswidth is negotiated
+ between the devices. You have to watch your device addressing
+ closely when mixing wide and narrow.
+
+ <sect3>Single ended buses
+ <p>
+ A single-ended SCSI bus uses signals that are either 5 Volts or
+ 0 Volts (indeed, TTL levels) and are relative to a COMMON
+ ground reference. A singled ended 8 bit SCSI bus has
+ approximately 25 ground lines, who are all tied to a single
+ 'rail' on all devices. A standard single ended bus has a
+ maximum length of 6 meters. If the same bus is used with
+ fast-SCSI devices, the maximum length allowed drops to 3
+ meters. Fast-SCSI means that instead of 5Mbytes/sec the bus
+ allows 10Mbytes/sec transfers.
+
+ Please note that this means that
+ if some devices on your bus use 'fast' to communicate your
+ bus must adhere to the length restrictions for fast buses!
+
+ It is obvious that with the newer fast-SCSI devices the
+ buslength can become a real bottleneck. This is why the
+ differential SCSI bus was introduced in the SCSI-2 standard.
+
+ For connector pinning and connector types please refer to the
+ SCSI-2 standard (see <ref id="further-reading" name="Further
+ reading">) itself, connectors etc are listed there in
+ painstaking detail.
+
+ Beware of devices using non-standard cabling. For instance
+ Apple uses a 25pin D-type connecter (like the one on serial
+ ports and parallel printers). Considering
+ that the official SCSI bus needs 50 pins you can imagine
+ the use of this connector needs some 'creative cabling'.
+ The reduction of the number of ground wires they used
+ is a bad idea, you better stick to 50 pins cabling
+ in accordance with the SCSI standard.
+
+ <sect3>Differential buses
+ <p>
+ A differential SCSI bus has a maximum length of 25
+ meters. Quite a difference from the 3 meters for a single-ended
+ fast-SCSI bus. The idea behind differential signals is that
+ each bus signal has it's own return wire. So, each signal is
+ carried on a (preferably twisted) pair of wires. The voltage
+ difference between these two wires determines whether the
+ signal is asserted or de-asserted. To a certain extent the
+ voltage difference between ground and the signal wire pair is
+ not relevant (don't try 10 kVolts though..).
+
+ It is beyond the scope of this document to explain why this
+ differential idea is so much better. Just accept that
+ electrically seen the use of differential signals gives a much
+ better noise margin. You will normally find differential buses
+ in use for inter-cabinet connections. Because of the lower cost
+ single ended is mostly used for shorter buses like inside
+ cabinets.
+
+ There is nothing that stops you from using differential stuff
+ with FreeBSD, as long as you use a controller that has device
+ driver support in FreeBSD. As an example, Adaptec marketed the
+ AH1740 as a single ended board, whereas the AH1744 was differential.
+ The software interface to the host is identical for both.
+
+ <sect3>Terminators
+ <p>
+ Terminators in SCSI terminology are resistor networks that are
+ used to get a correct impedance matching. Impedance matching
+ is important to get clean signals on the bus, without
+ reflections or ringing. If you once made a long distance
+ telephone call on a bad line you probably know what reflections
+ are. With 20Mbytes/sec travelling over your SCSI bus, you
+ don't want signals echoing back.
+
+ Terminators come in various incarnations, with more or less
+ sophisticated designs. Of course, there are internal and
+ external variants. Almost every SCSI device comes with a
+ number of sockets in which a number of resistor networks can
+ (must be!) installed. If you remove terminators from a device,
+ carefully stock 'm. You will need them when you ever decide to
+ reconfigure your SCSI bus. There is enough variation in even
+ these simple tiny things to make finding the exact replacement
+ a frustrating business. There are also SCSI devices that have
+ a single jumper to enable or disable a builtin terminator.
+ There are special terminators you can stick onto a flatcable
+ bus. Others look like external connectors, so a connector hood
+ without a cable. So, lots of choice as you can see.
+
+ There is much debate going on if and when you should switch
+ from simple resistor (passive) terminators to active
+ terminators. Active terminators contain more or less elaborate
+ circuits to give more clean bus signals. The general consensus
+ seems to be that the usefullnes of active termination increases
+ when you have long buses and/or fast devices. If you ever have
+ problems with your SCSI buses you might consider trying an
+ active terminator. Try to borrow one first, they reputedly are
+ quite expensive.
+
+ Please keep in mind that terminators for differential and
+ single-ended buses are not identical. You should <bf>not
+ mix</bf> the two variants.
+
+ OK, and now where should you install your terminators? This is
+ by far the most misunderstood part of SCSI. And it is by far
+ the simplest.. The rule is: <bf>every SCSI bus has 2 (two)
+ terminators, one at each end of the bus.</bf> So, two and not
+ one or three or whatever. Do yourself a favour and stick to
+ this rule. It will save you endless grief, because wrong
+ termination has the potential to introduce highly mysterious
+ bugs.
+
+ A common pitfall is to have an internal (flat)cable in a
+ machine and also an external cable attached to the
+ controller. It seems almost everybody forgets to remove the
+ terminators from the controller. The terminator must now be on
+ the last external device, and not on the controller! In
+ general, every reconfiguration of a SCSI bus must pay attention
+ to this.
+
+ What I did myself is remove all terminators from my SCSI
+ devices and controllers. I own a couple of external
+ terminators, for both the Centronics-type external cabling and
+ for the internal flat cable connectors. This makes
+ reconfiguration much easier.
+
+ <sect3>Terminator power
+ <p>
+ The terminators discussed in the previous chapter need power to
+ operate properly. On the SCSI bus, a line is dedicated to this
+ purpose. So, simple huh?
+
+ Not so. Each device can provide it's own terminator power to
+ the terminator sockets it has on-device. But if you have
+ external terminators, or when the device supplying the
+ terminator power to the SCSI bus line is switched off you are
+ in trouble.
+
+ The idea is that initiators (these are devices that initiate
+ actions on the bus, a discussion follows) must supply
+ terminator power. All SCSI devices are allowed (but not
+ required) to supply terminator power.
+
+ To allow for switched-off devices on a bus, the terminator
+ power must be supplied to the bus via a diode. This prevents
+ the backflow of current to switched-off devices.
+
+ To prevent all kinds of nastiness, the terminator power is
+ usually fused. As you can imagine, fuses might blow. This can,
+ but does not have to, lead to a non functional bus. If multiple
+ devices supply terminator power, a single blown fuse will not
+ put you out of business. A single supplier with a blown fuse
+ certainly will. Clever external terminators sometimes have a
+ LED indication that shows whether terminator power is present.
+
+ In newer designs auto-restoring fuses are used who 'reset'
+ themselves after some time.
+
+ On modern devices, sometimes integrated terminators are
+ used. These things are special purpose integrated circuits that
+ can be dis/en-abled with a control pin. It is not necessary to
+ physically remove them from a device. You may find them on
+ newer host adapters, sometimes they even are software
+ configurable, using some sort of setup tool. Consult you
+ documentation!
+
+ <sect3>Device addressing
+ <p>
+ Because the SCSI bus is, ehh, a bus there must be a way to
+ distinguish or address the different devices connected to it.
+
+ This is done by means of the SCSI or target ID. Each device has
+ a unique target ID. You can select the ID to which a device
+ must respond using a set of jumpers, or a dipswitch, or
+ something similar. Consult the documentation of your device for
+ more information.
+
+ Beware of multiple devices configured to use the same ID. Chaos
+ normally reigns in this case.
+
+ For an 8 bit bus, a maximum of 8 targets is possible. The
+ maximum is 8 because the selection is done bitwise using the 8
+ datalines on the bus. For wide this increases to the number of
+ datalines.
+
+ The higher the SCSI target ID, the higher the priority the
+ devices has. When it comes to arbitration between devices that
+ want to use the bus at the same time, the device that has the
+ highest SCSI ID will win. This also means that the SCSI
+ hostadapter usually uses target ID 7 (for narrow buses).
+
+ For a further subdivision, the standard allows for Logical
+ Units or LUNs for short. A single target ID may have multiple
+ LUNs. For example, a tape device including a tape changer may
+ have LUN 0 for the tape device itself, and LUN 1 for the
+ tapechanger. In this way, the host system can address each of
+ the parts of the tape unit as desired.
+
+ <sect3>Bus layout
+ <p>
+ SCSI buses are linear. So, not shaped like Y-junctions, star
+ topologies, cobwebbs or whatever else people might want to
+ invent.
+
+ You might notice that the terminator issue discussed earlier
+ becomes rather hairy if your bus is not linear..
+
+ The electrical characteristics, it's noise margins and
+ ultimately the reliability of it all are tightly related to
+ linear bus rule.
+
+ <bf>Stick to the linear bus rule!</bf>
+
+ <sect1>Using SCSI with FreeBSD
+ <p>
+ <sect2>About translations, BIOSes and magic..
+ <p>
+ As stated before, you should first make sure that you have a
+ electrically sound bus.
+
+ When you want to use a SCSI disk on your PC as boot disk, you
+ must aware of some quirks related to PC BIOSes. The PC BIOS in
+ it's first incarnation used a low level physical interface to the
+ harddisk. So, you had to tell the BIOS (using a setup tool or a
+ BIOS builtin setup) how your disk physically looked like. This
+ involved stating number of heads, number of cylinders, number of
+ sectors per track, obscure things like precompensation and
+ reduced write current cylinder etc.
+
+ One might be inclined to think that since SCSI disks are smart
+ you can forget about this. Alas, the arcane setup issue is still
+ present today. The system BIOS needs to know how to access your
+ SCSI disk with the head/cyl/sector method.
+
+ The SCSI host adapter or SCSI controller you have put in your
+ AT/EISA/PCI/whatever bus to connect your disk therefore has it's
+ own onboard BIOS. During system startup, the SCSI BIOS takes over
+ the harddisk interface routines from the system BIOS. To fool the
+ system BIOS, the system setup is normally set to No harddisk
+ present. Obvious, isn't it?
+
+ The SCSI BIOS itself presents to the system a so called
+ <bf>translated</bf> drive. This means that a fake drive table is
+ constructed that allows the PC to boot the drive. This
+ translation is often (but not always) done using a pseudo drive
+ with 32 heads and 64 sectors per track. By varying the number of
+ cylinders, the SCSI BIOS adapts to the actual drive size. It is
+ useful to note that 32 * 64 / 2 = the size of your drive in
+ megabytes. The division by 2 is to get from disk blocks that are
+ normally 512 bytes in size to Kbytes.
+
+ Right.. All is well now?! No, it isn't. The system BIOS has
+ another quirk you might run into. The number of cylinders of a
+ bootable harddisk cannot be greater than 1024. Using the
+ translation above, this is a showstopper for disks greater than
+ 1 Gb. With disk capacities going up all the time this is causing
+ problems.
+
+ Fortunately, the solution is simple: just use another
+ translation, e.g. with 128 heads instead of 32. In most cases new
+ SCSI BIOS versions are available to upgrade older SCSI host
+ adapters. Some newer adapters have an option, in the form of a
+ jumper or software setup selection, to switch the translation the
+ SCSI BIOS uses.
+
+ It is very important that <bf>all</bf> operating systems on the disk use
+ the <bf>same translation</bf> to get the right idea about where to find
+ the relevant partitions. So, when installing FreeBSD you must
+ answer any questions about heads/cylinders etc using the
+ translated values your host adapter uses.
+
+ Failing to observe the translation issue might be un-bootable systems or
+ operating systems overwriting eachothers partitions. Using fdisk
+ you should be able to see all partitions.
+
+ As promised earlier: what is this talk about 'lying' devices? As
+ you might already know, the FreeBSD kernel reports the geometry
+ of SCSI disks when booting. An example from one of my systems:
+
+ <verb>
+Feb 9 19:33:46 yedi /386bsd: aha0 targ 0 lun 0: <MICROP 1588-15MB1057404HSP4>
+Feb 9 19:33:46 yedi /386bsd: sd0: 636MB (1303250 total sec), 1632 cyl, 15 head,
+ 53 sec, bytes/sec 512
+ </verb>
+
+ This info is retrieved from the SCSI disk itself. Newer disks
+ often use a technique called zone bit recording. The idea is that
+ on the outer cylinders of the drive there is more space so more
+ sectors per track can be put on them. This results in disks that
+ have more tracks on outer cylinders than on the inner cylinders
+ and, last but not least, have more capacity. You can imagine that
+ the value reported by the drive when inquiring about the geometry
+ now becomes fake.
+
+ <sect2>SCSI subsystem design
+ <p>
+ FreeBSD uses a sort of layered SCSI subsystem. For each different
+ controller card a so called device driver is written. This driver
+ knows all the intimate details about the hardware it
+ controls. The driver has a interface to the upper layers of the
+ SCSI subsystem through which it receives it's commands and
+ reports back any status.
+
+ On top of the card drivers there are a number of more generic
+ drivers for a class of devices. More specific: a driver for
+ tape devices (abbreviation: st), magnetic disks (sd), cdroms (cd)
+ etc. In case you are wondering where you can find this stuff, it
+ all lives in <tt>/sys/scsi</tt>. See the man pages in section 4
+ for more details.
+
+ The multi level design allows a decoupling of low-level bit
+ banging and more high level stuff. Adding support for another
+ piece of hardware is a much more managable problem.
+
+ <sect2>Kernel configuration
+ <p>
+ Dependent on your hardware, the kernel configuration file must
+ contain a line which describes your hostadapter. This includes
+ I/O addresses, interrupts etc. Consult the man page for your
+ adapter driver to get more info.
+
+ Although it is probably an obvious remark: the kernel config
+ file should reflect your actual hardware setup. So, interrupts,
+ I/O addresses etc must match the kernel config file.
+
+ An example from the kernel config file (they live in
+ <tt>/sys/i386/conf</tt> BTW), with some added comments (between
+ &lsqb;&rsqb;):
+
+ <verb>
+controller ahb0 at isa? bio irq 11 vector ahbintr &lsqb;driver for Adaptec 174x&rsqb;
+controller aha0 at isa? port "IO_AHA0" bio irq 11 drq 5 vector ahaintr &lsqb;for Adaptec 154x&rsqb;
+controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr &lsqb;for Seagate
+ST01/02&rsqb;
+controller scbus0
+
+device sd0 &lsqb;support for 4 SCSI harddisks, sd0 up sd3&rsqb;
+device sd1
+device sd2
+device sd3
+
+device st0 &lsqb;support for 2 SCSI tapes&rsqb;
+device st1
+
+device cd0 #Only need one of these, the code dynamically grows &lsqb;for the cdrom&rsqb;
+ </verb>
+
+ So, the ahb driver is used for the Adaptec 1740, the aha driver
+ for the Adaptec 154x etc. If you have more than one card of the
+ same type in your system you get an ahb1, ahb2 line etc.
+
+ The example above supports 4 SCSI disks. If during boot more
+ devices of a specific type (e.g. sd disks) are found than are
+ configured in the booting kernel, the system will complain. You
+ will have to build and boot a new kernel (after adapting the kernel
+ configuration file) before you can use all of the devices. It
+ does not hurt to have 'extra' devices in the kernel, the example
+ above will work fine when you have only 2 SCSI disks.
+
+ Use <tt>man 4 scsi</tt> to check for the latest info on the SCSI
+ subsystem. For more detailed info on hostadapter drivers use eg
+ <tt>man 4 aha</tt> for info on the Adaptec 154x driver.
+
+ <sect2>Tuning your SCSI kernel setup
+ <p>
+ Experience has shown that some devices are slow to respond to INQUIRY
+ commands after a SCSI bus reset. An INQUIRY command is sent by the kernel
+ on boot to see what kind of device (disk, tape, cdrom etc) is connected
+ to a specific target ID. This process is called device probing by the way.
+
+ To work around this problem, FreeBSD allows a tunable delay time before
+ the SCSI devices are probed following a SCSI bus reset. You can set this
+ delaytime in your kernel configuration file using a line like:
+
+ <verb>
+options "SCSI_DELAY=15" #Be pessimistic about Joe SCSI device
+ </verb>
+ This line sets the delay time to 15 seconds. On my own system I had to
+ use 3 seconds minimum to get my trusty old CDROM drive to be recognised.
+ Start with a high value (say 30 seconds or so) when you have problems
+ with device recognition. If this helps, tune it back until it just stays
+ working.
+
+ <sect2>Rogue SCSI devices
+ <p>
+ Although the SCSI standard tries to be complete and concise, it is
+ a complex standard and implementing things correctly is no easy task.
+ Some vendors do a better job then others.
+
+ This is exactly where the 'rogue' devices come into view. Rogues are
+ devices that are recognised by the FreeBSD kernel as behaving slightly
+ (...) non-standard. Rogue devices are reported by the kernel when
+ booting. An example for two of my cartridge tape units:
+
+ <verb>
+Feb 25 21:03:34 yedi /386bsd: ahb0 targ 5 lun 0: <TANDBERG TDC 3600 -06:>
+Feb 25 21:03:34 yedi /386bsd: st0: Tandberg tdc3600 is a known rogue
+
+Mar 29 21:16:37 yedi /386bsd: aha0 targ 5 lun 0: <ARCHIVE VIPER 150 21247-005>
+Mar 29 21:16:37 yedi /386bsd: st1: Archive Viper 150 is a known rogue
+ </verb>
+
+ For instance, there are devices that respond to
+ all LUNs on a certain target ID, even if they are actually only one
+ device. It is easy to see that the kernel might be fooled into
+ believing that there are 8 LUNs at that particular target ID. The
+ confusion this causes is left as an exercise to the user.
+
+ The SCSI subsystem of FreeBSD recognises devices with bad habits by
+ looking at the INQUIRY response they send when probed. Because the
+ INQUIRY response also includes the version number of the device
+ firmware, it is even possible that for different firmware versions
+ different workarounds are used.
+
+ This scheme works fine, but keep in mind that it of course only
+ works for devices that are KNOWN to be weird. If you are the first
+ to connect your bogus Mumbletech SCSI cdrom you might be the one
+ that has to define which workaround is needed.
+
+ <sect2>Busmaster host adapters
+ <p>
+ Most, but not all, SCSI host adapters are bus mastering controllers.
+ This means that they can do I/O on their own without putting load onto
+ the host CPU for data movement.
+
+ This is of course an advantage for a multitasking operating system like
+ FreeBSD. It must be noted however that there might be some rough edges.
+
+ For instance an Adaptec 1542 controller can be set to use different
+ transferspeeds on the host bus (ISA or AT in this case). The controller
+ is settable to different rates because not all motherboards can handle
+ the higher speeds. Problems like hangups, bad data etc might be the
+ result of using a higher data transfer rate then your motherboard
+ can stomach.
+
+ The solution is of course obvious: switch to a lower data transfer rate
+ and try if that works better.
+
+ In the case of a Adaptec 1542, there is an option that can be put
+ into the kernel config file to allow dynamic determination of the
+ right, read: fastest feasible, transfer rate. This option is
+ disabled by default:
+
+ <verb>
+options "TUNE_1542" #dynamic tune of bus DMA speed
+ </verb>
+
+ Check the man pages for the host adapter that you use. Or better
+ still, use the ultimate documentation (read: driver source).
+
+ <sect1>Tracking down problems
+ <p>
+ The following list is an attempt to give a guideline for the most
+ common SCSI problems and their solutions. It is by no means
+ complete.
+
+ <itemize>
+ <item>
+ Check for loose connectors and cables.
+ <item>
+ Check and doublecheck the location and number of your terminators.
+ <item>
+ Check if your bus has at least one supplier of terminator power
+ (especially with external terminators.
+ <item>
+ Check if no double target IDs are used.
+ <item>
+ Check if at least one device provides terminator power to the bus.
+ <item>
+ Check if all devices to be used are powered up.
+ <item>
+ Make a minimal bus config with as little devices as possible.
+ <item>
+ If possible, configure your hostadapter to use slow bus speeds.
+ </itemize>
+
+ <sect1><heading>Further reading<label id="further-reading"></>
+ <p>
+ If you intend to do some serious SCSI hacking, you might want to
+ have the official standard at hand:
+
+ Approved American National Standards can be purchased from ANSI at
+ 11 West 42nd Street, 13th Floor, New York, NY 10036, Sales Dept:
+ (212) 642-4900. You can also buy many ANSI standards and most
+ committee draft documents from Global Engineering Documents, 15
+ Inverness Way East, Englewood, CO 80112-5704, Phone: (800)
+ 854-7179, Outside USA and Canada: (303) 792-2181, FAX: (303) 792-
+ 2192.
+
+ Many X3T10 draft documents are available electronically on the SCSI
+ BBS (719-574-0424) and on the ncrinfo.ncr.com anonymous ftp site.
+
+ Latest X3T10 committee documents are:
+ <verb>
+ AT Attachment (ATA or IDE) &lsqb;X3.221-1994&rsqb; Approved
+ ATA Extensions (ATA-2) &lsqb;X3T10/948D Rev 2i&rsqb;
+ Enhanced Small Device Interface (ESDI) &lsqb;X3.170-1990/X3.170a-1991&rsqb; Approved
+ Small Computer System Interface - 2 (SCSI-2) &lsqb;X3.131-1994&rsqb; Approved
+ SCSI-2 Common Access Method Transport and SCSI Interface Module (CAM)
+ &lsqb;X3T10/792D Rev 11&rsqb;
+ </verb>
+ Other publications that might provide you with additional information are:
+ <verb>
+"SCSI: Understanding the Small Computer System Interface", written by NCR
+Corporation. Available from: Prentice Hall, Englewood Cliffs, NJ, 07632
+Phone: (201) 767-5937 ISBN 0-13-796855-8
+
+"Basics of SCSI", a SCSI tutorial written by Ancot Corporation
+Contact Ancot for availability information at:
+Phone: (415) 322-5322 Fax: (415) 322-0455
+
+"SCSI Interconnection Guide Book", an AMP publication (dated 4/93, Catalog
+65237) that lists the various SCSI connectors and suggests cabling schemes.
+Available from AMP at (800) 522-6752 or (717) 564-0100
+
+"Fast Track to SCSI", A Product Guide written by Fujitsu.
+Available from: Prentice Hall, Englewood Cliffs, NJ, 07632
+Phone: (201) 767-5937 ISBN 0-13-307000-X
+
+"The SCSI Bench Reference", "The SCSI Encyclopedia", and the "SCSI Tutor",
+ENDL Publications, 14426 Black Walnut Court, Saratoga CA, 95070
+Phone: (408) 867-6642
+
+"Zadian SCSI Navigator" (quick ref. book) and "Discover the Power of SCSI"
+(First book along with a one-hour video and tutorial book), Zadian Software,
+Suite 214, 1210 S. Bascom Ave., San Jose, CA 92128, (408) 293-0800
+ </verb>
+
+ On Usenet the newsgroups comp.periphs.scsi and comp.periphs are
+ noteworthy places to look for more info. You can also find the
+ SCSI-Faq there, which posted periodically.
+
+ Most major SCSI device and hostadapter suppliers operate ftp sites
+ and/or BBS systems. They may be valuable sources of information
+ about the devices you own.
diff --git a/handbook/slipc.sgml b/handbook/slipc.sgml
new file mode 100644
index 0000000000..9787331388
--- /dev/null
+++ b/handbook/slipc.sgml
@@ -0,0 +1,196 @@
+<!-- $Id: slipc.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<sect><heading>Setting up a SLIP client</heading>
+
+<p><em>Contributed by &a.asami;.</em>
+
+The following is one way to set up a FreeBSD machine for SLIP on a
+static host network. For dynamic hostname assignments (i.e., your
+address changes each time you dial up), you probably need to do
+something much fancier.
+
+<!--
+This is just "what I did, and it worked for me". I'm sharing this
+just for your reference, I'm no expert in SLIP nor networking so your
+mileage may vary.
+-->
+
+Note: for 1.1 systems (not 1.1.5), you need to use /dev/tty01 instead
+of /dev/cua01. substitute all the occurences of "cua" in this document
+with "tty".
+
+Note: the default 1.1.5(.1) system only comes with cua/ttyd pairs for
+the last two ports (2 and 3), so if your modem is at sio0/sio1
+(COM1/COM2), you need to make the devices. Try "cd /dev; sh MAKEDEV
+cua01" to make the new special files for sio1 (ditto for sio0). This
+will delete tty01, but you shouldn't need it anymore...or you can make
+a symbolic link /dev/tty01 -> ttyd1 if you don't want to hunt down all
+occurences of tty01 in your setup files.
+
+I actually have a symbolic link /dev/modem -> cua01 (and /dev/mouse ->
+ttyd0). I use only the modem/mouse names in my configuration files.
+This helped a lot when I switched from 1.1 to 1.1.5.1 (tty01 => cua01)
+and when I had to move my modem temporarily to sio2 to enable the
+RS-232C port on the serial card. It can become quite cumbersome when
+you need to fix a bunch of files in /etc and .kermrc's all over the
+system!
+
+First, make sure you have
+<verb>
+pseudo-device sl 2
+</verb>
+in your kernel's config file. It is included in the GENERIC, GENERICAH
+and GENERICBT kernels, so this won't be a problem unless you deleted it.
+
+<sect1><heading>Things you have to do only once</heading>
+
+<p><enum>
+<item> Add your home machine, the gateway and nameservers to your
+ /etc/hosts file. Mine looks like this:
+<verb>
+127.0.0.1 localhost loghost
+136.152.64.181 silvia.HIP.Berkeley.EDU silvia.HIP silvia
+
+136.152.64.1 inr-3.Berkeley.EDU inr-3 slip-gateway
+128.32.136.9 ns1.Berkeley.edu ns1
+128.32.136.12 ns2.Berkeley.edu ns2
+</verb>
+ By the way, silvia is the name of the car that I had when I was
+ back in Japan (it's called 2?0SX here in U.S.).
+
+<item> Make sure you have "hosts" before "bind" in your /etc/host.conf.
+ Otherwise, funny things may happen.
+
+<item> Edit the /etc/netstart and add this to the end of the file:
+<verb>
+# set up slip
+gateway=slip-gateway
+ifconfig sl0 inet $hostname $gateway netmask 0xffffff00
+route add default $gateway
+</verb>
+ Note that because of the "slip-gateway" entry in /etc/hosts, there
+ is no local dependency in the netstart file. Also, you might want
+ to un-comment the "<verb>route add $hostname localhost</verb>" line.
+
+<item> Make a file /etc/resolv.conf which contains:
+<verb>
+domain HIP.Berkeley.EDU
+nameserver 128.32.136.9
+nameserver 128.32.136.12
+</verb>
+ As you can see, these set up the nameserver hosts. Of course, the
+ actual addresses depend on your environment.
+
+<item> Set the password for root and toor (and any other accounts that
+ doesn't have a password). Use passwd, don't edit the passwd or
+ passwd.master files!
+
+<item> Edit /etc/myname and reboot the machine.
+</enum>
+
+
+<sect1><heading>Making a SLIP connection</heading>
+
+<p><enum>
+<item> Dial up, type "slip" at the prompt, enter your machine name and
+ password. The things you need to enter depends on your
+ environment. I use kermit, with a script like this:
+<verb>
+# kermit setup
+set modem hayes
+set line /dev/cua01
+set speed 57600
+set parity none
+set flow rts/cts
+set terminal bytesize 8
+set file type binary
+# The next macro will dial up and login
+define slip dial 643-9600, input 10 =>, if failure stop, -
+output slip\x0d, input 10 Username:, if failure stop, -
+output silvia\x0d, input 10 Password:, if failure stop, -
+output ***\x0d, echo \x0aCONNECTED\x0a
+</verb>
+ (of course, you have to change the hostname and password to fit
+ yours). Then you can just type "slip" from the kermit prompt to
+ get connected.
+
+ Note: leaving your password in plain text anywhere in the
+ filesystem is generally a BAD idea. Do it at your own risk. I'm
+ just too lazy.
+
+ Note: If you have an 1.1 machine, and kermit doesn't give you a
+ prompt, try "stty -f /dev/tty01 clocal". I put this in
+ /etc/rc.local so that it works the first time I boot the machine.
+ This doesn't apply to 1.1.5(.1) systems, as cua0? are already
+ configured for dialouts.
+
+<item> Leave the kermit there (you can suspend it by "z") and as root,
+ type
+<verb>
+slattach -h -c -s 57600 /dev/cua01
+</verb>
+ if you are able to "ping" hosts on campus, you are connected!
+ If it doesn't work, you might want to try "-a" instead of "-c".
+</enum>
+
+<sect1><heading>How to shutdown the connection</heading>
+
+ <p>Type "ps gx" (as root) to find out the PID of slattach, and use
+ "kill -INT" to kill it.
+ Then go back to kermit ("fg" if you suspended it) and exit from it
+ ("q").
+
+ The slattach man page says you have to use "ifconfig sl0 down" to
+ mark the interface down, but this doesn't seem to make any
+ difference for me. ("ifconfig sl0" reports the same thing.)
+
+ Some times, your modem might refuse to drop the carrier (mine
+ often does). In that case, simply start kermit and quit it again.
+ It usually goes out on the second try.
+
+ When you want to connect again, go back to (XXX). You may have to
+ watch out for clocal mode. If "stty -f /dev/tty01" doesn't tell
+ you it's clocal, you need to re-set it before kermitting. Again,
+ this is only for 1.1 machines.
+
+<sect1><heading>Troubleshooting</heading>
+
+<p>If it doesn't work, feel free to ask me. The things that people
+tripped over so far:
+<itemize>
+<item> Not using "-c" or "-a" in slattach (I have no idea why this can be
+ fatal, but adding this flag solved the problem for at least one
+ person)
+
+<item> Using "s10" instead of "sl0" (might be hard to see the difference on
+ some fonts.
+
+<item> Try "ifconfig sl0" to see your interface status. I get:
+<verb>
+silvia# ifconfig sl0
+sl0: flags=10<POINTOPOINT>
+ inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00
+</verb>
+
+<item>Also, "netstat -r" will give the routing table, in case you get the
+"no route to host" messages from ping. Mine looks like:
+<verb>
+silvia# netstat -r
+Routing tables
+Destination Gateway Flags Refs Use IfaceMTU Rtt
+Netmasks:
+(root node)
+(root node)
+
+Route Tree for Protocol Family inet:
+(root node) =>
+default inr-3.Berkeley.EDU UG 8 224515 sl0 - -
+localhost.Berkel localhost.Berkeley UH 5 42127 lo0 - 0.438
+inr-3.Berkeley.E silvia.HIP.Berkele UH 1 0 sl0 - -
+silvia.HIP.Berke localhost.Berkeley UGH 34 47641234 lo0 - 0.438
+(root node)
+</verb>
+(this is after transferring a bunch of files, your numbers should be
+smaller).
+</itemize> \ No newline at end of file
diff --git a/handbook/slips.sgml b/handbook/slips.sgml
new file mode 100644
index 0000000000..799ead042e
--- /dev/null
+++ b/handbook/slips.sgml
@@ -0,0 +1,488 @@
+<!-- This is an SGML version in the linuxdoc DTD of the SLIP Server
+ FAQ by Guy Helmer.
+
+ This guide provides instruction in configuring and preparing
+ a FreeBSD system to be a dialup SLIP server.
+
+<title>
+Setting up FreeBSD as a SLIP Server
+<author>Guy Helmer, <tt/ghelmer@alpha.dsu.edu/
+<date>v0.2, 20 March 1995
+
+-->
+
+<sect><heading>Setting up a SLIP server</heading>
+
+<p><em>Contributed by &a.ghelmer;.</em>
+
+This document provides suggestions for setting up SLIP Server services
+on a FreeBSD system, which typically means configuring your system to
+automatically startup connections upon login for remote SLIP clients.
+I've written this document based on my own experience; however, as
+your system and needs may be different, this document may not answer
+all of your questions, and I cannot be responsible if you damage your
+system or lose data due to attempting to follow the suggestions here.
+
+I have only setup SLIP Server services on a FreeBSD 1.1 system, so if
+you are running a different version (such as FreeBSD 2.0), your system
+may be different.
+
+<sect1><heading>Prerequisites<label id="prereqs"></>
+
+<p>
+This document is very technical in nature, so background knowledge is
+required. I must assume that you are familiar with the TCP/IP network
+protocol, and in particular, network and node addressing, network
+address masks, subnetting, routing, and routing protocols, such as
+RIP. Configuring SLIP services on a dial-up server requires a
+knowledge of these concepts, and if you are not familiar with them,
+please read a copy of either Craig Hunt's <em>TCP/IP Network
+Administration</em> published by O'Reilly &amp; Associates, Inc. (ISBN
+Number 0-937175-82-X), or Douglas Comer's book on the TCP/IP protocol.
+
+I will assume that you have already setup your modem(s) and configured
+the appropriate system files to allow logins through your modems (see
+the manual pages for <tt>sio(4)</tt> for information on the serial
+port device driver and <tt>ttys(5)</tt>, <tt>gettytab(5)</tt>,
+<tt>getty(8)</tt>, &amp; <tt>init(8)</tt> for information relevant to
+configuring the system to accept logins on modems, and perhaps
+<tt>stty(1)</tt> for information on setting serial port parameters
+&lsqb;such as <tt>clocal</tt> for directly-connected serial
+interfaces&rsqb;).
+
+<sect1>Quick Overview
+
+<p>
+In its typical configuration, using FreeBSD as a SLIP server works as
+follows: a SLIP user dials up your FreeBSD SLIP Server system and logs
+in with a special SLIP login ID that uses <tt>/usr/sbin/sliplogin</tt>
+as the special user's shell. The <tt/sliplogin/ program browses the
+file <tt>/etc/slip.hosts</tt> to find a matching line for the special
+user, and if it finds a match, connects the serial line to an
+available SLIP interface and then runs the shell script
+<tt>/etc/slip.login</tt> to configure the SLIP interface.
+
+<sect2>An Example of a SLIP Server Login
+
+<p>
+For example, if my SLIP user ID were <tt>Shelmerg</tt>, that user's
+entry in <tt>/etc/master.passwd</tt> would look something like this
+(except it would be all on one line):
+
+<tscreen><verb>
+Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:
+ /usr/users/Shelmerg:/usr/sbin/sliplogin
+</verb></tscreen>
+
+and, when I log in with that user ID, <tt>sliplogin</tt> will search
+<tt>/etc/slip.hosts</tt> for a line that had a matching user ID; on my
+system, I may have a line in <tt>/etc/slip.hosts</tt> that reads:
+
+<tscreen><verb>
+Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
+</verb></tscreen>
+
+sliplogin will find that matching line, hook the serial line I'm on
+into the next available SLIP interface, and then execute
+<tt>/etc/slip.login</tt> like this:
+
+<tscreen><verb>
+/etc/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
+</verb></tscreen>
+
+If all goes well, <tt>/etc/slip.login</tt> will issue an
+<tt>ifconfig</tt> for the SLIP interface to which sliplogin attached
+itself (slip interface 0, in the above example, which was the first
+parameter in the list given to <tt>slip.login</tt>) to set the local
+IP address (<tt>dc-slip</tt>), remote IP address (<tt>sl-helmer</tt>),
+network mask for the SLIP interface (<tt>0xfffffc00</tt>), and any
+additional flags (<tt>autocomp</tt>). If something goes wrong,
+sliplogin usually logs good informational messages via the daemon
+syslog facility, which usually goes into <tt>/var/log/messages</tt>
+(see the manual pages for <tt>syslogd(8)</tt> and
+<tt>syslog.conf(5)</tt>, and perhaps check <tt>/etc/syslog.conf</tt>
+to see to which files <tt>syslogd</tt> is logging).
+
+OK, enough of the examples -- let's dive into setting up the system.
+
+<sect1>Kernel Configuration
+<p>
+FreeBSD's default kernels usually come with two SLIP interfaces
+defined (<tt>sl0</tt> and <tt>sl1</tt>); you can use <tt>netstat
+-i</tt> to see whether these interfaces are defined in your kernel.
+
+Sample output from <tt>netstat -i</tt>:
+
+<tscreen><verb>
+Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
+ed0 1500 <Link>0.0.c0.2c.5f.4a 291311 0 174209 0 133
+ed0 1500 138.247.224 ivory 291311 0 174209 0 133
+lo0 65535 <Link> 79 0 79 0 0
+lo0 65535 loop localhost 79 0 79 0 0
+sl0* 296 <Link> 0 0 0 0 0
+sl1* 296 <Link> 0 0 0 0 0
+</verb></tscreen>
+
+The <tt>sl0</tt> and <tt>sl1</tt> interfaces shown in <tt>netstat
+-i</tt>'s output indicate that there are two SLIP interfaces built
+into the kernel. (The asterisks after the <tt>sl0</tt> and
+<tt>sl1</tt> indicate that the interfaces are ``down''.)
+
+However, FreeBSD's default kernels do not come configured to forward
+packets (ie, your FreeBSD machine will not act as a router) due to
+Internet RFC requirements for Internet hosts (see RFC's 1009
+&lsqb;Requirements for Internet Gateways&rsqb;, 1122
+&lsqb;Requirements for Internet Hosts -- Communication Layers&rsqb;,
+and perhaps 1127 &lsqb;A Perspective on the Host Requirements
+RFCs&rsqb;), so if you want your FreeBSD SLIP Server to act as a
+router, you'll have to add the line <tt>options GATEWAY </tt> to your
+machine's kernel configuration file and re-compile the kernel anyway.
+(Trivia: ``Gateways'' are the Internet's old name for what are now
+usually called ``routers''.)
+
+Please see the BSD System Manager's Manual chapter on ``Building
+Berkeley Kernels with Config'' &lsqb;the source for which is in
+<tt>/usr/src/share/doc/smm</tt>&rsqb; and ``FreeBSD Configuration
+Options'' &lsqb;in <tt>/sys/doc/options.doc</tt>&rsqb; for more
+information on configuring and building kernels. You may have to
+unpack the kernel source distribution if haven't installed the system
+sources already (<tt>srcdist/srcsys.??</tt> in FreeBSD 1.1,
+<tt>srcdist/sys.??</tt> in FreeBSD 1.1.5.1, or the entire source
+distribution in FreeBSD 2.0) to be able to configure and build
+kernels.
+
+You'll notice that near the end of the default kernel configuration
+file (<tt>/sys/i386/conf/GENERICAH</tt>) is a line that reads:
+
+<tscreen><verb>
+pseudo-device sl 2
+</verb></tscreen>
+
+which is the line that defines the number of SLIP devices available in
+the kernel; the number at the end of the line is the maximum number of
+SLIP connections that may be operating simultaneously.
+
+See the document ``Building Berkeley Kernels with Config'' and the
+manual page for <tt>config(8)</tt> to see how to configure and build
+kernels.
+
+<sect1>Sliplogin Configuration
+
+<p>
+As mentioned earlier, there are three files in the <tt>/etc</tt> directory that are part of the configuration for
+<tt>/usr/sbin/sliplogin</tt> (see <tt>sliplogin(8)</tt> for the actual
+manual page for <tt>sliplogin</tt>): <tt>slip.hosts</tt>, which
+defines the SLIP users &amp; their associated IP addresses;
+<tt>slip.login</tt>, which usually just configures the SLIP interface;
+and (optionally) <tt>slip.logout</tt>, which undoes <tt>slip.login</tt>'s
+effects when the serial connection is terminated.
+
+<sect2>slip.hosts Configuration
+
+<p>
+<tt>/etc/slip.hosts</tt> contains lines which have at least four items
+listed:
+
+<itemize>
+<item> SLIP user's login ID
+<item> Local address (local to the SLIP server) of the SLIP link
+<item> Remote address of the SLIP link
+<item> Network mask
+</itemize>
+
+The local and remote addresses may be host names (resolved to IP
+addresses by <tt>/etc/hosts</tt> or by the domain name service,
+depending on your specifications in <tt>/etc/host.conf</tt>), and I
+believe the network mask may be a name that can be resolved by a
+lookup into <tt>/etc/networks</tt>. On one of my systems,
+<tt>/etc/slip.hosts</tt> looks like this:
+
+<tscreen><verb>
+----- begin /etc/slip.hosts -----
+#
+# login local-addr remote-addr mask opt1 opt2
+# (normal,compress,noicmp)
+#
+Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp
+----- end /etc/slip.hosts ------
+</verb></tscreen>
+
+At the end of the line is one or more of the options:
+
+<itemize>
+<item> <tt>normal</tt> - no header compression
+<item> <tt>compress</tt> - compress headers
+<item> <tt>autocomp</tt> - compress headers if the remote end allows it
+<item> <tt>noicmp</tt> - disable ICMP packets (so any ``ping'' packets will be
+ dropped instead of using up your bandwidth)
+</itemize>
+
+Your choice of local and remote addresses for your SLIP links depends
+on whether you are going to dedicate a TCP/IP subnet or if you are
+going to use ``proxy ARP'' on your SLIP server (it's not ``true'' proxy
+ARP, but that is the terminology that I will use in this document to
+describe it). If you're not sure which method to select or how to
+assign IP addresses, please refer to the TCP/IP books referenced in
+the <ref id="prereqs"> section and/or consult your IP network manager.
+
+If you are going to use a separate subnet for your SLIP clients, you
+will need to allocate the subnet number out of your assigned IP
+network number and assign each of your SLIP client's IP numbers out of
+that subnet. Then, you will probably either need to configure a
+static route to the SLIP subnet via your SLIP server on your nearest
+IP router, or install <tt>gated</tt> on your FreeBSD SLIP server and
+configure it to talk the appropriate routing protocols to your other
+routers to inform them about your SLIP server's route to the SLIP
+subnet.
+
+Otherwise, if you will use the ``proxy ARP'' method, you will need to
+assign your SLIP client's IP addresses out of your SLIP server's
+Ethernet subnet, and you'll also need to adjust your
+<tt>/etc/slip.login</tt> and <tt>/etc/slip.logout</tt> scripts to use
+<tt>arp(8)</tt> to manage the proxy-ARP entries in the SLIP server's
+ARP table.
+
+<sect2>slip.login Configuration
+
+<p>
+The typical <tt>/etc/slip.login</tt> file looks like this:
+
+<tscreen><verb>
+----- begin /etc/slip.login -----
+#!/bin/sh -
+#
+# @(#)slip.login 5.1 (Berkeley) 7/1/90
+
+#
+# generic login file for a slip line. sliplogin invokes this with
+# the parameters:
+# 1 2 3 4 5 6 7-n
+# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
+#
+/sbin/ifconfig sl$1 inet $4 $5 netmask $6
+----- end /etc/slip.login -----
+</verb></tscreen>
+
+This <tt>slip.login</tt> file merely ifconfig's the appropriate SLIP
+interface with the local and remote addresses and network mask of the
+SLIP interface.
+
+If you have decided to use the ``proxy ARP'' method (instead of using
+a separate subnet for your SLIP clients), your <tt>/etc/slip.login</tt>
+file will need to look something like this:
+
+<tscreen><verb>
+----- begin /etc/slip.login for "proxy ARP" -----
+#!/bin/sh -
+#
+# @(#)slip.login 5.1 (Berkeley) 7/1/90
+
+#
+# generic login file for a slip line. sliplogin invokes this with
+# the parameters:
+# 1 2 3 4 5 6 7-n
+# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
+#
+/sbin/ifconfig sl$1 inet $4 $5 netmask $6
+# Answer ARP requests for the SLIP client with our Ethernet addr
+/usr/sbin/arp -s $5 00:11:22:33:44:55 pub
+----- end /etc/slip.login for "proxy ARP" -----
+</verb></tscreen>
+
+The additional line in this <tt>slip.login</tt>, <tt>arp -s &dollar;5
+00:11:22:33:44:55 pub</tt>, creates an ARP entry in the SLIP server's
+ARP table. This ARP entry causes the SLIP server to respond with the
+SLIP server's Ethernet MAC address whenever a another IP node on the
+Ethernet asks to speak to the SLIP client's IP address.
+
+When using the example above, be sure to replace the Ethernet MAC
+address (<tt>00:11:22:33:44:55</tt>) with the MAC address of your
+system's Ethernet card, or your ``proxy ARP'' will definitely not work!
+You can discover your SLIP server's Ethernet MAC address by looking at
+the results of running <tt>netstat -i</tt>; the second line of the output
+should look something like:
+
+<tscreen><verb>
+ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116
+ ^^^^^^^^^^^^^^^
+</verb></tscreen>
+
+which indicates that this particular system's Ethernet MAC address is
+<tt>00:02:c1:28:5f:4a</tt> -- the periods in the Ethernet MAC address
+given by <tt>netstat -i</tt> must be changed to colons and leading zeros
+should be added to each single-digit hexadecimal number to convert the
+address into the form that <tt>arp(8)</tt> desires; see the manual page on
+<tt>arp(8)</tt> for complete information on usage.
+
+Note that when you create <tt>/etc/slip.login</tt> and
+<tt>/etc/slip.logout</tt>, the ``execute'' bit (ie, <tt>chmod 755
+/etc/slip.login /etc/slip.logout</tt>) must be set, or
+<tt>sliplogin</tt> will be unable to execute it.
+
+<sect2>slip.logout Configuration
+
+<p>
+
+<tt>/etc/slip.logout</tt> isn't strictly needed (unless you are
+implementing ``proxy ARP''), but if you decide to create it, this is
+an example of a basic <tt>slip.logout</tt> script:
+
+<tscreen><verb>
+----- begin /etc/slip.logout -----
+#!/bin/sh -
+#
+# slip.logout
+
+#
+# logout file for a slip line. sliplogin invokes this with
+# the parameters:
+# 1 2 3 4 5 6 7-n
+# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
+#
+/sbin/ifconfig sl$1 down
+----- end /etc/slip.logout -----
+</verb></tscreen>
+
+If you are using ``proxy ARP'', you'll want to have
+<tt>/etc/slip.logout</tt> remove the ARP entry for the SLIP client:
+
+<tscreen><verb>
+----- begin /etc/slip.logout for "proxy ARP" -----
+#!/bin/sh -
+#
+# @(#)slip.logout
+
+#
+# logout file for a slip line. sliplogin invokes this with
+# the parameters:
+# 1 2 3 4 5 6 7-n
+# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
+#
+/sbin/ifconfig sl$1 down
+# Quit answering ARP requests for the SLIP client
+/usr/sbin/arp -d $5
+----- end /etc/slip.logout for "proxy ARP" -----
+</verb></tscreen>
+
+The <tt>arp -d &dollar;5</tt> removes the ARP entry that the ``proxy ARP''
+<tt>slip.login</tt> added when the SLIP client logged in.
+
+It bears repeating: make sure <tt>/etc/slip.logout</tt> has the
+execute bit set for after you create it (ie, <tt>chmod 755
+/etc/slip.logout</tt>).
+
+<sect1>Routing Considerations
+
+<p>
+If you are not using the ``proxy ARP'' method for routing packets
+between your SLIP clients and the rest of your network (and perhaps
+the Internet), you will probably either have to add static routes to
+your closest default router(s) to route your SLIP client subnet via
+your SLIP server, or you will probably need to install and configure
+<tt>gated</tt> on your FreeBSD SLIP server so that it will tell your
+routers via appropriate routing protocols about your SLIP subnet.
+
+<sect2>Static Routes
+
+<p>
+Adding static routes to your nearest default routers can be
+troublesome (or impossible, if you don't have authority to do so...).
+If you have a multiple-router network in your organization, some
+routers, such as Cisco and Proteon, may not only need to be configured
+with the static route to the SLIP subnet, but also need to be told
+which static routes to tell other routers about, so some expertise and
+troubleshooting/tweaking may be necessary to get static-route-based
+routing to work.
+
+<sect2>Running gated
+
+<p>
+An alternative to the headaches of static routes is to install
+<tt>gated</tt> on your FreeBSD SLIP server and configure it to use the
+appropriate routing protocols (RIP/OSPF/BGP/EGP) to tell other routers
+about your SLIP subnet. <tt/gated/ is available via anonymous ftp from
+<tt>ftp.gated.cornell.edu</tt> in the directory <tt>/pub/gated</tt>; I
+believe the current version as of this writing is
+<tt>gated-R3_5Alpha_8.tar.Z</tt>, which includes support for FreeBSD
+``out-of-the-box''. Complete information and documentation on
+<tt>gated</tt> is available on the Web starting at
+<tt>http://www.gated.cornell.edu/</tt>. Compile and install it, and
+then write a <tt>/etc/gated.conf</tt> file to configure your gated;
+here's a sample, similar to what I use on my FreeBSD SLIP server:
+
+<tscreen><verb>
+----- begin sample /etc/gated.conf for gated version 3.5Alpha5 -----
+#
+# gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
+# Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
+#
+#
+# tracing options
+#
+traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;
+
+rip yes {
+ interface sl noripout noripin ;
+ interface ed ripin ripout version 1 ;
+ traceoptions route ;
+} ;
+
+#
+# Turn on a bunch of tracing info for the interface to the kernel:
+kernel {
+ traceoptions remnants request routes info interface ;
+} ;
+
+#
+# Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
+#
+
+export proto rip interface ed {
+ proto direct {
+ xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
+ } ;
+} ;
+
+#
+# Accept routes from RIP via ed Ethernet interfaces
+
+import proto rip interface ed {
+ all ;
+} ;
+
+----- end sample /etc/gated.conf -----
+</verb></tscreen>
+
+The above sample <tt>gated.conf</tt> file broadcasts routing
+information regarding the SLIP subnet <tt>xxx.xxx.yy</tt> via RIP onto
+the Ethernet; if you are using a different Ethernet driver than the
+<tt/ed/ driver, you'll need to change the references to the <tt/ed/
+interface appropriately. This sample file also sets up tracing to
+<tt>/var/tmp/gated.output</tt> for debugging <tt>gated</tt>'s
+activity; you can certainly turn off the tracing options if
+<tt>gated</tt> works OK for you. I've changed my SLIP subnet's
+address to <tt>xxx.xxx.yy</tt> throughout the above file; you'll need
+to change the <tt>xxx.xxx.yy</tt>'s into the network address of your
+own SLIP subnet (be sure to change the net mask in the <tt>proto
+direct</tt> clause as well).
+
+When you get <tt>gated</tt> built and installed and create a
+configuration file for it, you'll need to run <tt>gated</tt> in place
+of <tt>routed</tt> on your FreeBSD system; change the
+<tt>routed/gated</tt> startup parameters in <tt>/etc/netstart</tt> as
+appropriate for your system. Please see the manual page for
+<tt>gated</tt> for information on <tt>gated</tt>'s command-line
+parameters.
+
+<sect1>Acknowledgements
+
+<p>
+Thanks to these people for comments and advice regarding this FAQ:
+
+<descrip>
+<tag/Wilko Bulte/ &lt;wilko@yedi.iaf.nl&gt;
+<tag/Piero Serini/ &lt;Piero@Strider.Inet.IT&gt;
+</descrip>
+
+<!-- </article> -->
+
diff --git a/handbook/submitters.sgml b/handbook/submitters.sgml
new file mode 100644
index 0000000000..6607e5593c
--- /dev/null
+++ b/handbook/submitters.sgml
@@ -0,0 +1,181 @@
+<!-- $Id: submitters.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<chapt><heading>Contributing to FreeBSD</heading>
+
+<p><em>Contributed by &a.jkh;.</em>
+
+This guide is intended for those who are moderately familar with FreeBSD
+and are now to the point where they have some locally developed
+customizations or fixes to the system which they'd like to incorporate
+back into the mainstream sources, thus saving the work of having to
+re-integrate the changes for each subsequent FreeBSD release. Submitting
+something to the FreeBSD project is also an excellent way of getting your
+code seriously *tested*! Many people have developed an original concept
+far beyond what they might have envisioned at the start just due to the
+flood of feedback and ideas generated by the many thousands of users of
+FreeBSD. Contributions are also what FreeBSD lives and grows from,
+and so your contributions are very important to the continued survival
+of this communal effort of ours - we're very glad to see you reading this
+documentation! :-)
+
+Submissions to FreeBSD can generally be classified into four catagories:
+<enum>
+<item> Ideas, general suggestions, bug reports.
+<item> Addition, deletion, renaming or patching of existing sources.
+<item> Significant contribution of a large body of independant work.
+<item> Porting of freely available software.
+</enum>
+A submission in *any* of these catagories is highly welcomed as they
+are each, in their own way, quite significant to the project.
+
+
+<sect><heading>Ideas and suggestions</heading>
+
+<p>An idea, suggestion or fix can be communicated in one of the following ways:
+<itemize>
+ <item> An idea or suggestion of general technical interest should be
+ mailed to &lt;hackers@freebsd.org&gt;. Likewise, people with an interest
+ in such things (and a tolerance for a HIGH volume of mail!) may
+ subscribe by sendimg mail to &lt;majordomo@freebsd.org&gt;. See also the
+ file /usr/share/FAQ/mailing-list.FAQ.
+
+ <item> An actual bug report should be filed by using the send-pr(1)
+ command (``man send-pr'' for information). This will prompt
+ you for various fields to fill in. Simply go to the fields
+ surrounded by &lt;&gt;'s and fill in your own information in place of
+ what's suggested there. You should receive confirmation of your
+ bug report and a tracking number (which you should also reference in
+ any subsequent correspondence).
+
+ If you do not receive confirmation in a timely fashion (3 days to
+ a week, depending on your email connection) or are, for some
+ reason, unable to use the send-pr command, then you may also
+ file a bug report (or follow-up to one) by sending mail to:
+
+ &lt;bugs@freebsd.org&gt;
+</itemize>
+
+<sect><heading>Changes to the existing code</heading>
+
+<p>An addition or change to the existing source code is a somewhat trickier
+ affair and depends a lot on how far out of date you are with the current
+ state of the core FreeBSD development. There is a special on-going release
+ of FreeBSD known as "FreeBSD-current" and made available in a variety of
+ ways (see /usr/share/FAQ/current-policy.FAQ and /usr/share/FAQ/ctm.FAQ) for
+ the convenience of developers who wish to actively work on the system.
+
+ Working from older sources unfortunately means that your changes may
+ sometimes be too obsolete to use, or too divergent to allow for easy
+ re-integration. This can be minimized somewhat by subscribing to the
+ &lt;announce@freebsd.org&gt; mailing list (among others) where periodic
+ announcements concerning the current state of the system are made.
+ If you see a change being proposed for which you have a better solution,
+ then please, by all means come forward with your contribution and we
+ will do our very best to evaluate it fairly and perhaps integrate it if
+ it is indeed a better (or easier :) solution.
+
+ Assuming that you can manage to secure fairly up-to-date sources to base
+ your changes on, the next step is to produce a set of diffs to send to the
+ FreeBSD maintainers for evaluation and possible adoption. This is done
+ with the diff(1) command, with the FreeBSD maintainers preferring to receive
+ diffs in `context diff' form. See the man page for diff for more details
+ on producing both context and recursive context diffs
+ (diff -c &lt;oldfile&gt &lt;newfile&gt; or diff -c -r &lt;olddir&gt; &lt;newdir&gt;).
+
+ Once you have a set of diffs that are capable of taking a copy of the
+ original code and bringing it to a state identical to the "new" sources
+ (you may test this with the patch(1) command - see patch man page), you
+ should bundle them up in an email message and send it, along with a brief
+ description of what the diffs are for, to &lt;hackers@freebsd.org&gt;. Someone
+ will very likely get back in touch with you in 24 hours or less, assuming
+ of course that your diffs are interesting! :-)
+
+ If your changes don't express themselves well as diffs alone (e.g. you've
+ perhaps added, deleted or renamed files as well) then you may be better off
+ bundling any new files, diffs and instructions for deleting/renaming any
+ others into a tar file and running the `uuencode' program on it before
+ sending the output of that to &lt;hackers@freebsd.org&gt;. See the man pages
+ on tar and uuencode for more info on bundling files through the mail this
+ way.
+
+ If your change is of a potentially sensitive nature, e.g. you're unsure
+ of copyright issues governing its further distribution, or you're simply
+ not ready to release it without a tighter review first, then you should
+ send it to &lt;core@freebsd.org&gt; rather than &lt;hackers@freebsd.org&gt;. The core
+ mailing list reaches a much smaller group of people who do much of the
+ day-to-day work on FreeBSD. Note that this group is also VERY BUSY and so
+ you should really only mail to them in cases where mailing to hackers
+ truly is impractical.
+
+
+<sect><heading>Contributions of new code</heading>
+
+<p>In the case of a significant contribution of a large body work, or the
+ addition of an important new feature to FreeBSD, it becomes almost always
+ necessary to either send changes as uuencoded tar files (see above)
+ or upload them to our ftp site:
+
+ <url url="ftp://freefall.cdrom.com/pub/FreeBSD/incoming">
+
+ Users may log in anonymously and upload their work or download the
+ work-in-progress files left by others.
+
+ When working with large amounts of code, the touchy subject of copyrights
+ also invariably comes up. The view of the FreeBSD project towards
+ acceptable copyrights (for code included in FreeBSD) are:
+
+<enum>
+ <item> Contributions under the BSD copyright (see the file
+ /usr/share/examples/etc/bsd-style-copyright for a template)
+ is greatly preferred due to its "no strings attached"
+ nature and general attractiveness to commercial enterprises
+ who might then be inclined to invest something of their own
+ into FreeBSD.
+
+ <item> Contributions under the GNU Public License, or "GPL". This is
+ not quite as popular a solution for us, due to (all religious
+ issues aside) the amount of extra effort demanded of anyone
+ using the code for commercial purposes. However, given the
+ sheer quantity of GPL'd code we currently require (compiler,
+ assembler, text formatter, etc), it would be silly to pretend
+ that we couldn't deal with the GPL at all and so we have become
+ more willing to accept code with either the BSD or the GPL
+ copyright. Code under the GPL also goes into a different part
+ of the tree, that being /sys/gnu or /usr/src/gnu.
+
+ <item> Contributions coming under any other type of copyright must be
+ carefully reviewed before their inclusion into FreeBSD will even
+ be considered. Contributions for which particularly restrictive
+ commercial copyrights apply are generally rejected, though the
+ authors are always free to make the changes available through
+ their own channels.
+</enum>
+
+<sect><heading>Porting of software</heading>
+
+<p>The porting of freely available software, while perhaps not as gratifying
+ as developing your own package from scratch, is still a vital part of
+ FreeBSD's growth and of great usefulness to those who wouldn't otherwise
+ know where to turn for it. All ported software is organized into a
+ hierarchy know as ``the ports collection''. This collection enables
+ a new user to get a complete overview of what's available in a short time,
+ and with a logical (we hope) framework. The ports collection also saves
+ considerable space by not actually containing the the majority of the
+ sources being ported. This can be confusing to the new user and the file
+ /usr/share/FAQ/ports.FAQ goes some way towards explaing how it all works.
+
+ If you have the ports collection on your machine, the file
+ /usr/ports/GUIDELINES also helps to explain the process of creating
+ and contributing a port of your own. For more information on the ports
+ collection (that wasn't available in the FAQ), you may also send mail to
+ &lt;ports@freebsd.org&gt;.
+
+
+Whichever way you decide to contribute, we hope you'll find it an enjoyable
+process and also realize how valuable your contributions are to the project!
+FreeBSD is one of those great projects where the more we all put in, the
+more we all get back out of it again, and with enough steady contributions
+it begins to aquire a momentum of its own. It is through such momentum
+that mountains are moved!
+
diff --git a/handbook/sup.sgml b/handbook/sup.sgml
new file mode 100644
index 0000000000..600aafa7fd
--- /dev/null
+++ b/handbook/sup.sgml
@@ -0,0 +1,92 @@
+<!-- $Id: sup.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+
+<sect><heading>SUP</heading>
+
+<p><em>Contributed by &a.jkh; and &a.gclarkii;.</em>
+
+SUP is a network based software update tool developed at CMU. The
+purpose of this document is get the beginner up and running with sup.
+
+<sect1><heading>Getting setup</heading>
+
+<p>First off you will need to pick up the sup binaries. The easiest
+way of doing this is to grab the sup.tgz package from:
+<verb>
+ ftp://ftp.FreeBSD.ORG:/pub/FreeBSD/packages/sup.tgz
+</verb>
+Install the sup package using pkg_add and add the following line to
+your /etc/services file:
+<verb>
+ sup 871/tcp #sup
+</verb>
+
+SUP gets the information it needs to run from a configuration file
+called a supfile. This file tells sup what collections it will be updating
+and/or installing and where they go. The supfile in this directory will
+sup both the source and ports collection - look for the blank line seperating
+the two collections; if you don't want ports, you can simply delete all the
+ports entries. If you're inside the United States, you may also uncomment
+the `secure' collection line to grab the DES code. If you're outside the
+U.S., you should NOT sup this code from FreeBSD.ORG as this will
+violate U.S. export restrictions. Simply sup everything *but* the secure
+collection and then go look on "braae.ru.ac.za", where it's available for
+anonymous ftp for those outside the U.S.
+
+Any other distributions you do not wish to receive can be commented out
+with a # at the begining of the distribution line.
+
+Once this is setup, you're ready to go. To start sup type:
+<verb>
+ sup supfile
+</verb>
+If you wish to see what sup is doing "verbosely", give it the -v option,
+like so:
+<verb>
+ sup -v supfile
+</verb>
+Thats all there is to it! Remember that if you're running current,
+which is what you will have if you sup, please join the freebsd-current
+mailing list. You should also be sure to read:
+<verb>
+ ftp://ftp.FreeBSD.ORG:/pub/FreeBSD/FAQ/current-policy.FAQ
+</verb>
+For important information on just what we can and cannot do for you as
+a -current user.
+
+<sect1><heading>Description of FreeBSD SUP distributions</heading>
+
+<p>For the main FreeBSD distribution:
+<verb>
+base: /usr/src/... misc files at the top of /usr/src
+bin: /usr/src/bin system binaries
+secure: /usr/src/secure DES Sources. U.S./Canada only!
+etc: /usr/src/etc system files
+games: /usr/src/games games
+gnu: /usr/src/gnu sources under the GNU Public License
+include: /usr/src/include include files
+sys: /usr/src/sys kernel sources
+lib: /usr/src/lib libraries
+libexec: /usr/src/libexec more system binaries
+share: /usr/src/share various shared resources
+sbin: /usr/src/sbin even more system binaries
+usrbin: /usr/src/usr.bin user binaries
+usrsbin: /usr/src/usr.sbin that's it for the system binaries
+</verb>
+
+And for the ports collection:
+<verb>
+ports-base: /usr/ports/... misc files at the top of /usr/ports
+ports-editors: /usr/ports/editors text editors
+ports-game: /usr/ports/games games
+ports-lang: /usr/ports/lang programming languages
+ports-mail: /usr/ports/mail mail software
+ports-math: /usr/ports/math math software
+ports-net: /usr/ports/net networking software
+ports-news: /usr/ports/news USENET news software
+ports-print: /usr/ports/print printing software
+ports-shells: /usr/ports/shells various UN*X shells
+ports-utils: /usr/ports/utils miscellaneous utilities
+ports-x11: /usr/ports/x11 X11 software
+</verb> \ No newline at end of file
diff --git a/handbook/troubleshooting.sgml b/handbook/troubleshooting.sgml
new file mode 100644
index 0000000000..311821fcee
--- /dev/null
+++ b/handbook/troubleshooting.sgml
@@ -0,0 +1,185 @@
+<!-- $Id: troubleshooting.sgml,v 1.1.1.1 1995-04-28 16:19:59 jfieber Exp $ -->
+<!-- The FreeBSD Documentation Project -->
+
+<chapt><heading>Troubleshooting</heading>
+
+<p>The following tips and tricks may help you turn a
+ failing (or failed) installation attempt into a success.
+ Please read them carefully.
+
+<sect>
+ <heading>Hardware conflict or misconfiguration</heading>
+
+
+ <p><descrip>
+ <tag>Problem:</tag> A device is conflicting with
+ another or doesn't match the kernel's compiled-in IRQ or
+ address.
+
+ <tag>Cause:</tag> While most device drivers in
+ FreeBSD are now smart enough to match themselves to your
+ hardware settings dynamically, there are a few that still
+ require fairly rigid configuration parameters to be
+ compiled in (and matched by the hardware) before they'll
+ work. We're working hard to eliminate as many of these
+ last hold-outs as we can, but it's not always as easy as
+ it looks.
+
+ <tag>Solution:</tag> There are several possible
+ solutions. The first, and easiest, is to boot the kernel
+ with the <tt>-c</tt> flag. When you see the initial boot prompt
+ (from floppy or hard disk), type:
+
+<tscreen><verb>
+/kernel -c
+ </verb></tscreen>
+
+ This will boot just past the memory sizing code and then
+ drop into a dynamic kernel configuration utility. Type
+ `<tt>?</tt>' at the prompt to see a list of commands.
+ You can use this utility to reset the IRQ, memory
+ address, IO address or a number of other device
+ configuration parameters. You can also disable a device
+ entirely if it's causing problems for other devices you'd
+ much rather have work. Note that this only affects the
+ kernel being booted temporarily, it does not write out
+ the information to the kernel so that these settings are
+ permanantly altered (this would be actually rather hard).
+ If you reboot, you'll have to make the same changes
+ again. The goal of the <tt>-c</tt> utility is to get you
+ up far enough to be able to download the appropriate
+ sources and configure and rebuild a kernel more specific
+ to your needs.
+
+ Another solution is, obviously, to remove the offending
+ hardware or simply strip the system down to the bare
+ essentials until the problem (hopefully) goes away. Once
+ you're up, you can do the same thing mentioned
+ above---compile a kernel more suited to your hardware, or
+ incrementally try to figure out what it was about your
+ original hardware configuration that didn't work.
+
+ </descrip>
+
+<sect>
+ <heading>My floppy-tape drive isn't probed</heading>
+
+ <p>Cause: Last-minute problems with this driver caused it
+ to be disabled by default.
+
+ Solution: Boot with -c (described above) and set the
+ flags value of fdc0 to 1. This will re-enable the floppy
+ tape driver. Sorry, but it was causing problems for
+ other people!
+
+<sect>
+ <heading>When I boot for the first time, it still looks for
+ /386bsd!</heading>
+
+ <p>Cause: You still have the old FreeBSD 1.x boot blocks on
+ your boot partition.
+
+ Solution: You should re-enter the installation process,
+ invoke the (F)disk editor and chose the (W)rite option.
+ This won't hurt an existing installation and will make
+ sure that the new boot blocks get written to the drive.
+ If you're installing for the first time, don't forget to
+ (W)rite out your new boot blocks! :-)
+
+<sect>
+ <heading>I want to boot FreeBSD off the second drive. It
+ doesn't!</heading>
+
+ <p>Cause: FreeBSD will actually install just fine on a
+ drive other than 0 (the first drive), and the boot
+ manager will even allow you to select it, but the boot
+ blocks rather pathologically assume 0. This should be
+ fixed in 2.1.
+
+ Solution: Easy - follow these steps:
+
+ 1. Select the first (0) drive from the (F)disk editor
+ and write out the boot manager with the (B) option.
+ This will enable the boot manager that allows you to
+ actually boot off the other drive.
+
+ 2. Exit the fdisk editor for the first drive and and
+ re-enter it again for the drive you wish to install
+ on. Set up a partition on this drive, or select
+ (A)ll for the entire drive.
+
+ 3. Enter the disklabel editor and allocate space on
+ your second drive as normal. Proceed with the
+ installation.
+
+ 4. Once you've installed on the disk and are going to
+ reboot from the hard disk, enter the following at
+ the boot prompt:
+
+ hd(1,a)/kernel
+
+ This will ensure that you really boot from the second
+ drive. If you've actually installed on a drive other
+ than 1 (the 3rd or 4th drive?), substitute that number
+ in for the above. You will need to enter this EVERY
+ time you reboot from the hard disk. If you're feeling
+ brave and have a srcdist + the requisite experience,
+ you can hack the boot blocks in:
+
+ /usr/src/sys/i386/boot/biosboot
+
+ So that this drive you're booting from is hard-coded.
+ Recompile the boot blocks and reinstall them on your
+ drive with `disklabel -B ...' You can then have the
+ default Do The Right Thing.
+
+<sect>
+ <heading>Newfs crashes, requesting that blocksize be 32K</heading>
+
+ <p>Cause: You have your SCSI controller configured to
+ translate geometries for disks >1GB in size.
+
+ Solution: Turn such translation OFF in your controller's
+ BIOS setup! FreeBSD has no problems with disks >1GB just
+ so long as the root partition starts and ends BELOW
+ cylinder 1024. This is a PC hardware limitation.
+
+<sect>
+ <heading>FreeBSD won't boot off the hard disk</heading>
+
+ <p>Cause: Root partition does not start and end below
+ cylinder 1024.
+
+ Solution: See solution for newfs crashes, or move your
+ root partition. This limitation holds true for ANY
+ operating system you wish to boot from your hard drive.
+
+
+<sect>
+ <heading>FreeBSD still won't boot off the hard disk</heading>
+
+ <p>Cause: No boot code is installed in sector 1.
+
+ Solution: Chose the Write MBR (B)oot code in the FDISK
+ editor.
+
+<sect>
+ <heading>Nope, FreeBSD's still not booting from the hard
+ disk</heading>
+
+ <p>Cause: BIOS disk geometry different from that used when
+ installing FreeBSD.
+
+ Solution: With IDE drives, pay careful attention to the
+ geometry information that FreeBSD prints out when it's
+ first booting off the floppy. Use this geometry in your
+ BIOS setup or use the BIOS geometry when you install
+ FreeBSD. Either way, they have to match.
+
+ With SCSI drives, the values they report is most often
+ bogus and cannot be used. In this situation, the SCSI
+ controller is performing geometry translation and it's
+ probably wise to assume a default of 64 heads, 32 sectors
+ and 1MB/cylinder. Use these values when you install
+ FreeBSD. See above comments concerning newfs failures
+ for more info.