diff --git a/en_US.ISO8859-1/books/handbook/bibliography/chapter.sgml b/en_US.ISO8859-1/books/handbook/bibliography/chapter.sgml
index 7e25baecd3..8d62f217d8 100644
--- a/en_US.ISO8859-1/books/handbook/bibliography/chapter.sgml
+++ b/en_US.ISO8859-1/books/handbook/bibliography/chapter.sgml
@@ -1,478 +1,478 @@
BibliographyWhile the manual pages provide the definitive 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.
-
+ Books & Magazines Specific to FreeBSDInternational books &
Magazines:Using
FreeBSD (in Chinese).FreeBSD for PC 98'ers (in Japanese), published by SHUWA System
Co, LTD. ISBN 4-87966-468-5 C3055 P2900E.FreeBSD (in Japanese), published by CUTT. ISBN 4-906391-22-2
C3055 P2400E.Complete Introduction to FreeBSD (in Japanese), published by Shoeisha Co., Ltd. ISBN 4-88135-473-6 P3600E.Personal UNIX Starter Kit FreeBSD (in Japanese), published by ASCII. ISBN 4-7561-1733-3 P3000E.FreeBSD Handbook (Japanese translation), published by ASCII. ISBN 4-7561-1580-2
P3800E.FreeBSD mit Methode (in German), published by Computer und
Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.FreeBSD Install and Utilization Manual (in Japanese), published by Mainichi Communications Inc..English language books & Magazines:
The Complete FreeBSD, published by Walnut Creek CDROM.
-
+ Users' GuidesComputer Systems Research Group, UC Berkeley. 4.4BSD
User's Reference Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-075-9Computer Systems Research Group, UC Berkeley. 4.4BSD
User's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-076-7UNIX in a Nutshell. O'Reilly &
Associates, Inc., 1990. ISBN 093717520XMui, Linda. What You Need To Know When You Can't Find
Your UNIX System Administrator. O'Reilly &
Associates, Inc., 1995. ISBN 1-56592-104-6Ohio State
University has written a UNIX
Introductory Course which is available online in HTML and
postscript format.Jpman Project, Japan
FreeBSD Users Group. FreeBSD User's
Reference Manual (Japanese translation). Mainichi Communications
Inc., 1998. ISBN4-8399-0088-4 P3800E.
-
+ Administrators' GuidesAlbitz, Paul and Liu, Cricket. DNS and
BIND, 2nd Ed. O'Reilly & Associates, Inc., 1997.
ISBN 1-56592-236-0Computer Systems Research Group, UC Berkeley. 4.4BSD
System Manager's Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-080-5Costales, Brian, et al. Sendmail, 2nd Ed.
O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0Frisch, Æleen. Essential System
Administration, 2nd Ed. O'Reilly & Associates,
Inc., 1995. ISBN 1-56592-127-5Hunt, Craig. TCP/IP Network
Administration. O'Reilly & Associates, Inc., 1992.
ISBN 0-937175-82-XNemeth, Evi. UNIX System Administration
Handbook. 2nd Ed. Prentice Hall, 1995. ISBN
0131510517Stern, Hal Managing NFS and NIS O'Reilly
& Associates, Inc., 1991. ISBN 0-937175-75-7Jpman Project, Japan
FreeBSD Users Group. FreeBSD System
Administrator's Manual (Japanese translation). Mainichi Communications
Inc., 1998. ISBN4-8399-0109-0 P3300E.
-
+ Programmers' GuidesAsente, Paul. X Window System Toolkit.
Digital Press. ISBN 1-55558-051-3Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Reference Manual. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-078-3Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-079-1Harbison, Samuel P. and Steele, Guy L. Jr. C: A
Reference Manual. 4rd ed. Prentice Hall, 1995.
ISBN 0-13-326224-3Kernighan, Brian and Dennis M. Ritchie. The C
Programming Language.. PTR Prentice Hall, 1988.
ISBN 0-13-110362-9Lehey, Greg. Porting UNIX Software.
O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7Plauger, P. J. The Standard C Library.
Prentice Hall, 1992. ISBN 0-13-131509-9Stevens, W. Richard. Advanced Programming in the UNIX
Environment. Reading, Mass. : Addison-Wesley, 1992
ISBN 0-201-56317-7Stevens, W. Richard. UNIX Network
Programming. 2nd Ed, PTR Prentice Hall, 1998. ISBN
0-13-490012-XWells, Bill. “Writing Serial Drivers for UNIX”.
Dr. Dobb's Journal. 19(15), December 1994.
pp68-71, 97-99.
-
+ Operating System InternalsAndleigh, Prabhat K. UNIX System
Architecture. Prentice-Hall, Inc., 1990. ISBN
0-13-949843-5Jolitz, William. “Porting UNIX to the 386”.
Dr. Dobb's Journal. January 1991-July
1992.Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and
John Quarterman The Design and Implementation of the
4.3BSD UNIX Operating System. Reading, Mass. :
Addison-Wesley, 1989. ISBN 0-201-06196-1Leffler, Samuel J., Marshall Kirk McKusick, The Design
and Implementation of the 4.3BSD UNIX Operating System: Answer
Book. Reading, Mass. : Addison-Wesley, 1991. ISBN
0-201-54629-9McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and
John Quarterman. The Design and Implementation of the
4.4BSD Operating System. Reading, Mass. :
Addison-Wesley, 1996. ISBN 0-201-54979-4Stevens, W. Richard. TCP/IP Illustrated, Volume 1:
The Protocols. Reading, Mass. : Addison-Wesley,
1996. ISBN 0-201-63346-9Schimmel, Curt. Unix Systems for Modern
Architectures. Reading, Mass. : Addison-Wesley, 1994.
ISBN 0-201-63338-8Stevens, W. Richard. TCP/IP Illustrated, Volume 3:
TCP for Transactions, HTTP, NNTP and the UNIX Domain
Protocols. Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63495-3Vahalia, Uresh. UNIX Internals -- The New
Frontiers. Prentice Hall, 1996. ISBN
0-13-101908-2Wright, Gary R. and W. Richard Stevens. TCP/IP
Illustrated, Volume 2: The Implementation. Reading,
Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X
-
+ Security ReferenceCheswick, William R. and Steven M. Bellovin. Firewalls
and Internet Security: Repelling the Wily Hacker.
Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-63357-4Garfinkel, Simson and Gene Spafford. Practical UNIX
Security. 2nd Ed. O'Reilly & Associates, Inc.,
1996. ISBN 1-56592-148-8Garfinkel, Simson. PGP Pretty Good
Privacy O'Reilly & Associates, Inc., 1995. ISBN
1-56592-098-8
-
+ Hardware ReferenceAnderson, Don and Tom Shanley. Pentium Processor
System Architecture. 2nd Ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-40992-5Ferraro, Richard F. Programmer's Guide to the EGA,
VGA, and Super VGA Cards. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-62490-7Intel Corporation publishes documentation on their CPUs,
chipsets and standards on their developer web site,
usually as PDF files.Shanley, Tom. 80486 System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40994-1Shanley, Tom. ISA System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40996-8Shanley, Tom. PCI System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40993-3Van Gilluwe, Frank. The Undocumented PC.
Reading, Mass: Addison-Wesley Pub. Co., 1994. ISBN
0-201-62277-7
-
+ UNIX HistoryLion, John Lion's Commentary on UNIX, 6th Ed. With
Source Code. ITP Media Group, 1996. ISBN
1573980137Raymond, Eric S. The New Hacker's Dictionary, 3rd
edition. MIT Press, 1996. ISBN
0-262-68092-0. Also known as the Jargon
FileSalus, Peter H. A quarter century of UNIX.
Addison-Wesley Publishing Company, Inc., 1994. ISBN
0-201-54777-5Simon Garfinkel, Daniel Weise, Steven Strassmann. The
UNIX-HATERS Handbook. IDG Books Worldwide, Inc.,
1994. ISBN 1-56884-203-1Don Libes, Sandy Ressler Life with UNIX
— special edition. Prentice-Hall, Inc., 1989. ISBN
0-13-536657-7The BSD family tree. 1997. ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree or local on a FreeBSD-current machine.The BSD Release Announcements collection.
1997. http://www.de.FreeBSD.org/de/ftp/releases/Networked Computer Science Technical Reports
Library. http://www.ncstrl.org/Old BSD releases from the Computer Systems Research
group (CSRG). http://www.mckusick.com/csrg/:
The 4CD set covers all BSD versions from 1BSD to 4.4BSD and
4.4BSD-Lite2 (but not 2.11BSD, unfortunately). As well, the last
disk holds the final sources plus the SCCS files.
-
+ Magazines and JournalsThe C/C++ Users Journal. R&D
Publications Inc. ISSN 1075-2838Sys Admin — The Journal for UNIX System
Administrators Miller Freeman, Inc., ISSN
1061-2688
diff --git a/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml b/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
index 1dc422ae30..5b172dff2a 100644
--- a/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
+++ b/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
@@ -1,3504 +1,3504 @@
The Cutting Edge: FreeBSD-current and FreeBSD-stableFreeBSD is under constant development between releases. For people
who want to be on the cutting edge, there are several easy mechanisms for
keeping your system in sync with the latest developments. Be warned: the
cutting edge is not for everyone! This chapter will help you decide if you
want to track the development system, or stick with one of the released
versions.Staying Current with FreeBSDContributed by &a.jkh;.What is FreeBSD-current?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
un-compilable. 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!Who needs FreeBSD-current?FreeBSD-current is made generally available for 3 primary interest
groups:Members of the FreeBSD group who are actively working on some
part of the source tree and for whom keeping “current”
is an absolute requirement.Members of the FreeBSD group who are active testers, 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.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 reading, not
running). These people also make the occasional comment or
contribute code.What is FreeBSD-current not?A fast-track to getting pre-release bits because you heard
there is some cool new feature in there and you want to be the
first on your block to have it.A quick way of getting bug fixes.In any way “officially supported” by us. We do
our best to help people genuinely in one of the 3
“legitimate” FreeBSD-current categories, but we simply
do not have the time to provide tech support
for it. This is not because we are mean and nasty people who do
not like helping people out (we would not even be doing FreeBSD if
we were), it is literally because we cannot answer 400 messages a
day and actually work on FreeBSD! I am sure
that, if given the choice between having us answer lots of
questions or continuing to improve FreeBSD, most of you would vote
for us improving it.Using FreeBSD-currentJoin the &a.current; and the &a.cvsall; . This is not just a
good idea, it is essential. If you are not
on the FreeBSD-current mailing list, you will
not see the comments that people are making about the current
state of the system and thus will probably end up stumbling over a
lot of problems that others have already found and solved. Even
more importantly, you will miss out on important bulletins which
may be critical to your system's continued health.The &a.cvsall; mailing list will allow you to see the commit
log entry for each change as it is made along with any pertinent
information on possible side-effects.To join these lists, send mail to
&a.majordomo; and specify:
subscribe freebsd-current
subscribe cvs-all
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.Grab the sources from ftp.FreeBSD.org. You can do this in three
ways:Use the CTM facility. Unless
you have a good TCP/IP connection at a flat rate, this is
the way to do it.Use the cvsup program with
this
supfile. This is the second most recommended
method, since it allows you to grab the entire collection
once and then only what has changed from then on. Many people
run cvsup from cron and keep their sources up-to-date
automatically. For a fairly easy interface to this, simply
type:
Use ftp. The source tree for
FreeBSD-current is always “exported” on: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/.
We also use wu-ftpd which allows
compressed/tar'd grabbing of whole trees. e.g. you
see:usr.bin/lexYou can do:
ftp>cd usr.binftp>get lex.tar
and it will get the whole directory for you as a
tar file.Essentially, if you need rapid on-demand access to the source
and communications bandwidth is not a consideration, use
cvsup or ftp. Otherwise,
use CTM.If you are grabbing the sources to run, and not just look at,
then grab all 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.Before compiling current, read the Makefile in
/usr/src carefully. You should at least run
a make world the first time
through as part of the upgrading process. Reading the &a.current;
will keep you up-to-date on other bootstrapping procedures that
sometimes become necessary as we move towards the next
release.Be active! If you are 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!Staying Stable with FreeBSDContributed by &a.jkh;.What is FreeBSD-stable?FreeBSD-stable is our development branch for a more low-key and
conservative set of changes intended for our next mainstream release.
Changes of an experimental or untested nature do not go into this
branch (see FreeBSD-current).Who needs FreeBSD-stable?If you are a commercial user or someone who puts maximum stability
of their FreeBSD system before all other concerns, you should consider
tracking stable. This is especially true if you
have installed the most recent release (&rel.current;-RELEASE
at the time of this writing) since the stable
branch is effectively a bug-fix stream relative to the previous
release.The stable tree endeavors, above all, to be
fully compilable and stable at all times, but we do occasionally
make mistakes (these are still active sources with
quickly-transmitted updates, after all). We also do our best to
thoroughly test fixes in current before
bringing them into stable, but sometimes our
tests fail to catch every case. If something breaks for you in
stable, please let us know
immediately! (see next section).Using FreeBSD-stableJoin the &a.stable;. This will keep you informed of
build-dependencies that may appear in stable
or any other issues requiring special attention. Developers will
also make announcements in this mailing list when they are
contemplating some controversial fix or update, giving the users a
chance to respond if they have any issues to raise concerning the
proposed change.The &a.cvsall; mailing list will allow you to see the commit
log entry for each change as it is made along with any pertinent
information on possible side-effects.To join these lists, send mail to &a.majordomo; and specify:
subscribe freebsd-stable
subscribe cvs-all
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.If you are installing a new system and want it to be as stable
as possible, you can simply grab the latest dated branch snapshot
from ftp://releng3.FreeBSD.org/pub/FreeBSD/
and install it like any other release.If you are already running a previous release of FreeBSD and wish
to upgrade via sources then you can easily do so from ftp.FreeBSD.org. This can be done in one
of three ways:Use the CTM facility. Unless
you have a good TCP/IP connection at a flat rate, this is
the way to do it.Use the cvsup program with
this
supfile. This is the second most recommended
method, since it allows you to grab the entire collection
once and then only what has changed from then on. Many people
run cvsup from cron to keep their sources up-to-date
automatically. For a fairly easy interface to this, simply
type;
Use ftp. The source tree for
FreeBSD-stable is always “exported” on: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/We also use wu-ftpd which allows
compressed/tar'd grabbing of whole trees. e.g. you
see:usr.bin/lexYou can do:
ftp>cd usr.binftp>get lex.tar
and it will get the whole directory for you as a
tar file.Essentially, if you need rapid on-demand access to the source
and communications bandwidth is not a consideration, use
cvsup or ftp. Otherwise,
use CTM.Before compiling stable, read the Makefile in
/usr/src carefully. You should at least run
a make world the first time
through as part of the upgrading process. Reading the &a.stable;
will keep you up-to-date on other bootstrapping procedures that
sometimes become necessary as we move towards the next
release.Synchronizing Source Trees over the InternetContributed by &a.jkh;.There are various ways of using an Internet (or email) connection to
stay up-to-date with any given area of the FreeBSD project sources, or
all areas, depending on what interests you. The primary services we
offer are Anonymous CVS, CVSup, and CTM.Anonymous CVS and
CVSup use the pull model
of updating sources. In the case of CVSup
the user (or a cron script) invokes the cvsup
program, and it interacts with a cvsupd server
somewhere to bring your files up to date. The updates you receive are
up-to-the-minute and you get them when, and only when, you want them.
You can easily restrict your updates to the specific files or
directories that are of interest to you. Updates are generated on the
fly by the server, according to what you have and what you want to have.
Anonymous CVS is quite a bit more simplistic
than CVSup in that it's just an extension to
CVS which allows it to pull changes directly
from a remote CVS repository. CVSup can do
this far more efficiently, but Anonymous CVS
is easier to use.CTM, on the other hand, does not
interactively compare the sources you have with those on the master
archive or otherwise pull them across.. Instead, a script which
identifies changes in files since its previous run is executed several
times a day on the master CTM machine, any detected changes being
compressed, stamped with a sequence-number and encoded for transmission
over email (in printable ASCII only). Once received, these “CTM
deltas” can then be handed to the &man.ctm.rmail.1; utility which
will automatically decode,
verify and apply the changes to the user's copy of the sources. This
process is far more efficient than CVSup, and
places less strain on our server resources since it is a
push rather than a pull
model.There are other trade-offs, of course. If you inadvertently wipe
out portions of your archive, CVSup will
detect and rebuild the damaged portions for you.
CTM won't do this, and if you wipe some
portion of your source tree out (and don't have it backed up) then you
will have to start from scratch (from the most recent CVS “base
delta”) and rebuild it all with CTM or, with anoncvs, simply
delete the bad bits and resync.For more information on Anonymous CVS,
CTM, and CVSup,
please see one of the following sections:Anonymous CVSContributed by &a.jkh;IntroductionAnonymous CVS (or, as it is otherwise known,
anoncvs) is a feature provided by the CVS
utilities bundled with FreeBSD for synchronizing with a remote CVS
repository. Among other things, it allows users of FreeBSD to
perform, with no special privileges, read-only CVS operations
against one of the FreeBSD project's official anoncvs servers. To
use it, one simply sets the CVSROOT environment
variable to point at the appropriate anoncvs server,
provides the well-known password anoncvs
with the cvs login command, and then uses
the &man.cvs.1; command to access it like any local
repository.While it can also be said that the CVSup and anoncvs
services both perform essentially the same function, there are
various trade-offs which can influence the user's choice of
synchronization methods. In a nutshell,
CVSup is much more efficient in its usage
of network resources and is by far the most technically
sophisticated of the two, but at a price. To use
CVSup, a special client must first be
installed and configured before any bits can be grabbed, and then
only in the fairly large chunks which
CVSup calls
collections.Anoncvs, by contrast, can be used to
examine anything from an individual file to a specific program (like
ls or grep) by referencing the
CVS module name. Of course, anoncvs is
also only good for read-only operations on the CVS repository, so if
it's your intention to support local development in one repository
shared with the FreeBSD project bits then
CVSup is really your only option.Using Anonymous CVSConfiguring &man.cvs.1; to use an Anonymous CVS repository is a
simple matter of setting the CVSROOT environment
variable to point to one of the FreeBSD project's
anoncvs servers. At the time of this writing,
the following servers are available:USA:
:pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
(Use cvs login and enter the password
anoncvs when prompted.)Since CVS allows one to “check out” virtually any
version of the FreeBSD sources that ever existed (or, in some cases,
will exist :), you need to be familiar with the
revision () flag to &man.cvs.1; and what some of
the permissible values for it in the FreeBSD Project repository
are.There are two kinds of tags, revision tags and branch tags. A
revision tag refers to a specific revision. Its meaning stays the
same from day to day. A branch tag, on the other hand, refers to
the latest revision on a given line of development, at any given
time. Because a branch tag does not refer to a specific revision,
it may mean something different tomorrow than it means today.Here are the branch tags that users might be interested
in:HEADSymbolic name for the main line, or FreeBSD-current. Also
the default when no revision is specified.RELENG_3The line of development for FreeBSD-3.x, also known as
FreeBSD-stable. Not valid for the ports collection.RELENG_2_2The line of development for FreeBSD-2.2.x, also known as
2.2-stable. This branch is mostly obsolete. Not valid for
the ports collection.Here are the revision tags that users might be interested
in:RELENG_3_4_0_RELEASEFreeBSD-3.4. Not valid for the ports collection.RELENG_3_3_0_RELEASEFreeBSD-3.3. Not valid for the ports collection.RELENG_3_2_0_RELEASEFreeBSD-3.2. Not valid for the ports collection.RELENG_3_1_0_RELEASEFreeBSD-3.1. Not valid for the ports collection.RELENG_3_0_0_RELEASEFreeBSD-3.0. Not valid for the ports collection.RELENG_2_2_8_RELEASEFreeBSD-2.2.8. Not valid for the ports collection.RELENG_2_2_7_RELEASEFreeBSD-2.2.7. Not valid for the ports collection.RELENG_2_2_6_RELEASEFreeBSD-2.2.6. Not valid for the ports collection.RELENG_2_2_5_RELEASEFreeBSD-2.2.5. Not valid for the ports collection.RELENG_2_2_2_RELEASEFreeBSD-2.2.2. Not valid for the ports collection.RELENG_2_2_1_RELEASEFreeBSD-2.2.1. Not valid for the ports collection.RELENG_2_2_0_RELEASEFreeBSD-2.2.0. Not valid for the ports collection.When you specify a branch tag, you normally receive the latest
versions of the files on that line of development. If you wish to
receive some past version, you can do so by specifying a date with
the flag. See the &man.cvs.1; man page
for more details.ExamplesWhile it really is recommended that you read the manual page for
&man.cvs.1; thoroughly before doing anything, here are some
quick examples which essentially show how to use Anonymous
CVS:Checking out something from -current (&man.ls.1;) and
deleting it again:
&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
&prompt.user; cvs loginAt the prompt, enter the passwordanoncvs.
&prompt.user; cvs co ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logoutChecking out the version of &man.ls.1; in the 2.2-stable
branch:
&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
&prompt.user; cvs loginAt the prompt, enter the passwordanoncvs.
&prompt.user; cvs co -rRELENG_2_2 ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logoutCreating a list of changes (as unidiffs) to &man.ls.1;
&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
&prompt.user; cvs loginAt the prompt, enter the passwordanoncvs.
&prompt.user; cvs rdiff -u -rRELENG_2_2_2_RELEASE -rRELENG_2_2_6_RELEASE ls
&prompt.user; cvs logoutFinding out what other module names can be used:
&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
&prompt.user; cvs loginAt the prompt, enter the passwordanoncvs.
&prompt.user; cvs co modules
&prompt.user; more modules/modules
&prompt.user; cvs release -d modules
&prompt.user; cvs logoutOther ResourcesThe following additional resources may be helpful in learning
CVS:CVS Tutorial from Cal Poly.Cyclic Software,
commercial maintainers of CVS.CVSWeb is
the FreeBSD Project web interface for CVS.CTMContributed by &a.phk;. Updated
19-October-1997.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
CTM for other things.Why should I use CTM?CTM will give you a local copy of the
FreeBSD source trees. There are a number of “flavors”
of the tree available. Whether you wish to track the entire cvs
tree or just one of the branches, CTM can
provide you the information. If you are an active developer on
FreeBSD, but have lousy or non-existent TCP/IP connectivity, or
simply wish to have the changes automatically sent to you,
CTM was made for you. You will need to
obtain up to three deltas per day for the most active branches.
However, you should consider having them sent by automatic email.
The sizes of the updates are always kept as small as possible. This
is typically less than 5K, with an 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
related to working directly from the development sources rather than
a pre-packaged release. This is particularly true if you choose the
“current” sources. It is recommended that you read
Staying current with FreeBSD.What do I need to use CTM?You will need two things: The CTM
program and the initial deltas to feed it (to get up to
“current” levels).The CTM program has been part of
FreeBSD ever since version 2.0 was released, and lives in
/usr/src/usr.sbin/CTM if you have a copy of the
source online.If you are running a pre-2.0 version of FreeBSD, you can fetch
the current CTM sources directly
from:ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm/The “deltas” you feed CTM
can be had two ways, FTP or e-mail. If you have general FTP access
to the Internet then the following FTP sites support access to
CTM:ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/or see section mirrors.FTP the relevant directory and fetch the
README file, starting from there.If you may wish to get your deltas via email:Send email to &a.majordomo; to subscribe to one of the
CTM distribution lists.
“ctm-cvs-cur” supports the entire cvs tree.
“ctm-src-cur” supports the head of the development
branch. “ctm-src-2_2” supports the 2.2 release branch,
etc. (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 CTM
updates in the mail, you may use the ctm_rmail
program to unpack and apply them. You can actually use the
ctm_rmail program directly from a entry in
/etc/aliases if you want to have the process
run in a fully automated fashion. Check the
ctm_rmail man page for more details.No matter what method you use to get the
CTM deltas, you should subscribe to the
ctm-announce@FreeBSD.org mailing list. In the
future, this will be the only place where announcements concerning
the operations of the CTM system will
be posted. Send an email to &a.majordomo; with a single line of
subscribe ctm-announce to get added to the
list.Starting off with CTM for the first
timeBefore you can start using CTM
deltas, you will need to get to a starting point for the deltas
produced subsequently to it.First you should determine what you already have. Everyone can
start from an “empty” directory. You must use an
initial “Empty&rdquo delta to start off your
CTM supported tree. At some point it is
intended that one of these “started” deltas be
distributed on the CD for your convenience. This does not currently
happen however.However, since the trees are many tens of megabytes, you should
prefer to start from something already at hand. If you have a
RELEASE CD, you can copy or extract an initial source from it. This
will save a significant transfer of data.You can recognize these “starter” deltas by the
X appended to the number
(src-cur.3210XEmpty.gz for instance). The
designation following the X corresponds to the
origin of your initial “seed”.
Empty is an empty directory. As a rule a base
transition from Empty is produced every 100
deltas. By the way, they are large! 25 to 30 Megabytes of
gzip'ed data is common for the
XEmpty deltas.Once you've picked a base delta to start from, you will also
need all deltas with higher numbers following it.Using CTM in your daily lifeTo apply the deltas, simply say:&prompt.root; cd /where/ever/you/want/the/stuff
&prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.*CTM understands deltas which have
been put through gzip, so you do not need to
gunzip them first, this saves disk space.Unless it feels very secure about the entire process,
CTM will not touch your tree. To verify
a delta you can also use the flag and
CTM will not actually touch your tree; it
will merely verify the integrity of the delta and see if it would
apply cleanly to your current tree.There are other options to CTM as
well, see the manual pages or look in the sources for more
information.I would also be very happy if somebody could help with the
“user interface” portions, as I have realized that I
cannot make up my mind on what options should do what, how and
when...That's really all there is to it. Every time you get a new
delta, just run it through CTM to keep
your sources up to date.Do not 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
fdwrite to make a copy.Keeping your local changesAs a developer one would like to experiment with and change
files in the source tree. CTM supports
local modifications in a limited way: before checking for the
presence of a file foo, it first looks for
foo.ctm. If this file exists, CTM will operate
on it instead of foo.This behaviour gives us a simple way to maintain local changes:
simply copy the files you plan to modify to the corresponding file
names with a .ctm suffix. Then you can freely
hack the code, while CTM keeps the .ctm file
up-to-date.Other interesting CTM optionsFinding out exactly what would be touched by an
updateYou can determine the list of changes that
CTM will make on your source repository
using the option to
CTM.This is useful if you would like to keep logs of the changes,
pre- or post- process the modified files in any manner, or just
are feeling a tad paranoid :-).Making backups before updatingSometimes you may want to backup all the files that would be
changed by a CTM update.Specifying the option causes
CTM to backup all files that would be
touched by a given CTM delta to
backup-file.Restricting the files touched by an updateSometimes you would be interested in restricting the scope of
a given CTM update, or may be
interested in extracting just a few files from a sequence of
deltas.You can control the list of files that
CTM would operate on by specifying
filtering regular expressions using the and
options.For example, to extract an up-to-date copy of
lib/libc/Makefile from your collection of
saved CTM deltas, run the commands:&prompt.root; cd /where/ever/you/want/to/extract/it/
&prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*For every file specified in a CTM
delta, the and options are
applied in the order given on the command line. The file is
processed by CTM only if it is marked
as eligible after all the and
options are applied to it.Future plans for CTMTons of them:Use some kind of authentication into the CTM system, so as
to allow detection of spoofed CTM updates.Clean up the options to CTM, they
became confusing and counter intuitive.The bad news is that I am very busy, so any help in doing this
will be most welcome. And do not forget to tell me what you want
also...Miscellaneous stuffAll 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 sec-cur sequence too.
There is a sequence of deltas for the 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 will consider setting
it up.Thanks!&a.bde;for his pointed pen and invaluable comments.&a.sos;for patience.Stephen McKaywrote ctm_[rs]mail, much
appreciated.&a.jkh;for being so stubborn that I had to make it better.All the usersI hope you like it...CVSupContributed by &a.jdp;.IntroductionCVSup is a software package for
distributing and updating source trees from a master CVS repository
on a remote server host. The FreeBSD sources are maintained in a
CVS repository on a central development machine in California. With
CVSup, FreeBSD users can easily keep
their own source trees up to date.CVSup uses the so-called
pull model of updating. Under the pull model,
each client asks the server for updates, if and when they are
wanted. The server waits passively for update requests from its
clients. Thus all updates are instigated by the client. The server
never sends unsolicited updates. Users must either run the
CVSup client manually to get an update,
or they must set up a cron job to run it
automatically on a regular basis.The term CVSup, capitalized just so,
refers to the entire software package. Its main components are the
client cvsup which runs on each user's machine,
and the server cvsupd which runs at each of the
FreeBSD mirror sites.As you read the FreeBSD documentation and mailing lists, you may
see references to sup.
Sup was the predecessor of
CVSup, and it served a similar purpose.
CVSup is in used in much the same way as
sup and, in fact, uses configuration files which are
backward-compatible with sup's.
Sup is no longer used in the FreeBSD
project, because CVSup is both faster and
more flexible.InstallationThe easiest way to install CVSup
is to use the net/cvsup-bin port
from the FreeBSD ports collection.
If you prefer to build CVSup from
source, you can use the net/cvsup
port instead. But be forewarned: the net/cvsup
port depends on the Modula-3 system, which takes a substantial
amount of time, memory, and disk space to build.If you do not know anything about cvsup at all and want a
single package which will install it, set up the configuration file
and start the transfer via a pointy-clicky type of interface, then
get the
- cvsupit package. Just hand it to pkg_add(1) and it will
+ cvsupit package. Just hand it to &man.pkg.add.1; and it will
lead you through the configuration process in a menu-oriented fashion.
CVSup ConfigurationCVSup's operation is controlled by a
configuration file called the supfile.
There are some sample
supfiles in the directory /usr/share/examples/cvsup/.
The information in a supfile answers the
following questions for cvsup:Which files do you want
to receive?Which versions of them do
you want?Where do you want to get
them from?Where do you want to put
them on your own machine?Where do you want to put
your status files?In the following sections, we will construct a typical
supfile by answering each of these questions in
turn. First, we describe the overall structure of a
supfile.A supfile is a text file. Comments begin
with # and extend to the end of the line. Lines
that are blank and lines that contain only comments are
ignored.Each remaining line describes a set of files that the user
wishes to receive. The line begins with the name of a
“collection”, a logical grouping of files defined by the
server. The name of the collection tells the server which files you
want. After the collection name come zero or more fields, separated
by white space. These fields answer the questions listed above.
There are two types of fields: flag fields and value fields. A flag
field consists of a keyword standing alone, e.g.,
delete or compress. A value
field also begins with a keyword, but the keyword is followed
without intervening white space by = and a second
word. For example, release=cvs is a value
field.A supfile typically specifies more than one
collection to receive. One way to structure a
supfile is to specify all of the relevant
fields explicitly for each collection. However, that tends to make
the supfile lines quite long, and it is
inconvenient because most fields are the same for all of the
collections in a supfile.
CVSup provides a defaulting mechanism to
avoid these problems. Lines beginning with the special
pseudo-collection name *default can be used to
set flags and values which will be used as defaults for the
subsequent collections in the supfile. A
default value can be overridden for an individual collection, by
specifying a different value with the collection itself. Defaults
can also be changed or augmented in mid-supfile by additional
*default lines.With this background, we will now proceed to construct a
supfile for receiving and updating the main
source tree of FreeBSD-current.Which files do you want to receive?The files available via CVSup are
organized into named groups called “collections”.
The collections that are available are described here. In this example, we wish
to receive the entire main source tree for the FreeBSD system.
There is a single large collection src-all
which will give us all of that, except the export-controlled
cryptography support. Let us assume for this example that we
are in the USA or Canada. Then we can get the cryptography code
with one additional collection, cvs-crypto.
As a first step toward constructing our
supfile, we simply list these collections,
one per line:
src-all
cvs-cryptoWhich version(s) of them do you want?With CVSup, you can receive
virtually any version of the sources that ever existed. That is
possible because the cvsupd server works directly from the CVS
repository, which contains all of the versions. You specify
which one of them you want using the tag= and
value fields.Be very careful to specify any tag=
fields correctly. Some tags are valid only for certain
collections of files. If you specify an incorrect or
misspelled tag, CVSup will delete files which you probably do
not want deleted. In particular, use only
tag=. for the
ports-* collections.The tag= field names a symbolic tag in
the repository. There are two kinds of tags, revision tags and
branch tags. A revision tag refers to a specific revision. Its
meaning stays the same from day to day. A branch tag, on the
other hand, refers to the latest revision on a given line of
development, at any given time. Because a branch tag does not
refer to a specific revision, it may mean something different
tomorrow than it means today.Here are the branch tags that users might be interested
in:tag=.The main line of development, also known as
FreeBSD-current.The . is not punctuation; it is
the name of the tag. Valid for all collections.RELENG_3The line of development for FreeBSD-3.x, also known as
FreeBSD-stable. Not valid for the ports
collection.RELENG_2_2The line of development for FreeBSD-2.2.x, also known
as 2.2-stable. Not valid for the ports collection.Here are the revision tags that users might be interested
in:RELENG_3_4_0_RELEASEFreeBSD-3.4. Not valid for the ports-*
collections.tag=RELENG_3_3_0_RELEASEFreeBSD-3.3. Not valid for the ports-*
collections.tag=RELENG_3_2_0_RELEASEFreeBSD-3.2. Not valid for the ports-*
collections.tag=RELENG_3_1_0_RELEASEFreeBSD-3.1. Not valid for the ports-*
collections.tag=RELENG_3_0_0_RELEASEFreeBSD-3.0. Not valid for the ports-*
collections.tag=RELENG_2_2_8_RELEASEFreeBSD-2.2.8. Not valid for the ports-*
collections.tag=RELENG_2_2_7_RELEASEFreeBSD-2.2.7. Not valid for the ports-*
collections.tag=RELENG_2_2_6_RELEASEFreeBSD-2.2.6. Not valid for the ports-*
collections.tag=RELENG_2_2_5_RELEASEFreeBSD-2.2.5. Not valid for the ports-*
collections.tag=RELENG_2_2_2_RELEASEFreeBSD-2.2.2. Not valid for the ports-*
collections.tag=RELENG_2_2_1_RELEASEFreeBSD-2.2.1. Not valid for the ports-*
collections.tag=RELENG_2_2_0_RELEASEFreeBSD-2.2.0. Not valid for the ports-*
collections.Be very careful to type the tag name exactly as shown.
CVSup cannot distinguish between
valid and invalid tags. If you misspell the tag,
CVSup will behave as though you had
specified a valid tag which happens to refer to no files at
all. It will delete your existing sources in that
case.When you specify a branch tag, you normally receive the
latest versions of the files on that line of development. If
you wish to receive some past version, you can do so by
specifying a date with the value field.
The &man.cvsup.1; manual page explains how to do
that.For our example, we wish to receive FreeBSD-current. We add
this line at the beginning of our
supfile:
*default tag=.There is an important special case that comes into play if
you specify neither a tag= field nor a
date= field. In that case, you receive the
actual RCS files directly from the server's CVS repository,
rather than receiving a particular version. Developers
generally prefer this mode of operation. By maintaining a copy
of the repository itself on their systems, they gain the ability
to browse the revision histories and examine past versions of
files. This gain is achieved at a large cost in terms of disk
space, however.Where do you want to get them from?We use the host= field to tell
cvsup where to obtain its updates. Any of
the CVSup mirror sites will
do, though you should try to select one that is close to you in
cyberspace. In this example we will use a fictional FreeBSD
distribution site, cvsup666.FreeBSD.org:
*default host=cvsup666.FreeBSD.orgYou will need to change the host to one that actually exists
before running CVSup. On any particular run of
cvsup, you can override the host setting on
the command line, with .Where do you want to put them on your own machine?The prefix= field tells
cvsup where to put the files it receives. In
this example, we will put the source files directly into our
main source tree, /usr/src. The
src directory is already implicit in the
collections we have chosen to receive, so this is the correct
specification:
*default prefix=/usrWhere should cvsup maintain its status
files?The cvsup client maintains certain status files in what is
called the “base” directory. These files help
CVSup to work more efficiently, by
keeping track of which updates you have already received. We
will use the standard base directory,
/usr/local/etc/cvsup:
*default base=/usr/local/etc/cvsupThis setting is used by default if it is not specified in
the supfile, so we actually do not need the
above line.If your base directory does not already exist, now would be
a good time to create it. The cvsup client
will refuse to run if the base directory does not exist.Miscellaneous supfile settings:There is one more line of boiler plate that normally needs
to be present in the supfile:
*default release=cvs delete use-rel-suffix compressrelease=cvs indicates that the server
should get its information out of the main FreeBSD CVS
repository. This is virtually always the case, but there are
other possibilities which are beyond the scope of this
discussion.delete gives
CVSup permission to delete files.
You should always specify this, so that
CVSup can keep your source tree fully
up to date. CVSup is careful to
delete only those files for which it is responsible. Any extra
files you happen to have will be left strictly alone.use-rel-suffix is ... arcane. If you
really want to know about it, see the &man.cvsup.1; manual page.
Otherwise, just specify it and do not worry about it.compress enables the use of gzip-style
compression on the communication channel. If your network link
is T1 speed or faster, you probably should not use compression.
Otherwise, it helps substantially.Putting it all together:Here is the entire supfile for our
example:
*default tag=.
*default host=cvsup666.FreeBSD.org
*default prefix=/usr
*default base=/usr/local/etc/cvsup
*default release=cvs delete use-rel-suffix compress
src-all
cvs-cryptoRunning CVSupYou are now ready to try an update. The command line for doing
this is quite simple:&prompt.root; cvsup supfilewhere supfile is
of course the name of the supfile you have just created. Assuming
you are running under X11, cvsup will display a
GUI window with some buttons to do the usual things. Press the
“go” button, and watch it run.Since you are updating your actual /usr/src
tree in this example, you will need to run the program as
root so that cvsup has the
permissions it needs to update your files. Having just created your
configuration file, and having never used this program before, that
might understandably make you nervous. There is an easy way to do a
trial run without touching your precious files. Just create an
empty directory somewhere convenient, and name it as an extra
argument on the command line:&prompt.root; mkdir /var/tmp/dest
&prompt.root; cvsup supfile /var/tmp/destThe directory you specify will be used as the destination
directory for all file updates. CVSup
will examine your usual files in /usr/src, but
it will not modify or delete any of them. Any file updates will
instead land in /var/tmp/dest/usr/src.
CVSup will also leave its base directory
status files untouched when run this way. The new versions of those
files will be written into the specified directory. As long as you
have read access to /usr/src, you do not even
need to be root to perform this kind of trial run.If you are not running X11 or if you just do not like GUIs, you
should add a couple of options to the command line when you run
cvsup:&prompt.root; cvsup -g -L 2 supfileThe tells cvsup not to use its GUI. This is
automatic if you are not running X11, but otherwise you have to
specify it.The tells cvsup to print out the details
of all the file updates it is doing. There are three levels of
verbosity, from to . The
default is 0, which means total silence except for error
messages.There are plenty of other options available. For a brief list
of them, type cvsup -H. For more detailed
descriptions, see the manual page.Once you are satisfied with the way updates are working, you can
arrange for regular runs of cvsup using &man.cron.8;.
Obviously, you should not let cvsup use its GUI when running it from
cron.CVSup File CollectionsThe file collections available via
CVSup are organized hierarchically.
There are a few large collections, and they are divided into smaller
sub-collections. Receiving a large collection is equivalent to
receiving each of its sub-collections. The hierarchical
relationships among collections are reflected by the use of
indentation in the list below.The most commonly used collections are
src-all, cvs-crypto, and
ports-all. The other collections are used only
by small groups of people for specialized purposes, and some mirror
sites may not carry all of them.cvs-all release=cvsThe main FreeBSD CVS repository, excluding the
export-restricted cryptography code.distrib release=cvsFiles related to the distribution and mirroring of
FreeBSD.doc-all release=cvsSources for the FreeBSD handbook and other
documentation.ports-all release=cvsThe FreeBSD ports collection.ports-archivers
release=cvsArchiving tools.ports-astro
release=cvsAstronomical ports.ports-audio
release=cvsSound support.ports-base release=cvsMiscellaneous files at the top of
/usr/ports.ports-benchmarks
release=cvsBenchmarks.ports-biology
release=cvsBiology.ports-cad release=cvsComputer aided design tools.ports-chinese
release=cvsChinese language support.ports-comms
release=cvsCommunication software.ports-converters
release=cvscharacter code converters.ports-databases
release=cvsDatabases.ports-deskutils
release=cvsThings that used to be on the desktop before
computers were invented.ports-devel
release=cvsDevelopment utilities.ports-editors
release=cvsEditors.ports-emulators
release=cvsEmulators for other operating systems.ports-ftp
release=cvsFTP client and server utilities.ports-games
release=cvsGames.ports-german
release=cvsGerman language support.ports-graphics
release=cvsGraphics utilities.ports-irc
release=cvsInternet Relay Chat utilities.ports-japanese
release=cvsJapanese language support.ports-java
release=cvsJava utilities.ports-korean
release=cvsKorean language support.ports-lang release=cvsProgramming languages.ports-mail release=cvsMail software.ports-math release=cvsNumerical computation software.ports-mbone
release=cvsMBone applications.ports-misc release=cvsMiscellaneous utilities.ports-net release=cvsNetworking software.ports-news release=cvsUSENET news software.ports-palm
release=cvsSoftware support for 3Com Palm(tm) series.ports-print
release=cvsPrinting software.ports-russian
release=cvsRussian language support.ports-security
release=cvsSecurity utilities.ports-shells
release=cvsCommand line shells.ports-sysutils
release=cvsSystem utilities.ports-textproc
release=cvstext processing utilities (does not include
desktop publishing).ports-vietnamese
release=cvsVietnamese language support.ports-www release=cvsSoftware related to the World Wide Web.ports-x11 release=cvsPorts to support the X window system.ports-x11-clocks
release=cvsX11 clocks.ports-x11-fm
release=cvsX11 file managers.ports-x11-fonts
release=cvsX11 fonts and font utilities.ports-x11-toolkits
release=cvsX11 toolkits.ports-x11-serversX11 servers.ports-x11-wmX11 window managers.src-all release=cvsThe main FreeBSD sources, excluding the
export-restricted cryptography code.src-base release=cvsMiscellaneous files at the top of
/usr/src.src-bin release=cvsUser utilities that may be needed in
single-user mode
(/usr/src/bin).src-contrib
release=cvsUtilities and libraries from outside the
FreeBSD project, used relatively unmodified
(/usr/src/contrib).src-etc release=cvsSystem configuration files
(/usr/src/etc).src-games release=cvsGames
(/usr/src/games).src-gnu release=cvsUtilities covered by the GNU Public License
(/usr/src/gnu).src-include
release=cvsHeader files
(/usr/src/include).src-kerberos5
release=cvsKerberos5 security package
(/usr/src/kerberos5).src-kerberosIV
release=cvsKerberosIV security package
(/usr/src/kerberosIV).src-lib release=cvsLibraries
(/usr/src/lib).src-libexec
release=cvsSystem programs normally executed by other
programs
(/usr/src/libexec).src-release
release=cvsFiles required to produce a FreeBSD release
(/usr/src/release).src-sbin release=cvsSystem utilities for single-user mode
(/usr/src/sbin).src-share release=cvsFiles that can be shared across multiple
systems
(/usr/src/share).src-sys release=cvsThe kernel
(/usr/src/sys).src-tools release=cvsVarious tools for the maintenance of FreeBSD
(/usr/src/tools).src-usrbin release=cvsUser utilities
(/usr/src/usr.bin).src-usrsbin
release=cvsSystem utilities
(/usr/src/usr.sbin).www release=cvsThe sources for the World Wide Web data.cvs-crypto release=cvsThe export-restricted cryptography code.src-crypto release=cvsExport-restricted utilities and libraries from
outside the FreeBSD project, used relatively unmodified
(/usr/src/crypto).src-eBones release=cvsKerberos and DES
(/usr/src/eBones). Not
used in current releases of FreeBSD.src-secure release=cvsDES (/usr/src/secure).src-sys-crypto release=cvsKernel cryptography code
(/usr/src/sys/crypto).distrib release=selfThe CVSup server's own configuration files. Used by CVSup
mirror sites.gnats release=currentThe GNATS bug-tracking database.mail-archive release=currentFreeBSD mailing list archive.www release=currentThe installed World Wide Web data. Used by WWW mirror
sites.For more informationFor the CVSup FAQ and other information about CVSup, see The CVSup
Home Page.Most FreeBSD-related discussion of
CVSup takes place on the &a.hackers;.
New versions of the software are announced there, as well as on the
&a.announce;.Questions and bug reports should be addressed to the author of
the program at cvsup-bugs@polstra.com.Using make world to rebuild your systemContributed by &a.nik;.Once you have synchronised your local source tree against a
particular version of FreeBSD (stable,
current and so on) you must then use the source tree
to rebuild the system.Take a backupI cannot stress highly enough how important it is to take a backup
of your system before you do this. While
remaking the world is (as long as you follow these instructions) an
easy task to do, there will inevitably be times when you make
mistakes, or when mistakes made by others in the source tree render
your system unbootable.Make sure you have taken a backup. And have a fixit floppy to
hand. I have never needed to use them, and, touch wood, I never will,
but it is always better to be safe than sorry.Subscribe to the right mailing listThe -stable and -current FreeBSD code branches are, by their
nature, in development. People that contribute
to FreeBSD are human, and mistakes occasionally happen.Sometimes these mistakes can be quite harmless, just causing your
system to print a new diagnostic warning. Or the change may be
catastrophic, and render your system unbootable or destroy your
filesystems (or worse).If problems like these occur, a heads up is posted
to the appropriate mailing list, explaining the nature of the problem
and which systems it affects. And an all clear
announcement is posted when the problem has been solved.If you try and track -stable or -current and do not read
FreeBSD-stable@FreeBSD.ORG or
FreeBSD-current@FreeBSD.ORG then you are asking for
trouble.Check /etc/make.confExamine the file /etc/make.conf. This
contains some default defines for Everything is, by default, commented out. Uncomment those entries
that look useful. For a typical user (not a developer), you will
probably want to uncomment the CFLAGS and NOPROFILE
definitions.If your machine has a floating point unit (386DX, 486DX, Pentium
and up class machines) then you can also uncomment the HAVE_FPU
line.This definition was removed for version 2.2.2 and up of
FreeBSD.Examine the other definitions (COPTFLAGS, NOPORTDOCS and so on)
and decide if they are relevant to you.Update /etc/groupThe /etc directory contains a large part of
your system's configuration information, as well as scripts that are
run at system startup. Some of these scripts change from version to
version of FreeBSD.Some of the configuration files are also used in the day to day
running of the system. In particular,
/etc/group.There have been occasions when the installation part of
make world has expected certain usernames or groups to
exist. When performing an upgrade it is likely that these groups did
not exist. This caused problems when upgrading.The most recent example of this is when the ppp
subsystem were installed using a non-existent (for them) group
name.The solution is to examine /usr/src/etc/group
and compare its list of groups with your own. If they are any groups
in the new file that are not in your file then copy them over.
Similarly, you should rename any groups in
/etc/group which have the same GID but a
different name to those in
/usr/src/etc/group.If you are feeling particularly paranoid, you can check your
system to see which files are owned by the group you are renaming or
deleting.&prompt.root; find / -group GID -printwill show all files owned by group GID
(which can be either a group name or a numeric group ID).You may want to compile the system in single user mode. Apart
from the obvious benefit of making things go slightly faster,
reinstalling the system will touch a lot of important system files,
all the standard system binaries, libraries, include files and so on.
Changing these on a running system (particularly if you have active
users on their at the time) is asking for trouble.
That said, if you are confident, you can omit this step.Version 2.2.5 and aboveAs described in more detail below, versions 2.2.5 and above of
FreeBSD have separated the building process from the installing
process. You can therefore build the new
system in multi user mode, and then drop to single user mode to do
the installation.As the superuser, you can execute
&prompt.root;
from a running system, which will drop it to single user mode.Alternatively, reboot the system, and at the boot prompt, enter
the flag. The system will then boot single user.
At the shell prompt you should then run:&prompt.root; fsck -p
&prompt.root; mount -u /
&prompt.root; mount -a -t ufs
&prompt.root; swapon -aThis checks the filesystems, remounts /
read/write, mounts all the other UFS filesystems referenced in
/etc/fstab and then turns swapping on.Remove /usr/objAs parts of the system are rebuilt they are placed in directories
which (by default) go under /usr/obj. The
directories shadow those under /usr/src.You can speed up the make world process, and
possibly save yourself some dependency headaches by removing this
directory as well.Some files below /usr/obj will have the
- immutable flag set (see chflags(1) for more
+ immutable flag set (see &man.chflags.1; for more
information) which must be removed first.&prompt.root; cd /usr/obj
&prompt.root; chflags -R noschg *
&prompt.root; rm -rf *All versionsYou must be in the /usr/src directory, so
&prompt.root; cd /usr/src
(unless, of course, your source code is elsewhere, in which case
change to that directory instead).To rebuild the world you use the &man.make.1; command. This
command reads instructions from the Makefile
which describes how the programs that comprise FreeBSD should be
rebuilt, the order they should be built in, and so on.The general format of the command line you will type is as
follows;&prompt.root; make In this example,
-x
is an option that you would pass to &man.make.1;. See the manual
page for an example of the options you can pass.
-DVARIABLE
passes a
variable to the Makefile. The behaviour of the
Makefile is controlled by these variables.
These are the same variables as are set in
/etc/make.conf, and this provides another way
of setting them.&prompt.root; make -DNOPROFILE=true targetis another way of specifying that profiled libaries should not be
built, and corresponds with the
NOPROFILE= true
# Avoid compiling profiled libraries
lines in /etc/make.conf.target tells &man.make.1; what you
want to do. Each Makefile defines a number of
different targets, and your choice of target
determines what happens.Some targets are listed in the Makefile,
but are not meant for you to run. Instead, they are used by the
build process to break out the steps necessary to rebuild the system
into a number of sub-steps.Most of the time you won't need to pass any parameters to
&man.make.1;, and so your command like will look like this.&prompt.root; make targetSaving the outputIt's a good idea to save the output you get from running
&man.make.1; to another file. If something goes wrong you will
have a copy of the error message, and a complete list of where the
process had got to. While this might not help you in diagnosing
what has gone wrong, it can help others if you post your problem to
one of the FreeBSD mailing lists.The easiest way to do this is to use the &man.script.1; command,
with a parameter that specifies the name of the file to save all
output to. You would do this immediately before remaking the world,
and then type exit when the process has
finished.&prompt.root; script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
&prompt.root; make world… compile, compile, compile …
&prompt.root; exit
Script done, …If you do this, do not save the output in
/tmp. This directory may be cleared next time
you reboot. A better place to store it is in
/var/tmp (as in the previous example) or in
root's home directory.Version 2.2.2 and below/usr/src/Makefile contains the
world target, which will rebuild the entire
system and then install it.Use it like this.&prompt.root; make worldVersion 2.2.5 and aboveBeginning with version 2.2.5 of FreeBSD (actually, it was first
created on the -current branch, and then retrofitted to -stable
midway between 2.2.2 and 2.2.5) the world
target has been split in two. buildworld
and installworld.As the names imply, buildworld builds a
complete new tree under /usr/obj, and
installworld installs this tree on the
current machine.This is very useful for 2 reasons. First, it allows you to do
the build safe in the knowledge that no components of your running
system will be affected. The build is self hosted.
Because of this, you can safely run
buildworld on a machine running in
multi-user mode with no fear of ill-effects. I still recommend you
run the installworld part in single user
mode though.Secondly, it allows you to use NFS mounts to upgrade multiple
machines on your network. If you have three machines, A, B and C
that you want to upgrade, run make buildworld and
make installworld on A. B and C should then NFS
mount /usr/src and
/usr/obj from A, and you can then run
make installworld to install the results of the
build on B and C.The world target still exists, and you
can use it exactly as shown for version 2.2.2. make
world runs make buildworld followed
by make installworld.If you do the make buildworld and
make installworld commands separately, you must
pass the same parameters to &man.make.1; each time.If you run
&prompt.root; make -DNOPROFILE=true buildworld
you must install the results with
&prompt.root; make -DNOPROFILE=true installworld
otherwise it would try and install profiled libraries that had not
been built during the make buildworld
phase.-current and aboveIf you are tracking -current you can also pass the
-j
option to make. This lets
make spawn several simultaneous processes.This is most useful on true multi-CPU machines. However, since
much of the compiling process is IO bound rather than CPU bound it is
also useful on single CPU machines.On a typical single-CPU machine you would run:&prompt.root; make -j4 target&man.make.1; will then have up to 4 processes running at any one
time. Empirical evidence posted to the mailing lists shows this
generally gives the best performance benefit.If you have a multi-CPU machine and you are using an SMP
configured kernel try values between 6 and 10 and see how they speed
things up.Be aware that (at the time of writing) this is still
experimental, and commits to the source tree may occasionally break
this feature. If the world fails to compile using this parameter
try again without it before you report any problems.TimingsAssuming everything goes well you have anywhere between an hour
and a half and a day or so to wait.As a general rule of thumb, a 200MHz P6 with more than 32MB of
RAM and reasonable SCSI disks will complete make
world in about an hour and a half. A 32MB P133 will
take 5 or 6 hours. Revise these figures down if your machines are
slower…Update /etcRemaking the world will not update certain directories (in
particular, /etc, /var and
/usr) with new or changed configuration files.
This is something you have to do by hand, eyeball, and judicious use
of &man.diff.1;.You cannot just copy over the files from
/usr/src/etc to /etc and
have it work. Some of these files must be installed
first. This is because the /usr/src/etc
directory is not a copy of what your
/etc directory should look like. In addition,
there are files that should be in /etc that are
not in /usr/src/etc.The simplest way to do this is to install the files into a new
directory, and then work through them looking for differences.Backup your existing /etcAlthough, in theory, nothing is going to touch this directory
automatically, it is always better to be sure. So copy your
existing /etc directory somewhere safe.
Something like:&prompt.root; cp -Rp /etc /etc.old
-R
does a recursive copy,
-p
preserves times, ownerships on files and suchlike.You need to build a dummy set of directories to install the new
/etc and other files into. I generally choose to
put this dummy directory in /var/tmp/root, and
there are a number of subdirectories required under this as
well.&prompt.root; mkdir /var/tmp/root
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distributionThis will build the necessary directory structure and install the
files. A lot of the subdirectories that have been created under
/var/tmp/root are empty and should be deleted.
The simplest way to do this is to:&prompt.root; cd /var/tmp/root
&prompt.root; find -d . -type d | /usr/bin/perl -lne \
'opendir(D,$_);@f=readdir(D);rmdir if $#f == 1;closedir(D);'This does a depth first search, examines each directory, and if
the number of files in that directory is 2 (/var/tmp/root now contains all the files that
should be placed in appropriate locations below
/. You now have to go through each of these
files, determining how they differ with your existing files.Note that some of the files that will have been installed in
/var/tmp/root have a leading /var/tmp/root/ and
/var/tmp/root/root/, although there may be others
(depending on when you are reading this. Make sure you use
The simplest way to do this is to use &man.diff.1; to compare the
two files.&prompt.root; diff /etc/shells /var/tmp/root/etc/shellsThis will show you the differences between your
/etc/shells file and the new
/etc/shells file. Use these to decide whether to
merge in changes that you have made or whether to copy over your old
file.Name the new root directory
(/var/tmp/root)with a timestamp, so you can
easily compare differences between versionsFrequently remaking the world means that you have to update
/etc frequently as well, which can be a bit of
a chore.You can speed this process up by keeping a copy of the last set
of changed files that you merged into /etc.
The following procedure gives one idea of how to do this.Make the world as normal. When you want to update
/etc and the other directories, give the
target directory a name based on the current date. If you were
doing this on the 14th of February 1998 you could do the
following.&prompt.root; mkdir /var/tmp/root-19980214
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root-19980214 \
distrib-dirs distributionMerge in the changes from this directory as outlined
above.Do not remove the
/var/tmp/root-19980214 directory when you
have finished.When you have downloaded the latest version of the source
and remade it, follow step 1. This will give you a new
directory, which might be called
/var/tmp/root-19980221 (if you wait a week
between doing updates).You can now see the differences that have been made in the
intervening week using &man.diff.1; to create a recursive diff
between the two directories.&prompt.root; cd /var/tmp
&prompt.root; diff -r root-19980214 root-19980221Typically, this will be a much smaller set of differences
than those between
/var/tmp/root-19980221/etc and
/etc. Because the set of differences is
smaller, it is easier to migrate those changes across into your
/etc directory.You can now remove the older of the two
/var/tmp/root-* directories.&prompt.root; rm -rf /var/tmp/root-19980214Repeat this process every time you need to merge in changes
to /etc.You can use &man.date.1; to automate the generation of the
directory names.&prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"`Update /devDEVFSIf you are using DEVFS then this is probably unnecessary.For safety's sake, this is a multistep process.Copy /var/tmp/root/dev/MAKEDEV to
/dev.&prompt.root; cp /var/tmp/root/dev/MAKEDEV /devNow, take a snapshot of your current
/dev. This snapshot needs to contain the
permissions, ownerships, major and minor numbers of each filename,
but it should not contain the timestamps. The easiest way to do
this is to use &man.awk.1; to strip out some of the
information.&prompt.root; cd /dev
&prompt.root; ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.outRemake all the devices.&prompt.root; Write another snapshot of the directory, this time to
/var/tmp/dev2.out. Now look through these
two files for any devices that you missed creating. There should
not be any, but it is better to be safe than sorry.&prompt.root; diff /var/tmp/dev.out /var/tmp/dev2.outYou are most likely to notice disk slice discrepancies which
will involve commands such as
&prompt.root; sh MAKEDEV sd0s1
to recreate the slice entries. Your precise circumstances may
vary.Update /standThis step is included only for completeness, it can safely be
omitted.For completenesses sake you may want to update the files in
/stand as well. These files consist of hard
links to the /stand/sysinstall binary. This
binary should be statically linked, so that it can work when no other
filesystems (and in particular /usr) have been
mounted.&prompt.root; cd /usr/src/release/sysinstall
&prompt.root; make all installSource older than 2 April 1998If your source code is older than 2nd April 1998, or the
Makefile version is not 1.68 or higher (for
FreeBSD current and 3.x systems) or 1.48.2.21 or higher (for 2.2.x
systems) you will need to add the
NOSHARED=yes option, like so;&prompt.root; make NOSHARED=yes all installCompile and install a new kernelTo take full advantage of your new system you should recompile the
kernel. This is practically a necessity, as certain memory structures
may have changed, and programs like &man.ps.1; and &man.top.1; will
fail to work until the kernel and source code versions are the
same.Follow the handbook instructions for compiling a new kernel. If
you have previously built a custom kernel then carefully examine the
LINT config file to see if there are any new
options which you should take advantage of.A previous version of this document suggested rebooting before
rebuilding the kernel. This is wrong because:Commands like &man.ps.1;, &man.ifconfig.8;, and &man.sysctl.8;
may fail. This could leave your machine unable to connect to the
network.Basic utilities like &man.mount.8; could fail,
making it impossible to mount /,
/usr and so on. This is unlikely if you are
tracking a -stable candidate, but more likely if you are tracking
-current during a large merge.Loadable kernel modules (LKMs on pre-3.x systems, KLDs on 3.x
systems and above) built as part of the world may
crash an older kernel.For these reasons, it is always best to rebuild and install a
new kernel before rebooting.You should build your new kernel after you have completed
make world (or make
installworld). If you do not want to do this (perhaps
you want to confirm that the kernel builds before updating your
system) you may have problems. These may be because your
&man.config.8; command is out of date with respect to your kernel
sources.In this case you could build your kernel with the new version of &man.config.8;&prompt.root; /usr/obj/usr/src/usr.sbin/config/config KERNELNAMEThis may not work in all cases. It is recommended that you
complete make world (or make
installworld) before compiling a new kernel.You are now done. After you have verified that everything appears
to be in the right place you can reboot the system. A simple
&man.fastboot.8; should do it.
&prompt.root; fastbootFinishedYou should now have successfully upgraded your FreeBSD system.
Congratulations.You may notice small problems due to things that you have missed.
For example, I once deleted /etc/magic as part of
the upgrade and merge to /etc, and the
file command stopped working. A moment's thought
meant that
&prompt.root; cd /usr/src/usr.bin/file
&prompt.root;
was sufficient to fix that one.Do I need to re-make the world for every change?There is no easy answer to this one, as it depends on the
nature of the change. For example, I have just run CVSup, and
it has shown the following files as being updated since I last
ran it;src/games/cribbage/instr.csrc/games/sail/pl_main.csrc/release/sysinstall/config.csrc/release/sysinstall/media.csrc/share/mk/bsd.port.mkThere is nothing in there that I would re-make the world
for. I would go to the appropriate sub-directories and
make all install, and that's about it. But
if something major changed, for example
src/lib/libc/stdlib then I would either
re-make the world, or at least those parts of it that are
statically linked (as well as anything else I might have added
that is statically linked).At the end of the day, it is your call. You might be happy
re-making the world every fortnight say, and let changes
accumulate over that fortnight. Or you might want to re-make
just those things that have changed, and are confident you can
spot all the dependencies.And, of course, this all depends on how often you want to
upgrade, and whether you are tracking -stable or
-current.My compile failed with lots of signal 12 (or other signal
number) errors. What has happened?This is normally indicative of hardware problems.
(Re)making the world is an effective way to stress test your
hardware, and will frequently throw up memory problems. These
normally manifest themselves as the compiler mysteriously dying
on receipt of strange signals.A sure indicator of this is if you can restart the make and
it dies at a different point in the process.In this instance there is little you can do except start
swapping around the components in your machine to determine
which one is failing.Can I remove /usr/obj when I have
finished?That depends on how you want to make the world on future
occasions./usr/obj contains all the object files
that were produced during the compilation phase. Normally, one
of the first steps in the /usr/obj around after you have finished
makes little sense, and will free up a large chunk of disk space
(currently about 150MB).However, if you know what you are doing you can have
If you want to live dangerously then make the world, passing
the NOCLEAN definition to make, like
this:&prompt.root; make -DNOCLEAN worldCan interrupted builds be resumed?This depends on how far through the process you got before
you found a problem.In general (and this is not a hard and
fast rule) the make world process builds new
copies of essential tools (such as &man.gcc.1;, and
&man.make.1;>) and the system libraries. These tools and
libraries are then installed. The new tools and libraries are
then used to rebuild themselves, and are installed again. The
entire system (now including regular user programs, such as
&man.ls.1; or &man.grep.1;) is then rebuilt with the new
system files.If you are at the last state, and you know it (because you
have looked through the output that you were storing) then you
can (fairly safely) do… fix the problem …
&prompt.root; cd /usr/src
&prompt.root; make -DNOCLEAN allThis will not undo the work of the previous
make world.If you see the message
--------------------------------------------------------------
Building everything..
--------------------------------------------------------------
in the make world output then it is
probably fairly safe to do so.If you do not see that message, or you are not sure, then it
is always better to be safe than sorry, and restart the build
from scratch.Can I use one machine as a People often ask on the FreeBSD mailing lists whether they
can do all the compiling on one machine, and then use the
results of that compile to make install on to
other machines around the network.This is not something I have done, so the suggestions below
are either from other people, or deduced from the
Makefiles.The precise approach to take depends on your version of
FreeBSDYou must still upgrade /etc and
/dev on the target machines after doing
this.For 2.1.7 and below, Antonio Bemfica
suggested the following approach:Date: Thu, 20 Feb 1997 14:05:01 -0400 (AST)
From: Antonio Bemfica <bemfica@militzer.me.tuns.ca>
To: freebsd-questions@freebsd.org
Message-ID: <Pine.BSI.3.94.970220135725.245C-100000@militzer.me.tuns.ca>
Josef Karthauser asked:
> Has anybody got a good method for upgrading machines on a network
First make world, etc. on your main machine
Second, mount / and /usr from the remote machine:
main_machine% mount remote_machine:/ /mnt
main_machine% mount remote_machine:/usr /mnt/usr
Third, do a 'make install' with /mnt as the destination:
main_machine% make install DESTDIR=/mnt
Repeat for every other remote machine on your network. It works fine
for me.
AntonioThis mechanism will only work (to the best of my knowledge)
if you can write to /usr/src on the NFS
server, as the install target in 2.1.7
and below needed to do this.Midway between 2.1.7 and 2.2.0 the reinstall
target was committed. You can use the approach exactly as
outlined above for 2.1.7, but use reinstall
instead of install.This approach does not require write
access to the /usr/src directory on the NFS
server.There was a bug introduced in this target between versions
1.68 and 1.107 of the Makefile, which meant that write access to
the NFS server was required. This bug was
fixed before version 2.2.0 of FreeBSD was released, but may be an
issue of you have an old server still running -stable from this
era.For version 2.2.5 and above, you can use the
buildworld and installworld
targets. Use them to build a source tree on one machine, and
then NFS mount /usr/src and
/usr/obj on the remote machine and install
it there.How can I speed up making the world?Run in single user mode.Put the /usr/src and
/usr/obj directories on separate
filesystems held on separate disks. If possible, put these
disks on separate disk controllers.Better still, put these filesystems across separate
disks using the ccd (concatenated disk
driver) device.Turn off profiling (set NOPROFILE=true in
/etc/make.conf). You almost certainly
do not need it.Also in /etc/make.conf, set
CFLAGS to something like -O
-pipe. The optimisation -O2 is much
slower, and the optimisation difference between
-O and -O2 is normally
negligible. -pipe lets the compiler use
pipes rather than temporary files for communication, which
saves disk access (at the expense of memory).Pass the
-j<n>
option to make (if
you are running a sufficiently recent version of FreeBSD) to
run multiple processes in parallel. This helps regardless
of whether you have a single or a multi processor
machine.The filesystem holding
/usr/src can be mounted (or remounted)
with the noatime option. This stops the time
files in the filesystem were last accessed from being
written to the disk. You probably do not need this
information anyway.
noatime is in version 2.2.0 and
above.&prompt.root; mount -u -o noatime /usr/srcThe example assumes /usr/src is
on its own filesystem. If it is not (if it is a part of
/usr for example) then you will
need to use that filesystem mount point, and not
/usr/src.The filesystem holding /usr/obj can
be mounted (or remounted) with the async
option. This causes disk writes to happen asynchronously.
In other words, the write completes immediately, and the
data is written to the disk a few seconds later. This
allows writes to be clustered together, and can be a
dramatic performance boost.Keep in mind that this option makes your filesystem
more fragile. With this option there is an increased
chance that, should power fail, the filesystem will be in
an unrecoverable state when the machine restarts.If /usr/obj is the only thing on
this filesystem then it is not a problem. If you have
other, valuable data on the same filesystem then ensure
your backups are fresh before you enable this
option.&prompt.root; mount -u -o async /usr/objAs above, if /usr/obj is not on
its own filesystem, replace it in the example with the
name of the appropriate mount point.ContributorsThe following people have contributed to this document in some
form or another. Either by directly suggesting alterations and
improvements, pointing out errors, or by their messages to the FreeBSD
mailing lists, from which I have shamelessly cribbed information. My
thanks to them.Antonio Bemfica,
bemfica@militzer.me.tuns.caSue Blake, sue@welearn.com.auBrian Haskin, haskin@ptway.comKees Jan Koster, kjk1@ukc.ac.ukA Joseph Kosy, koshy@india.hp.comGreg Lehey, grog@lemis.comWes Peters, softweyr@xmission.comJoseph Stein, joes@wstein.comStudded, studded@dal.netAxel Thimm,
Axel.Thimm@physik.fu-berlin.deMatthew Thyer,
Matthew.Thyer@dsto.defence.gov.au
diff --git a/en_US.ISO8859-1/books/handbook/pgpkeys/chapter.sgml b/en_US.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
index e73495933d..a9061e4a4c 100644
--- a/en_US.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
+++ b/en_US.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
@@ -1,784 +1,784 @@
PGP keysIn case you need to verify a signature or send encrypted email to one
of the officers or core team members a number of keys are provided here
for your convenience.
-
+ OfficersFreeBSD Security Officer
security-officer@FreeBSD.org
FreeBSD Security Officer <security-officer@FreeBSD.org>
Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i
mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL
h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L
Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR
tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl
ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU
tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7
PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql
3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz
QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV
nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A
3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD
/REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb
5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS
9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B
sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P
BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT
0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx
ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD
ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO
v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1
lw==
=ipyA
-----END PGP PUBLIC KEY BLOCK-----&a.imp;
Warner Losh <imp@village.org>
aka <imp@FreeBSD.org>
Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
3gTYx+Nlo6xqjR+J2NnBYU8p
=7fQV
-----END PGP PUBLIC KEY BLOCK-----
-
+ Core Team members&a.asami;
Satoshi Asami <asami@cs.berkeley.edu>
aka <asami@FreeBSD.org>
Fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
+EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
+NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
=39SC
-----END PGP PUBLIC KEY BLOCK-----&a.jmb;
Jonathan M. Bresler <jmb@FreeBSD.org>
f16 Fingerprint16 = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI
gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn
GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY
2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J
AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ
tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk
2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7
BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI
8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8
h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2
aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz
2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ
NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE
KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h
/ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E
5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP
VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt
bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj
lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0
PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx
5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+
gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU
/2ls4QSBZZlb
=zbCw
-----END PGP PUBLIC KEY BLOCK-----&a.ache;
Andrey A. Chernov <ache@FreeBSD.org>
aka <ache@nagual.pp.ru>
Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez
u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY
cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ
aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20
JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi
YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h
mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt
pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi
YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW
xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30
Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ
nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY
rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B
gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl
eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV
AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa
o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ
mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC
Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr
anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI
rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8
vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO
DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh
Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9
KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a
hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b
vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI
AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB
AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5
MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA
Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx
/IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA
+6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM
1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV
AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM
y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv
Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV
HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14
5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R
rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3
5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw
erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5
+uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6
EB33OunazFcfZFRIcXk1sfyLDvYE
=1ahV
-----END PGP PUBLIC KEY BLOCK-----&a.jkh;
Jordan K. Hubbard <jkh@FreeBSD.org>
Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM
j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD
ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY
laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+
5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az
VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN
GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB
AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB
uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ
utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof
f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H
U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ
csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV
AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y
oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5
LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C
BiMRuaw=
=C/Jw
-----END PGP PUBLIC KEY BLOCK-----&a.phk;
Poul-Henning Kamp <phk@FreeBSD.org>
Fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
e3jh8w62JsLBWry/YMWRMnI=
=A1Tu
-----END PGP PUBLIC KEY BLOCK-----&a.rich;
Rich Murphey <rich@FreeBSD.org>
fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
=QoiM
-----END PGP PUBLIC KEY BLOCK-----&a.jdp;
John D. Polstra <jdp@polstra.com>
Fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
+45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
V31K/PIoYsHAy5w=
=cHFa
-----END PGP PUBLIC KEY BLOCK-----&a.peter;
Peter Wemm <peter@FreeBSD.org>
aka <peter@spinner.dialix.com>
aka <peter@haywire.dialix.com>
aka <peter@perth.dialix.oz.au>
Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
=gv+h
-----END PGP PUBLIC KEY BLOCK-----&a.joerg;
Type Bits/KeyID Date User ID
pub 1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E
Joerg Wunsch <joerg_wunsch@interface-business.de>
Joerg Wunsch <j@uriah.heep.sax.de>
Joerg Wunsch <j@interface-business.de>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
=97h7
-----END PGP PUBLIC KEY BLOCK-----
-
+ Developers&a.joe;
Type Bits/KeyID Date User ID
pub 768/7EBDECB1 1996/12/19 Josef L. Karthauser <joe@pavilion.net>
joe@tao.org.uk
joe@uk.freebsd.org
joe@FreeBSD.org
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQBtAzK5TJQAAAEDAKlRtbnhuBNWwq+hkYyubUzCYZu60ZFtwdkCgyBurSzTmfMG
1ylVOdwzpgFL8JHRAGhzugRvZqRiCrCl+CvYaeW2+ee3Yw+brl6YEqLMxy0ap2kD
NbpZ7LIO7AMffr3ssQAFEbQmSm9zZWYgTC4gS2FydGhhdXNlciA8am9lQHBhdmls
aW9uLm5ldD6JAJUDBRA3DNxYDu2852ZqdCEBAXrwBACTRn6uz+uFHxi9nj8qdg14
m3SvBJ58i82IdyhuD5m04/Rgc3Bwk1VDY2eKHuILcgDInd94EePpHTxMvjblfImn
No9yqKYQw+V2zbsa8idTVDb5eNWGdRmVndjY95ZVKuhhIlwqLJELvKKbYZjjSabl
ijn+lvEEl+gO4avcQZnOjIkAlQMFEDRSgYdv0qcS0gZ4vQEBq/cD+gJsogBSFwYl
otle1JGgq1lkIq46uJWS8h61QL9+wnKQ3l19VElXK3/s/HUqBZagKyrF7QSs1dhg
T/RKSr/kdG0dPhLhqESgzii9CS6MgHM8CnmP7oDP78i1yAkVL9bJ/a22Il+YZNlt
r+XOn9EivaFojjHFQy5a+7e/HEXbgtwMiQD2AwUQMxRrf6ZKZnTBjNYdAQENIgcH
RcYYGiOYT0FAqSvAlHPunpPhO+9TBKD5FP307YtUTHdI19Y+LgFT599ond3wfArR
K3ue6D1G6//kbemfLZVxOJ+PRpJ0jIqZQ//7mKAI3VGu4vGO0EGQLkzIfwiVaCwa
8jZh5406CaqE7DkXVypvcVkL3hdqD8o16qht8Y23rjrEUgRYIIWUGftCAHWMZEq3
NqU/nqzgIv72PMEC3jBjdPld84GOiX9e3XjOSur6uLMRj87e9qce73sYUsGb2/cf
ypx8Hy/FN/FVUKbW4/ddHOeW75vBGgtIwY0R+eDW1wWXiQB1AwUQMrlMlA7sAx9+
veyxAQFftQL/T64Xc63YXllDIVGw0ZQtM0cdolYzP5OAu2Pvb0iWiJia6SkxePJo
FyNuWEO0obBpeP/QuapnceYUBNiheT4gRccEO1+VjFRuAiZb7+Huwh4FXrRbhJte
3FmOE07jacQ9tA5qb2VAdGFvLm9yZy51a4kAdQMFEDgPy5gO7AMffr3ssQEBYGsC
/iIslOxLXMgz9BSw1ndflqYOImPtn4OQJAG+eyZInVKfZDhyEHtO6ID7zRNx+0wh
fAgEU760e8V5rEFea9U0/qY7QneanDRGI+rP81V/fnP3wdZBCGXDNMCM6ofcuTP6
MbQSam9lQHVrLmZyZWVic2Qub3JniQB1AwUQOA/Lgg7sAx9+veyxAQHeXgL8DJQ1
xeeFLQOrg4vI5nfQOjPJqaZ4xpPv1k5wIjPRElGj7QACZVX5L/bEzhK+7fggSXxB
b4cmEhiDOIFOBR6HWL/RnMimoGtC53OHKRrA43/eqB/saCbTfN4+KAypw1WatA9q
b2VARnJlZUJTRC5vcmeJAHUDBRA4D8tRDuwDH3697LEBAZU6Av0e8n+hesovDEkn
ox3JKhC1L33jXu0nOQZ/2Yz6jY1icghgy/L2KO57+T2YBV6DGpk4IlY9jZJRRKti
KCHSMahng7whIHNSugWqzLNanK+YPfXC2CsUI02w1srjFcDurBg=
=O/Rl
-----END PGP PUBLIC KEY BLOCK-----&a.cpiazza;
Type Bits/KeyID Date User ID
pub 2048/FB722BE5 1996/04/07 Chris Piazza <cpiazza@jaxon.net>
Chris Piazza <cpiazza@home.net>
Chris Piazza <cpiazza@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQENAzFnIKcAAAEIANA6TShD9jrbc0IODhZooybcqM04h94IOaX5HPcYo/5FHSFB
ezBuea19iBB/spGQUfpDAuGuqsz1DCCtL0OBz1cn4r74OMqrY4bQHKunCF8hUL8H
hRVn33B5KmljTHo8jFQAV/8QwvU6OUaLgM4CoZsMdrgfSaAxGNGu+RAK2xbm9KX7
BykXX+MIYRbJHpxA+25o8OZTOEC0Sa3kg94F9lT+iL1zB5s3dTPrQPzOFZCD0PdK
ByEnGt+GoFNV1j7nO26vNa0fQZTSL+bNmnO54NPE0u8gtaqhGqRN+EHbo90eJ487
XqDOI0b+XHK98y2T1lEGYmjuSLmA9xHAr/tyK+UABRG0IENocmlzIFBpYXp6YSA8
Y3BpYXp6YUBqYXhvbi5uZXQ+iQEVAwUQOD+czfcRwK/7civlAQGdqggAnDjRfVCG
QLCCncva1yLPQY2OUBz4SW4NfR4RSPbmDTs+kDJpqAN4/w76LwOry3B6Hp4MnrZP
Iv0DDzePM+5hs535wDNcU6KQwbZEyv7e9Q+dpWW6vj8hEynZYp5Vcb0VbejU9NJf
rHuSIx0cIKfztxM11csTYqPHGZcHUPy3w7BtB03ATioWt0/Ybj3vtLj36JHI1csk
yzgeHJrQ17yvcoNGno2Aqrdbf+PJ7lO/Wiy+40r6jyJmt9o5neT1kOgVvXGVOp7R
dbOQXGAZay2nxRcQALrRD7VF/ugpJke2MykL0GebFYmSOVWRjVkmLlXl/AXLS/Vw
FJ0MTMDOOq7MCbQfQ2hyaXMgUGlhenphIDxjcGlhenphQGhvbWUubmV0PokBFQMF
EDg/nOT3EcCv+3Ir5QEBc8sIAKz1sxByTTiwj8+FKKb1lFYgxXYfqUzp1dl31eFy
fTXv6thrGvBzmBtMRLVOymvBBy7VP3cLN7rtyyS3jKR+UdDZcJBKM1bF5lBCWF7T
DmpvHR79Od79pgWTiU7bkHM7LBXOEhahO9Q6SAIaIhw85LfVRV/oh2ZB+PocvyLe
iJhKehe6W+ao0ZSUDm5tlG8wrgvjKEkEAOHh/pCCxFh2zQmUwyxFljy8/OooTE37
tBaTTaVx98dQUtm59u8ITFpbmPX5mIlKu8H9R3oY1Ur6DPtHV7OTVewTBCjuatyw
FwbGcP7DLEAmmYhICwtYQOa62+ORNh2/v/GHTt+ZxHFGHuW0IkNocmlzIFBpYXp6
YSA8Y3BpYXp6YUBGcmVlQlNELm9yZz6JARUDBRA3a0Oi9xHAr/tyK+UBARC7B/9+
CaKMlF11O8TpP3FfWUpwMwdMynaebd3Xx3U01DleHqnqfy8PwhZY9jwcvgggaXSN
7FUUzRocsTTEbFj7hZHAYRfNH+KcXr3EmB5b82M10NHeqWIFF8vcpEwM6lvFIbne
Mve1eVw4S2Vl0yHQJvoVUqAvlFpN3dgFOg69qBPe6qWsaNDPN+dwUorWckV613EP
Gbxp9cs2j3awBnENjP16jkmEKuQPcAnl6l6XgP1X27PKICkPUTLO+CKfRq15Qs9p
evhyqAaUMNU/GYMqs5sceDQq1PUpmE1syGCZUQmvYfXfRmujHdZnDRDl+afN4UoH
hrCuygxmOl22RDH3aEXi
=JxBt
-----END PGP PUBLIC KEY BLOCK-----&a.guido;
Guido van Rooij <guido@gvr.win.tue.nl>
Fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
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
mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J
=mSvM
-----END PGP PUBLIC KEY BLOCK-----&a.brian;
Type Bits/KeyID Date User ID
pub 1024/666A7421 1997/04/30 Brian Somers <brian@awfulhak.org>
Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21
Brian Somers <brian@uk.OpenBSD.org>
Brian Somers <brian@uk.FreeBSD.org>
Brian Somers <brian@OpenBSD.org>
Brian Somers <brian@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
=Tq7h
-----END PGP PUBLIC KEY BLOCK-----&a.gsutter;
Type Bits KeyID Created Expires Algorithm Use
sec+ 1024 0x40AE3052 1998-07-18 ---------- DSS Sign & Encrypt
f20 Fingerprint20 = 61D4 6A28 F282 482E 1D82 D077 E31E 323D 40AE 3052
uid Gregory S. Sutter <gsutter@pobox.com>
uid Gregory S. Sutter <gsutter@zer0.org>
uid Gregory S. Sutter <gsutter@daemonnews.org>
uid Gregory S. Sutter <gsutter@freebsd.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
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
AW4VTHVXOY6g
=Zu9y
-----END PGP PUBLIC KEY BLOCK-----&a.wosch;
Type Bits/KeyID Date User ID
pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org>
Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G
Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0
vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR
tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH
AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk
pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv
2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0
JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85
jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp
bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh
sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX
b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO
sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+
U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC
xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB
UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv
Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf
CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD
/3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA
5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa
UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l
aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr
cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh
3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv
gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg=
=3V1R
-----END PGP PUBLIC KEY BLOCK-----
diff --git a/en_US.ISO8859-1/books/handbook/serialcomms/chapter.sgml b/en_US.ISO8859-1/books/handbook/serialcomms/chapter.sgml
index 7e45aa5283..c9cd55da91 100644
--- a/en_US.ISO8859-1/books/handbook/serialcomms/chapter.sgml
+++ b/en_US.ISO8859-1/books/handbook/serialcomms/chapter.sgml
@@ -1,2731 +1,2731 @@
Serial CommunicationsSerial BasicsAssembled from FAQ.This section should give you some general information about serial
ports. If you do not find what you want here, check into the Terminal
and Dialup sections of the handbook.The ttydX (or
cuaaX) device is the
regular device you will want to open for your applications. When a
process opens the device, it will have a default set of terminal I/O
settings. You can see these settings with the command&prompt.root; stty -a -f /dev/ttyd1When you change the settings to this device, the settings are in
effect until the device is closed. When it is reopened, it goes back to
the default set. To make changes to the default set, you can open and
adjust the settings of the “initial state” device. For
example, to turn on CLOCAL mode, 8 bits, and
XON/XOFF flow control by default for ttyd5,
do:&prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoffA good place to do this is in /etc/rc.serial.
Now, an application will have these settings by default when it opens
ttyd5. It can still change these settings to its
liking, though.You can also prevent certain settings from being changed by an
application by making adjustments to the “lock state”
device. For example, to lock the speed of ttyd5 to
57600 bps, do&prompt.root; stty -f /dev/ttyld5 57600Now, an application that opens ttyd5 and tries
to change the speed of the port will be stuck with 57600 bps.Naturally, you should make the initial state and lock state devices
writable only by root. The
MAKEDEV script does not do
this when it creates the device entries.TerminalsContributed by &a.kelly; 28 July 1996Terminals provide a convenient and low-cost way to access the power
of your FreeBSD system when you are not at the computer's console or on
a connected network. This section describes how to use terminals with
FreeBSD.Uses and Types of TerminalsThe original Unix systems did not have consoles. Instead, people
logged in and ran programs through terminals that were connected to
the computer's serial ports. It is quite similar to using a modem and
some terminal software to dial into a remote system to do text-only
work.Today's PCs have consoles capable of high quality graphics, but
the ability to establish a login session on a serial port still exists
in nearly every Unix-style operating system today; FreeBSD is no
exception. By using a terminal attached to a unused serial port, you
can log in and run any text program that you would normally run on the
console or in an xterm window in the X Window
System.For the business user, you can attach many terminals to a FreeBSD
system and place them on your employees' desktops. For a home user, a
spare computer such as an older IBM PC or a Macintosh can be a
terminal wired into a more powerful computer running FreeBSD. You can
turn what might otherwise be a single-user computer into a powerful
multiple user system.For FreeBSD, there are three kinds of terminals:Dumb terminalsPCs acting as terminalsX terminalsThe remaining subsections describe each kind.Dumb TerminalsDumb terminals are specialized pieces of hardware that let you
connect to computers over serial lines. They are called
“dumb” because they have only enough computational power
to display, send, and receive text. You cannot run any programs on
them. It is the computer to which you connect them that has all the
power to run text editors, compilers, email, games, and so
forth.There are hundreds of kinds of dumb terminals made by many
manufacturers, including Digital Equipment Corporation's VT-100 and
Wyse's WY-75. Just about any kind will work with FreeBSD. Some
high-end terminals can even display graphics, but only certain
software packages can take advantage of these advanced
features.Dumb terminals are popular in work environments where workers do
not need access to graphic applications such as those provided by
the X Window System.PCs Acting As TerminalsIf a dumb terminal has just
enough ability to display, send, and receive text, then certainly
any spare personal computer can be a dumb terminal. All you need is
the proper cable and some terminal emulation
software to run on the computer.Such a configuration is popular in homes. For example, if your
spouse is busy working on your FreeBSD system's console, you can do
some text-only work at the same time from a less powerful personal
computer hooked up as a terminal to the FreeBSD system.X TerminalsX terminals are the most sophisticated kind of terminal
available. Instead of connecting to a serial port, they usually
connect to a network like Ethernet. Instead of being relegated to
text-only applications, they can display any X application.We introduce X terminals just for the sake of completeness.
However, this chapter does not cover setup,
configuration, or use of X terminals.Cables and PortsTo connect a terminal to your FreeBSD system, you need the right
kind of cable and a serial port to which to connect it. This section
tells you what to do. If you are already familiar with your terminal
and the cable it requires, skip to Configuration.CablesBecause terminals use serial ports, you need to use
serial—also known as RS-232C—cables to connect the
terminal to the FreeBSD system.There are a couple of kinds of serial cables. Which one
you'll use depends on the terminal you want to connect:If you are connecting a personal computer to act as a
terminal, use a null-modem
cable. A null-modem cable connects two computers or terminals
together.If you have an actual terminal, your best source of
information on what cable to use is the documentation that
accompanied the terminal. If you do not have the documentation,
then try a null-modem cable.
If that does not work, then try a standard cable.Also, the serial port on both the terminal
and your FreeBSD system must have connectors that will fit the cable
you are using.Null-modem cablesA null-modem cable passes some signals straight through, like
“signal ground,” but switches other signals. For
example, the “send data” pin on one end goes to the
“receive data” pin on the other end.If you like making your own cables, here is a table showing a
recommended way to construct a null-modem cable for use with
terminals. This table shows the RS-232C signal names and the pin
numbers on a DB-25 connector.SignalPin #Pin #SignalTxD2connects to3RxDRxD3connects to2TxDDTR20connects to6DSRDSR6connects to20DTRSG7connects to7SGDCD8connects to4RTSRTS45CTSCTS5connects to8DCDFor DCD to RTS, connect pins 4 to 5 internally in the
connector hood, and then to pin 8 in the remote
hood.Standard RS-232C CablesA standard serial cable passes all the RS-232C signals
straight-through. That is, the “send data” pin on one
end of the cable goes to the “send data” pin on the
other end. This is the type of cable to connect a modem to your
FreeBSD system, and the type of cable needed for some
terminals.PortsSerial ports are the devices through which data is transferred
between the FreeBSD host computer and the terminal. This section
describes the kinds of ports that exist and how they are addressed
in FreeBSD.Kinds of PortsSeveral kinds of serial ports exist. Before you purchase or
construct a cable, you need to make sure it will fit the ports on
your terminal and on the FreeBSD system.Most terminals will have DB25 ports. Personal computers,
including PCs running FreeBSD, will have DB25 or DB9 ports. If you
have a multiport serial card for your PC, you may have RJ-12 or
RJ-45 ports.See the documentation that accompanied the hardware for
specifications on the kind of port in use. A visual inspection of
the port often works, too.Port NamesIn FreeBSD, you access each serial port through an entry in
the /dev directory. There are two different
kinds of entries:Callin ports are named
/dev/ttydX
where X is the port number,
starting from zero. Generally, you use the callin port for
terminals. Callin ports require that the serial line assert
the data carrier detect (DCD) signal to work.Callout ports are named
/dev/cuaaX.
You usually do not use the callout port for terminals, just
for modems. You may use the callout port if the serial cable
or the terminal does not support the carrier detect
signal.See the &man.sio.4; manual page for more information.If you have connected a terminal to the first serial port
(COM1 in DOS parlance), then you want to
use /dev/ttyd0 to refer to the terminal. If
it is on the second serial port (also known as
COM2), it is
/dev/ttyd1, and so forth.Note that you may have to configure your kernel to support
each serial port, especially if you have a multiport serial card.
See Configuring the FreeBSD
Kernel for more information.ConfigurationThis section describes what you need to configure on your FreeBSD
system to enable a login session on a terminal. It assumes you have
already configured your kernel to support the serial port to which the
terminal is connected—and that you have connected it.In a nutshell, you need to tell the init
process, which is responsible for process control and initialization,
to start a getty process, which is responsible for
reading a login name and starting the login
program.To do so, you have to edit the /etc/ttys
file. First, use the su command to become root.
Then, make the following changes to
/etc/ttys:Add an line to /etc/ttys for the entry in
the /dev directory for the serial port if it
is not already there.Specify that /usr/libexec/getty be run on
the port, and specify the appropriate
getty type from the
/etc/gettytab file.Specify the default terminal type.Set the port to “on.”Specify whether the port should be
“secure.”Force init to reread the
/etc/ttys file.As an optional step, you may wish to create a custom
getty type for use in step 2 by making an
entry in /etc/gettytab. This document does
not explain how to do so; you are encouraged to see the
&man.gettytab.5; and the &man.getty.8; manual pages for more
information.The remaining sections detail how to do these steps. We will use
a running example throughout these sections to illustrate what we need
to do. In our example, we will connect two terminals to the system: a
Wyse-50 and a old 286 IBM PC running Procomm terminal software
emulating a VT-100 terminal. We connect the Wyse to the second serial
port and the 286 to the sixth serial port (a port on a multiport
serial card).For more information on the /etc/ttys
file, see the &man.ttys.5; manual page.Adding an Entry to /etc/ttysFirst, you need to add an entry to the
/etc/ttys file, unless one is already
there.The /etc/ttys file lists all of the ports
on your FreeBSD system where you want to allow logins. For example,
the first virtual console ttyv0 has an entry in
this file. You can log in on the console using this entry. This
file contains entries for the other virtual consoles, serial ports,
and pseudo-ttys. For a hardwired terminal, just list the serial
port's /dev entry without the
/dev part.When you installed your FreeBSD system, the
/etc/ttys file included entries for the first
four serial ports: ttyd0 through
ttyd3. If you are attaching a terminal on one
of those ports, you do not need to add an entry.In our example, we attached a Wyse-50 to the second serial port,
ttyd1, which is already in the file. We need
to add an entry for the 286 PC connected to the sixth serial port.
Here is an excerpt of the /etc/ttys file after
we add the new entry:
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd5Specifying the getty TypeNext, we need to specify what program will be run to handle the
logins on a terminal. For FreeBSD, the standard program to do that
is /usr/libexec/getty. It is what provides the
login: prompt.The program getty takes one (optional)
parameter on its command line, the getty
type. A getty type tells about
characteristics on the terminal line, like bps rate and parity. The
getty program reads these characteristics from
the file /etc/gettytab.The file /etc/gettytab contains lots of
entries for terminal lines both old and new. In almost all cases,
the entries that start with the text std will
work for hardwired terminals. These entries ignore parity. There is
a std entry for each bps rate from 110 to 115200.
Of course, you can add your own entries to this file. The manual
page &man.gettytab.5; provides more
information.When setting the getty type in the
/etc/ttys file, make sure that the
communications settings on the terminal match.For our example, the Wyse-50 uses no parity and connects at
38400 bps. The 286 PC uses no parity and connects at 19200 bps.
Here is the /etc/ttys file so far (showing just
the two terminals in which we are interested):
ttyd1 "/usr/libexec/getty std.38400" unknown off secure
ttyd5 "/usr/libexec/getty std.19200"Note that the second field—where we specify what program
to run—appears in quotes. This is important, otherwise the
type argument to getty might be interpreted as
the next field.Specifying the Default Terminal TypeThe third field in the /etc/ttys file lists
the default terminal type for the port. For dialup ports, you
typically put unknown or
dialup in this field because users may dial up
with practically any kind of terminal or software. For hardwired
terminals, the terminal type does not change, so you can put a real
terminal type in this field.Users will usually use the tset program in
their .login or .profile
files to check the terminal type and prompt for one if necessary.
By setting a terminal type in the /etc/ttys
file, users can forego such prompting.To find out what terminal types FreeBSD supports, see the
file /usr/share/misc/termcap. It lists
about 600 terminal types. You can add more if you wish. See
the &man.termcap.5; manual page for information.In our example, the Wyse-50 is a Wyse-50 type of terminal
(although it can emulate others, we will leave it in Wyse-50 mode).
The 286 PC is running Procomm which will be set to emulate a VT-100.
Here are the pertinent yet unfinished entries from the
/etc/ttys file:
ttyd1 "/usr/libexec/getty std.38400" wy50 off secure
ttyd5 "/usr/libexec/getty std.19200" vt100Enabling the PortThe next field in /etc/ttys, the fourth
field, tells whether to enable the port. Putting
on here will have the init
process start the program in the second field,
getty, which will prompt for a login. If you put
off in the fourth field, there will be no
getty, and hence no logins on the port.So, naturally, you want an on in this field.
Here again is the /etc/ttys file. We have
turned each port on.
ttyd1 "/usr/libexec/getty std.38400" wy50 on secure
ttyd5 "/usr/libexec/getty std.19200" vt100 onSpecifying Secure PortsWe have arrived at the last field (well, almost: there is an
optional window specifier, but we will ignore
that). The last field tells whether the port is secure.What does “secure” mean?It means that the root account (or any account with a user ID of
0) may login on the port. Insecure ports do not allow root to
login.How do you use secure and insecure ports?By marking a port as insecure, the terminal to which it is
connected will not allow root to login. People who know the root
password to your FreeBSD system will first have to login using a
regular user account. To gain superuser privileges, they will then
have to use the su command.Because of this, you will have two records to help track down
possible compromises of root privileges: both the
login and the su command make
records in the system log (and logins are also recorded in the
wtmp file).By marking a port as secure, the terminal will allow root in.
People who know the root password will just login as root. You will
not have the potentially useful login and su
command records.Which should you use?Just use “insecure.” Use “insecure”
even for terminals not in
public user areas or behind locked doors. It is quite easy to login
and use su if you need superuser
privileges.Here finally are the completed entries in the
/etc/ttys file, with comments added to describe
where the terminals are:
ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure # Kitchen
ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure # Guest bathroomForce init to Reread
/etc/ttysWhen you boot FreeBSD, the first process,
init, will read the
/etc/ttys file and start the programs listed
for each enabled port to prompt for logins.After you edit /etc/ttys, you do not want
to have to reboot your system to get init to see
the changes. So, init will reread
/etc/ttys if it receives a SIGHUP (hangup)
signal.So, after you have saved your changes to
/etc/ttys, send SIGHUP to
init by typing:&prompt.root; kill -HUP 1(The init process always
has process ID 1.)If everything is set up correctly, all cables are in place, and
the terminals are powered up, you should see login prompts. Your
terminals are ready for their first logins!Debugging your connectionEven with the most meticulous attention to detail, something could
still go wrong while setting up a terminal. Here is a list of
symptoms and some suggested fixes.No login prompt appearsMake sure the terminal is plugged in and powered up. If it
is a personal computer acting as a terminal, make sure it is
running terminal emulation software on the correct serial
port.Make sure the cable is connected firmly to both the terminal
and the FreeBSD computer. Make sure it is the right kind of
cable.Make sure the terminal and FreeBSD agree on the bps rate and
parity settings. If you have a video display terminal, make
sure the contrast and brightness controls are turned up. If it
is a printing terminal, make sure paper and ink are in good
supply.Make sure that a getty process is running
and serving the terminal. Type &prompt.root;
ps -axww|grep getty to get a
list of running getty processes. You should
see an entry for the terminal. For example, the display
22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1
shows that a getty is running on the second
serial port ttyd1 and is using the
std.38400 entry in
/etc/gettytab.If no getty process is running, make sure
you have enabled the port in /etc/ttys.
Make sure you have run kill -HUP 1.Garbage appears instead of a login promptMake sure the terminal and FreeBSD agree on the bps rate and
parity settings. Check the getty processes to make sure the
correct getty type is in use. If
not, edit /etc/ttys and run kill
-HUP 1.Characters appear doubled; the password appears when
typedSwitch the terminal (or the terminal emulation software)
from “half duplex” or “local echo” to
“full duplex.”Dialin ServiceContributed by &a.ghelmer;.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.PrerequisitesTo 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 will need certain versions of
FreeBSD, and knowledge of some terminology & modem and
cabling.FreeBSD VersionFirst, 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 (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.TerminologyA quick rundown of terminology:bpsBits per Second — the rate at which data is
transmittedDTEData Terminal Equipment — for example, your
computerDCEData Communications Equipment — your modemRS-232EIA standard for serial communications via hardwareIf you need more information about these terms and data
communications in general, the author remembers reading that
The RS-232 Bible (anybody have an ISBN?) is a
good reference.When talking about communications data rates, the author does
not use the term “baud”. Baud refers to the number of
electrical state transitions that may be made in a period of time,
while “bps” (bits per second) is the
“correct” term to use (at least it does not seem to
bother the curmudgeons quite a much).External vs. Internal ModemsExternal 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.Modems and CablesA background knowledge of these items is assumedYou know how to connect your modem to your computer so that
the two can communicate (unless you have an internal modem,
which does not need such a cable)You are familiar with your modem's command set, or know
where to look up needed commandsYou know how to configure your modem (probably via a
terminal communications program) so you can set the non-volatile
RAM parametersThe 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:Transmitted Data (SD)Received Data (RD)Request to Send (RTS)Clear to Send (CTS)Data Set Ready (DSR)Data Terminal Ready (DTR)Carrier Detect (CD)Signal Ground (SG)FreeBSD needs the RTS and
CTS signals for flow-control at speeds above
2400bps, the CD signal to detect when a call has
been answered or the line has been hung up, and the
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
do not 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 will 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.Serial Interface ConsiderationsFreeBSD 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 preferred. If the system has many active
serial ports or will have a heavy load, 16550A-based cards are
better for low-error-rate communications.Quick OverviewHere is the process that FreeBSD follows to accept dialup logins.
A getty process, spawned by
init, patiently waits to open the assigned serial
port (/dev/ttyd0, for our example). The command
ps ax might show this: 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0When a user dials the modem's line and the modems connect, the
CD line is asserted by the modem. The kernel
notices that carrier has been detected and completes
getty's open of the port. getty
sends a login: prompt at the specified initial line
speed. 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 getty's speed), getty tries
adjusting the line speeds until it receives reasonable
characters.We hope getty finds the correct speed and the
user sees a login: prompt. After the user enters
his/her login name, getty executes
/usr/bin/login, which completes the login by
asking for the user's password and then starting the user's
shell.Let's dive into the configuration...Kernel ConfigurationFreeBSD kernels typically come prepared to search for four serial
ports, known in the PC-DOS world as COM1:,
COM2:, COM3:, and
COM4:. FreeBSD can presently also handle
“dumb” multiport serial interface cards, such as the Boca
Board 1008 and 2016 (please see the manual page &man.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
/sbin/dmesg command to replay the kernel's boot
messages. In particular, look for messages that start with the
characters sio. Hint: to view just the messages
that have the word sio, use the command:&prompt.root; /sbin/dmesg | grep 'sio'For example, on a system with four serial ports, these are the
serial-port specific kernel boot messages: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 16550AIf your kernel does not recognize all of your serial ports, you
will 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” [the source for
which is in /usr/src/share/doc/smm] and
“FreeBSD Configuration Options” [in
/sys/conf/options and in
/sys/arch/conf/options.arch,
with arch for example being
i386] for more information on configuring and
building kernels. You may have to unpack the kernel source
distribution if have not installed the system sources already
(srcdist/srcsys.?? in FreeBSD 1.1,
srcdist/sys.?? 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 have
not already) by cding to
/sys/i386/conf. 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
YOURSYS, where YOURSYS is
the name of your system, but in upper-case letters. Edit the file,
and change the device lines:
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 siointrYou can comment-out or completely remove lines for devices you do
not have. If you have a multiport serial board, such as the Boca
Board BB2016, please see the &man.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.port "IO_COM1" is a substitution for
port 0x3f8, IO_COM2 is
0x2f8, IO_COM3 is
0x3e8, and IO_COM4 is
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
cannot 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 config as documented in “Building
Berkeley Kernels with Config” and the
&man.config.8; manual page to prepare a kernel building directory,
then build, install, and test the new kernel.Device Special FilesMost devices in the kernel are accessed through “device
special files”, which are located in the
/dev directory. The sio
devices are accessed through the
/dev/ttyd? (dial-in)
and /dev/cua0?
(call-out) devices. On FreeBSD version 1.1.5 and higher, there are
also initialization devices
(/dev/ttyid? and
/dev/cuai0?) and
locking devices
(/dev/ttyld? and
/dev/cual0?). The
initialization devices are used to initialize communications port
parameters each time a port is opened, such as
crtscts for modems which use
CTS/RTS signaling 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 &man.termios.4;,
&man.sio.4;, and &man.stty.1; for
information on the terminal settings, locking & initializing
devices, and setting terminal options, respectively.Making Device Special FilesA shell script called MAKEDEV in the
/dev directory manages the device special
files. (The manual page for &man.MAKEDEV.8; on FreeBSD 1.1.5 is
fairly bogus in its discussion of COM ports, so
ignore it.) To use MAKEDEV to make dialup device
special files for COM1: (port 0),
cd to /dev and issue the
command MAKEDEV ttyd0. Likewise, to make dialup
device special files for COM2: (port 1),
use MAKEDEV ttyd1.MAKEDEV not only creates the
/dev/ttyd? device
special files, but also creates the
/dev/cua0? (and all
of the initializing and locking special files under FreeBSD 1.1.5
and up) and removes the hardwired terminal special file
/dev/tty0?, if it
exists.After making new device special files, be sure to check the
permissions on the files (especially the
/dev/cua* files) to make sure that only users
who should have access to those device special files can read &
write on them — you probably do not want to allow your average
user to use your modems to dialout. The default permissions on the
/dev/cua* files should be sufficient: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/cual01These permissions allow the user uucp and
users in the group dialer to use the call-out
devices.Configuration FilesThere are three system configuration files in the
/etc directory that you will probably need to
edit to allow dialup access to your FreeBSD system. The first,
/etc/gettytab, contains configuration information
for the /usr/libexec/getty daemon. Second,
/etc/ttys holds information that tells
/sbin/init what tty devices
should have getty processes running on them.
Lastly, you can place port initialization commands in the
/etc/rc.serial script if you have FreeBSD 1.1.5.1
or higher; otherwise, you can initialize ports in the
/etc/rc.local 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 does not know
what a user's true data rate is, so full-screen programs like Emacs
will not 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
getty does not understand any particular modem's
connection speed reporting, getty gives a
login: message at an initial speed and watches the
characters that come back in response. If the user sees junk, it is
assumed that they know they should press the
<Enter> key until they see a recognizable
prompt. If the data rates do not match, getty sees
anything the user types as “junk”, tries going to the next
speed and gives the 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 does not 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./etc/gettytab/etc/gettytab is a &man.termcap.5;-style
file of configuration information for &man.getty.8;. Please see the
&man.gettytab.5; manual page for complete information on the
format of the file and the list of capabilities.Locked-Speed ConfigIf you are locking your modem's data communications rate at a
particular speed, you probably will not need to make any changes
to /etc/gettytab.Matching-Speed ConfigYou will need to setup an entry in
/etc/gettytab to give
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 D2400 entry. This
entry already exists in the FreeBSD 1.1.5.1
gettytab file, so you do not need to add it
unless it is missing under your version of FreeBSD:
#
# 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:If you have a higher speed modem, you will probably need to
add an entry in /etc/gettytab; here is an
entry you could use for a 14.4 Kbps modem with a top interface
speed of 19.2 Kbps:
#
# 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:On FreeBSD 1.1.5 and later, this will result in 8-bit, no
parity connections. Under FreeBSD 1.1, add
:np: parameters to the
std.xxx 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.
Communications rate cycling is implemented with the
nx= (“next table”) capability.
Each of the lines uses a tc= (“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 is an example of
a gettytab entry starting a 57.6 Kbps:
#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
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:If you have a slow CPU or a heavily loaded system and you do
not have 16550A-based serial ports, you may receive sio
“silo” errors at 57.6 Kbps./etc/ttys/etc/ttys is the list of
ttys for init to monitor.
/etc/ttys also provides security information to
login (user root may only
login on ttys marked secure). See the manual
page for
&man.ttys.5; for more information.You will need to either modify existing lines in
/etc/ttys or add new lines to make
init run 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:
ttyd0 "/usr/libexec/getty xxx" dialup onThe first item in the above line is the device special file for
this entry — ttyd0 means
/dev/ttyd0 is the file that this
getty will be watching. The second item,
"/usr/libexec/getty
xxx"
(xxx will be replaced by the initial
gettytab capability) is the process
init will run on the device. The third item,
dialup, is the default terminal type. The fourth
parameter, on, indicates to
init that the line is operational. There can be
a fifth parameter, secure, but it should only be
used for terminals which are physically secure (such as the system
console).The default terminal type (dialup in the
example above) may depend on local preferences.
dialup is the traditional default terminal type
on dialup lines so that users may customize their login scripts to
notice when the terminal is dialup and
automatically adjust their terminal type. However, the author finds
it easier at his site to specify vt102 as the
default terminal type, since the users just use VT102 emulation on
their remote systems.After you have made changes to /etc/ttys,
you may send the init process a
HUP signal to re-read the file. You can use the
command &prompt.root; kill -1
1 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 signaling
init.Locked-Speed ConfigFor a locked-speed configuration, your
ttys entry needs to have a fixed-speed entry
provided to getty. For a modem whose port
speed is locked at 19.2 Kbps, the ttys entry
might look like this:
ttyd0 "/usr/libexec/getty std.19200" dialup onIf your modem is locked at a different data rate, substitute
the appropriate name for the
std.speed entry for
std.19200 from
/etc/gettytab for your modem's data
rate.Matching-Speed ConfigIn a matching-speed configuration, your
ttys entry needs to reference the appropriate
beginning “auto-baud” (sic) entry in
/etc/gettytab. For example, if you added the
above suggested entry for a matching-speed modem that starts at
19.2 Kbps (the gettytab entry containing the
V19200 starting point), your
ttys entry might look like this:
ttyd0 "/usr/libexec/getty V19200" dialup on/etc/rc.serial or
/etc/rc.localHigh-speed modems, like V.32, V.32bis, and V.34 modems, need to
use hardware (RTS/CTS) flow control. You can
add stty commands to
/etc/rc.serial on FreeBSD 1.1.5.1 and up, or
/etc/rc.local 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,
/etc/rc.serial reads:
#!/bin/sh
#
# Serial port initial configuration
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuai01 crtsctsThis sets the termios flag
crtscts on serial port #1's
(COM2:) dialin and dialout initialization
devices.On an old FreeBSD 1.1 system, these entries were added to
/etc/rc.local to set the
crtscts flag on the devices:
# 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 crtsctsSince there is no 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 are not cleared by a miscreant.Modem SettingsIf you have a modem whose parameters may be permanently set in
non-volatile RAM, you will need to use a terminal program (such as
Telix under PC-DOS or tip under FreeBSD) to set the
parameters. Connect to the modem using the same communications speed
as the initial speed getty will use and configure
the modem's non-volatile RAM to match these requirements:CD asserted when connectedDTR asserted for operation; dropping DTR
hangs up line & resets modemCTS transmitted data flow controlDisable XON/XOFF flow controlRTS received data flow controlQuiet mode (no result codes)No command echoPlease 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:
ATZ
AT&C1&D2&H1&I0&R2&WYou 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:Switch 1: UP — DTR NormalSwitch 2: Do not care (Verbal Result Codes/Numeric Result
Codes)Switch 3: UP — Suppress Result CodesSwitch 4: DOWN — No echo, offline commandsSwitch 5: UP — Auto AnswerSwitch 6: UP — Carrier Detect NormalSwitch 7: UP — Load NVRAM DefaultsSwitch 8: Do not care (Smart Mode/Dumb Mode)Result codes should be disabled/suppressed for dialup modems to
avoid problems that can occur if getty mistakenly
gives a login: prompt to a modem that is in command
mode and the modem echoes the command or returns a result code. I
have heard this sequence can result in a extended, silly conversation
between getty and the modem.Locked-speed ConfigFor a locked-speed configuration, you will 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:
ATZ
AT&B1&WMatching-speed ConfigFor a variable-speed configuration, you will 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:
ATZ
AT&B2&WChecking the Modem's ConfigurationMost 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
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
ATZ and then 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.TroubleshootingHere are a few steps you can follow to check out the dialup modem
on your system.Checking out the FreeBSD systemHook 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 DTR indicator lights when the
login: prompt appears on the system's console
— if it lights up, that should mean that FreeBSD has started a
getty process on the appropriate communications
port and is waiting for the modem to accept a call.If the DTR indicator doesn't light, login to
the FreeBSD system through the console and issue a ps
ax to see if FreeBSD is trying to run a
getty process on the correct port. You should see
a lines like this among the processes displayed: 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1If you see something different, like this: 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0and the modem has not accepted a call yet, this means that
getty has completed its open on the
communications port. This could indicate a problem with the cabling
or a mis-configured modem, because getty should
not be able to open the communications port until
CD (carrier detect) has been asserted by the
modem.If you do not see any getty processes waiting
to open the desired
ttyd? port,
double-check your entries in /etc/ttys to see
if there are any mistakes there. Also, check the log file
/var/log/messages to see if there are any log
messages from init or getty
regarding any problems. If there are any messages, triple-check the
configuration files /etc/ttys and
/etc/gettytab, as well as the appropriate
device special files /dev/ttyd?, for any
mistakes, missing entries, or missing device special files.Try Dialing InTry dialing into the system; be sure to use 8 bits, no parity, 1
stop bit on the remote system. If you do not get a prompt right
away, or get garbage, try pressing <Enter>
about once per second. If you still do not see a
login: prompt after a while, try sending a
BREAK. If you are using a high-speed modem to do
the dialing, try dialing again after locking the dialing modem's
interface speed (via AT&B1 on a USR
Sportster, for example).If you still cannot get a login: prompt, check
/etc/gettytab again and double-check
thatThe initial capability name specified in
/etc/ttys for the line matches a name of a
capability in /etc/gettytabEach nx= entry matches another
gettytab capability nameEach tc= entry matches another
gettytab capability nameIf you dial but the modem on the FreeBSD system will not answer,
make sure that the modem is configured to answer the phone when
DTR is asserted. If the modem seems to be
configured correctly, verify that the DTR line is
asserted by checking the modem's indicator lights (if it has
any).If you have gone over everything several times and it still does
not work, take a break and come back to it later. If it still does
not work, perhaps you can send an electronic mail message to the
&a.questions;describing your modem and your problem, and the good
folks on the list will try to help.AcknowledgmentsThanks to these people for comments and advice:&a.kelly;for a number of good suggestionsDialout ServiceInformation integrated from FAQ.The following are tips to getting your host to be able to connect
over the modem to another computer. This is appropriate for
establishing a terminal session with a remote host.This is useful to log onto a BBS.This kind of connection can be extremely helpful to get a file on
the Internet if you have problems with PPP. If you need to ftp
something and PPP is broken, use the terminal session to ftp it. Then
use zmodem to transfer it to your machine.Why cannot I run tip or
cu?On your system, the programs tip and
cu are probably executable only by
uucp and group dialer. You
can use the group dialer to control who has
access to your modem or remote systems. Just add yourself to group
dialer.Alternatively, you can let everyone on your system run
tip and cu by typing:&prompt.root; chmod 4511 /usr/bin/tipYou do not have to run this command for cu,
since cu is just a hard link to
tip.My stock Hayes modem is not supported, what can I do?Actually, the man page for tip is out of date.
There is a generic Hayes dialer already built in. Just use
at=hayes in your /etc/remote
file.The Hayes driver is not smart enough to recognize some of the
advanced features of newer modems—messages like
BUSY, NO DIALTONE, or
CONNECT 115200 will just confuse it. You should
turn those messages off when you use tip (using
ATX0&W).Also, the dial timeout for tip is 60 seconds.
Your modem should use something less, or else tip will think there is
a communication problem. Try ATS7=45&W.Actually, as shipped tip does not yet support
it fully. The solution is to edit the file
tipconf.h in the directory
/usr/src/usr.bin/tip/tip Obviously you need the
source distribution to do this.Edit the line #define HAYES 0 to
#define HAYES 1. Then make and
make install. Everything works nicely after
that.How am I expected to enter these AT commands?Make what is called a “direct” entry in your
/etc/remote file. For example, if your modem is
hooked up to the first serial port, /dev/cuaa0,
then put in the following line:
cuaa0:dv=/dev/cuaa0:br#19200:pa=noneUse the highest bps rate your modem supports in the br capability.
Then, type tip cuaa0 and you will be connected to
your modem.If there is no /dev/cuaa0 on your system, do
this:&prompt.root; cd /dev
&prompt.root; MAKEDEV cuaa0Or use cu as root with the following command:&prompt.root; cu -lline -sspeedline is the serial port
(e.g./dev/cuaa0) and
speed is the speed
(e.g.57600). When you are done entering the AT
commands hit ~. to exit.The @ sign for the pn capability does not
work!The @ sign in the phone number capability tells
tip to look in /etc/phones for a phone number.
But the @ sign is also a special character in
capability files like /etc/remote. Escape it
with a backslash:
pn=\@How can I dial a phone number on the command line?Put what is called a “generic” entry in your
/etc/remote file. For example:
tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:Then you can things like:&prompt.root; tip -115200 5551234If you prefer cu over tip,
use a generic cu entry:
cu115200|Use cu to dial any number at 115200bps:\
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:and type:&prompt.root; cu 5551234 -s 115200Do I have to type in the bps rate every time I do that?Put in an entry for tip1200 or
cu1200, but go ahead and use whatever bps rate is
appropriate with the br capability. tip thinks a
good default is 1200 bps which is why it looks for a
tip1200 entry. You do not have to use 1200 bps,
though.I access a number of hosts through a terminal server.Rather than waiting until you are connected and typing
CONNECT <host> each time, use tip's
cm capability. For example, these entries in
/etc/remote:
pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:will let you type tip pain or tip
muffin to connect to the hosts pain or muffin; and
tip deep13 to get to the terminal server.Can tip try more than one line for each site?This is often a problem where a university has several modem lines
and several thousand students trying to use them...Make an entry for your university in
/etc/remote and use @ for the
pn capability:
big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:Then, list the phone numbers for the university in
/etc/phones:
big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114tip will try each one in the listed order, then
give up. If you want to keep retrying, run tip in
a while loop.Why do I have to hit CTRL+P twice to send CTRL+P once?CTRL+P is the default “force” character, used to tell
tip that the next character is literal data. You
can set the force character to any other character with the
~s escape, which means “set a
variable.”Type
~sforce=single-char
followed by a newline. single-char is any
single character. If you leave out
single-char, then the force character is
the nul character, which you can get by typing CTRL+2 or CTRL+SPACE.
A pretty good value for single-char is
SHIFT+CTRL+6, which I have seen only used on some terminal
servers.You can have the force character be whatever you want by
specifying the following in your $HOME/.tiprc
file:
force=<single-char>Suddenly everything I type is in UPPER CASE??You must have pressed CTRL+A, tip's
“raise character,” specially designed for people with
broken caps-lock keys. Use ~s as above and set the
variable raisechar to something reasonable. In
fact, you can set it to the same as the force character, if you never
expect to use either of these features.Here is a sample .tiprc file perfect for Emacs users who need to
type CTRL+2 and CTRL+A a lot:
force=^^
raisechar=^^The ^^ is SHIFT+CTRL+6.How can I do file transfers with tip?If you are talking to another UNIX system, you can send and
receive files with ~p (put) and
~t (take). These commands run
cat and echo on the remote
system to accept and send files. The syntax is:~plocal-fileremote-file~tremote-filelocal-fileThere is no error checking, so you probably should use another
protocol, like zmodem.How can I run zmodem with tip?To receive files, start the sending program on the remote end.
Then, type ~C rz to begin receiving them
locally.To send files, start the receiving program on the remote end.
Then, type ~C sz files
to send them to the remote system.
-
+ Setting Up the Serial Console
- &a.yokota; and &a.wpaul:
+ &a.yokota; and &a.wpaul;:The text is heavily based on
/sys/i386/boot/biosboot/README.serial written by
&a.wpaul;.IntroductionThe FreeBSD/i386 operating system can boot on a system with only
a dumb terminal on a serial port as a console. Such a configuration
should be useful for two classes of people; system administrators who
wish to install FreeBSD on a dedicated file/compute/terminal server
machines that have no keyboard or monitor attached, and developers who
want to debug the kernel or device drivers.Starting from version 3.1, FreeBSD/i386 employs a three stage
bootstrap. The first two stages are in the boot block code which is
stored at the beginning of the FreeBSD slice on the boot disk. The
boot block will then load and run the boot loader
(/boot/loader) as the third stage code. (See
&man.boot.8; and &man.loader.8; for more details on the boot
process.)In order to set up the serial console you must configure the boot
block code, the boot loader code and the kernel.In FreeBSD version 3.0, the boot loader does not exist and there
are only two stages in the bootstrap; the boot blocks directly load
the kernel into memory. If you are using FreeBSD 3.0, then you should
disregard any reference to the boot loader in this section. You can
still use the serial port as a console.FreeBSD versions 2.X are quite different from 3.X, in that the
serial port driver, &man.sio.4;, must be configured in a different
way. This chapter will not describe the settings for version 2.X
systems. If you are using these older versions of FreeBSD, please
consult /sys/i386/boot/biosboot/README.serial
instead.6 Steps to Set up the Serial ConsolePrepare a serial cable.You will need either a null-modem cable or a standard serial
cable and a null-modem adapter. See for
a discussion on serial cables.Unplug your keyboard.Most PC systems probe for the keyboard during the Power-On
Self-Test (POST) and will generate an error if the keyboard is not
detected. Some machines complain loudly about the lack of a
keyboard and will not continue to boot until it is plugged
in.If your computer complains about the error, but boots anyway,
then you do not have to do anything special. (One machine with a
Phoenix BIOS that I have here merely says Keyboard
failed then continues to boot normally.)If your computer refuses to boot without a keyboard attached
then you will have to configure the BIOS so that it ignores this
error (if it can). Consult your motherboard's manual for details
on how to do this.Setting the keyboard to “Not installed” in the
BIOS setup does not mean that you will not
be able to use your keyboard. All this does is tell the BIOS
not to probe for a keyboard at power-on so that it will not
complain if the keyboard is not plugged in. You can leave the
keyboard plugged in even with this flag set to “Not
installed” and the keyboard will still work.If your system has a PS/2 mouse, chances are very good that
you may have to unplug your mouse as well as your keyboard.
This is because PS/2 mice share some hardware with the keyboard,
and leaving the mouse plugged in can fool the keyboard probe
into thinking the keyboard is still there. It is said that a
Gateway 2000 Pentium 90Mhz system with an AMI BIOS that behaves
this way. In general this is not a problem since the mouse is
not much good without the keyboard anyway.Plug a dumb terminal into COM1:
(sio0).If you do not have a dumb terminal, you can use an old PC/XT
with a modem program, or the serial port on another UNIX box. If
you do not have a COM1:
(sio0), get one. At this time, there is
no way to select a port other than COM1:
for the boot blocks without recompiling the boot blocks. If you
are already using COM1: for another
device, you will have to temporarily remove that device and
install a new boot block and kernel once you get FreeBSD up and
running. (It is assumed that COM1: will
be available on a file/compute/terminal server anyway; if you
really need COM1: for something else
(and you can not switch that something else to
COM2: (sio1)),
then you probably should not even be bothering with all this in
the first place.)Make sure the configuration file of your kernel has
appropriate flags set for COM1:
(sio0).Relevant flags are:0x10Enables console support for this unit. The other
console flags are ignored unless this is set. Currently, at
most one unit can have console support; the first one (in
config file order) with this flag set is preferred. This
option alone will not make the serial port the console. Set
the following flag or use the
-h
option
described below, together with this flag.0x20Forces this unit to be the console (unless there is
another higher priority console), regardless of the
-h
option discussed below. This flag
replaces the COMCONSOLE option in FreeBSD
versions 2.X. The flag 0x20 must be used
together with the
0x10
flag.0x40Reserves this unit (in conjunction with
0x10) and makes the unit unavailable for
normal access. You should not set this flag to the serial
port unit which you want to use as the serial console. The
only use of this flag is to designate the unit for kernel
remote debugging. See for more
information on remote debugging.In FreeBSD 4.0-CURRENT or later the semantics of the
flag 0x40 are slightly different and
there is another flag to specify a serial port for remote
debugging.Example:
device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4See &man.sio.4; for more details.If the flags were not set, you need to run UserConfig (on a
different console) or recompile the kernel.Create boot.config in the root directory
of the a partition on the boot drive.This file will instruct the boot block code how you would like
to boot the system. In order to activate the serial console, you
need one or more of the following options—if you want
multiple options, include them all on the same line:
-h
Toggles internal and serial consoles. You can use this
to switch console devices. For instance, if you boot from
the internal (video) console, you can use
-h
to direct the boot loader and the kernel
to use the serial port as its console device. Alternatively,
if you boot from the serial port, you can use the
-h
to tell the boot loader and the kernel
to use the video display as the console instead.
-D
Toggles single and dual console configurations. In the
single configuration the console will be either the internal
console (video display) or the serial port, depending on the
state of the
-h
option above. In the dual
console configuration, both the video display and the
serial port will become the console at the same time,
regardless of the state of the
-h
option.
However, that the dual console configuration takes effect
only during the boot block is running. Once the boot loader
gets control, the console specified by the
-h
option becomes the only console.
-P
Makes the boot block probe the keyboard. If no keyboard
is found, the
-D
and
-h
options are automatically set.Due to space constraints in the current version of the
boot blocks, the
-P
option is capable of
detecting extended keyboards only. Keyboards with less
than 101 keys (and without F11 and F12 keys) may not be
detected. Keyboards on some laptop computers may not be
properly found because of this limitation. If this is to
be the case with your system, you have to abandon using
the
-P
option. Unfortunately there is no
workaround for this problem.Use either the
-P
option to select the
console automatically, or the
-h
option to
activate the serial console.You may include other options described in &man.boot.8; as
well.The options, except for
-P
, will be passed to
the boot loader (/boot/loader). The boot
loader will determine which of the internal video or the serial
port should become the console by examining the state of the
-h
option alone. This means that if you specify
the
-D
option but not the
-h
option in /boot.config, you can use the
serial port as the console only during the boot block; the boot
loader will use the internal video display as the console.Boot the machine.When you start your FreeBSD box, the boot blocks will echo the
contents of /boot.config to the console. For
example;/boot.config: -P
Keyboard: noThe second line appears only if you put
-P
in
/boot.config and indicates presence/absence
of the keyboard. These messages go to either serial or internal
console, or both, depending on the option in
/boot.config.OptionsMessage goes tononeinternal console
-h
serial console
-D
serial and internal consoles
-Dh
serial and internal consoles
-P
, keyboard presentinternal console
-P
, keyboard absentserial consoleAfter the above messages, there will be a small pause before
the boot blocks continue loading the boot loader and before any
further messages printed to the console. Under normal
circumstances, you do not need to interrupt the boot blocks, but
you may want to do so in order to make sure things are set up
correctly.Hit any key, other than Enter/Return, at the console to
interrupt the boot process. The boot blocks will then prompt you
for further action. You should now see something like:>> FreeBSD/i386 BOOT
Default: 0:wd(0,a)/boot/loader
boot:Verify the above message appears on either the serial or
internal console or both, according to the options you put in
/boot.config. If the message appears in the
correct console, hit Enter/Return to continue the boot
process.If you want the serial console but you do not see the prompt
on the serial terminal, something is wrong with your settings. In
the meantime, you enter
-h
and hit Enter/Return
(if possible) to tell the boot block (and then the boot loader and
the kernel) to choose the serial port for the console. Once the
system is up, go back and check what went wrong.After the boot loader is loaded and you are in the third stage of
the boot process you can still switch between the internal console and
the serial console by setting appropriate environment variables in the
boot loader. See .SummaryHere is the summary of various settings discussed in this section
and the console eventually selected.Case 1: You set the flags to 0x10 for sio0device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4Options in /boot.configConsole during boot blocksConsole during boot loaderConsole in kernelnothinginternalinternalinternal
-h
serialserialserial
-D
serial and internalinternalinternal
-Dh
serial and internalserialserial
-P
, keyboard presentinternalinternalinternal
-P
, keyboard absentserial and internalserialserialCase 2: You set the flags to 0x30 for sio0device sio0 at isa? port "IO_COM1" tty flags 0x30 irq 4Options in /boot.configConsole during boot blocksConsole during boot loaderConsole in kernelnothinginternalinternalserial
-h
serialserialserial
-D
serial and internalinternalserial
-Dh
serial and internalserialserial
-P
, keyboard presentinternalinternalserial
-P
, keyboard absentserial and internalserialserialTips for the Serial ConsoleSetting A Faster Serial Port SpeedBy default the serial port settings are set to 9600 baud, 8
bits, no parity, 1 stop bit. If you wish to change the speed, you
need to recompile at least the boot blocks. Add the following line
to /etc/make.conf and compile new boot
blocks:BOOT_COMCONSOLE_SPEED=19200If the serial console is configured in some other way than by
booting with
-h
, or if the serial console used by
the kernel is different from the one used by the boot blocks, then
you must also add the following option to the kernel configuration
file and compile a new kernel:options CONSPEED=19200Using Serial Port Other Than sio0 For
The ConsoleUsing a port other than sio0 as the
console requires some recompiling. If you want to use another
serial port for whatever reasons, recompile the boot blocks, the
boot loader and the kernel as follows.Get the kernel source.Edit /etc/make.conf and set
BOOT_COMCONSOLE_PORT to the address of the
port you want to use (0x3F8, 0x2F8, 0x3E8 or 0x2E8). Only
sio0 through
sio3 (COM1:
through COM4:) can be used; multiport
serial cards will not work. No interrupt setting is
needed.Create a custom kernel configuration file and add
appropriate flags for the serial port you want to use. For
example, if you want to make sio1
(COM2:) the console:device sio1 at isa? port "IO_COM2" tty flags 0x10 irq 3ordevice sio1 at isa? port "IO_COM2" tty flags 0x30 irq 3The console flags for the other serial ports should not be
set.Recompile and install the boot blocks:&prompt.root; cd /sys/boot/i386/boot2
&prompt.root; make
&prompt.root; make installRecompile and install the boot loader:&prompt.root; cd /sys/boot/i386/loader
&prompt.root; make
&prompt.root; make installRebuild and install the kernel.Write the boot blocks to the boot disk with
&man.disklabel.8; and boot from the new kernel.Entering the DDB Debugger from the Serial LineIf you wish to drop into the kernel debugger from the serial
console (useful for remote diagnostics, but also dangerous if you
generate a spurious BREAK on the serial port!) then you should
compile your kernel with the following options:options BREAK_TO_DEBUGGER
options DDBGetting a Login Prompt on the Serial ConsoleWhile this is not required, you may wish to get a
login prompt over the serial line, now that you
can see boot messages and can enter the kernel debugging session
through the serial console. Here is how to do it.Open the file /etc/ttys with an editor
and locate the lines:ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off securettyd0 through ttyd3
corresponds to COM1 through
COM4. Change off to
on for the desired port. If you have changed the
speed of the serial port, you need to change
std.9600 to match the current setting, e.g.
std.19200.You may also want to change the terminal type from
unknown to the actual type of your serial
terminal.After editing the file, you must kill -HUP 1
to make this change take effect.Changing Console from the Boot LoaderPrevious sections described how to set up the serial console by
tweaking the boot block. This section shows that you can specify the
console by entering some commands and environment variables in the
boot loader. As the boot loader is invoked as the third stage of the
boot process, after the boot block, the settings in the boot loader
will override the settings in the boot block.Setting Up the Serial ConsoleYou can easily specify the boot loader and the kernel to use the
serial console by writing just one line in
/boot/loader.rc:set console=comconsoleThis will take effect regardless of the settings in the boot
block discussed in the previous section.You had better put the above line as the first line of
/boot/loader.rc so as to see boot messages on
the serial console as early as possible.Likewise, you can specify the internal console as:set console=vidconsoleIf you do not set the boot loader environment variable
console, the boot loader, and subsequently the
kernel, will use whichever console indicated by the
-h
option in the boot block.In versions 3.2 or later, you may specify the console in
/boot/loader.conf.local or
/boot/loader.conf, rather than in
/boot/loader.rc. In this method your
/boot/loader.rc should look like:include /boot/loader.4th
startThen, create /boot/loader.conf.local and
put the following line there.console=comconsoleorconsole=vidconsoleSee &man.loader.conf.5; for more information.At the moment, the boot loader has no option equivalent to the
-P
option in the boot block, and there is no
provision to automatically select the internal console and the
serial console based on the presence of the keyboard.Using Serial Port Other than sio0 for
the ConsoleYou need to recompile the boot loader to use a serial port other
than sio0 for the serial console. Follow the
procedure described in .CaveatsThe idea here is to allow people to set up dedicated servers that
require no graphics hardware or attached keyboards. Unfortunately,
while (most?) every system will let you boot without a keyboard, there
are quite a few that will not let you boot without a graphics adapter.
Machines with AMI BIOSes can be configured to boot with no graphics
adapter installed simply by changing the `graphics adapter' setting in
the CMOS configuration to `Not installed.'However, many machines do not support this option and will refuse
to boot if you have no display hardware in the system. With these
machines, you'll have to leave some kind of graphics card plugged in,
(even if it's just a junky mono board) although you will not have to
attach a monitor into it. You might also try installing an AMI
BIOS.
diff --git a/en_US.ISO_8859-1/books/handbook/bibliography/chapter.sgml b/en_US.ISO_8859-1/books/handbook/bibliography/chapter.sgml
index 7e25baecd3..8d62f217d8 100644
--- a/en_US.ISO_8859-1/books/handbook/bibliography/chapter.sgml
+++ b/en_US.ISO_8859-1/books/handbook/bibliography/chapter.sgml
@@ -1,478 +1,478 @@
BibliographyWhile the manual pages provide the definitive 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.
-
+ Books & Magazines Specific to FreeBSDInternational books &
Magazines:Using
FreeBSD (in Chinese).FreeBSD for PC 98'ers (in Japanese), published by SHUWA System
Co, LTD. ISBN 4-87966-468-5 C3055 P2900E.FreeBSD (in Japanese), published by CUTT. ISBN 4-906391-22-2
C3055 P2400E.Complete Introduction to FreeBSD (in Japanese), published by Shoeisha Co., Ltd. ISBN 4-88135-473-6 P3600E.Personal UNIX Starter Kit FreeBSD (in Japanese), published by ASCII. ISBN 4-7561-1733-3 P3000E.FreeBSD Handbook (Japanese translation), published by ASCII. ISBN 4-7561-1580-2
P3800E.FreeBSD mit Methode (in German), published by Computer und
Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.FreeBSD Install and Utilization Manual (in Japanese), published by Mainichi Communications Inc..English language books & Magazines:
The Complete FreeBSD, published by Walnut Creek CDROM.
-
+ Users' GuidesComputer Systems Research Group, UC Berkeley. 4.4BSD
User's Reference Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-075-9Computer Systems Research Group, UC Berkeley. 4.4BSD
User's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-076-7UNIX in a Nutshell. O'Reilly &
Associates, Inc., 1990. ISBN 093717520XMui, Linda. What You Need To Know When You Can't Find
Your UNIX System Administrator. O'Reilly &
Associates, Inc., 1995. ISBN 1-56592-104-6Ohio State
University has written a UNIX
Introductory Course which is available online in HTML and
postscript format.Jpman Project, Japan
FreeBSD Users Group. FreeBSD User's
Reference Manual (Japanese translation). Mainichi Communications
Inc., 1998. ISBN4-8399-0088-4 P3800E.
-
+ Administrators' GuidesAlbitz, Paul and Liu, Cricket. DNS and
BIND, 2nd Ed. O'Reilly & Associates, Inc., 1997.
ISBN 1-56592-236-0Computer Systems Research Group, UC Berkeley. 4.4BSD
System Manager's Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-080-5Costales, Brian, et al. Sendmail, 2nd Ed.
O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0Frisch, Æleen. Essential System
Administration, 2nd Ed. O'Reilly & Associates,
Inc., 1995. ISBN 1-56592-127-5Hunt, Craig. TCP/IP Network
Administration. O'Reilly & Associates, Inc., 1992.
ISBN 0-937175-82-XNemeth, Evi. UNIX System Administration
Handbook. 2nd Ed. Prentice Hall, 1995. ISBN
0131510517Stern, Hal Managing NFS and NIS O'Reilly
& Associates, Inc., 1991. ISBN 0-937175-75-7Jpman Project, Japan
FreeBSD Users Group. FreeBSD System
Administrator's Manual (Japanese translation). Mainichi Communications
Inc., 1998. ISBN4-8399-0109-0 P3300E.
-
+ Programmers' GuidesAsente, Paul. X Window System Toolkit.
Digital Press. ISBN 1-55558-051-3Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Reference Manual. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-078-3Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-079-1Harbison, Samuel P. and Steele, Guy L. Jr. C: A
Reference Manual. 4rd ed. Prentice Hall, 1995.
ISBN 0-13-326224-3Kernighan, Brian and Dennis M. Ritchie. The C
Programming Language.. PTR Prentice Hall, 1988.
ISBN 0-13-110362-9Lehey, Greg. Porting UNIX Software.
O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7Plauger, P. J. The Standard C Library.
Prentice Hall, 1992. ISBN 0-13-131509-9Stevens, W. Richard. Advanced Programming in the UNIX
Environment. Reading, Mass. : Addison-Wesley, 1992
ISBN 0-201-56317-7Stevens, W. Richard. UNIX Network
Programming. 2nd Ed, PTR Prentice Hall, 1998. ISBN
0-13-490012-XWells, Bill. “Writing Serial Drivers for UNIX”.
Dr. Dobb's Journal. 19(15), December 1994.
pp68-71, 97-99.
-
+ Operating System InternalsAndleigh, Prabhat K. UNIX System
Architecture. Prentice-Hall, Inc., 1990. ISBN
0-13-949843-5Jolitz, William. “Porting UNIX to the 386”.
Dr. Dobb's Journal. January 1991-July
1992.Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and
John Quarterman The Design and Implementation of the
4.3BSD UNIX Operating System. Reading, Mass. :
Addison-Wesley, 1989. ISBN 0-201-06196-1Leffler, Samuel J., Marshall Kirk McKusick, The Design
and Implementation of the 4.3BSD UNIX Operating System: Answer
Book. Reading, Mass. : Addison-Wesley, 1991. ISBN
0-201-54629-9McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and
John Quarterman. The Design and Implementation of the
4.4BSD Operating System. Reading, Mass. :
Addison-Wesley, 1996. ISBN 0-201-54979-4Stevens, W. Richard. TCP/IP Illustrated, Volume 1:
The Protocols. Reading, Mass. : Addison-Wesley,
1996. ISBN 0-201-63346-9Schimmel, Curt. Unix Systems for Modern
Architectures. Reading, Mass. : Addison-Wesley, 1994.
ISBN 0-201-63338-8Stevens, W. Richard. TCP/IP Illustrated, Volume 3:
TCP for Transactions, HTTP, NNTP and the UNIX Domain
Protocols. Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63495-3Vahalia, Uresh. UNIX Internals -- The New
Frontiers. Prentice Hall, 1996. ISBN
0-13-101908-2Wright, Gary R. and W. Richard Stevens. TCP/IP
Illustrated, Volume 2: The Implementation. Reading,
Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X
-
+ Security ReferenceCheswick, William R. and Steven M. Bellovin. Firewalls
and Internet Security: Repelling the Wily Hacker.
Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-63357-4Garfinkel, Simson and Gene Spafford. Practical UNIX
Security. 2nd Ed. O'Reilly & Associates, Inc.,
1996. ISBN 1-56592-148-8Garfinkel, Simson. PGP Pretty Good
Privacy O'Reilly & Associates, Inc., 1995. ISBN
1-56592-098-8
-
+ Hardware ReferenceAnderson, Don and Tom Shanley. Pentium Processor
System Architecture. 2nd Ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-40992-5Ferraro, Richard F. Programmer's Guide to the EGA,
VGA, and Super VGA Cards. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-62490-7Intel Corporation publishes documentation on their CPUs,
chipsets and standards on their developer web site,
usually as PDF files.Shanley, Tom. 80486 System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40994-1Shanley, Tom. ISA System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40996-8Shanley, Tom. PCI System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40993-3Van Gilluwe, Frank. The Undocumented PC.
Reading, Mass: Addison-Wesley Pub. Co., 1994. ISBN
0-201-62277-7
-
+ UNIX HistoryLion, John Lion's Commentary on UNIX, 6th Ed. With
Source Code. ITP Media Group, 1996. ISBN
1573980137Raymond, Eric S. The New Hacker's Dictionary, 3rd
edition. MIT Press, 1996. ISBN
0-262-68092-0. Also known as the Jargon
FileSalus, Peter H. A quarter century of UNIX.
Addison-Wesley Publishing Company, Inc., 1994. ISBN
0-201-54777-5Simon Garfinkel, Daniel Weise, Steven Strassmann. The
UNIX-HATERS Handbook. IDG Books Worldwide, Inc.,
1994. ISBN 1-56884-203-1Don Libes, Sandy Ressler Life with UNIX
— special edition. Prentice-Hall, Inc., 1989. ISBN
0-13-536657-7The BSD family tree. 1997. ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree or local on a FreeBSD-current machine.The BSD Release Announcements collection.
1997. http://www.de.FreeBSD.org/de/ftp/releases/Networked Computer Science Technical Reports
Library. http://www.ncstrl.org/Old BSD releases from the Computer Systems Research
group (CSRG). http://www.mckusick.com/csrg/:
The 4CD set covers all BSD versions from 1BSD to 4.4BSD and
4.4BSD-Lite2 (but not 2.11BSD, unfortunately). As well, the last
disk holds the final sources plus the SCCS files.
-
+ Magazines and JournalsThe C/C++ Users Journal. R&D
Publications Inc. ISSN 1075-2838Sys Admin — The Journal for UNIX System
Administrators Miller Freeman, Inc., ISSN
1061-2688
diff --git a/en_US.ISO_8859-1/books/handbook/cutting-edge/chapter.sgml b/en_US.ISO_8859-1/books/handbook/cutting-edge/chapter.sgml
index 1dc422ae30..5b172dff2a 100644
--- a/en_US.ISO_8859-1/books/handbook/cutting-edge/chapter.sgml
+++ b/en_US.ISO_8859-1/books/handbook/cutting-edge/chapter.sgml
@@ -1,3504 +1,3504 @@
The Cutting Edge: FreeBSD-current and FreeBSD-stableFreeBSD is under constant development between releases. For people
who want to be on the cutting edge, there are several easy mechanisms for
keeping your system in sync with the latest developments. Be warned: the
cutting edge is not for everyone! This chapter will help you decide if you
want to track the development system, or stick with one of the released
versions.Staying Current with FreeBSDContributed by &a.jkh;.What is FreeBSD-current?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
un-compilable. 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!Who needs FreeBSD-current?FreeBSD-current is made generally available for 3 primary interest
groups:Members of the FreeBSD group who are actively working on some
part of the source tree and for whom keeping “current”
is an absolute requirement.Members of the FreeBSD group who are active testers, 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.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 reading, not
running). These people also make the occasional comment or
contribute code.What is FreeBSD-current not?A fast-track to getting pre-release bits because you heard
there is some cool new feature in there and you want to be the
first on your block to have it.A quick way of getting bug fixes.In any way “officially supported” by us. We do
our best to help people genuinely in one of the 3
“legitimate” FreeBSD-current categories, but we simply
do not have the time to provide tech support
for it. This is not because we are mean and nasty people who do
not like helping people out (we would not even be doing FreeBSD if
we were), it is literally because we cannot answer 400 messages a
day and actually work on FreeBSD! I am sure
that, if given the choice between having us answer lots of
questions or continuing to improve FreeBSD, most of you would vote
for us improving it.Using FreeBSD-currentJoin the &a.current; and the &a.cvsall; . This is not just a
good idea, it is essential. If you are not
on the FreeBSD-current mailing list, you will
not see the comments that people are making about the current
state of the system and thus will probably end up stumbling over a
lot of problems that others have already found and solved. Even
more importantly, you will miss out on important bulletins which
may be critical to your system's continued health.The &a.cvsall; mailing list will allow you to see the commit
log entry for each change as it is made along with any pertinent
information on possible side-effects.To join these lists, send mail to
&a.majordomo; and specify:
subscribe freebsd-current
subscribe cvs-all
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.Grab the sources from ftp.FreeBSD.org. You can do this in three
ways:Use the CTM facility. Unless
you have a good TCP/IP connection at a flat rate, this is
the way to do it.Use the cvsup program with
this
supfile. This is the second most recommended
method, since it allows you to grab the entire collection
once and then only what has changed from then on. Many people
run cvsup from cron and keep their sources up-to-date
automatically. For a fairly easy interface to this, simply
type:
Use ftp. The source tree for
FreeBSD-current is always “exported” on: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/.
We also use wu-ftpd which allows
compressed/tar'd grabbing of whole trees. e.g. you
see:usr.bin/lexYou can do:
ftp>cd usr.binftp>get lex.tar
and it will get the whole directory for you as a
tar file.Essentially, if you need rapid on-demand access to the source
and communications bandwidth is not a consideration, use
cvsup or ftp. Otherwise,
use CTM.If you are grabbing the sources to run, and not just look at,
then grab all 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.Before compiling current, read the Makefile in
/usr/src carefully. You should at least run
a make world the first time
through as part of the upgrading process. Reading the &a.current;
will keep you up-to-date on other bootstrapping procedures that
sometimes become necessary as we move towards the next
release.Be active! If you are 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!Staying Stable with FreeBSDContributed by &a.jkh;.What is FreeBSD-stable?FreeBSD-stable is our development branch for a more low-key and
conservative set of changes intended for our next mainstream release.
Changes of an experimental or untested nature do not go into this
branch (see FreeBSD-current).Who needs FreeBSD-stable?If you are a commercial user or someone who puts maximum stability
of their FreeBSD system before all other concerns, you should consider
tracking stable. This is especially true if you
have installed the most recent release (&rel.current;-RELEASE
at the time of this writing) since the stable
branch is effectively a bug-fix stream relative to the previous
release.The stable tree endeavors, above all, to be
fully compilable and stable at all times, but we do occasionally
make mistakes (these are still active sources with
quickly-transmitted updates, after all). We also do our best to
thoroughly test fixes in current before
bringing them into stable, but sometimes our
tests fail to catch every case. If something breaks for you in
stable, please let us know
immediately! (see next section).Using FreeBSD-stableJoin the &a.stable;. This will keep you informed of
build-dependencies that may appear in stable
or any other issues requiring special attention. Developers will
also make announcements in this mailing list when they are
contemplating some controversial fix or update, giving the users a
chance to respond if they have any issues to raise concerning the
proposed change.The &a.cvsall; mailing list will allow you to see the commit
log entry for each change as it is made along with any pertinent
information on possible side-effects.To join these lists, send mail to &a.majordomo; and specify:
subscribe freebsd-stable
subscribe cvs-all
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.If you are installing a new system and want it to be as stable
as possible, you can simply grab the latest dated branch snapshot
from ftp://releng3.FreeBSD.org/pub/FreeBSD/
and install it like any other release.If you are already running a previous release of FreeBSD and wish
to upgrade via sources then you can easily do so from ftp.FreeBSD.org. This can be done in one
of three ways:Use the CTM facility. Unless
you have a good TCP/IP connection at a flat rate, this is
the way to do it.Use the cvsup program with
this
supfile. This is the second most recommended
method, since it allows you to grab the entire collection
once and then only what has changed from then on. Many people
run cvsup from cron to keep their sources up-to-date
automatically. For a fairly easy interface to this, simply
type;
Use ftp. The source tree for
FreeBSD-stable is always “exported” on: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/We also use wu-ftpd which allows
compressed/tar'd grabbing of whole trees. e.g. you
see:usr.bin/lexYou can do:
ftp>cd usr.binftp>get lex.tar
and it will get the whole directory for you as a
tar file.Essentially, if you need rapid on-demand access to the source
and communications bandwidth is not a consideration, use
cvsup or ftp. Otherwise,
use CTM.Before compiling stable, read the Makefile in
/usr/src carefully. You should at least run
a make world the first time
through as part of the upgrading process. Reading the &a.stable;
will keep you up-to-date on other bootstrapping procedures that
sometimes become necessary as we move towards the next
release.Synchronizing Source Trees over the InternetContributed by &a.jkh;.There are various ways of using an Internet (or email) connection to
stay up-to-date with any given area of the FreeBSD project sources, or
all areas, depending on what interests you. The primary services we
offer are Anonymous CVS, CVSup, and CTM.Anonymous CVS and
CVSup use the pull model
of updating sources. In the case of CVSup
the user (or a cron script) invokes the cvsup
program, and it interacts with a cvsupd server
somewhere to bring your files up to date. The updates you receive are
up-to-the-minute and you get them when, and only when, you want them.
You can easily restrict your updates to the specific files or
directories that are of interest to you. Updates are generated on the
fly by the server, according to what you have and what you want to have.
Anonymous CVS is quite a bit more simplistic
than CVSup in that it's just an extension to
CVS which allows it to pull changes directly
from a remote CVS repository. CVSup can do
this far more efficiently, but Anonymous CVS
is easier to use.CTM, on the other hand, does not
interactively compare the sources you have with those on the master
archive or otherwise pull them across.. Instead, a script which
identifies changes in files since its previous run is executed several
times a day on the master CTM machine, any detected changes being
compressed, stamped with a sequence-number and encoded for transmission
over email (in printable ASCII only). Once received, these “CTM
deltas” can then be handed to the &man.ctm.rmail.1; utility which
will automatically decode,
verify and apply the changes to the user's copy of the sources. This
process is far more efficient than CVSup, and
places less strain on our server resources since it is a
push rather than a pull
model.There are other trade-offs, of course. If you inadvertently wipe
out portions of your archive, CVSup will
detect and rebuild the damaged portions for you.
CTM won't do this, and if you wipe some
portion of your source tree out (and don't have it backed up) then you
will have to start from scratch (from the most recent CVS “base
delta”) and rebuild it all with CTM or, with anoncvs, simply
delete the bad bits and resync.For more information on Anonymous CVS,
CTM, and CVSup,
please see one of the following sections:Anonymous CVSContributed by &a.jkh;IntroductionAnonymous CVS (or, as it is otherwise known,
anoncvs) is a feature provided by the CVS
utilities bundled with FreeBSD for synchronizing with a remote CVS
repository. Among other things, it allows users of FreeBSD to
perform, with no special privileges, read-only CVS operations
against one of the FreeBSD project's official anoncvs servers. To
use it, one simply sets the CVSROOT environment
variable to point at the appropriate anoncvs server,
provides the well-known password anoncvs
with the cvs login command, and then uses
the &man.cvs.1; command to access it like any local
repository.While it can also be said that the CVSup and anoncvs
services both perform essentially the same function, there are
various trade-offs which can influence the user's choice of
synchronization methods. In a nutshell,
CVSup is much more efficient in its usage
of network resources and is by far the most technically
sophisticated of the two, but at a price. To use
CVSup, a special client must first be
installed and configured before any bits can be grabbed, and then
only in the fairly large chunks which
CVSup calls
collections.Anoncvs, by contrast, can be used to
examine anything from an individual file to a specific program (like
ls or grep) by referencing the
CVS module name. Of course, anoncvs is
also only good for read-only operations on the CVS repository, so if
it's your intention to support local development in one repository
shared with the FreeBSD project bits then
CVSup is really your only option.Using Anonymous CVSConfiguring &man.cvs.1; to use an Anonymous CVS repository is a
simple matter of setting the CVSROOT environment
variable to point to one of the FreeBSD project's
anoncvs servers. At the time of this writing,
the following servers are available:USA:
:pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
(Use cvs login and enter the password
anoncvs when prompted.)Since CVS allows one to “check out” virtually any
version of the FreeBSD sources that ever existed (or, in some cases,
will exist :), you need to be familiar with the
revision (
-r
) flag to &man.cvs.1; and what some of
the permissible values for it in the FreeBSD Project repository
are.There are two kinds of tags, revision tags and branch tags. A
revision tag refers to a specific revision. Its meaning stays the
same from day to day. A branch tag, on the other hand, refers to
the latest revision on a given line of development, at any given
time. Because a branch tag does not refer to a specific revision,
it may mean something different tomorrow than it means today.Here are the branch tags that users might be interested
in:HEADSymbolic name for the main line, or FreeBSD-current. Also
the default when no revision is specified.RELENG_3The line of development for FreeBSD-3.x, also known as
FreeBSD-stable. Not valid for the ports collection.RELENG_2_2The line of development for FreeBSD-2.2.x, also known as
2.2-stable. This branch is mostly obsolete. Not valid for
the ports collection.Here are the revision tags that users might be interested
in:RELENG_3_4_0_RELEASEFreeBSD-3.4. Not valid for the ports collection.RELENG_3_3_0_RELEASEFreeBSD-3.3. Not valid for the ports collection.RELENG_3_2_0_RELEASEFreeBSD-3.2. Not valid for the ports collection.RELENG_3_1_0_RELEASEFreeBSD-3.1. Not valid for the ports collection.RELENG_3_0_0_RELEASEFreeBSD-3.0. Not valid for the ports collection.RELENG_2_2_8_RELEASEFreeBSD-2.2.8. Not valid for the ports collection.RELENG_2_2_7_RELEASEFreeBSD-2.2.7. Not valid for the ports collection.RELENG_2_2_6_RELEASEFreeBSD-2.2.6. Not valid for the ports collection.RELENG_2_2_5_RELEASEFreeBSD-2.2.5. Not valid for the ports collection.RELENG_2_2_2_RELEASEFreeBSD-2.2.2. Not valid for the ports collection.RELENG_2_2_1_RELEASEFreeBSD-2.2.1. Not valid for the ports collection.RELENG_2_2_0_RELEASEFreeBSD-2.2.0. Not valid for the ports collection.When you specify a branch tag, you normally receive the latest
versions of the files on that line of development. If you wish to
receive some past version, you can do so by specifying a date with
the
-D date
flag. See the &man.cvs.1; man page
for more details.ExamplesWhile it really is recommended that you read the manual page for
&man.cvs.1; thoroughly before doing anything, here are some
quick examples which essentially show how to use Anonymous
CVS:Checking out something from -current (&man.ls.1;) and
deleting it again:
&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
&prompt.user; cvs loginAt the prompt, enter the passwordanoncvs.
&prompt.user; cvs co ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logoutChecking out the version of &man.ls.1; in the 2.2-stable
branch:
&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
&prompt.user; cvs loginAt the prompt, enter the passwordanoncvs.
&prompt.user; cvs co -rRELENG_2_2 ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logoutCreating a list of changes (as unidiffs) to &man.ls.1;
&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
&prompt.user; cvs loginAt the prompt, enter the passwordanoncvs.
&prompt.user; cvs rdiff -u -rRELENG_2_2_2_RELEASE -rRELENG_2_2_6_RELEASE ls
&prompt.user; cvs logoutFinding out what other module names can be used:
&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs
&prompt.user; cvs loginAt the prompt, enter the passwordanoncvs.
&prompt.user; cvs co modules
&prompt.user; more modules/modules
&prompt.user; cvs release -d modules
&prompt.user; cvs logoutOther ResourcesThe following additional resources may be helpful in learning
CVS:CVS Tutorial from Cal Poly.Cyclic Software,
commercial maintainers of CVS.CVSWeb is
the FreeBSD Project web interface for CVS.CTMContributed by &a.phk;. Updated
19-October-1997.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
CTM for other things.Why should I use CTM?CTM will give you a local copy of the
FreeBSD source trees. There are a number of “flavors”
of the tree available. Whether you wish to track the entire cvs
tree or just one of the branches, CTM can
provide you the information. If you are an active developer on
FreeBSD, but have lousy or non-existent TCP/IP connectivity, or
simply wish to have the changes automatically sent to you,
CTM was made for you. You will need to
obtain up to three deltas per day for the most active branches.
However, you should consider having them sent by automatic email.
The sizes of the updates are always kept as small as possible. This
is typically less than 5K, with an 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
related to working directly from the development sources rather than
a pre-packaged release. This is particularly true if you choose the
“current” sources. It is recommended that you read
Staying current with FreeBSD.What do I need to use CTM?You will need two things: The CTM
program and the initial deltas to feed it (to get up to
“current” levels).The CTM program has been part of
FreeBSD ever since version 2.0 was released, and lives in
/usr/src/usr.sbin/CTM if you have a copy of the
source online.If you are running a pre-2.0 version of FreeBSD, you can fetch
the current CTM sources directly
from:ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm/The “deltas” you feed CTM
can be had two ways, FTP or e-mail. If you have general FTP access
to the Internet then the following FTP sites support access to
CTM:ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/or see section mirrors.FTP the relevant directory and fetch the
README file, starting from there.If you may wish to get your deltas via email:Send email to &a.majordomo; to subscribe to one of the
CTM distribution lists.
“ctm-cvs-cur” supports the entire cvs tree.
“ctm-src-cur” supports the head of the development
branch. “ctm-src-2_2” supports the 2.2 release branch,
etc. (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 CTM
updates in the mail, you may use the ctm_rmail
program to unpack and apply them. You can actually use the
ctm_rmail program directly from a entry in
/etc/aliases if you want to have the process
run in a fully automated fashion. Check the
ctm_rmail man page for more details.No matter what method you use to get the
CTM deltas, you should subscribe to the
ctm-announce@FreeBSD.org mailing list. In the
future, this will be the only place where announcements concerning
the operations of the CTM system will
be posted. Send an email to &a.majordomo; with a single line of
subscribe ctm-announce to get added to the
list.Starting off with CTM for the first
timeBefore you can start using CTM
deltas, you will need to get to a starting point for the deltas
produced subsequently to it.First you should determine what you already have. Everyone can
start from an “empty” directory. You must use an
initial “Empty&rdquo delta to start off your
CTM supported tree. At some point it is
intended that one of these “started” deltas be
distributed on the CD for your convenience. This does not currently
happen however.However, since the trees are many tens of megabytes, you should
prefer to start from something already at hand. If you have a
RELEASE CD, you can copy or extract an initial source from it. This
will save a significant transfer of data.You can recognize these “starter” deltas by the
X appended to the number
(src-cur.3210XEmpty.gz for instance). The
designation following the X corresponds to the
origin of your initial “seed”.
Empty is an empty directory. As a rule a base
transition from Empty is produced every 100
deltas. By the way, they are large! 25 to 30 Megabytes of
gzip'ed data is common for the
XEmpty deltas.Once you've picked a base delta to start from, you will also
need all deltas with higher numbers following it.Using CTM in your daily lifeTo apply the deltas, simply say:&prompt.root; cd /where/ever/you/want/the/stuff
&prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.*CTM understands deltas which have
been put through gzip, so you do not need to
gunzip them first, this saves disk space.Unless it feels very secure about the entire process,
CTM will not touch your tree. To verify
a delta you can also use the
-c
flag and
CTM will not actually touch your tree; it
will merely verify the integrity of the delta and see if it would
apply cleanly to your current tree.There are other options to CTM as
well, see the manual pages or look in the sources for more
information.I would also be very happy if somebody could help with the
“user interface” portions, as I have realized that I
cannot make up my mind on what options should do what, how and
when...That's really all there is to it. Every time you get a new
delta, just run it through CTM to keep
your sources up to date.Do not 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
fdwrite to make a copy.Keeping your local changesAs a developer one would like to experiment with and change
files in the source tree. CTM supports
local modifications in a limited way: before checking for the
presence of a file foo, it first looks for
foo.ctm. If this file exists, CTM will operate
on it instead of foo.This behaviour gives us a simple way to maintain local changes:
simply copy the files you plan to modify to the corresponding file
names with a .ctm suffix. Then you can freely
hack the code, while CTM keeps the .ctm file
up-to-date.Other interesting CTM optionsFinding out exactly what would be touched by an
updateYou can determine the list of changes that
CTM will make on your source repository
using the
-l
option to
CTM.This is useful if you would like to keep logs of the changes,
pre- or post- process the modified files in any manner, or just
are feeling a tad paranoid :-).Making backups before updatingSometimes you may want to backup all the files that would be
changed by a CTM update.Specifying the
-B backup-file
option causes
CTM to backup all files that would be
touched by a given CTM delta to
backup-file.Restricting the files touched by an updateSometimes you would be interested in restricting the scope of
a given CTM update, or may be
interested in extracting just a few files from a sequence of
deltas.You can control the list of files that
CTM would operate on by specifying
filtering regular expressions using the
-e
and
-x
options.For example, to extract an up-to-date copy of
lib/libc/Makefile from your collection of
saved CTM deltas, run the commands:&prompt.root; cd /where/ever/you/want/to/extract/it/
&prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*For every file specified in a CTM
delta, the
-e
and
-x
options are
applied in the order given on the command line. The file is
processed by CTM only if it is marked
as eligible after all the
-e
and
-x
options are applied to it.Future plans for CTMTons of them:Use some kind of authentication into the CTM system, so as
to allow detection of spoofed CTM updates.Clean up the options to CTM, they
became confusing and counter intuitive.The bad news is that I am very busy, so any help in doing this
will be most welcome. And do not forget to tell me what you want
also...Miscellaneous stuffAll 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 sec-cur sequence too.
There is a sequence of deltas for the 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 will consider setting
it up.Thanks!&a.bde;for his pointed pen and invaluable comments.&a.sos;for patience.Stephen McKaywrote ctm_[rs]mail, much
appreciated.&a.jkh;for being so stubborn that I had to make it better.All the usersI hope you like it...CVSupContributed by &a.jdp;.IntroductionCVSup is a software package for
distributing and updating source trees from a master CVS repository
on a remote server host. The FreeBSD sources are maintained in a
CVS repository on a central development machine in California. With
CVSup, FreeBSD users can easily keep
their own source trees up to date.CVSup uses the so-called
pull model of updating. Under the pull model,
each client asks the server for updates, if and when they are
wanted. The server waits passively for update requests from its
clients. Thus all updates are instigated by the client. The server
never sends unsolicited updates. Users must either run the
CVSup client manually to get an update,
or they must set up a cron job to run it
automatically on a regular basis.The term CVSup, capitalized just so,
refers to the entire software package. Its main components are the
client cvsup which runs on each user's machine,
and the server cvsupd which runs at each of the
FreeBSD mirror sites.As you read the FreeBSD documentation and mailing lists, you may
see references to sup.
Sup was the predecessor of
CVSup, and it served a similar purpose.
CVSup is in used in much the same way as
sup and, in fact, uses configuration files which are
backward-compatible with sup's.
Sup is no longer used in the FreeBSD
project, because CVSup is both faster and
more flexible.InstallationThe easiest way to install CVSup
is to use the net/cvsup-bin port
from the FreeBSD ports collection.
If you prefer to build CVSup from
source, you can use the net/cvsup
port instead. But be forewarned: the net/cvsup
port depends on the Modula-3 system, which takes a substantial
amount of time, memory, and disk space to build.If you do not know anything about cvsup at all and want a
single package which will install it, set up the configuration file
and start the transfer via a pointy-clicky type of interface, then
get the
- cvsupit package. Just hand it to pkg_add(1) and it will
+ cvsupit package. Just hand it to &man.pkg.add.1; and it will
lead you through the configuration process in a menu-oriented fashion.
CVSup ConfigurationCVSup's operation is controlled by a
configuration file called the supfile.
There are some sample
supfiles in the directory /usr/share/examples/cvsup/.
The information in a supfile answers the
following questions for cvsup:Which files do you want
to receive?Which versions of them do
you want?Where do you want to get
them from?Where do you want to put
them on your own machine?Where do you want to put
your status files?In the following sections, we will construct a typical
supfile by answering each of these questions in
turn. First, we describe the overall structure of a
supfile.A supfile is a text file. Comments begin
with # and extend to the end of the line. Lines
that are blank and lines that contain only comments are
ignored.Each remaining line describes a set of files that the user
wishes to receive. The line begins with the name of a
“collection”, a logical grouping of files defined by the
server. The name of the collection tells the server which files you
want. After the collection name come zero or more fields, separated
by white space. These fields answer the questions listed above.
There are two types of fields: flag fields and value fields. A flag
field consists of a keyword standing alone, e.g.,
delete or compress. A value
field also begins with a keyword, but the keyword is followed
without intervening white space by = and a second
word. For example, release=cvs is a value
field.A supfile typically specifies more than one
collection to receive. One way to structure a
supfile is to specify all of the relevant
fields explicitly for each collection. However, that tends to make
the supfile lines quite long, and it is
inconvenient because most fields are the same for all of the
collections in a supfile.
CVSup provides a defaulting mechanism to
avoid these problems. Lines beginning with the special
pseudo-collection name *default can be used to
set flags and values which will be used as defaults for the
subsequent collections in the supfile. A
default value can be overridden for an individual collection, by
specifying a different value with the collection itself. Defaults
can also be changed or augmented in mid-supfile by additional
*default lines.With this background, we will now proceed to construct a
supfile for receiving and updating the main
source tree of FreeBSD-current.Which files do you want to receive?The files available via CVSup are
organized into named groups called “collections”.
The collections that are available are described here. In this example, we wish
to receive the entire main source tree for the FreeBSD system.
There is a single large collection src-all
which will give us all of that, except the export-controlled
cryptography support. Let us assume for this example that we
are in the USA or Canada. Then we can get the cryptography code
with one additional collection, cvs-crypto.
As a first step toward constructing our
supfile, we simply list these collections,
one per line:
src-all
cvs-cryptoWhich version(s) of them do you want?With CVSup, you can receive
virtually any version of the sources that ever existed. That is
possible because the cvsupd server works directly from the CVS
repository, which contains all of the versions. You specify
which one of them you want using the tag= and
date=
value fields.Be very careful to specify any tag=
fields correctly. Some tags are valid only for certain
collections of files. If you specify an incorrect or
misspelled tag, CVSup will delete files which you probably do
not want deleted. In particular, use only
tag=. for the
ports-* collections.The tag= field names a symbolic tag in
the repository. There are two kinds of tags, revision tags and
branch tags. A revision tag refers to a specific revision. Its
meaning stays the same from day to day. A branch tag, on the
other hand, refers to the latest revision on a given line of
development, at any given time. Because a branch tag does not
refer to a specific revision, it may mean something different
tomorrow than it means today.Here are the branch tags that users might be interested
in:tag=.The main line of development, also known as
FreeBSD-current.The . is not punctuation; it is
the name of the tag. Valid for all collections.RELENG_3The line of development for FreeBSD-3.x, also known as
FreeBSD-stable. Not valid for the ports
collection.RELENG_2_2The line of development for FreeBSD-2.2.x, also known
as 2.2-stable. Not valid for the ports collection.Here are the revision tags that users might be interested
in:RELENG_3_4_0_RELEASEFreeBSD-3.4. Not valid for the ports-*
collections.tag=RELENG_3_3_0_RELEASEFreeBSD-3.3. Not valid for the ports-*
collections.tag=RELENG_3_2_0_RELEASEFreeBSD-3.2. Not valid for the ports-*
collections.tag=RELENG_3_1_0_RELEASEFreeBSD-3.1. Not valid for the ports-*
collections.tag=RELENG_3_0_0_RELEASEFreeBSD-3.0. Not valid for the ports-*
collections.tag=RELENG_2_2_8_RELEASEFreeBSD-2.2.8. Not valid for the ports-*
collections.tag=RELENG_2_2_7_RELEASEFreeBSD-2.2.7. Not valid for the ports-*
collections.tag=RELENG_2_2_6_RELEASEFreeBSD-2.2.6. Not valid for the ports-*
collections.tag=RELENG_2_2_5_RELEASEFreeBSD-2.2.5. Not valid for the ports-*
collections.tag=RELENG_2_2_2_RELEASEFreeBSD-2.2.2. Not valid for the ports-*
collections.tag=RELENG_2_2_1_RELEASEFreeBSD-2.2.1. Not valid for the ports-*
collections.tag=RELENG_2_2_0_RELEASEFreeBSD-2.2.0. Not valid for the ports-*
collections.Be very careful to type the tag name exactly as shown.
CVSup cannot distinguish between
valid and invalid tags. If you misspell the tag,
CVSup will behave as though you had
specified a valid tag which happens to refer to no files at
all. It will delete your existing sources in that
case.When you specify a branch tag, you normally receive the
latest versions of the files on that line of development. If
you wish to receive some past version, you can do so by
specifying a date with the
date=
value field.
The &man.cvsup.1; manual page explains how to do
that.For our example, we wish to receive FreeBSD-current. We add
this line at the beginning of our
supfile:
*default tag=.There is an important special case that comes into play if
you specify neither a tag= field nor a
date= field. In that case, you receive the
actual RCS files directly from the server's CVS repository,
rather than receiving a particular version. Developers
generally prefer this mode of operation. By maintaining a copy
of the repository itself on their systems, they gain the ability
to browse the revision histories and examine past versions of
files. This gain is achieved at a large cost in terms of disk
space, however.Where do you want to get them from?We use the host= field to tell
cvsup where to obtain its updates. Any of
the CVSup mirror sites will
do, though you should try to select one that is close to you in
cyberspace. In this example we will use a fictional FreeBSD
distribution site, cvsup666.FreeBSD.org:
*default host=cvsup666.FreeBSD.orgYou will need to change the host to one that actually exists
before running CVSup. On any particular run of
cvsup, you can override the host setting on
the command line, with
-h
hostname
.Where do you want to put them on your own machine?The prefix= field tells
cvsup where to put the files it receives. In
this example, we will put the source files directly into our
main source tree, /usr/src. The
src directory is already implicit in the
collections we have chosen to receive, so this is the correct
specification:
*default prefix=/usrWhere should cvsup maintain its status
files?The cvsup client maintains certain status files in what is
called the “base” directory. These files help
CVSup to work more efficiently, by
keeping track of which updates you have already received. We
will use the standard base directory,
/usr/local/etc/cvsup:
*default base=/usr/local/etc/cvsupThis setting is used by default if it is not specified in
the supfile, so we actually do not need the
above line.If your base directory does not already exist, now would be
a good time to create it. The cvsup client
will refuse to run if the base directory does not exist.Miscellaneous supfile settings:There is one more line of boiler plate that normally needs
to be present in the supfile:
*default release=cvs delete use-rel-suffix compressrelease=cvs indicates that the server
should get its information out of the main FreeBSD CVS
repository. This is virtually always the case, but there are
other possibilities which are beyond the scope of this
discussion.delete gives
CVSup permission to delete files.
You should always specify this, so that
CVSup can keep your source tree fully
up to date. CVSup is careful to
delete only those files for which it is responsible. Any extra
files you happen to have will be left strictly alone.use-rel-suffix is ... arcane. If you
really want to know about it, see the &man.cvsup.1; manual page.
Otherwise, just specify it and do not worry about it.compress enables the use of gzip-style
compression on the communication channel. If your network link
is T1 speed or faster, you probably should not use compression.
Otherwise, it helps substantially.Putting it all together:Here is the entire supfile for our
example:
*default tag=.
*default host=cvsup666.FreeBSD.org
*default prefix=/usr
*default base=/usr/local/etc/cvsup
*default release=cvs delete use-rel-suffix compress
src-all
cvs-cryptoRunning CVSupYou are now ready to try an update. The command line for doing
this is quite simple:&prompt.root; cvsup supfilewhere supfile is
of course the name of the supfile you have just created. Assuming
you are running under X11, cvsup will display a
GUI window with some buttons to do the usual things. Press the
“go” button, and watch it run.Since you are updating your actual /usr/src
tree in this example, you will need to run the program as
root so that cvsup has the
permissions it needs to update your files. Having just created your
configuration file, and having never used this program before, that
might understandably make you nervous. There is an easy way to do a
trial run without touching your precious files. Just create an
empty directory somewhere convenient, and name it as an extra
argument on the command line:&prompt.root; mkdir /var/tmp/dest
&prompt.root; cvsup supfile /var/tmp/destThe directory you specify will be used as the destination
directory for all file updates. CVSup
will examine your usual files in /usr/src, but
it will not modify or delete any of them. Any file updates will
instead land in /var/tmp/dest/usr/src.
CVSup will also leave its base directory
status files untouched when run this way. The new versions of those
files will be written into the specified directory. As long as you
have read access to /usr/src, you do not even
need to be root to perform this kind of trial run.If you are not running X11 or if you just do not like GUIs, you
should add a couple of options to the command line when you run
cvsup:&prompt.root; cvsup -g -L 2 supfileThe
-g
tells cvsup not to use its GUI. This is
automatic if you are not running X11, but otherwise you have to
specify it.The
-L 2
tells cvsup to print out the details
of all the file updates it is doing. There are three levels of
verbosity, from
-L 0
to
-L 2
. The
default is 0, which means total silence except for error
messages.There are plenty of other options available. For a brief list
of them, type cvsup -H. For more detailed
descriptions, see the manual page.Once you are satisfied with the way updates are working, you can
arrange for regular runs of cvsup using &man.cron.8;.
Obviously, you should not let cvsup use its GUI when running it from
cron.CVSup File CollectionsThe file collections available via
CVSup are organized hierarchically.
There are a few large collections, and they are divided into smaller
sub-collections. Receiving a large collection is equivalent to
receiving each of its sub-collections. The hierarchical
relationships among collections are reflected by the use of
indentation in the list below.The most commonly used collections are
src-all, cvs-crypto, and
ports-all. The other collections are used only
by small groups of people for specialized purposes, and some mirror
sites may not carry all of them.cvs-all release=cvsThe main FreeBSD CVS repository, excluding the
export-restricted cryptography code.distrib release=cvsFiles related to the distribution and mirroring of
FreeBSD.doc-all release=cvsSources for the FreeBSD handbook and other
documentation.ports-all release=cvsThe FreeBSD ports collection.ports-archivers
release=cvsArchiving tools.ports-astro
release=cvsAstronomical ports.ports-audio
release=cvsSound support.ports-base release=cvsMiscellaneous files at the top of
/usr/ports.ports-benchmarks
release=cvsBenchmarks.ports-biology
release=cvsBiology.ports-cad release=cvsComputer aided design tools.ports-chinese
release=cvsChinese language support.ports-comms
release=cvsCommunication software.ports-converters
release=cvscharacter code converters.ports-databases
release=cvsDatabases.ports-deskutils
release=cvsThings that used to be on the desktop before
computers were invented.ports-devel
release=cvsDevelopment utilities.ports-editors
release=cvsEditors.ports-emulators
release=cvsEmulators for other operating systems.ports-ftp
release=cvsFTP client and server utilities.ports-games
release=cvsGames.ports-german
release=cvsGerman language support.ports-graphics
release=cvsGraphics utilities.ports-irc
release=cvsInternet Relay Chat utilities.ports-japanese
release=cvsJapanese language support.ports-java
release=cvsJava utilities.ports-korean
release=cvsKorean language support.ports-lang release=cvsProgramming languages.ports-mail release=cvsMail software.ports-math release=cvsNumerical computation software.ports-mbone
release=cvsMBone applications.ports-misc release=cvsMiscellaneous utilities.ports-net release=cvsNetworking software.ports-news release=cvsUSENET news software.ports-palm
release=cvsSoftware support for 3Com Palm(tm) series.ports-print
release=cvsPrinting software.ports-russian
release=cvsRussian language support.ports-security
release=cvsSecurity utilities.ports-shells
release=cvsCommand line shells.ports-sysutils
release=cvsSystem utilities.ports-textproc
release=cvstext processing utilities (does not include
desktop publishing).ports-vietnamese
release=cvsVietnamese language support.ports-www release=cvsSoftware related to the World Wide Web.ports-x11 release=cvsPorts to support the X window system.ports-x11-clocks
release=cvsX11 clocks.ports-x11-fm
release=cvsX11 file managers.ports-x11-fonts
release=cvsX11 fonts and font utilities.ports-x11-toolkits
release=cvsX11 toolkits.ports-x11-serversX11 servers.ports-x11-wmX11 window managers.src-all release=cvsThe main FreeBSD sources, excluding the
export-restricted cryptography code.src-base release=cvsMiscellaneous files at the top of
/usr/src.src-bin release=cvsUser utilities that may be needed in
single-user mode
(/usr/src/bin).src-contrib
release=cvsUtilities and libraries from outside the
FreeBSD project, used relatively unmodified
(/usr/src/contrib).src-etc release=cvsSystem configuration files
(/usr/src/etc).src-games release=cvsGames
(/usr/src/games).src-gnu release=cvsUtilities covered by the GNU Public License
(/usr/src/gnu).src-include
release=cvsHeader files
(/usr/src/include).src-kerberos5
release=cvsKerberos5 security package
(/usr/src/kerberos5).src-kerberosIV
release=cvsKerberosIV security package
(/usr/src/kerberosIV).src-lib release=cvsLibraries
(/usr/src/lib).src-libexec
release=cvsSystem programs normally executed by other
programs
(/usr/src/libexec).src-release
release=cvsFiles required to produce a FreeBSD release
(/usr/src/release).src-sbin release=cvsSystem utilities for single-user mode
(/usr/src/sbin).src-share release=cvsFiles that can be shared across multiple
systems
(/usr/src/share).src-sys release=cvsThe kernel
(/usr/src/sys).src-tools release=cvsVarious tools for the maintenance of FreeBSD
(/usr/src/tools).src-usrbin release=cvsUser utilities
(/usr/src/usr.bin).src-usrsbin
release=cvsSystem utilities
(/usr/src/usr.sbin).www release=cvsThe sources for the World Wide Web data.cvs-crypto release=cvsThe export-restricted cryptography code.src-crypto release=cvsExport-restricted utilities and libraries from
outside the FreeBSD project, used relatively unmodified
(/usr/src/crypto).src-eBones release=cvsKerberos and DES
(/usr/src/eBones). Not
used in current releases of FreeBSD.src-secure release=cvsDES (/usr/src/secure).src-sys-crypto release=cvsKernel cryptography code
(/usr/src/sys/crypto).distrib release=selfThe CVSup server's own configuration files. Used by CVSup
mirror sites.gnats release=currentThe GNATS bug-tracking database.mail-archive release=currentFreeBSD mailing list archive.www release=currentThe installed World Wide Web data. Used by WWW mirror
sites.For more informationFor the CVSup FAQ and other information about CVSup, see The CVSup
Home Page.Most FreeBSD-related discussion of
CVSup takes place on the &a.hackers;.
New versions of the software are announced there, as well as on the
&a.announce;.Questions and bug reports should be addressed to the author of
the program at cvsup-bugs@polstra.com.Using make world to rebuild your systemContributed by &a.nik;.Once you have synchronised your local source tree against a
particular version of FreeBSD (stable,
current and so on) you must then use the source tree
to rebuild the system.Take a backupI cannot stress highly enough how important it is to take a backup
of your system before you do this. While
remaking the world is (as long as you follow these instructions) an
easy task to do, there will inevitably be times when you make
mistakes, or when mistakes made by others in the source tree render
your system unbootable.Make sure you have taken a backup. And have a fixit floppy to
hand. I have never needed to use them, and, touch wood, I never will,
but it is always better to be safe than sorry.Subscribe to the right mailing listThe -stable and -current FreeBSD code branches are, by their
nature, in development. People that contribute
to FreeBSD are human, and mistakes occasionally happen.Sometimes these mistakes can be quite harmless, just causing your
system to print a new diagnostic warning. Or the change may be
catastrophic, and render your system unbootable or destroy your
filesystems (or worse).If problems like these occur, a heads up is posted
to the appropriate mailing list, explaining the nature of the problem
and which systems it affects. And an all clear
announcement is posted when the problem has been solved.If you try and track -stable or -current and do not read
FreeBSD-stable@FreeBSD.ORG or
FreeBSD-current@FreeBSD.ORG then you are asking for
trouble.Check /etc/make.confExamine the file /etc/make.conf. This
contains some default defines for Everything is, by default, commented out. Uncomment those entries
that look useful. For a typical user (not a developer), you will
probably want to uncomment the CFLAGS and NOPROFILE
definitions.If your machine has a floating point unit (386DX, 486DX, Pentium
and up class machines) then you can also uncomment the HAVE_FPU
line.This definition was removed for version 2.2.2 and up of
FreeBSD.Examine the other definitions (COPTFLAGS, NOPORTDOCS and so on)
and decide if they are relevant to you.Update /etc/groupThe /etc directory contains a large part of
your system's configuration information, as well as scripts that are
run at system startup. Some of these scripts change from version to
version of FreeBSD.Some of the configuration files are also used in the day to day
running of the system. In particular,
/etc/group.There have been occasions when the installation part of
make world has expected certain usernames or groups to
exist. When performing an upgrade it is likely that these groups did
not exist. This caused problems when upgrading.The most recent example of this is when the ppp
subsystem were installed using a non-existent (for them) group
name.The solution is to examine /usr/src/etc/group
and compare its list of groups with your own. If they are any groups
in the new file that are not in your file then copy them over.
Similarly, you should rename any groups in
/etc/group which have the same GID but a
different name to those in
/usr/src/etc/group.If you are feeling particularly paranoid, you can check your
system to see which files are owned by the group you are renaming or
deleting.&prompt.root; find / -group GID -printwill show all files owned by group GID
(which can be either a group name or a numeric group ID).You may want to compile the system in single user mode. Apart
from the obvious benefit of making things go slightly faster,
reinstalling the system will touch a lot of important system files,
all the standard system binaries, libraries, include files and so on.
Changing these on a running system (particularly if you have active
users on their at the time) is asking for trouble.
That said, if you are confident, you can omit this step.Version 2.2.5 and aboveAs described in more detail below, versions 2.2.5 and above of
FreeBSD have separated the building process from the installing
process. You can therefore build the new
system in multi user mode, and then drop to single user mode to do
the installation.As the superuser, you can execute
&prompt.root;
from a running system, which will drop it to single user mode.Alternatively, reboot the system, and at the boot prompt, enter
the
-s
flag. The system will then boot single user.
At the shell prompt you should then run:&prompt.root; fsck -p
&prompt.root; mount -u /
&prompt.root; mount -a -t ufs
&prompt.root; swapon -aThis checks the filesystems, remounts /
read/write, mounts all the other UFS filesystems referenced in
/etc/fstab and then turns swapping on.Remove /usr/objAs parts of the system are rebuilt they are placed in directories
which (by default) go under /usr/obj. The
directories shadow those under /usr/src.You can speed up the make world process, and
possibly save yourself some dependency headaches by removing this
directory as well.Some files below /usr/obj will have the
- immutable flag set (see chflags(1) for more
+ immutable flag set (see &man.chflags.1; for more
information) which must be removed first.&prompt.root; cd /usr/obj
&prompt.root; chflags -R noschg *
&prompt.root; rm -rf *All versionsYou must be in the /usr/src directory, so
&prompt.root; cd /usr/src
(unless, of course, your source code is elsewhere, in which case
change to that directory instead).To rebuild the world you use the &man.make.1; command. This
command reads instructions from the Makefile
which describes how the programs that comprise FreeBSD should be
rebuilt, the order they should be built in, and so on.The general format of the command line you will type is as
follows;&prompt.root; make
-
-DVARIABLE
target
In this example,
-x
is an option that you would pass to &man.make.1;. See the manual
page for an example of the options you can pass.
-DVARIABLE
passes a
variable to the Makefile. The behaviour of the
Makefile is controlled by these variables.
These are the same variables as are set in
/etc/make.conf, and this provides another way
of setting them.&prompt.root; make -DNOPROFILE=true targetis another way of specifying that profiled libaries should not be
built, and corresponds with the
NOPROFILE= true
# Avoid compiling profiled libraries
lines in /etc/make.conf.target tells &man.make.1; what you
want to do. Each Makefile defines a number of
different targets, and your choice of target
determines what happens.Some targets are listed in the Makefile,
but are not meant for you to run. Instead, they are used by the
build process to break out the steps necessary to rebuild the system
into a number of sub-steps.Most of the time you won't need to pass any parameters to
&man.make.1;, and so your command like will look like this.&prompt.root; make targetSaving the outputIt's a good idea to save the output you get from running
&man.make.1; to another file. If something goes wrong you will
have a copy of the error message, and a complete list of where the
process had got to. While this might not help you in diagnosing
what has gone wrong, it can help others if you post your problem to
one of the FreeBSD mailing lists.The easiest way to do this is to use the &man.script.1; command,
with a parameter that specifies the name of the file to save all
output to. You would do this immediately before remaking the world,
and then type exit when the process has
finished.&prompt.root; script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
&prompt.root; make world… compile, compile, compile …
&prompt.root; exit
Script done, …If you do this, do not save the output in
/tmp. This directory may be cleared next time
you reboot. A better place to store it is in
/var/tmp (as in the previous example) or in
root's home directory.Version 2.2.2 and below/usr/src/Makefile contains the
world target, which will rebuild the entire
system and then install it.Use it like this.&prompt.root; make worldVersion 2.2.5 and aboveBeginning with version 2.2.5 of FreeBSD (actually, it was first
created on the -current branch, and then retrofitted to -stable
midway between 2.2.2 and 2.2.5) the world
target has been split in two. buildworld
and installworld.As the names imply, buildworld builds a
complete new tree under /usr/obj, and
installworld installs this tree on the
current machine.This is very useful for 2 reasons. First, it allows you to do
the build safe in the knowledge that no components of your running
system will be affected. The build is self hosted.
Because of this, you can safely run
buildworld on a machine running in
multi-user mode with no fear of ill-effects. I still recommend you
run the installworld part in single user
mode though.Secondly, it allows you to use NFS mounts to upgrade multiple
machines on your network. If you have three machines, A, B and C
that you want to upgrade, run make buildworld and
make installworld on A. B and C should then NFS
mount /usr/src and
/usr/obj from A, and you can then run
make installworld to install the results of the
build on B and C.The world target still exists, and you
can use it exactly as shown for version 2.2.2. make
world runs make buildworld followed
by make installworld.If you do the make buildworld and
make installworld commands separately, you must
pass the same parameters to &man.make.1; each time.If you run
&prompt.root; make -DNOPROFILE=true buildworld
you must install the results with
&prompt.root; make -DNOPROFILE=true installworld
otherwise it would try and install profiled libraries that had not
been built during the make buildworld
phase.-current and aboveIf you are tracking -current you can also pass the
-j
option to make. This lets
make spawn several simultaneous processes.This is most useful on true multi-CPU machines. However, since
much of the compiling process is IO bound rather than CPU bound it is
also useful on single CPU machines.On a typical single-CPU machine you would run:&prompt.root; make -j4 target&man.make.1; will then have up to 4 processes running at any one
time. Empirical evidence posted to the mailing lists shows this
generally gives the best performance benefit.If you have a multi-CPU machine and you are using an SMP
configured kernel try values between 6 and 10 and see how they speed
things up.Be aware that (at the time of writing) this is still
experimental, and commits to the source tree may occasionally break
this feature. If the world fails to compile using this parameter
try again without it before you report any problems.TimingsAssuming everything goes well you have anywhere between an hour
and a half and a day or so to wait.As a general rule of thumb, a 200MHz P6 with more than 32MB of
RAM and reasonable SCSI disks will complete make
world in about an hour and a half. A 32MB P133 will
take 5 or 6 hours. Revise these figures down if your machines are
slower…Update /etcRemaking the world will not update certain directories (in
particular, /etc, /var and
/usr) with new or changed configuration files.
This is something you have to do by hand, eyeball, and judicious use
of &man.diff.1;.You cannot just copy over the files from
/usr/src/etc to /etc and
have it work. Some of these files must be installed
first. This is because the /usr/src/etc
directory is not a copy of what your
/etc directory should look like. In addition,
there are files that should be in /etc that are
not in /usr/src/etc.The simplest way to do this is to install the files into a new
directory, and then work through them looking for differences.Backup your existing /etcAlthough, in theory, nothing is going to touch this directory
automatically, it is always better to be sure. So copy your
existing /etc directory somewhere safe.
Something like:&prompt.root; cp -Rp /etc /etc.old
-R
does a recursive copy,
-p
preserves times, ownerships on files and suchlike.You need to build a dummy set of directories to install the new
/etc and other files into. I generally choose to
put this dummy directory in /var/tmp/root, and
there are a number of subdirectories required under this as
well.&prompt.root; mkdir /var/tmp/root
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distributionThis will build the necessary directory structure and install the
files. A lot of the subdirectories that have been created under
/var/tmp/root are empty and should be deleted.
The simplest way to do this is to:&prompt.root; cd /var/tmp/root
&prompt.root; find -d . -type d | /usr/bin/perl -lne \
'opendir(D,$_);@f=readdir(D);rmdir if $#f == 1;closedir(D);'This does a depth first search, examines each directory, and if
the number of files in that directory is 2 (/var/tmp/root now contains all the files that
should be placed in appropriate locations below
/. You now have to go through each of these
files, determining how they differ with your existing files.Note that some of the files that will have been installed in
/var/tmp/root have a leading /var/tmp/root/ and
/var/tmp/root/root/, although there may be others
(depending on when you are reading this. Make sure you use
The simplest way to do this is to use &man.diff.1; to compare the
two files.&prompt.root; diff /etc/shells /var/tmp/root/etc/shellsThis will show you the differences between your
/etc/shells file and the new
/etc/shells file. Use these to decide whether to
merge in changes that you have made or whether to copy over your old
file.Name the new root directory
(/var/tmp/root)with a timestamp, so you can
easily compare differences between versionsFrequently remaking the world means that you have to update
/etc frequently as well, which can be a bit of
a chore.You can speed this process up by keeping a copy of the last set
of changed files that you merged into /etc.
The following procedure gives one idea of how to do this.Make the world as normal. When you want to update
/etc and the other directories, give the
target directory a name based on the current date. If you were
doing this on the 14th of February 1998 you could do the
following.&prompt.root; mkdir /var/tmp/root-19980214
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root-19980214 \
distrib-dirs distributionMerge in the changes from this directory as outlined
above.Do not remove the
/var/tmp/root-19980214 directory when you
have finished.When you have downloaded the latest version of the source
and remade it, follow step 1. This will give you a new
directory, which might be called
/var/tmp/root-19980221 (if you wait a week
between doing updates).You can now see the differences that have been made in the
intervening week using &man.diff.1; to create a recursive diff
between the two directories.&prompt.root; cd /var/tmp
&prompt.root; diff -r root-19980214 root-19980221Typically, this will be a much smaller set of differences
than those between
/var/tmp/root-19980221/etc and
/etc. Because the set of differences is
smaller, it is easier to migrate those changes across into your
/etc directory.You can now remove the older of the two
/var/tmp/root-* directories.&prompt.root; rm -rf /var/tmp/root-19980214Repeat this process every time you need to merge in changes
to /etc.You can use &man.date.1; to automate the generation of the
directory names.&prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"`Update /devDEVFSIf you are using DEVFS then this is probably unnecessary.For safety's sake, this is a multistep process.Copy /var/tmp/root/dev/MAKEDEV to
/dev.&prompt.root; cp /var/tmp/root/dev/MAKEDEV /devNow, take a snapshot of your current
/dev. This snapshot needs to contain the
permissions, ownerships, major and minor numbers of each filename,
but it should not contain the timestamps. The easiest way to do
this is to use &man.awk.1; to strip out some of the
information.&prompt.root; cd /dev
&prompt.root; ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.outRemake all the devices.&prompt.root; Write another snapshot of the directory, this time to
/var/tmp/dev2.out. Now look through these
two files for any devices that you missed creating. There should
not be any, but it is better to be safe than sorry.&prompt.root; diff /var/tmp/dev.out /var/tmp/dev2.outYou are most likely to notice disk slice discrepancies which
will involve commands such as
&prompt.root; sh MAKEDEV sd0s1
to recreate the slice entries. Your precise circumstances may
vary.Update /standThis step is included only for completeness, it can safely be
omitted.For completenesses sake you may want to update the files in
/stand as well. These files consist of hard
links to the /stand/sysinstall binary. This
binary should be statically linked, so that it can work when no other
filesystems (and in particular /usr) have been
mounted.&prompt.root; cd /usr/src/release/sysinstall
&prompt.root; make all installSource older than 2 April 1998If your source code is older than 2nd April 1998, or the
Makefile version is not 1.68 or higher (for
FreeBSD current and 3.x systems) or 1.48.2.21 or higher (for 2.2.x
systems) you will need to add the
NOSHARED=yes option, like so;&prompt.root; make NOSHARED=yes all installCompile and install a new kernelTo take full advantage of your new system you should recompile the
kernel. This is practically a necessity, as certain memory structures
may have changed, and programs like &man.ps.1; and &man.top.1; will
fail to work until the kernel and source code versions are the
same.Follow the handbook instructions for compiling a new kernel. If
you have previously built a custom kernel then carefully examine the
LINT config file to see if there are any new
options which you should take advantage of.A previous version of this document suggested rebooting before
rebuilding the kernel. This is wrong because:Commands like &man.ps.1;, &man.ifconfig.8;, and &man.sysctl.8;
may fail. This could leave your machine unable to connect to the
network.Basic utilities like &man.mount.8; could fail,
making it impossible to mount /,
/usr and so on. This is unlikely if you are
tracking a -stable candidate, but more likely if you are tracking
-current during a large merge.Loadable kernel modules (LKMs on pre-3.x systems, KLDs on 3.x
systems and above) built as part of the world may
crash an older kernel.For these reasons, it is always best to rebuild and install a
new kernel before rebooting.You should build your new kernel after you have completed
make world (or make
installworld). If you do not want to do this (perhaps
you want to confirm that the kernel builds before updating your
system) you may have problems. These may be because your
&man.config.8; command is out of date with respect to your kernel
sources.In this case you could build your kernel with the new version of &man.config.8;&prompt.root; /usr/obj/usr/src/usr.sbin/config/config KERNELNAMEThis may not work in all cases. It is recommended that you
complete make world (or make
installworld) before compiling a new kernel.You are now done. After you have verified that everything appears
to be in the right place you can reboot the system. A simple
&man.fastboot.8; should do it.
&prompt.root; fastbootFinishedYou should now have successfully upgraded your FreeBSD system.
Congratulations.You may notice small problems due to things that you have missed.
For example, I once deleted /etc/magic as part of
the upgrade and merge to /etc, and the
file command stopped working. A moment's thought
meant that
&prompt.root; cd /usr/src/usr.bin/file
&prompt.root;
was sufficient to fix that one.Do I need to re-make the world for every change?There is no easy answer to this one, as it depends on the
nature of the change. For example, I have just run CVSup, and
it has shown the following files as being updated since I last
ran it;src/games/cribbage/instr.csrc/games/sail/pl_main.csrc/release/sysinstall/config.csrc/release/sysinstall/media.csrc/share/mk/bsd.port.mkThere is nothing in there that I would re-make the world
for. I would go to the appropriate sub-directories and
make all install, and that's about it. But
if something major changed, for example
src/lib/libc/stdlib then I would either
re-make the world, or at least those parts of it that are
statically linked (as well as anything else I might have added
that is statically linked).At the end of the day, it is your call. You might be happy
re-making the world every fortnight say, and let changes
accumulate over that fortnight. Or you might want to re-make
just those things that have changed, and are confident you can
spot all the dependencies.And, of course, this all depends on how often you want to
upgrade, and whether you are tracking -stable or
-current.My compile failed with lots of signal 12 (or other signal
number) errors. What has happened?This is normally indicative of hardware problems.
(Re)making the world is an effective way to stress test your
hardware, and will frequently throw up memory problems. These
normally manifest themselves as the compiler mysteriously dying
on receipt of strange signals.A sure indicator of this is if you can restart the make and
it dies at a different point in the process.In this instance there is little you can do except start
swapping around the components in your machine to determine
which one is failing.Can I remove /usr/obj when I have
finished?That depends on how you want to make the world on future
occasions./usr/obj contains all the object files
that were produced during the compilation phase. Normally, one
of the first steps in the /usr/obj around after you have finished
makes little sense, and will free up a large chunk of disk space
(currently about 150MB).However, if you know what you are doing you can have
If you want to live dangerously then make the world, passing
the NOCLEAN definition to make, like
this:&prompt.root; make -DNOCLEAN worldCan interrupted builds be resumed?This depends on how far through the process you got before
you found a problem.In general (and this is not a hard and
fast rule) the make world process builds new
copies of essential tools (such as &man.gcc.1;, and
&man.make.1;>) and the system libraries. These tools and
libraries are then installed. The new tools and libraries are
then used to rebuild themselves, and are installed again. The
entire system (now including regular user programs, such as
&man.ls.1; or &man.grep.1;) is then rebuilt with the new
system files.If you are at the last state, and you know it (because you
have looked through the output that you were storing) then you
can (fairly safely) do… fix the problem …
&prompt.root; cd /usr/src
&prompt.root; make -DNOCLEAN allThis will not undo the work of the previous
make world.If you see the message
--------------------------------------------------------------
Building everything..
--------------------------------------------------------------
in the make world output then it is
probably fairly safe to do so.If you do not see that message, or you are not sure, then it
is always better to be safe than sorry, and restart the build
from scratch.Can I use one machine as a People often ask on the FreeBSD mailing lists whether they
can do all the compiling on one machine, and then use the
results of that compile to make install on to
other machines around the network.This is not something I have done, so the suggestions below
are either from other people, or deduced from the
Makefiles.The precise approach to take depends on your version of
FreeBSDYou must still upgrade /etc and
/dev on the target machines after doing
this.For 2.1.7 and below, Antonio Bemfica
suggested the following approach:Date: Thu, 20 Feb 1997 14:05:01 -0400 (AST)
From: Antonio Bemfica <bemfica@militzer.me.tuns.ca>
To: freebsd-questions@freebsd.org
Message-ID: <Pine.BSI.3.94.970220135725.245C-100000@militzer.me.tuns.ca>
Josef Karthauser asked:
> Has anybody got a good method for upgrading machines on a network
First make world, etc. on your main machine
Second, mount / and /usr from the remote machine:
main_machine% mount remote_machine:/ /mnt
main_machine% mount remote_machine:/usr /mnt/usr
Third, do a 'make install' with /mnt as the destination:
main_machine% make install DESTDIR=/mnt
Repeat for every other remote machine on your network. It works fine
for me.
AntonioThis mechanism will only work (to the best of my knowledge)
if you can write to /usr/src on the NFS
server, as the install target in 2.1.7
and below needed to do this.Midway between 2.1.7 and 2.2.0 the reinstall
target was committed. You can use the approach exactly as
outlined above for 2.1.7, but use reinstall
instead of install.This approach does not require write
access to the /usr/src directory on the NFS
server.There was a bug introduced in this target between versions
1.68 and 1.107 of the Makefile, which meant that write access to
the NFS server was required. This bug was
fixed before version 2.2.0 of FreeBSD was released, but may be an
issue of you have an old server still running -stable from this
era.For version 2.2.5 and above, you can use the
buildworld and installworld
targets. Use them to build a source tree on one machine, and
then NFS mount /usr/src and
/usr/obj on the remote machine and install
it there.How can I speed up making the world?Run in single user mode.Put the /usr/src and
/usr/obj directories on separate
filesystems held on separate disks. If possible, put these
disks on separate disk controllers.Better still, put these filesystems across separate
disks using the ccd (concatenated disk
driver) device.Turn off profiling (set NOPROFILE=true in
/etc/make.conf). You almost certainly
do not need it.Also in /etc/make.conf, set
CFLAGS to something like -O
-pipe. The optimisation -O2 is much
slower, and the optimisation difference between
-O and -O2 is normally
negligible. -pipe lets the compiler use
pipes rather than temporary files for communication, which
saves disk access (at the expense of memory).Pass the
-j<n>
option to make (if
you are running a sufficiently recent version of FreeBSD) to
run multiple processes in parallel. This helps regardless
of whether you have a single or a multi processor
machine.The filesystem holding
/usr/src can be mounted (or remounted)
with the noatime option. This stops the time
files in the filesystem were last accessed from being
written to the disk. You probably do not need this
information anyway.
noatime is in version 2.2.0 and
above.&prompt.root; mount -u -o noatime /usr/srcThe example assumes /usr/src is
on its own filesystem. If it is not (if it is a part of
/usr for example) then you will
need to use that filesystem mount point, and not
/usr/src.The filesystem holding /usr/obj can
be mounted (or remounted) with the async
option. This causes disk writes to happen asynchronously.
In other words, the write completes immediately, and the
data is written to the disk a few seconds later. This
allows writes to be clustered together, and can be a
dramatic performance boost.Keep in mind that this option makes your filesystem
more fragile. With this option there is an increased
chance that, should power fail, the filesystem will be in
an unrecoverable state when the machine restarts.If /usr/obj is the only thing on
this filesystem then it is not a problem. If you have
other, valuable data on the same filesystem then ensure
your backups are fresh before you enable this
option.&prompt.root; mount -u -o async /usr/objAs above, if /usr/obj is not on
its own filesystem, replace it in the example with the
name of the appropriate mount point.ContributorsThe following people have contributed to this document in some
form or another. Either by directly suggesting alterations and
improvements, pointing out errors, or by their messages to the FreeBSD
mailing lists, from which I have shamelessly cribbed information. My
thanks to them.Antonio Bemfica,
bemfica@militzer.me.tuns.caSue Blake, sue@welearn.com.auBrian Haskin, haskin@ptway.comKees Jan Koster, kjk1@ukc.ac.ukA Joseph Kosy, koshy@india.hp.comGreg Lehey, grog@lemis.comWes Peters, softweyr@xmission.comJoseph Stein, joes@wstein.comStudded, studded@dal.netAxel Thimm,
Axel.Thimm@physik.fu-berlin.deMatthew Thyer,
Matthew.Thyer@dsto.defence.gov.au
diff --git a/en_US.ISO_8859-1/books/handbook/pgpkeys/chapter.sgml b/en_US.ISO_8859-1/books/handbook/pgpkeys/chapter.sgml
index e73495933d..a9061e4a4c 100644
--- a/en_US.ISO_8859-1/books/handbook/pgpkeys/chapter.sgml
+++ b/en_US.ISO_8859-1/books/handbook/pgpkeys/chapter.sgml
@@ -1,784 +1,784 @@
PGP keysIn case you need to verify a signature or send encrypted email to one
of the officers or core team members a number of keys are provided here
for your convenience.
-
+ OfficersFreeBSD Security Officer
security-officer@FreeBSD.org
FreeBSD Security Officer <security-officer@FreeBSD.org>
Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i
mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL
h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L
Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR
tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl
ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU
tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7
PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql
3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz
QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV
nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A
3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD
/REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb
5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS
9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B
sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P
BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT
0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx
ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD
ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO
v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1
lw==
=ipyA
-----END PGP PUBLIC KEY BLOCK-----&a.imp;
Warner Losh <imp@village.org>
aka <imp@FreeBSD.org>
Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
3gTYx+Nlo6xqjR+J2NnBYU8p
=7fQV
-----END PGP PUBLIC KEY BLOCK-----
-
+ Core Team members&a.asami;
Satoshi Asami <asami@cs.berkeley.edu>
aka <asami@FreeBSD.org>
Fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
+EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
+NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
=39SC
-----END PGP PUBLIC KEY BLOCK-----&a.jmb;
Jonathan M. Bresler <jmb@FreeBSD.org>
f16 Fingerprint16 = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI
gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn
GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY
2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J
AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ
tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk
2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7
BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI
8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8
h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2
aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz
2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ
NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE
KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h
/ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E
5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP
VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt
bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj
lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0
PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx
5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+
gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU
/2ls4QSBZZlb
=zbCw
-----END PGP PUBLIC KEY BLOCK-----&a.ache;
Andrey A. Chernov <ache@FreeBSD.org>
aka <ache@nagual.pp.ru>
Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez
u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY
cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ
aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20
JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi
YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h
mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt
pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi
YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW
xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30
Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ
nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY
rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B
gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl
eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV
AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa
o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ
mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC
Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr
anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI
rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8
vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO
DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh
Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9
KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a
hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b
vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI
AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB
AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5
MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA
Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx
/IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA
+6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM
1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV
AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM
y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv
Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV
HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14
5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R
rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3
5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw
erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5
+uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6
EB33OunazFcfZFRIcXk1sfyLDvYE
=1ahV
-----END PGP PUBLIC KEY BLOCK-----&a.jkh;
Jordan K. Hubbard <jkh@FreeBSD.org>
Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM
j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD
ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY
laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+
5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az
VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN
GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB
AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB
uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ
utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof
f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H
U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ
csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV
AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y
oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5
LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C
BiMRuaw=
=C/Jw
-----END PGP PUBLIC KEY BLOCK-----&a.phk;
Poul-Henning Kamp <phk@FreeBSD.org>
Fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
e3jh8w62JsLBWry/YMWRMnI=
=A1Tu
-----END PGP PUBLIC KEY BLOCK-----&a.rich;
Rich Murphey <rich@FreeBSD.org>
fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
=QoiM
-----END PGP PUBLIC KEY BLOCK-----&a.jdp;
John D. Polstra <jdp@polstra.com>
Fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
+45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
V31K/PIoYsHAy5w=
=cHFa
-----END PGP PUBLIC KEY BLOCK-----&a.peter;
Peter Wemm <peter@FreeBSD.org>
aka <peter@spinner.dialix.com>
aka <peter@haywire.dialix.com>
aka <peter@perth.dialix.oz.au>
Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
=gv+h
-----END PGP PUBLIC KEY BLOCK-----&a.joerg;
Type Bits/KeyID Date User ID
pub 1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E
Joerg Wunsch <joerg_wunsch@interface-business.de>
Joerg Wunsch <j@uriah.heep.sax.de>
Joerg Wunsch <j@interface-business.de>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
=97h7
-----END PGP PUBLIC KEY BLOCK-----
-
+ Developers&a.joe;
Type Bits/KeyID Date User ID
pub 768/7EBDECB1 1996/12/19 Josef L. Karthauser <joe@pavilion.net>
joe@tao.org.uk
joe@uk.freebsd.org
joe@FreeBSD.org
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQBtAzK5TJQAAAEDAKlRtbnhuBNWwq+hkYyubUzCYZu60ZFtwdkCgyBurSzTmfMG
1ylVOdwzpgFL8JHRAGhzugRvZqRiCrCl+CvYaeW2+ee3Yw+brl6YEqLMxy0ap2kD
NbpZ7LIO7AMffr3ssQAFEbQmSm9zZWYgTC4gS2FydGhhdXNlciA8am9lQHBhdmls
aW9uLm5ldD6JAJUDBRA3DNxYDu2852ZqdCEBAXrwBACTRn6uz+uFHxi9nj8qdg14
m3SvBJ58i82IdyhuD5m04/Rgc3Bwk1VDY2eKHuILcgDInd94EePpHTxMvjblfImn
No9yqKYQw+V2zbsa8idTVDb5eNWGdRmVndjY95ZVKuhhIlwqLJELvKKbYZjjSabl
ijn+lvEEl+gO4avcQZnOjIkAlQMFEDRSgYdv0qcS0gZ4vQEBq/cD+gJsogBSFwYl
otle1JGgq1lkIq46uJWS8h61QL9+wnKQ3l19VElXK3/s/HUqBZagKyrF7QSs1dhg
T/RKSr/kdG0dPhLhqESgzii9CS6MgHM8CnmP7oDP78i1yAkVL9bJ/a22Il+YZNlt
r+XOn9EivaFojjHFQy5a+7e/HEXbgtwMiQD2AwUQMxRrf6ZKZnTBjNYdAQENIgcH
RcYYGiOYT0FAqSvAlHPunpPhO+9TBKD5FP307YtUTHdI19Y+LgFT599ond3wfArR
K3ue6D1G6//kbemfLZVxOJ+PRpJ0jIqZQ//7mKAI3VGu4vGO0EGQLkzIfwiVaCwa
8jZh5406CaqE7DkXVypvcVkL3hdqD8o16qht8Y23rjrEUgRYIIWUGftCAHWMZEq3
NqU/nqzgIv72PMEC3jBjdPld84GOiX9e3XjOSur6uLMRj87e9qce73sYUsGb2/cf
ypx8Hy/FN/FVUKbW4/ddHOeW75vBGgtIwY0R+eDW1wWXiQB1AwUQMrlMlA7sAx9+
veyxAQFftQL/T64Xc63YXllDIVGw0ZQtM0cdolYzP5OAu2Pvb0iWiJia6SkxePJo
FyNuWEO0obBpeP/QuapnceYUBNiheT4gRccEO1+VjFRuAiZb7+Huwh4FXrRbhJte
3FmOE07jacQ9tA5qb2VAdGFvLm9yZy51a4kAdQMFEDgPy5gO7AMffr3ssQEBYGsC
/iIslOxLXMgz9BSw1ndflqYOImPtn4OQJAG+eyZInVKfZDhyEHtO6ID7zRNx+0wh
fAgEU760e8V5rEFea9U0/qY7QneanDRGI+rP81V/fnP3wdZBCGXDNMCM6ofcuTP6
MbQSam9lQHVrLmZyZWVic2Qub3JniQB1AwUQOA/Lgg7sAx9+veyxAQHeXgL8DJQ1
xeeFLQOrg4vI5nfQOjPJqaZ4xpPv1k5wIjPRElGj7QACZVX5L/bEzhK+7fggSXxB
b4cmEhiDOIFOBR6HWL/RnMimoGtC53OHKRrA43/eqB/saCbTfN4+KAypw1WatA9q
b2VARnJlZUJTRC5vcmeJAHUDBRA4D8tRDuwDH3697LEBAZU6Av0e8n+hesovDEkn
ox3JKhC1L33jXu0nOQZ/2Yz6jY1icghgy/L2KO57+T2YBV6DGpk4IlY9jZJRRKti
KCHSMahng7whIHNSugWqzLNanK+YPfXC2CsUI02w1srjFcDurBg=
=O/Rl
-----END PGP PUBLIC KEY BLOCK-----&a.cpiazza;
Type Bits/KeyID Date User ID
pub 2048/FB722BE5 1996/04/07 Chris Piazza <cpiazza@jaxon.net>
Chris Piazza <cpiazza@home.net>
Chris Piazza <cpiazza@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQENAzFnIKcAAAEIANA6TShD9jrbc0IODhZooybcqM04h94IOaX5HPcYo/5FHSFB
ezBuea19iBB/spGQUfpDAuGuqsz1DCCtL0OBz1cn4r74OMqrY4bQHKunCF8hUL8H
hRVn33B5KmljTHo8jFQAV/8QwvU6OUaLgM4CoZsMdrgfSaAxGNGu+RAK2xbm9KX7
BykXX+MIYRbJHpxA+25o8OZTOEC0Sa3kg94F9lT+iL1zB5s3dTPrQPzOFZCD0PdK
ByEnGt+GoFNV1j7nO26vNa0fQZTSL+bNmnO54NPE0u8gtaqhGqRN+EHbo90eJ487
XqDOI0b+XHK98y2T1lEGYmjuSLmA9xHAr/tyK+UABRG0IENocmlzIFBpYXp6YSA8
Y3BpYXp6YUBqYXhvbi5uZXQ+iQEVAwUQOD+czfcRwK/7civlAQGdqggAnDjRfVCG
QLCCncva1yLPQY2OUBz4SW4NfR4RSPbmDTs+kDJpqAN4/w76LwOry3B6Hp4MnrZP
Iv0DDzePM+5hs535wDNcU6KQwbZEyv7e9Q+dpWW6vj8hEynZYp5Vcb0VbejU9NJf
rHuSIx0cIKfztxM11csTYqPHGZcHUPy3w7BtB03ATioWt0/Ybj3vtLj36JHI1csk
yzgeHJrQ17yvcoNGno2Aqrdbf+PJ7lO/Wiy+40r6jyJmt9o5neT1kOgVvXGVOp7R
dbOQXGAZay2nxRcQALrRD7VF/ugpJke2MykL0GebFYmSOVWRjVkmLlXl/AXLS/Vw
FJ0MTMDOOq7MCbQfQ2hyaXMgUGlhenphIDxjcGlhenphQGhvbWUubmV0PokBFQMF
EDg/nOT3EcCv+3Ir5QEBc8sIAKz1sxByTTiwj8+FKKb1lFYgxXYfqUzp1dl31eFy
fTXv6thrGvBzmBtMRLVOymvBBy7VP3cLN7rtyyS3jKR+UdDZcJBKM1bF5lBCWF7T
DmpvHR79Od79pgWTiU7bkHM7LBXOEhahO9Q6SAIaIhw85LfVRV/oh2ZB+PocvyLe
iJhKehe6W+ao0ZSUDm5tlG8wrgvjKEkEAOHh/pCCxFh2zQmUwyxFljy8/OooTE37
tBaTTaVx98dQUtm59u8ITFpbmPX5mIlKu8H9R3oY1Ur6DPtHV7OTVewTBCjuatyw
FwbGcP7DLEAmmYhICwtYQOa62+ORNh2/v/GHTt+ZxHFGHuW0IkNocmlzIFBpYXp6
YSA8Y3BpYXp6YUBGcmVlQlNELm9yZz6JARUDBRA3a0Oi9xHAr/tyK+UBARC7B/9+
CaKMlF11O8TpP3FfWUpwMwdMynaebd3Xx3U01DleHqnqfy8PwhZY9jwcvgggaXSN
7FUUzRocsTTEbFj7hZHAYRfNH+KcXr3EmB5b82M10NHeqWIFF8vcpEwM6lvFIbne
Mve1eVw4S2Vl0yHQJvoVUqAvlFpN3dgFOg69qBPe6qWsaNDPN+dwUorWckV613EP
Gbxp9cs2j3awBnENjP16jkmEKuQPcAnl6l6XgP1X27PKICkPUTLO+CKfRq15Qs9p
evhyqAaUMNU/GYMqs5sceDQq1PUpmE1syGCZUQmvYfXfRmujHdZnDRDl+afN4UoH
hrCuygxmOl22RDH3aEXi
=JxBt
-----END PGP PUBLIC KEY BLOCK-----&a.guido;
Guido van Rooij <guido@gvr.win.tue.nl>
Fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
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
mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J
=mSvM
-----END PGP PUBLIC KEY BLOCK-----&a.brian;
Type Bits/KeyID Date User ID
pub 1024/666A7421 1997/04/30 Brian Somers <brian@awfulhak.org>
Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21
Brian Somers <brian@uk.OpenBSD.org>
Brian Somers <brian@uk.FreeBSD.org>
Brian Somers <brian@OpenBSD.org>
Brian Somers <brian@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
=Tq7h
-----END PGP PUBLIC KEY BLOCK-----&a.gsutter;
Type Bits KeyID Created Expires Algorithm Use
sec+ 1024 0x40AE3052 1998-07-18 ---------- DSS Sign & Encrypt
f20 Fingerprint20 = 61D4 6A28 F282 482E 1D82 D077 E31E 323D 40AE 3052
uid Gregory S. Sutter <gsutter@pobox.com>
uid Gregory S. Sutter <gsutter@zer0.org>
uid Gregory S. Sutter <gsutter@daemonnews.org>
uid Gregory S. Sutter <gsutter@freebsd.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
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
AW4VTHVXOY6g
=Zu9y
-----END PGP PUBLIC KEY BLOCK-----&a.wosch;
Type Bits/KeyID Date User ID
pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org>
Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G
Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0
vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR
tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH
AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk
pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv
2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0
JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85
jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp
bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh
sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX
b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO
sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+
U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC
xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB
UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv
Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf
CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD
/3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA
5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa
UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l
aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr
cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh
3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv
gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg=
=3V1R
-----END PGP PUBLIC KEY BLOCK-----
diff --git a/en_US.ISO_8859-1/books/handbook/serialcomms/chapter.sgml b/en_US.ISO_8859-1/books/handbook/serialcomms/chapter.sgml
index 7e45aa5283..c9cd55da91 100644
--- a/en_US.ISO_8859-1/books/handbook/serialcomms/chapter.sgml
+++ b/en_US.ISO_8859-1/books/handbook/serialcomms/chapter.sgml
@@ -1,2731 +1,2731 @@
Serial CommunicationsSerial BasicsAssembled from FAQ.This section should give you some general information about serial
ports. If you do not find what you want here, check into the Terminal
and Dialup sections of the handbook.The ttydX (or
cuaaX) device is the
regular device you will want to open for your applications. When a
process opens the device, it will have a default set of terminal I/O
settings. You can see these settings with the command&prompt.root; stty -a -f /dev/ttyd1When you change the settings to this device, the settings are in
effect until the device is closed. When it is reopened, it goes back to
the default set. To make changes to the default set, you can open and
adjust the settings of the “initial state” device. For
example, to turn on CLOCAL mode, 8 bits, and
XON/XOFF flow control by default for ttyd5,
do:&prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoffA good place to do this is in /etc/rc.serial.
Now, an application will have these settings by default when it opens
ttyd5. It can still change these settings to its
liking, though.You can also prevent certain settings from being changed by an
application by making adjustments to the “lock state”
device. For example, to lock the speed of ttyd5 to
57600 bps, do&prompt.root; stty -f /dev/ttyld5 57600Now, an application that opens ttyd5 and tries
to change the speed of the port will be stuck with 57600 bps.Naturally, you should make the initial state and lock state devices
writable only by root. The
MAKEDEV script does not do
this when it creates the device entries.TerminalsContributed by &a.kelly; 28 July 1996Terminals provide a convenient and low-cost way to access the power
of your FreeBSD system when you are not at the computer's console or on
a connected network. This section describes how to use terminals with
FreeBSD.Uses and Types of TerminalsThe original Unix systems did not have consoles. Instead, people
logged in and ran programs through terminals that were connected to
the computer's serial ports. It is quite similar to using a modem and
some terminal software to dial into a remote system to do text-only
work.Today's PCs have consoles capable of high quality graphics, but
the ability to establish a login session on a serial port still exists
in nearly every Unix-style operating system today; FreeBSD is no
exception. By using a terminal attached to a unused serial port, you
can log in and run any text program that you would normally run on the
console or in an xterm window in the X Window
System.For the business user, you can attach many terminals to a FreeBSD
system and place them on your employees' desktops. For a home user, a
spare computer such as an older IBM PC or a Macintosh can be a
terminal wired into a more powerful computer running FreeBSD. You can
turn what might otherwise be a single-user computer into a powerful
multiple user system.For FreeBSD, there are three kinds of terminals:Dumb terminalsPCs acting as terminalsX terminalsThe remaining subsections describe each kind.Dumb TerminalsDumb terminals are specialized pieces of hardware that let you
connect to computers over serial lines. They are called
“dumb” because they have only enough computational power
to display, send, and receive text. You cannot run any programs on
them. It is the computer to which you connect them that has all the
power to run text editors, compilers, email, games, and so
forth.There are hundreds of kinds of dumb terminals made by many
manufacturers, including Digital Equipment Corporation's VT-100 and
Wyse's WY-75. Just about any kind will work with FreeBSD. Some
high-end terminals can even display graphics, but only certain
software packages can take advantage of these advanced
features.Dumb terminals are popular in work environments where workers do
not need access to graphic applications such as those provided by
the X Window System.PCs Acting As TerminalsIf a dumb terminal has just
enough ability to display, send, and receive text, then certainly
any spare personal computer can be a dumb terminal. All you need is
the proper cable and some terminal emulation
software to run on the computer.Such a configuration is popular in homes. For example, if your
spouse is busy working on your FreeBSD system's console, you can do
some text-only work at the same time from a less powerful personal
computer hooked up as a terminal to the FreeBSD system.X TerminalsX terminals are the most sophisticated kind of terminal
available. Instead of connecting to a serial port, they usually
connect to a network like Ethernet. Instead of being relegated to
text-only applications, they can display any X application.We introduce X terminals just for the sake of completeness.
However, this chapter does not cover setup,
configuration, or use of X terminals.Cables and PortsTo connect a terminal to your FreeBSD system, you need the right
kind of cable and a serial port to which to connect it. This section
tells you what to do. If you are already familiar with your terminal
and the cable it requires, skip to Configuration.CablesBecause terminals use serial ports, you need to use
serial—also known as RS-232C—cables to connect the
terminal to the FreeBSD system.There are a couple of kinds of serial cables. Which one
you'll use depends on the terminal you want to connect:If you are connecting a personal computer to act as a
terminal, use a null-modem
cable. A null-modem cable connects two computers or terminals
together.If you have an actual terminal, your best source of
information on what cable to use is the documentation that
accompanied the terminal. If you do not have the documentation,
then try a null-modem cable.
If that does not work, then try a standard cable.Also, the serial port on both the terminal
and your FreeBSD system must have connectors that will fit the cable
you are using.Null-modem cablesA null-modem cable passes some signals straight through, like
“signal ground,” but switches other signals. For
example, the “send data” pin on one end goes to the
“receive data” pin on the other end.If you like making your own cables, here is a table showing a
recommended way to construct a null-modem cable for use with
terminals. This table shows the RS-232C signal names and the pin
numbers on a DB-25 connector.SignalPin #Pin #SignalTxD2connects to3RxDRxD3connects to2TxDDTR20connects to6DSRDSR6connects to20DTRSG7connects to7SGDCD8connects to4RTSRTS45CTSCTS5connects to8DCDFor DCD to RTS, connect pins 4 to 5 internally in the
connector hood, and then to pin 8 in the remote
hood.Standard RS-232C CablesA standard serial cable passes all the RS-232C signals
straight-through. That is, the “send data” pin on one
end of the cable goes to the “send data” pin on the
other end. This is the type of cable to connect a modem to your
FreeBSD system, and the type of cable needed for some
terminals.PortsSerial ports are the devices through which data is transferred
between the FreeBSD host computer and the terminal. This section
describes the kinds of ports that exist and how they are addressed
in FreeBSD.Kinds of PortsSeveral kinds of serial ports exist. Before you purchase or
construct a cable, you need to make sure it will fit the ports on
your terminal and on the FreeBSD system.Most terminals will have DB25 ports. Personal computers,
including PCs running FreeBSD, will have DB25 or DB9 ports. If you
have a multiport serial card for your PC, you may have RJ-12 or
RJ-45 ports.See the documentation that accompanied the hardware for
specifications on the kind of port in use. A visual inspection of
the port often works, too.Port NamesIn FreeBSD, you access each serial port through an entry in
the /dev directory. There are two different
kinds of entries:Callin ports are named
/dev/ttydX
where X is the port number,
starting from zero. Generally, you use the callin port for
terminals. Callin ports require that the serial line assert
the data carrier detect (DCD) signal to work.Callout ports are named
/dev/cuaaX.
You usually do not use the callout port for terminals, just
for modems. You may use the callout port if the serial cable
or the terminal does not support the carrier detect
signal.See the &man.sio.4; manual page for more information.If you have connected a terminal to the first serial port
(COM1 in DOS parlance), then you want to
use /dev/ttyd0 to refer to the terminal. If
it is on the second serial port (also known as
COM2), it is
/dev/ttyd1, and so forth.Note that you may have to configure your kernel to support
each serial port, especially if you have a multiport serial card.
See Configuring the FreeBSD
Kernel for more information.ConfigurationThis section describes what you need to configure on your FreeBSD
system to enable a login session on a terminal. It assumes you have
already configured your kernel to support the serial port to which the
terminal is connected—and that you have connected it.In a nutshell, you need to tell the init
process, which is responsible for process control and initialization,
to start a getty process, which is responsible for
reading a login name and starting the login
program.To do so, you have to edit the /etc/ttys
file. First, use the su command to become root.
Then, make the following changes to
/etc/ttys:Add an line to /etc/ttys for the entry in
the /dev directory for the serial port if it
is not already there.Specify that /usr/libexec/getty be run on
the port, and specify the appropriate
getty type from the
/etc/gettytab file.Specify the default terminal type.Set the port to “on.”Specify whether the port should be
“secure.”Force init to reread the
/etc/ttys file.As an optional step, you may wish to create a custom
getty type for use in step 2 by making an
entry in /etc/gettytab. This document does
not explain how to do so; you are encouraged to see the
&man.gettytab.5; and the &man.getty.8; manual pages for more
information.The remaining sections detail how to do these steps. We will use
a running example throughout these sections to illustrate what we need
to do. In our example, we will connect two terminals to the system: a
Wyse-50 and a old 286 IBM PC running Procomm terminal software
emulating a VT-100 terminal. We connect the Wyse to the second serial
port and the 286 to the sixth serial port (a port on a multiport
serial card).For more information on the /etc/ttys
file, see the &man.ttys.5; manual page.Adding an Entry to /etc/ttysFirst, you need to add an entry to the
/etc/ttys file, unless one is already
there.The /etc/ttys file lists all of the ports
on your FreeBSD system where you want to allow logins. For example,
the first virtual console ttyv0 has an entry in
this file. You can log in on the console using this entry. This
file contains entries for the other virtual consoles, serial ports,
and pseudo-ttys. For a hardwired terminal, just list the serial
port's /dev entry without the
/dev part.When you installed your FreeBSD system, the
/etc/ttys file included entries for the first
four serial ports: ttyd0 through
ttyd3. If you are attaching a terminal on one
of those ports, you do not need to add an entry.In our example, we attached a Wyse-50 to the second serial port,
ttyd1, which is already in the file. We need
to add an entry for the 286 PC connected to the sixth serial port.
Here is an excerpt of the /etc/ttys file after
we add the new entry:
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd5Specifying the getty TypeNext, we need to specify what program will be run to handle the
logins on a terminal. For FreeBSD, the standard program to do that
is /usr/libexec/getty. It is what provides the
login: prompt.The program getty takes one (optional)
parameter on its command line, the getty
type. A getty type tells about
characteristics on the terminal line, like bps rate and parity. The
getty program reads these characteristics from
the file /etc/gettytab.The file /etc/gettytab contains lots of
entries for terminal lines both old and new. In almost all cases,
the entries that start with the text std will
work for hardwired terminals. These entries ignore parity. There is
a std entry for each bps rate from 110 to 115200.
Of course, you can add your own entries to this file. The manual
page &man.gettytab.5; provides more
information.When setting the getty type in the
/etc/ttys file, make sure that the
communications settings on the terminal match.For our example, the Wyse-50 uses no parity and connects at
38400 bps. The 286 PC uses no parity and connects at 19200 bps.
Here is the /etc/ttys file so far (showing just
the two terminals in which we are interested):
ttyd1 "/usr/libexec/getty std.38400" unknown off secure
ttyd5 "/usr/libexec/getty std.19200"Note that the second field—where we specify what program
to run—appears in quotes. This is important, otherwise the
type argument to getty might be interpreted as
the next field.Specifying the Default Terminal TypeThe third field in the /etc/ttys file lists
the default terminal type for the port. For dialup ports, you
typically put unknown or
dialup in this field because users may dial up
with practically any kind of terminal or software. For hardwired
terminals, the terminal type does not change, so you can put a real
terminal type in this field.Users will usually use the tset program in
their .login or .profile
files to check the terminal type and prompt for one if necessary.
By setting a terminal type in the /etc/ttys
file, users can forego such prompting.To find out what terminal types FreeBSD supports, see the
file /usr/share/misc/termcap. It lists
about 600 terminal types. You can add more if you wish. See
the &man.termcap.5; manual page for information.In our example, the Wyse-50 is a Wyse-50 type of terminal
(although it can emulate others, we will leave it in Wyse-50 mode).
The 286 PC is running Procomm which will be set to emulate a VT-100.
Here are the pertinent yet unfinished entries from the
/etc/ttys file:
ttyd1 "/usr/libexec/getty std.38400" wy50 off secure
ttyd5 "/usr/libexec/getty std.19200" vt100Enabling the PortThe next field in /etc/ttys, the fourth
field, tells whether to enable the port. Putting
on here will have the init
process start the program in the second field,
getty, which will prompt for a login. If you put
off in the fourth field, there will be no
getty, and hence no logins on the port.So, naturally, you want an on in this field.
Here again is the /etc/ttys file. We have
turned each port on.
ttyd1 "/usr/libexec/getty std.38400" wy50 on secure
ttyd5 "/usr/libexec/getty std.19200" vt100 onSpecifying Secure PortsWe have arrived at the last field (well, almost: there is an
optional window specifier, but we will ignore
that). The last field tells whether the port is secure.What does “secure” mean?It means that the root account (or any account with a user ID of
0) may login on the port. Insecure ports do not allow root to
login.How do you use secure and insecure ports?By marking a port as insecure, the terminal to which it is
connected will not allow root to login. People who know the root
password to your FreeBSD system will first have to login using a
regular user account. To gain superuser privileges, they will then
have to use the su command.Because of this, you will have two records to help track down
possible compromises of root privileges: both the
login and the su command make
records in the system log (and logins are also recorded in the
wtmp file).By marking a port as secure, the terminal will allow root in.
People who know the root password will just login as root. You will
not have the potentially useful login and su
command records.Which should you use?Just use “insecure.” Use “insecure”
even for terminals not in
public user areas or behind locked doors. It is quite easy to login
and use su if you need superuser
privileges.Here finally are the completed entries in the
/etc/ttys file, with comments added to describe
where the terminals are:
ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure # Kitchen
ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure # Guest bathroomForce init to Reread
/etc/ttysWhen you boot FreeBSD, the first process,
init, will read the
/etc/ttys file and start the programs listed
for each enabled port to prompt for logins.After you edit /etc/ttys, you do not want
to have to reboot your system to get init to see
the changes. So, init will reread
/etc/ttys if it receives a SIGHUP (hangup)
signal.So, after you have saved your changes to
/etc/ttys, send SIGHUP to
init by typing:&prompt.root; kill -HUP 1(The init process always
has process ID 1.)If everything is set up correctly, all cables are in place, and
the terminals are powered up, you should see login prompts. Your
terminals are ready for their first logins!Debugging your connectionEven with the most meticulous attention to detail, something could
still go wrong while setting up a terminal. Here is a list of
symptoms and some suggested fixes.No login prompt appearsMake sure the terminal is plugged in and powered up. If it
is a personal computer acting as a terminal, make sure it is
running terminal emulation software on the correct serial
port.Make sure the cable is connected firmly to both the terminal
and the FreeBSD computer. Make sure it is the right kind of
cable.Make sure the terminal and FreeBSD agree on the bps rate and
parity settings. If you have a video display terminal, make
sure the contrast and brightness controls are turned up. If it
is a printing terminal, make sure paper and ink are in good
supply.Make sure that a getty process is running
and serving the terminal. Type &prompt.root;
ps -axww|grep getty to get a
list of running getty processes. You should
see an entry for the terminal. For example, the display
22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1
shows that a getty is running on the second
serial port ttyd1 and is using the
std.38400 entry in
/etc/gettytab.If no getty process is running, make sure
you have enabled the port in /etc/ttys.
Make sure you have run kill -HUP 1.Garbage appears instead of a login promptMake sure the terminal and FreeBSD agree on the bps rate and
parity settings. Check the getty processes to make sure the
correct getty type is in use. If
not, edit /etc/ttys and run kill
-HUP 1.Characters appear doubled; the password appears when
typedSwitch the terminal (or the terminal emulation software)
from “half duplex” or “local echo” to
“full duplex.”Dialin ServiceContributed by &a.ghelmer;.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.PrerequisitesTo 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 will need certain versions of
FreeBSD, and knowledge of some terminology & modem and
cabling.FreeBSD VersionFirst, 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 (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.TerminologyA quick rundown of terminology:bpsBits per Second — the rate at which data is
transmittedDTEData Terminal Equipment — for example, your
computerDCEData Communications Equipment — your modemRS-232EIA standard for serial communications via hardwareIf you need more information about these terms and data
communications in general, the author remembers reading that
The RS-232 Bible (anybody have an ISBN?) is a
good reference.When talking about communications data rates, the author does
not use the term “baud”. Baud refers to the number of
electrical state transitions that may be made in a period of time,
while “bps” (bits per second) is the
“correct” term to use (at least it does not seem to
bother the curmudgeons quite a much).External vs. Internal ModemsExternal 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.Modems and CablesA background knowledge of these items is assumedYou know how to connect your modem to your computer so that
the two can communicate (unless you have an internal modem,
which does not need such a cable)You are familiar with your modem's command set, or know
where to look up needed commandsYou know how to configure your modem (probably via a
terminal communications program) so you can set the non-volatile
RAM parametersThe 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:Transmitted Data (SD)Received Data (RD)Request to Send (RTS)Clear to Send (CTS)Data Set Ready (DSR)Data Terminal Ready (DTR)Carrier Detect (CD)Signal Ground (SG)FreeBSD needs the RTS and
CTS signals for flow-control at speeds above
2400bps, the CD signal to detect when a call has
been answered or the line has been hung up, and the
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
do not 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 will 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.Serial Interface ConsiderationsFreeBSD 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 preferred. If the system has many active
serial ports or will have a heavy load, 16550A-based cards are
better for low-error-rate communications.Quick OverviewHere is the process that FreeBSD follows to accept dialup logins.
A getty process, spawned by
init, patiently waits to open the assigned serial
port (/dev/ttyd0, for our example). The command
ps ax might show this: 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0When a user dials the modem's line and the modems connect, the
CD line is asserted by the modem. The kernel
notices that carrier has been detected and completes
getty's open of the port. getty
sends a login: prompt at the specified initial line
speed. 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 getty's speed), getty tries
adjusting the line speeds until it receives reasonable
characters.We hope getty finds the correct speed and the
user sees a login: prompt. After the user enters
his/her login name, getty executes
/usr/bin/login, which completes the login by
asking for the user's password and then starting the user's
shell.Let's dive into the configuration...Kernel ConfigurationFreeBSD kernels typically come prepared to search for four serial
ports, known in the PC-DOS world as COM1:,
COM2:, COM3:, and
COM4:. FreeBSD can presently also handle
“dumb” multiport serial interface cards, such as the Boca
Board 1008 and 2016 (please see the manual page &man.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
/sbin/dmesg command to replay the kernel's boot
messages. In particular, look for messages that start with the
characters sio. Hint: to view just the messages
that have the word sio, use the command:&prompt.root; /sbin/dmesg | grep 'sio'For example, on a system with four serial ports, these are the
serial-port specific kernel boot messages: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 16550AIf your kernel does not recognize all of your serial ports, you
will 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” [the source for
which is in /usr/src/share/doc/smm] and
“FreeBSD Configuration Options” [in
/sys/conf/options and in
/sys/arch/conf/options.arch,
with arch for example being
i386] for more information on configuring and
building kernels. You may have to unpack the kernel source
distribution if have not installed the system sources already
(srcdist/srcsys.?? in FreeBSD 1.1,
srcdist/sys.?? 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 have
not already) by cding to
/sys/i386/conf. 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
YOURSYS, where YOURSYS is
the name of your system, but in upper-case letters. Edit the file,
and change the device lines:
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 siointrYou can comment-out or completely remove lines for devices you do
not have. If you have a multiport serial board, such as the Boca
Board BB2016, please see the &man.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.port "IO_COM1" is a substitution for
port 0x3f8, IO_COM2 is
0x2f8, IO_COM3 is
0x3e8, and IO_COM4 is
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
cannot 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 config as documented in “Building
Berkeley Kernels with Config” and the
&man.config.8; manual page to prepare a kernel building directory,
then build, install, and test the new kernel.Device Special FilesMost devices in the kernel are accessed through “device
special files”, which are located in the
/dev directory. The sio
devices are accessed through the
/dev/ttyd? (dial-in)
and /dev/cua0?
(call-out) devices. On FreeBSD version 1.1.5 and higher, there are
also initialization devices
(/dev/ttyid? and
/dev/cuai0?) and
locking devices
(/dev/ttyld? and
/dev/cual0?). The
initialization devices are used to initialize communications port
parameters each time a port is opened, such as
crtscts for modems which use
CTS/RTS signaling 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 &man.termios.4;,
&man.sio.4;, and &man.stty.1; for
information on the terminal settings, locking & initializing
devices, and setting terminal options, respectively.Making Device Special FilesA shell script called MAKEDEV in the
/dev directory manages the device special
files. (The manual page for &man.MAKEDEV.8; on FreeBSD 1.1.5 is
fairly bogus in its discussion of COM ports, so
ignore it.) To use MAKEDEV to make dialup device
special files for COM1: (port 0),
cd to /dev and issue the
command MAKEDEV ttyd0. Likewise, to make dialup
device special files for COM2: (port 1),
use MAKEDEV ttyd1.MAKEDEV not only creates the
/dev/ttyd? device
special files, but also creates the
/dev/cua0? (and all
of the initializing and locking special files under FreeBSD 1.1.5
and up) and removes the hardwired terminal special file
/dev/tty0?, if it
exists.After making new device special files, be sure to check the
permissions on the files (especially the
/dev/cua* files) to make sure that only users
who should have access to those device special files can read &
write on them — you probably do not want to allow your average
user to use your modems to dialout. The default permissions on the
/dev/cua* files should be sufficient: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/cual01These permissions allow the user uucp and
users in the group dialer to use the call-out
devices.Configuration FilesThere are three system configuration files in the
/etc directory that you will probably need to
edit to allow dialup access to your FreeBSD system. The first,
/etc/gettytab, contains configuration information
for the /usr/libexec/getty daemon. Second,
/etc/ttys holds information that tells
/sbin/init what tty devices
should have getty processes running on them.
Lastly, you can place port initialization commands in the
/etc/rc.serial script if you have FreeBSD 1.1.5.1
or higher; otherwise, you can initialize ports in the
/etc/rc.local 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 does not know
what a user's true data rate is, so full-screen programs like Emacs
will not 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
getty does not understand any particular modem's
connection speed reporting, getty gives a
login: message at an initial speed and watches the
characters that come back in response. If the user sees junk, it is
assumed that they know they should press the
<Enter> key until they see a recognizable
prompt. If the data rates do not match, getty sees
anything the user types as “junk”, tries going to the next
speed and gives the 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 does not 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./etc/gettytab/etc/gettytab is a &man.termcap.5;-style
file of configuration information for &man.getty.8;. Please see the
&man.gettytab.5; manual page for complete information on the
format of the file and the list of capabilities.Locked-Speed ConfigIf you are locking your modem's data communications rate at a
particular speed, you probably will not need to make any changes
to /etc/gettytab.Matching-Speed ConfigYou will need to setup an entry in
/etc/gettytab to give
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 D2400 entry. This
entry already exists in the FreeBSD 1.1.5.1
gettytab file, so you do not need to add it
unless it is missing under your version of FreeBSD:
#
# 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:If you have a higher speed modem, you will probably need to
add an entry in /etc/gettytab; here is an
entry you could use for a 14.4 Kbps modem with a top interface
speed of 19.2 Kbps:
#
# 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:On FreeBSD 1.1.5 and later, this will result in 8-bit, no
parity connections. Under FreeBSD 1.1, add
:np: parameters to the
std.xxx 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.
Communications rate cycling is implemented with the
nx= (“next table”) capability.
Each of the lines uses a tc= (“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 is an example of
a gettytab entry starting a 57.6 Kbps:
#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
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:If you have a slow CPU or a heavily loaded system and you do
not have 16550A-based serial ports, you may receive sio
“silo” errors at 57.6 Kbps./etc/ttys/etc/ttys is the list of
ttys for init to monitor.
/etc/ttys also provides security information to
login (user root may only
login on ttys marked secure). See the manual
page for
&man.ttys.5; for more information.You will need to either modify existing lines in
/etc/ttys or add new lines to make
init run 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:
ttyd0 "/usr/libexec/getty xxx" dialup onThe first item in the above line is the device special file for
this entry — ttyd0 means
/dev/ttyd0 is the file that this
getty will be watching. The second item,
"/usr/libexec/getty
xxx"
(xxx will be replaced by the initial
gettytab capability) is the process
init will run on the device. The third item,
dialup, is the default terminal type. The fourth
parameter, on, indicates to
init that the line is operational. There can be
a fifth parameter, secure, but it should only be
used for terminals which are physically secure (such as the system
console).The default terminal type (dialup in the
example above) may depend on local preferences.
dialup is the traditional default terminal type
on dialup lines so that users may customize their login scripts to
notice when the terminal is dialup and
automatically adjust their terminal type. However, the author finds
it easier at his site to specify vt102 as the
default terminal type, since the users just use VT102 emulation on
their remote systems.After you have made changes to /etc/ttys,
you may send the init process a
HUP signal to re-read the file. You can use the
command &prompt.root; kill -1
1 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 signaling
init.Locked-Speed ConfigFor a locked-speed configuration, your
ttys entry needs to have a fixed-speed entry
provided to getty. For a modem whose port
speed is locked at 19.2 Kbps, the ttys entry
might look like this:
ttyd0 "/usr/libexec/getty std.19200" dialup onIf your modem is locked at a different data rate, substitute
the appropriate name for the
std.speed entry for
std.19200 from
/etc/gettytab for your modem's data
rate.Matching-Speed ConfigIn a matching-speed configuration, your
ttys entry needs to reference the appropriate
beginning “auto-baud” (sic) entry in
/etc/gettytab. For example, if you added the
above suggested entry for a matching-speed modem that starts at
19.2 Kbps (the gettytab entry containing the
V19200 starting point), your
ttys entry might look like this:
ttyd0 "/usr/libexec/getty V19200" dialup on/etc/rc.serial or
/etc/rc.localHigh-speed modems, like V.32, V.32bis, and V.34 modems, need to
use hardware (RTS/CTS) flow control. You can
add stty commands to
/etc/rc.serial on FreeBSD 1.1.5.1 and up, or
/etc/rc.local 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,
/etc/rc.serial reads:
#!/bin/sh
#
# Serial port initial configuration
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuai01 crtsctsThis sets the termios flag
crtscts on serial port #1's
(COM2:) dialin and dialout initialization
devices.On an old FreeBSD 1.1 system, these entries were added to
/etc/rc.local to set the
crtscts flag on the devices:
# 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 crtsctsSince there is no 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 are not cleared by a miscreant.Modem SettingsIf you have a modem whose parameters may be permanently set in
non-volatile RAM, you will need to use a terminal program (such as
Telix under PC-DOS or tip under FreeBSD) to set the
parameters. Connect to the modem using the same communications speed
as the initial speed getty will use and configure
the modem's non-volatile RAM to match these requirements:CD asserted when connectedDTR asserted for operation; dropping DTR
hangs up line & resets modemCTS transmitted data flow controlDisable XON/XOFF flow controlRTS received data flow controlQuiet mode (no result codes)No command echoPlease 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:
ATZ
AT&C1&D2&H1&I0&R2&WYou 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:Switch 1: UP — DTR NormalSwitch 2: Do not care (Verbal Result Codes/Numeric Result
Codes)Switch 3: UP — Suppress Result CodesSwitch 4: DOWN — No echo, offline commandsSwitch 5: UP — Auto AnswerSwitch 6: UP — Carrier Detect NormalSwitch 7: UP — Load NVRAM DefaultsSwitch 8: Do not care (Smart Mode/Dumb Mode)Result codes should be disabled/suppressed for dialup modems to
avoid problems that can occur if getty mistakenly
gives a login: prompt to a modem that is in command
mode and the modem echoes the command or returns a result code. I
have heard this sequence can result in a extended, silly conversation
between getty and the modem.Locked-speed ConfigFor a locked-speed configuration, you will 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:
ATZ
AT&B1&WMatching-speed ConfigFor a variable-speed configuration, you will 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:
ATZ
AT&B2&WChecking the Modem's ConfigurationMost 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
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
ATZ and then 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.TroubleshootingHere are a few steps you can follow to check out the dialup modem
on your system.Checking out the FreeBSD systemHook 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 DTR indicator lights when the
login: prompt appears on the system's console
— if it lights up, that should mean that FreeBSD has started a
getty process on the appropriate communications
port and is waiting for the modem to accept a call.If the DTR indicator doesn't light, login to
the FreeBSD system through the console and issue a ps
ax to see if FreeBSD is trying to run a
getty process on the correct port. You should see
a lines like this among the processes displayed: 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1If you see something different, like this: 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0and the modem has not accepted a call yet, this means that
getty has completed its open on the
communications port. This could indicate a problem with the cabling
or a mis-configured modem, because getty should
not be able to open the communications port until
CD (carrier detect) has been asserted by the
modem.If you do not see any getty processes waiting
to open the desired
ttyd? port,
double-check your entries in /etc/ttys to see
if there are any mistakes there. Also, check the log file
/var/log/messages to see if there are any log
messages from init or getty
regarding any problems. If there are any messages, triple-check the
configuration files /etc/ttys and
/etc/gettytab, as well as the appropriate
device special files /dev/ttyd?, for any
mistakes, missing entries, or missing device special files.Try Dialing InTry dialing into the system; be sure to use 8 bits, no parity, 1
stop bit on the remote system. If you do not get a prompt right
away, or get garbage, try pressing <Enter>
about once per second. If you still do not see a
login: prompt after a while, try sending a
BREAK. If you are using a high-speed modem to do
the dialing, try dialing again after locking the dialing modem's
interface speed (via AT&B1 on a USR
Sportster, for example).If you still cannot get a login: prompt, check
/etc/gettytab again and double-check
thatThe initial capability name specified in
/etc/ttys for the line matches a name of a
capability in /etc/gettytabEach nx= entry matches another
gettytab capability nameEach tc= entry matches another
gettytab capability nameIf you dial but the modem on the FreeBSD system will not answer,
make sure that the modem is configured to answer the phone when
DTR is asserted. If the modem seems to be
configured correctly, verify that the DTR line is
asserted by checking the modem's indicator lights (if it has
any).If you have gone over everything several times and it still does
not work, take a break and come back to it later. If it still does
not work, perhaps you can send an electronic mail message to the
&a.questions;describing your modem and your problem, and the good
folks on the list will try to help.AcknowledgmentsThanks to these people for comments and advice:&a.kelly;for a number of good suggestionsDialout ServiceInformation integrated from FAQ.The following are tips to getting your host to be able to connect
over the modem to another computer. This is appropriate for
establishing a terminal session with a remote host.This is useful to log onto a BBS.This kind of connection can be extremely helpful to get a file on
the Internet if you have problems with PPP. If you need to ftp
something and PPP is broken, use the terminal session to ftp it. Then
use zmodem to transfer it to your machine.Why cannot I run tip or
cu?On your system, the programs tip and
cu are probably executable only by
uucp and group dialer. You
can use the group dialer to control who has
access to your modem or remote systems. Just add yourself to group
dialer.Alternatively, you can let everyone on your system run
tip and cu by typing:&prompt.root; chmod 4511 /usr/bin/tipYou do not have to run this command for cu,
since cu is just a hard link to
tip.My stock Hayes modem is not supported, what can I do?Actually, the man page for tip is out of date.
There is a generic Hayes dialer already built in. Just use
at=hayes in your /etc/remote
file.The Hayes driver is not smart enough to recognize some of the
advanced features of newer modems—messages like
BUSY, NO DIALTONE, or
CONNECT 115200 will just confuse it. You should
turn those messages off when you use tip (using
ATX0&W).Also, the dial timeout for tip is 60 seconds.
Your modem should use something less, or else tip will think there is
a communication problem. Try ATS7=45&W.Actually, as shipped tip does not yet support
it fully. The solution is to edit the file
tipconf.h in the directory
/usr/src/usr.bin/tip/tip Obviously you need the
source distribution to do this.Edit the line #define HAYES 0 to
#define HAYES 1. Then make and
make install. Everything works nicely after
that.How am I expected to enter these AT commands?Make what is called a “direct” entry in your
/etc/remote file. For example, if your modem is
hooked up to the first serial port, /dev/cuaa0,
then put in the following line:
cuaa0:dv=/dev/cuaa0:br#19200:pa=noneUse the highest bps rate your modem supports in the br capability.
Then, type tip cuaa0 and you will be connected to
your modem.If there is no /dev/cuaa0 on your system, do
this:&prompt.root; cd /dev
&prompt.root; MAKEDEV cuaa0Or use cu as root with the following command:&prompt.root; cu -lline -sspeedline is the serial port
(e.g./dev/cuaa0) and
speed is the speed
(e.g.57600). When you are done entering the AT
commands hit ~. to exit.The @ sign for the pn capability does not
work!The @ sign in the phone number capability tells
tip to look in /etc/phones for a phone number.
But the @ sign is also a special character in
capability files like /etc/remote. Escape it
with a backslash:
pn=\@How can I dial a phone number on the command line?Put what is called a “generic” entry in your
/etc/remote file. For example:
tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:Then you can things like:&prompt.root; tip -115200 5551234If you prefer cu over tip,
use a generic cu entry:
cu115200|Use cu to dial any number at 115200bps:\
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:and type:&prompt.root; cu 5551234 -s 115200Do I have to type in the bps rate every time I do that?Put in an entry for tip1200 or
cu1200, but go ahead and use whatever bps rate is
appropriate with the br capability. tip thinks a
good default is 1200 bps which is why it looks for a
tip1200 entry. You do not have to use 1200 bps,
though.I access a number of hosts through a terminal server.Rather than waiting until you are connected and typing
CONNECT <host> each time, use tip's
cm capability. For example, these entries in
/etc/remote:
pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:will let you type tip pain or tip
muffin to connect to the hosts pain or muffin; and
tip deep13 to get to the terminal server.Can tip try more than one line for each site?This is often a problem where a university has several modem lines
and several thousand students trying to use them...Make an entry for your university in
/etc/remote and use @ for the
pn capability:
big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:Then, list the phone numbers for the university in
/etc/phones:
big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114tip will try each one in the listed order, then
give up. If you want to keep retrying, run tip in
a while loop.Why do I have to hit CTRL+P twice to send CTRL+P once?CTRL+P is the default “force” character, used to tell
tip that the next character is literal data. You
can set the force character to any other character with the
~s escape, which means “set a
variable.”Type
~sforce=single-char
followed by a newline. single-char is any
single character. If you leave out
single-char, then the force character is
the nul character, which you can get by typing CTRL+2 or CTRL+SPACE.
A pretty good value for single-char is
SHIFT+CTRL+6, which I have seen only used on some terminal
servers.You can have the force character be whatever you want by
specifying the following in your $HOME/.tiprc
file:
force=<single-char>Suddenly everything I type is in UPPER CASE??You must have pressed CTRL+A, tip's
“raise character,” specially designed for people with
broken caps-lock keys. Use ~s as above and set the
variable raisechar to something reasonable. In
fact, you can set it to the same as the force character, if you never
expect to use either of these features.Here is a sample .tiprc file perfect for Emacs users who need to
type CTRL+2 and CTRL+A a lot:
force=^^
raisechar=^^The ^^ is SHIFT+CTRL+6.How can I do file transfers with tip?If you are talking to another UNIX system, you can send and
receive files with ~p (put) and
~t (take). These commands run
cat and echo on the remote
system to accept and send files. The syntax is:~plocal-fileremote-file~tremote-filelocal-fileThere is no error checking, so you probably should use another
protocol, like zmodem.How can I run zmodem with tip?To receive files, start the sending program on the remote end.
Then, type ~C rz to begin receiving them
locally.To send files, start the receiving program on the remote end.
Then, type ~C sz files
to send them to the remote system.
-
+ Setting Up the Serial Console
- &a.yokota; and &a.wpaul:
+ &a.yokota; and &a.wpaul;:The text is heavily based on
/sys/i386/boot/biosboot/README.serial written by
&a.wpaul;.IntroductionThe FreeBSD/i386 operating system can boot on a system with only
a dumb terminal on a serial port as a console. Such a configuration
should be useful for two classes of people; system administrators who
wish to install FreeBSD on a dedicated file/compute/terminal server
machines that have no keyboard or monitor attached, and developers who
want to debug the kernel or device drivers.Starting from version 3.1, FreeBSD/i386 employs a three stage
bootstrap. The first two stages are in the boot block code which is
stored at the beginning of the FreeBSD slice on the boot disk. The
boot block will then load and run the boot loader
(/boot/loader) as the third stage code. (See
&man.boot.8; and &man.loader.8; for more details on the boot
process.)In order to set up the serial console you must configure the boot
block code, the boot loader code and the kernel.In FreeBSD version 3.0, the boot loader does not exist and there
are only two stages in the bootstrap; the boot blocks directly load
the kernel into memory. If you are using FreeBSD 3.0, then you should
disregard any reference to the boot loader in this section. You can
still use the serial port as a console.FreeBSD versions 2.X are quite different from 3.X, in that the
serial port driver, &man.sio.4;, must be configured in a different
way. This chapter will not describe the settings for version 2.X
systems. If you are using these older versions of FreeBSD, please
consult /sys/i386/boot/biosboot/README.serial
instead.6 Steps to Set up the Serial ConsolePrepare a serial cable.You will need either a null-modem cable or a standard serial
cable and a null-modem adapter. See for
a discussion on serial cables.Unplug your keyboard.Most PC systems probe for the keyboard during the Power-On
Self-Test (POST) and will generate an error if the keyboard is not
detected. Some machines complain loudly about the lack of a
keyboard and will not continue to boot until it is plugged
in.If your computer complains about the error, but boots anyway,
then you do not have to do anything special. (One machine with a
Phoenix BIOS that I have here merely says Keyboard
failed then continues to boot normally.)If your computer refuses to boot without a keyboard attached
then you will have to configure the BIOS so that it ignores this
error (if it can). Consult your motherboard's manual for details
on how to do this.Setting the keyboard to “Not installed” in the
BIOS setup does not mean that you will not
be able to use your keyboard. All this does is tell the BIOS
not to probe for a keyboard at power-on so that it will not
complain if the keyboard is not plugged in. You can leave the
keyboard plugged in even with this flag set to “Not
installed” and the keyboard will still work.If your system has a PS/2 mouse, chances are very good that
you may have to unplug your mouse as well as your keyboard.
This is because PS/2 mice share some hardware with the keyboard,
and leaving the mouse plugged in can fool the keyboard probe
into thinking the keyboard is still there. It is said that a
Gateway 2000 Pentium 90Mhz system with an AMI BIOS that behaves
this way. In general this is not a problem since the mouse is
not much good without the keyboard anyway.Plug a dumb terminal into COM1:
(sio0).If you do not have a dumb terminal, you can use an old PC/XT
with a modem program, or the serial port on another UNIX box. If
you do not have a COM1:
(sio0), get one. At this time, there is
no way to select a port other than COM1:
for the boot blocks without recompiling the boot blocks. If you
are already using COM1: for another
device, you will have to temporarily remove that device and
install a new boot block and kernel once you get FreeBSD up and
running. (It is assumed that COM1: will
be available on a file/compute/terminal server anyway; if you
really need COM1: for something else
(and you can not switch that something else to
COM2: (sio1)),
then you probably should not even be bothering with all this in
the first place.)Make sure the configuration file of your kernel has
appropriate flags set for COM1:
(sio0).Relevant flags are:0x10Enables console support for this unit. The other
console flags are ignored unless this is set. Currently, at
most one unit can have console support; the first one (in
config file order) with this flag set is preferred. This
option alone will not make the serial port the console. Set
the following flag or use the
-h
option
described below, together with this flag.0x20Forces this unit to be the console (unless there is
another higher priority console), regardless of the
-h
option discussed below. This flag
replaces the COMCONSOLE option in FreeBSD
versions 2.X. The flag 0x20 must be used
together with the
0x10
flag.0x40Reserves this unit (in conjunction with
0x10) and makes the unit unavailable for
normal access. You should not set this flag to the serial
port unit which you want to use as the serial console. The
only use of this flag is to designate the unit for kernel
remote debugging. See for more
information on remote debugging.In FreeBSD 4.0-CURRENT or later the semantics of the
flag 0x40 are slightly different and
there is another flag to specify a serial port for remote
debugging.Example:
device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4See &man.sio.4; for more details.If the flags were not set, you need to run UserConfig (on a
different console) or recompile the kernel.Create boot.config in the root directory
of the a partition on the boot drive.This file will instruct the boot block code how you would like
to boot the system. In order to activate the serial console, you
need one or more of the following options—if you want
multiple options, include them all on the same line:
-h
Toggles internal and serial consoles. You can use this
to switch console devices. For instance, if you boot from
the internal (video) console, you can use
-h
to direct the boot loader and the kernel
to use the serial port as its console device. Alternatively,
if you boot from the serial port, you can use the
-h
to tell the boot loader and the kernel
to use the video display as the console instead.
-D
Toggles single and dual console configurations. In the
single configuration the console will be either the internal
console (video display) or the serial port, depending on the
state of the
-h
option above. In the dual
console configuration, both the video display and the
serial port will become the console at the same time,
regardless of the state of the
-h
option.
However, that the dual console configuration takes effect
only during the boot block is running. Once the boot loader
gets control, the console specified by the
-h
option becomes the only console.
-P
Makes the boot block probe the keyboard. If no keyboard
is found, the
-D
and
-h
options are automatically set.Due to space constraints in the current version of the
boot blocks, the
-P
option is capable of
detecting extended keyboards only. Keyboards with less
than 101 keys (and without F11 and F12 keys) may not be
detected. Keyboards on some laptop computers may not be
properly found because of this limitation. If this is to
be the case with your system, you have to abandon using
the
-P
option. Unfortunately there is no
workaround for this problem.Use either the
-P
option to select the
console automatically, or the
-h
option to
activate the serial console.You may include other options described in &man.boot.8; as
well.The options, except for
-P
, will be passed to
the boot loader (/boot/loader). The boot
loader will determine which of the internal video or the serial
port should become the console by examining the state of the
-h
option alone. This means that if you specify
the
-D
option but not the
-h
option in /boot.config, you can use the
serial port as the console only during the boot block; the boot
loader will use the internal video display as the console.Boot the machine.When you start your FreeBSD box, the boot blocks will echo the
contents of /boot.config to the console. For
example;/boot.config: -P
Keyboard: noThe second line appears only if you put
-P
in
/boot.config and indicates presence/absence
of the keyboard. These messages go to either serial or internal
console, or both, depending on the option in
/boot.config.OptionsMessage goes tononeinternal console
-h
serial console
-D
serial and internal consoles
-Dh
serial and internal consoles
-P
, keyboard presentinternal console
-P
, keyboard absentserial consoleAfter the above messages, there will be a small pause before
the boot blocks continue loading the boot loader and before any
further messages printed to the console. Under normal
circumstances, you do not need to interrupt the boot blocks, but
you may want to do so in order to make sure things are set up
correctly.Hit any key, other than Enter/Return, at the console to
interrupt the boot process. The boot blocks will then prompt you
for further action. You should now see something like:>> FreeBSD/i386 BOOT
Default: 0:wd(0,a)/boot/loader
boot:Verify the above message appears on either the serial or
internal console or both, according to the options you put in
/boot.config. If the message appears in the
correct console, hit Enter/Return to continue the boot
process.If you want the serial console but you do not see the prompt
on the serial terminal, something is wrong with your settings. In
the meantime, you enter
-h
and hit Enter/Return
(if possible) to tell the boot block (and then the boot loader and
the kernel) to choose the serial port for the console. Once the
system is up, go back and check what went wrong.After the boot loader is loaded and you are in the third stage of
the boot process you can still switch between the internal console and
the serial console by setting appropriate environment variables in the
boot loader. See .SummaryHere is the summary of various settings discussed in this section
and the console eventually selected.Case 1: You set the flags to 0x10 for sio0device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4Options in /boot.configConsole during boot blocksConsole during boot loaderConsole in kernelnothinginternalinternalinternal
-h
serialserialserial
-D
serial and internalinternalinternal
-Dh
serial and internalserialserial
-P
, keyboard presentinternalinternalinternal
-P
, keyboard absentserial and internalserialserialCase 2: You set the flags to 0x30 for sio0device sio0 at isa? port "IO_COM1" tty flags 0x30 irq 4Options in /boot.configConsole during boot blocksConsole during boot loaderConsole in kernelnothinginternalinternalserial
-h
serialserialserial
-D
serial and internalinternalserial
-Dh
serial and internalserialserial
-P
, keyboard presentinternalinternalserial
-P
, keyboard absentserial and internalserialserialTips for the Serial ConsoleSetting A Faster Serial Port SpeedBy default the serial port settings are set to 9600 baud, 8
bits, no parity, 1 stop bit. If you wish to change the speed, you
need to recompile at least the boot blocks. Add the following line
to /etc/make.conf and compile new boot
blocks:BOOT_COMCONSOLE_SPEED=19200If the serial console is configured in some other way than by
booting with
-h
, or if the serial console used by
the kernel is different from the one used by the boot blocks, then
you must also add the following option to the kernel configuration
file and compile a new kernel:options CONSPEED=19200Using Serial Port Other Than sio0 For
The ConsoleUsing a port other than sio0 as the
console requires some recompiling. If you want to use another
serial port for whatever reasons, recompile the boot blocks, the
boot loader and the kernel as follows.Get the kernel source.Edit /etc/make.conf and set
BOOT_COMCONSOLE_PORT to the address of the
port you want to use (0x3F8, 0x2F8, 0x3E8 or 0x2E8). Only
sio0 through
sio3 (COM1:
through COM4:) can be used; multiport
serial cards will not work. No interrupt setting is
needed.Create a custom kernel configuration file and add
appropriate flags for the serial port you want to use. For
example, if you want to make sio1
(COM2:) the console:device sio1 at isa? port "IO_COM2" tty flags 0x10 irq 3ordevice sio1 at isa? port "IO_COM2" tty flags 0x30 irq 3The console flags for the other serial ports should not be
set.Recompile and install the boot blocks:&prompt.root; cd /sys/boot/i386/boot2
&prompt.root; make
&prompt.root; make installRecompile and install the boot loader:&prompt.root; cd /sys/boot/i386/loader
&prompt.root; make
&prompt.root; make installRebuild and install the kernel.Write the boot blocks to the boot disk with
&man.disklabel.8; and boot from the new kernel.Entering the DDB Debugger from the Serial LineIf you wish to drop into the kernel debugger from the serial
console (useful for remote diagnostics, but also dangerous if you
generate a spurious BREAK on the serial port!) then you should
compile your kernel with the following options:options BREAK_TO_DEBUGGER
options DDBGetting a Login Prompt on the Serial ConsoleWhile this is not required, you may wish to get a
login prompt over the serial line, now that you
can see boot messages and can enter the kernel debugging session
through the serial console. Here is how to do it.Open the file /etc/ttys with an editor
and locate the lines:ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off securettyd0 through ttyd3
corresponds to COM1 through
COM4. Change off to
on for the desired port. If you have changed the
speed of the serial port, you need to change
std.9600 to match the current setting, e.g.
std.19200.You may also want to change the terminal type from
unknown to the actual type of your serial
terminal.After editing the file, you must kill -HUP 1
to make this change take effect.Changing Console from the Boot LoaderPrevious sections described how to set up the serial console by
tweaking the boot block. This section shows that you can specify the
console by entering some commands and environment variables in the
boot loader. As the boot loader is invoked as the third stage of the
boot process, after the boot block, the settings in the boot loader
will override the settings in the boot block.Setting Up the Serial ConsoleYou can easily specify the boot loader and the kernel to use the
serial console by writing just one line in
/boot/loader.rc:set console=comconsoleThis will take effect regardless of the settings in the boot
block discussed in the previous section.You had better put the above line as the first line of
/boot/loader.rc so as to see boot messages on
the serial console as early as possible.Likewise, you can specify the internal console as:set console=vidconsoleIf you do not set the boot loader environment variable
console, the boot loader, and subsequently the
kernel, will use whichever console indicated by the
-h
option in the boot block.In versions 3.2 or later, you may specify the console in
/boot/loader.conf.local or
/boot/loader.conf, rather than in
/boot/loader.rc. In this method your
/boot/loader.rc should look like:include /boot/loader.4th
startThen, create /boot/loader.conf.local and
put the following line there.console=comconsoleorconsole=vidconsoleSee &man.loader.conf.5; for more information.At the moment, the boot loader has no option equivalent to the
-P
option in the boot block, and there is no
provision to automatically select the internal console and the
serial console based on the presence of the keyboard.Using Serial Port Other than sio0 for
the ConsoleYou need to recompile the boot loader to use a serial port other
than sio0 for the serial console. Follow the
procedure described in .CaveatsThe idea here is to allow people to set up dedicated servers that
require no graphics hardware or attached keyboards. Unfortunately,
while (most?) every system will let you boot without a keyboard, there
are quite a few that will not let you boot without a graphics adapter.
Machines with AMI BIOSes can be configured to boot with no graphics
adapter installed simply by changing the `graphics adapter' setting in
the CMOS configuration to `Not installed.'However, many machines do not support this option and will refuse
to boot if you have no display hardware in the system. With these
machines, you'll have to leave some kind of graphics card plugged in,
(even if it's just a junky mono board) although you will not have to
attach a monitor into it. You might also try installing an AMI
BIOS.