854403a247
Reviewed by: -doc (content), nik (DocBook expertise)
8318 lines
314 KiB
Text
8318 lines
314 KiB
Text
<!DOCTYPE BOOK PUBLIC "-//FreeBSD//DTD DocBook V3.1-Based Extension//EN">
|
|
<book>
|
|
|
|
<bookinfo>
|
|
<title>Frequently Asked Questions for FreeBSD 2.X</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<surname>The FreeBSD Documentation Project</surname>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<pubdate>$Date: 1999-08-30 05:33:19 $</pubdate>
|
|
|
|
<abstract><para> This is the FAQ for FreeBSD systems version 2.X All entries are
|
|
assumed to be relevant to FreeBSD 2.0.5 and later, unless otherwise noted.
|
|
Any entries with a <XXX> are under construction.
|
|
If you are interested in helping with this project, send
|
|
email to the the FreeBSD documentation project mailing list <ulink URL="mailto:freebsd-doc@FreeBSD.org"><freebsd-doc@FreeBSD.org></ulink>.
|
|
The latest version of this document is always available from the <ulink URL="http://www.FreeBSD.org/">FreeBSD World Wide Web server</ulink>.
|
|
It may also be downloaded in <ulink URL="FAQ.latin1">plain text</ulink>, <ulink URL="FAQ.ps">postscript</ulink>, <ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/FAQ.pdf">PDF</ulink>
|
|
or <ulink URL="FAQ-html.tar.gz">HTML</ulink> with HTTP or gzip'd from the <ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc">FreeBSD FTP server</ulink>. You may also want to <ulink URL="http://www.FreeBSD.org/search/search.html">Search the FAQ</ulink>. </para></abstract>
|
|
|
|
</bookinfo>
|
|
|
|
<preface id="preface">
|
|
<title>Preface</title>
|
|
|
|
<para>Welcome to the FreeBSD 2.X FAQ!</para>
|
|
|
|
<para>As is usual with Usenet FAQs, this document aims to cover the most
|
|
frequently asked questions concerning the FreeBSD operating system
|
|
(and of course answer them!). Although originally intended to reduce
|
|
bandwidth and avoid the same old questions being asked over and over
|
|
again, FAQs have become recognized as valuable information resources.</para>
|
|
|
|
<para>Every effort has been made to make this FAQ as informative as
|
|
possible; if you have any suggestions as to how it may be improved,
|
|
please feel free to mail them to the <ulink URL="mailto:FAQ@FreeBSD.org">FAQ maintainer</ulink>.</para>
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para>What is FreeBSD?</para></question><answer>
|
|
|
|
<para>Briefly, FreeBSD 2.X is a UN*X-like operating system based on
|
|
U.C. Berkeley's 4.4BSD-lite release for the i386 platform. It is
|
|
also based indirectly on William Jolitz's port of U.C. Berkeley's
|
|
Net/2 to the i386, known as 386BSD, though very little of the 386BSD
|
|
code remains. A fuller description of what FreeBSD is and how
|
|
it can work for you may be found on the <ulink URL="http://www.FreeBSD.org/">FreeBSD home page</ulink>.</para>
|
|
|
|
<para>FreeBSD is used by companies, Internet Service Providers, researchers,
|
|
computer professionals, students and home users all over the world
|
|
in their work, education and recreation. See some of them in the
|
|
<ulink URL="../gallery/gallery.html">FreeBSD Gallery.</ulink></para>
|
|
|
|
<para>For more detailed information on FreeBSD, please see the
|
|
<ulink URL="../handbook/index.html">FreeBSD Handbook.</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What are the goals of FreeBSD?</para></question><answer>
|
|
|
|
<para>The goals of the FreeBSD Project are to provide software that may
|
|
be used for any purpose and without strings attached. Many of us
|
|
have a significant investment in the code (and project) and would
|
|
certainly not mind a little financial compensation now and then,
|
|
but we're definitely not prepared to insist on it. We believe
|
|
that our first and foremost "mission" is to provide code to any
|
|
and all comers, and for whatever purpose, so that the code gets
|
|
the widest possible use and provides the widest possible benefit.
|
|
This is, we believe, one of the most fundamental goals of Free
|
|
Software and one that we enthusiastically support.</para>
|
|
|
|
<para>That code in our source tree which falls under the GNU General
|
|
Public License (GPL) or GNU Library General Public License (LGPL)
|
|
comes with slightly more strings attached, though at least on the
|
|
side of enforced access rather than the usual opposite. Due to the
|
|
additional complexities that can evolve in the commercial use of
|
|
GPL software, we do, however, endeavor to replace such software
|
|
with submissions under the more relaxed BSD copyright whenever
|
|
possible.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why is it called FreeBSD?</para></question><answer>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>It may be used free of charge, even by commercial users.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Full source for the operating system is freely available, and
|
|
the minimum possible restrictions have been placed upon its
|
|
use, distribution and incorporation into other work (commercial
|
|
or non-commercial).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Anyone who has an improvement and/or bug fix is free to submit
|
|
their code and have it added to the source tree (subject to
|
|
one or two obvious provisos).</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>For those of our readers whose first language is not English, it
|
|
may be worth pointing out that the word ``free'' is being used in two
|
|
ways here, one meaning ``at no cost'', the other meaning ``you can do
|
|
whatever you like''. Apart from one or two things you <emphasis remap=tt>cannot</emphasis>
|
|
do with the FreeBSD code, for example pretending you wrote it, you
|
|
really can do whatever you like with it.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What is the latest version of FreeBSD?</para></question><answer>
|
|
|
|
<para>Version <ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/3.2-RELEASE/">3.2</ulink> is the latest <emphasis>stable</emphasis> version; it was released
|
|
in May, 1999. This is also the latest <emphasis>release</emphasis> version.</para>
|
|
|
|
<para>Briefly explained, <emphasis>-stable</emphasis> is aimed at the ISP or other
|
|
corporate user who wants stability and a low change count over
|
|
the wizzy new features of the latest <emphasis>-current</emphasis> snapshot.
|
|
Releases can come from either "branch," but you should only use
|
|
<emphasis>-current</emphasis> if you're sure that you're prepared for its
|
|
increased volatility (relative to <emphasis>-stable</emphasis>, that is).</para>
|
|
|
|
<para>Releases are only made <xref linkend="release-freq" remap="every few months">. While many people stay more up-to-date with the
|
|
FreeBSD sources (see the questions on <xref linkend="current" remap="FreeBSD-current"> and <xref linkend="stable" remap="FreeBSD-stable">) than that, doing so is more of a
|
|
commitment, as the sources are a moving target.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="current">
|
|
<para>What is FreeBSD-current?</para></question><answer>
|
|
|
|
<para><ulink URL="../handbook/cutting-edge.html#CURRENT">FreeBSD-current</ulink> is the
|
|
development version of the operating system, which will in due
|
|
course become 4.0-RELEASE. As such, it is really only of interest
|
|
to developers working on the system and die-hard hobbyists.
|
|
See the <ulink URL="../handbook/cutting-edge.html#CURRENT">relevant section</ulink>
|
|
in the <ulink URL="../handbook/index.html">handbook</ulink> for
|
|
details on running -current.</para>
|
|
|
|
<para>If you are not familiar with the operating system or are not
|
|
capable of identifying the difference between a real problem and
|
|
a temporary problem, you should not use FreeBSD-current. This
|
|
branch sometimes evolves quite quickly and can be un-buildable
|
|
for a number of days at a time. People that use FreeBSD-current
|
|
are expected to be able to analyze any problems and only report them
|
|
if they are deemed to be mistakes rather than ``glitches''. Questions
|
|
such as ``make world produces some error about groups'' on the
|
|
-current mailing list are sometimes treated with contempt.</para>
|
|
|
|
<para>Every now and again, a <ulink URL="../releases/snapshots.html">snapshot</ulink> release is also made of this -current development
|
|
code, CDROM distributions of the occasional snapshot even now being
|
|
made available. The goals behind each snapshot release are:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>To test the latest version of the installation software.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>To give people who would like to run -current but who don't
|
|
have the time and/or bandwidth to follow it on a day-to-day
|
|
basis an easy way of bootstrapping it onto their systems.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>To preserve a fixed reference point for the code in question,
|
|
just in case we break something really badly later. (Although
|
|
CVS normally prevents anything horrible like this happening :)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>To ensure that any new features in need of testing have the
|
|
greatest possible number of potential testers.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>No claims are made that any snapshot can be considered
|
|
``production quality'' for any purpose. For stability
|
|
and tested mettle, you will have to stick to full releases.</para>
|
|
|
|
<para>Snapshot releases are directly available from <ulink URL="ftp://current.FreeBSD.org/pub/FreeBSD/">ftp://current.FreeBSD.org/pub/FreeBSD/</ulink> and are generated,
|
|
on the average, once a day for both the 4.0-current and 3.0-stable
|
|
branches.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="stable">
|
|
<para>What is the FreeBSD-stable concept?</para></question><answer>
|
|
|
|
<para>Back when FreeBSD 2.0.5 was released, we decided to branch FreeBSD
|
|
development into two parts. One branch was named <ulink URL="../handbook/stable.html">-stable</ulink>, with the
|
|
intention that only well-tested bug fixes and small incremental
|
|
enhancements would be made to it (for Internet Service Providers
|
|
and other commercial enterprises for whom sudden shifts or
|
|
experimental features are quite undesirable). The other branch was
|
|
<ulink URL="../handbook/cutting-edge.html#CURRENT">-current</ulink>, which
|
|
essentially has been one unbroken line leading towards 4.0-RELEASE
|
|
(and beyond) since 2.0 was released. If a little ASCII art would
|
|
help, this is how it looks:</para>
|
|
|
|
<para>
|
|
<literallayout> 2.0
|
|
|
|
|
|
|
|
| [2.1-stable]
|
|
*BRANCH* 2.0.5 -> 2.1 -> 2.1.5 -> 2.1.6 -> 2.1.7.1 [2.1-stable ends]
|
|
| (Mar 1997)
|
|
|
|
|
|
|
|
| [2.2-stable]
|
|
*BRANCH* 2.2.1 -> 2.2.2-RELEASE -> 2.2.5 -> 2.2.6 -> 2.2.7 -> 2.2.8 [end]
|
|
| (Mar 1997) (Oct 97) (Apr 98) (Jul 98) (Dec 98)
|
|
|
|
|
|
|
|
3.0-SNAPs (started Q1 1997)
|
|
|
|
|
|
|
|
3.0.0-RELEASE (Oct 1998)
|
|
|
|
|
| [3.0-stable]
|
|
*BRANCH* 3.1 (Feb 1999) -> 3.2 -> ... future 3.x releases ...
|
|
| (May 1999)
|
|
|
|
|
\|/
|
|
+
|
|
[4.0-current continues]</literallayout>
|
|
</para>
|
|
|
|
<para>The -current branch is slowly progressing towards 4.0 and beyond,
|
|
the previous 2.2-stable branch having just retired with the release
|
|
of 2.2.8. 3.0-stable has now replaced it, the next release coming
|
|
up with 3.3 in Q3 1999. 4.0-current is now the "current branch",
|
|
with the first 4.0 releases appearing in Q1 2000.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="release-freq"><para>When are FreeBSD releases made?</para></question><answer>
|
|
|
|
<para>As a general principle, the FreeBSD core team only release a new
|
|
version of FreeBSD when they believe that there are sufficient new
|
|
features and/or bug fixes to justify one, and are satisfied that the
|
|
changes made have settled down sufficiently to avoid compromising the
|
|
stability of the release. Many users regard this caution as one of
|
|
the best things about FreeBSD, although it can be a little
|
|
frustrating when waiting for all the latest goodies to become
|
|
available...</para>
|
|
|
|
<para>Releases are made about every 4 months on average.</para>
|
|
|
|
<para>For people needing (or wanting) a little more excitement, there are
|
|
SNAPs released more frequently, particularly during the month or so
|
|
leading up to a release.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Is FreeBSD only available for PCs ?</para></question><answer>
|
|
|
|
<para>FreeBSD 3.x currently runs on the <ulink URL="../alpha/alpha.html">DEC Alpha</ulink> as well as the
|
|
x86 architecture. Some interest has also been expressed in a
|
|
SPARC port, but details on this project are not yet clear.</para>
|
|
|
|
<para>If your machine has a different architecture and
|
|
you need something right now, we suggest you look at
|
|
<ulink URL="http://www.netbsd.org/">NetBSD</ulink> or
|
|
<ulink URL="http://www.openbsd.org/">OpenBSD</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Who is responsible for FreeBSD?</para></question><answer>
|
|
|
|
<para>The key decisions concerning the FreeBSD project, such as the
|
|
overall direction of the project and who is allowed to add code to
|
|
the source tree, are made by a <ulink URL="../handbook/staff.html#STAFF-CORE">core team</ulink> of some 15 people. There is a much larger team of
|
|
over 150 <ulink URL="../handbook/staff-committers.html">committers</ulink> who are authorized to make changes directly to the
|
|
FreeBSD source tree.</para>
|
|
|
|
<para>However, most non-trivial changes are discussed in advance in the
|
|
<xref linkend="mailing" remap="mailing lists">, and there are no restrictions
|
|
on who may take part in the discussion.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="where-get">
|
|
<para>Where can I get FreeBSD?</para></question><answer>
|
|
|
|
<para>Every significant release of FreeBSD is available via anonymous ftp
|
|
from the <ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/">FreeBSD FTP site</ulink>:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>For the current 2.2-stable release, 2.2.8R, see the
|
|
<ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/2.2.8-RELEASE/">2.2.8-RELEASE</ulink> directory.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>For the current 3.0-stable release, 3.0-RELEASE, see the
|
|
<ulink URL="ftp://current.FreeBSD.org/pub/FreeBSD/releases/3.0-RELEASE/">3.0-RELEASE</ulink> directory.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="ftp://releng22.FreeBSD.org/pub/FreeBSD/">2.2 Snapshot</ulink> releases are made once a day along the
|
|
RELENG_2_2 branch (post 2.2.8) as it slowly winds down in
|
|
maintenance mode. The RELENG_2_2 branch is currently being carefully
|
|
maintained by the legacy support folks and no changes other than
|
|
those strictly necessary for security or reliability enhancements
|
|
are now made.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="ftp://releng30.FreeBSD.org/pub/FreeBSD/">3.0 Snapshot</ulink> releases are also made once a day along the
|
|
RELENG_3 branch (post 3.0-release) as it continues on its way
|
|
towards 3.2-RELEASE.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="ftp://current.FreeBSD.org/pub/FreeBSD/">4.0 Snapshot</ulink> releases are made once a day for the
|
|
<xref linkend="current" remap="-current"> branch, these being of service
|
|
purely to bleeding-edge testers and developers.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>FreeBSD is also available via CDROM, from the following place(s):</para>
|
|
|
|
<para>Walnut Creek CDROM<!-- <br> -->
|
|
4041 Pike Lane, Suite F<!-- <br> -->
|
|
Concord, CA 94520 USA<!-- <br> -->
|
|
Orders: +1 800 786-9907<!-- <br> -->
|
|
Questions: +1 925 674-0783<!-- <br> -->
|
|
FAX: +1 925 674-0821<!-- <br> -->
|
|
email: <ulink URL="mailto:orders@cdrom.com">WC Orders address</ulink><!-- <br> -->
|
|
WWW: <ulink URL="http://www.cdrom.com/">WC Home page</ulink><!-- <br> --></para>
|
|
|
|
<para>In Australia, you may find it at:</para>
|
|
|
|
<para>Advanced Multimedia Distributors<!-- <br> -->
|
|
Factory 1/1 Ovata Drive<!-- <br> -->
|
|
Tullamarine, Melbourne<!-- <br> -->
|
|
Victoria<!-- <br> -->
|
|
Australia<!-- <br> -->
|
|
Voice: +61 3 9338 6777<!-- <br> --></para>
|
|
|
|
<para>CDROM Support BBS<!-- <br> -->
|
|
17 Irvine St<!-- <br> -->
|
|
Peppermint Grove WA 6011<!-- <br> -->
|
|
Voice: +61 9 385-3793<!-- <br> -->
|
|
Fax: +61 9 385-2360<!-- <br> --></para>
|
|
|
|
<para>And in the UK:</para>
|
|
|
|
<para>The Public Domain & Shareware Library<!-- <br> -->
|
|
Winscombe House, Beacon Rd<!-- <br> -->
|
|
Crowborough<!-- <br> -->
|
|
Sussex. TN6 1UL<!-- <br> -->
|
|
Voice: +44 1892 663-298<!-- <br> -->
|
|
Fax: +44 1892 667-473<!-- <br> --></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="mailing">
|
|
<para> Where do I find info on the FreeBSD mailing lists?
|
|
</para></question><answer>
|
|
|
|
<para>You can find full information in the <ulink URL="../handbook/eresources.html#ERESOURCES-MAIL">Handbook entry on mailing-lists.</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Where do I find the FreeBSD Y2K info?</para></question><answer>
|
|
|
|
<para>You can find full information in the <ulink URL="http://www.FreeBSD.org/y2kbug.html">FreeBSD Y2K page.</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What FreeBSD news groups are available?</para></question><answer>
|
|
|
|
<para>You can find full information in the<ulink URL="../handbook/eresources-news.html">Handbook entry on newsgroups.</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Are there FreeBSD IRC (Internet Relay Chat) channels?
|
|
</para></question><answer>
|
|
|
|
<para>Yes, most major IRC networks host a FreeBSD chat
|
|
channel:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>Channel <emphasis remap=tt>#FreeBSD</emphasis> on EFNet is
|
|
a FreeBSD forum, but don't go there for tech support
|
|
or to try and get folks there to help you avoid the pain of
|
|
reading man pages or doing your own research. It is a chat
|
|
channel, first and foremost, and topics there are just as likely
|
|
to involve sex, sports or nuclear weapons as they are FreeBSD.
|
|
You Have Been Warned!
|
|
Available at server <filename>irc.chat.org</filename>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <emphasis remap=tt>#FreeBSD</emphasis> on DALNET
|
|
is available at <filename>irc.dal.net</filename> in the US and
|
|
<filename>irc.eu.dal.net</filename> in Europe.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <emphasis remap=tt>#FreeBSD</emphasis> on UNDERNET is
|
|
available at <filename>us.undernet.org</filename> in the US and
|
|
<filename>eu.undernet.org</filename> in Europe. Same provisions as
|
|
for EFNET apply - either don't ask questions or learn to
|
|
ask amazingly politely if you want help. It's a chat channel,
|
|
not a help channel.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Finally, you can also join <emphasis remap=tt>#FreeBSD</emphasis> on BSDNET,
|
|
a smaller BSD only chat network, at <filename>irc.FreeBSD.org</filename>.
|
|
This network attempts to do more tech support and not be
|
|
as anarchistic as EFNET, UNDERNET or DALNET, but it's also
|
|
nowhere near as popular as a result. Why not volunteer to
|
|
answer FreeBSD questions on BSDNET today?</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>Each of these channels are distinct and are not connected to
|
|
each other. Their chat styles also differ, so you may need to try
|
|
each to find one suited to your chat style. As with *all* types
|
|
of IRC traffic, if you're easily offended or can't deal with lots
|
|
of young people (and more than a few older ones) doing the verbal
|
|
equivalent of jello wrestling, don't even bother with it.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Books on FreeBSD</para></question><answer>
|
|
|
|
<para>There is a FreeBSD Documentation Project which you may contact (or
|
|
even better, join) on the <emphasis remap=tt>doc</emphasis> mailing list:
|
|
<ulink URL="mailto:freebsd-doc@FreeBSD.org"><freebsd-doc@FreeBSD.org></ulink>.
|
|
This list is for discussion of the FreeBSD documentation. For
|
|
actual questions about FreeBSD, there is the <emphasis remap=tt>questions</emphasis>
|
|
mailing list:
|
|
<ulink URL="mailto:freebsd-questions@FreeBSD.org"><freebsd-questions@FreeBSD.org></ulink>.</para>
|
|
|
|
<para>A FreeBSD ``handbook'' is available, and can be found as:
|
|
<ulink URL="../handbook/index.html">the FreeBSD Handbook</ulink>.
|
|
Note that this is a work in progress, and so parts may be incomplete.</para>
|
|
|
|
<para>The definitive printed guide on FreeBSD is ``The Complete FreeBSD'',
|
|
written by Greg Lehey and published by Walnut Creek CDROM Books. Now
|
|
in its second edition, the book contains 1,750 pages of install &
|
|
system administration guidance, program setup help, and manual pages.
|
|
The book (and current FreeBSD release) can be ordered from
|
|
<ulink URL="http://www.cdrom.com">Walnut Creek</ulink>,
|
|
<ulink URL="http://www.cheapbytes.com">CheapBytes</ulink>, or at your
|
|
favorite bookstore. The ISBN is 1-57176-227-2.</para>
|
|
|
|
<para>However, as FreeBSD 2.2.X is based upon Berkeley 4.4BSD-Lite2, most
|
|
of the 4.4BSD manuals are applicable to FreeBSD 2.2.X. O'Reilly
|
|
and Associates publishes these manuals:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>4.4BSD System Manager's Manual <!-- <br> -->
|
|
By Computer Systems Research Group, UC Berkeley <!-- <br> -->
|
|
1st Edition June 1994, 804 pages <!-- <br> -->
|
|
<ulink URL="http://www.amazon.com/exec/obidos/ASIN/1-56592-080-5">ISBN</ulink>: 1-56592-080-5 <!-- <br> -->
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>4.4BSD User's Reference Manual <!-- <br> -->
|
|
By Computer Systems Research Group, UC Berkeley <!-- <br> -->
|
|
1st Edition June 1994, 905 pages <!-- <br> -->
|
|
<ulink URL="http://www.amazon.com/exec/obidos/ASIN/1-56592-075-9">ISBN</ulink>: 1-56592-075-9 <!-- <br> -->
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>4.4BSD User's Supplementary Documents <!-- <br> -->
|
|
By Computer Systems Research Group, UC Berkeley <!-- <br> -->
|
|
1st Edition July 1994, 712 pages <!-- <br> -->
|
|
<ulink URL="http://www.amazon.com/exec/obidos/ASIN/1-56592-076-7">ISBN</ulink>: 1-56592-076-7 <!-- <br> -->
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>4.4BSD Programmer's Reference Manual <!-- <br> -->
|
|
By Computer Systems Research Group, UC Berkeley <!-- <br> -->
|
|
1st Edition June 1994, 886 pages <!-- <br> -->
|
|
<ulink URL="http://www.amazon.com/exec/obidos/ASIN/1-56592-078-3">ISBN</ulink>: 1-56592-078-3 <!-- <br> -->
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>4.4BSD Programmer's Supplementary Documents <!-- <br> -->
|
|
By Computer Systems Research Group, UC Berkeley <!-- <br> -->
|
|
1st Edition July 1994, 596 pages <!-- <br> -->
|
|
<ulink URL="http://www.amazon.com/exec/obidos/ASIN/1-56592-079-1">ISBN</ulink>: 1-56592-079-1 <!-- <br> --></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>A description of these can be found via WWW as:</para>
|
|
|
|
<para><ulink URL="http://gnn.com/gnn/bus/ora/category/bsd.html">4.4BSD books description</ulink>. Due to poor sales, however, these
|
|
manuals may be hard to get a hold of.</para>
|
|
|
|
<para>For a more in-depth look at the 4.4BSD kernel organization,
|
|
you can't go wrong with:</para>
|
|
|
|
<para>McKusick, Marshall Kirk, Keith Bostic, Michael J Karels,
|
|
and John Quarterman.<!-- <br> --></para>
|
|
|
|
<para><emphasis>The Design and Implementation of the 4.4BSD Operating
|
|
System</emphasis>. Reading, Mass. : Addison-Wesley, 1996.<!-- <br> -->
|
|
<ulink URL="http://www.amazon.com/exec/obidos/ASIN/0-201-54979-4">ISBN</ulink> 0-201-54979-4<!-- <br> --></para>
|
|
|
|
<para>A good book on system administration is:</para>
|
|
|
|
<para>Evi Nemeth, Garth Snyder, Scott Seebass & Trent R. Hein,<!-- <br> -->
|
|
``Unix System Administration Handbook'', Prentice-Hall, 1995<!-- <br> -->
|
|
<ulink URL="http://www.amazon.com/exec/obidos/ASIN/0-13-151051-7">ISBN</ulink>: 0-13-151051-7<!-- <br> --></para>
|
|
|
|
<para><acronym>NOTE</acronym> make sure you get the second edition, with a red cover,
|
|
instead of the first edition.</para>
|
|
|
|
<para>This book covers the basics, as well as TCP/IP, DNS, NFS,
|
|
SLIP/PPP, sendmail, INN/NNTP, printing, etc.. It's expensive
|
|
(approx. US$45-$55), but worth it. It also
|
|
includes a CDROM with the sources for various tools; most of
|
|
these, however, are also on the FreeBSD 2.2.6R CDROM (and the
|
|
FreeBSD CDROM often has newer versions).</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I access your Problem Report database?</para></question><answer>
|
|
|
|
<para>The Problem Report database of all open user change requests
|
|
may be queried (or submitted to) by using our web-based PR
|
|
<ulink URL="http://www.FreeBSD.org/send-pr.html">submission</ulink>
|
|
and <ulink URL="http://www.FreeBSD.org/cgi/query-pr-summary.cgi">query</ulink> interfaces. The <command>send-pr(1)</command> command
|
|
can also be used to submit problem reports and change requests via
|
|
electronic mail.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Where can I get ASCII/PostScript versions of the FAQ?</para></question><answer>
|
|
|
|
<para>The up-to-date FAQ is available from the FreeBSD Web Server or any
|
|
mirror as PostScript and plain text (7 bit ASCII and 8-bit Latin1).</para>
|
|
|
|
<para>As PostScript (about 370KB):
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="http://www.FreeBSD.org/FAQ/FAQ.ps">http://www.FreeBSD.org/FAQ/FAQ.ps</ulink></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>As ASCII text (about 220KB):
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="http://www.FreeBSD.org/FAQ/FAQ.ascii">http://www.FreeBSD.org/FAQ/FAQ.ascii</ulink></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>As ISO 8859-1 text (about 220KB):
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="http://www.FreeBSD.org/FAQ/FAQ.latin1">http://www.FreeBSD.org/FAQ/FAQ.latin1</ulink></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Where can I get ASCII/PostScript versions of the Handbook?</para></question><answer>
|
|
|
|
<para>The up-to-date Handbook is available from the FreeBSD Web Server or any
|
|
mirror as PostScript and plain text (7 bit ASCII and 8-bit Latin1).</para>
|
|
|
|
<para>As PostScript (about 1.7MB):
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="http://www.FreeBSD.org/handbook/handbook.ps">http://www.FreeBSD.org/handbook/handbook.ps</ulink></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>As ASCII text (about 1080KB):
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="http://www.FreeBSD.org/handbook/handbook.ascii">http://www.FreeBSD.org/handbook/handbook.ascii</ulink></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>As ISO 8859-1 text (about 1080KB):
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="http://www.FreeBSD.org/handbook/handbook.latin1">http://www.FreeBSD.org/handbook/handbook.latin1</ulink></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>The ASCII handbook isn't plain text!</para></question><answer>
|
|
|
|
<para>True, the ASCII and Latin1 versions of the FAQ and Handbook aren't
|
|
strictly plaintext; they contain underlines and overprints that
|
|
assume the output is going directly to a dot matrix printer. If you
|
|
need to reformat them to be human-readable, run the file through col:</para>
|
|
|
|
<para>
|
|
<literallayout> $ col -b < inputfile > outputfile
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I'd like to become a FreeBSD Web mirror!</para></question><answer>
|
|
|
|
<para>Certainly! There are multiple ways to mirror the Web pages.</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>Using CVSUP: You can retrieve the formatted files using CVSUP
|
|
from cvsup.FreeBSD.org. Add this line to your cvsup file:
|
|
|
|
<literallayout>www release=current hostname=/home base=/usr/local/etc/cvsup
|
|
prefix=/usr/local/www/data/www.FreeBSD.org delete old use-rel-suffix
|
|
</literallayout>
|
|
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Using rsync: See <ulink URL="http://www.FreeBSD.org/internal/mirror.html">the mirroring page</ulink> for information.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Using ftp mirror: You can download the FTP server's copy of
|
|
the web site using your favorite ftp mirror tool. Simply start at
|
|
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I'd like to translate the documentation into Friesian.</para></question><answer>
|
|
|
|
<para>Well, we can't pay, but we might arrange a free CD or T-shirt and a
|
|
Contributor's Handbook entry if you submit a translation of the
|
|
documentation.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Other sources of information.</para></question><answer>
|
|
|
|
<para>The following newsgroups contain pertinent discussion for FreeBSD
|
|
users:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="news:comp.unix.bsd.freebsd.announce">comp.unix.bsd.freebsd.announce</ulink> (moderated)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="news:comp.unix.bsd.freebsd.misc">comp.unix.bsd.freebsd.misc</ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="news:comp.unix.bsd.misc">comp.unix.bsd.misc</ulink></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>Web resources:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>The <ulink URL="http://www.FreeBSD.org/">FreeBSD Home Page</ulink>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><anchor id="pao">If you have a laptop, be sure and see
|
|
<ulink URL="http://www.jp.FreeBSD.org/PAO/">Tatsumi Hosokawa's Mobile Computing page</ulink> in Japan.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><anchor id="smp">For information on SMP (Symmetric
|
|
MultiProcessing), please see the <ulink URL="http://www.FreeBSD.org/~fsmp/SMP/SMP.html">SMP support page</ulink>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><anchor id="multimedia">For information on FreeBSD multimedia
|
|
applications, please see the <ulink URL="http://www.FreeBSD.org/~faulkner/multimedia/mm.html">multimedia</ulink>page. If you're interested specifically in
|
|
the <ulink URL="http://www.FreeBSD.org/~ahasty/Bt848.html">Bt848</ulink> video capture chip, then follow that link.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>The FreeBSD handbook also has a fairly complete
|
|
<ulink URL="../handbook/bibliography.html">bibliography</ulink>
|
|
section which is worth reading if you're looking for actual
|
|
books to buy.</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</preface>
|
|
|
|
<chapter
|
|
id="install">
|
|
<title>Installation</title>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para>Which file do I download to get FreeBSD?</para></question><answer>
|
|
|
|
<para>You generally need just one floppy image, the <filename>floppies/boot.flp</filename> file, which you image-copy onto a 1.44MB floppy and then boot from
|
|
in order to download the rest (and the installation will manage your
|
|
TCP/IP connection, deal with tapes, CDROMs, floppies, DOS
|
|
partitions, whatever's necessary to get the rest of the bits
|
|
installed).</para>
|
|
|
|
<para>If you need to download the distributions yourself (for a DOS
|
|
filesystem install, for instance), below are some recommendations
|
|
for distributions to grab:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para> bin/<!-- <br> --></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para> manpages/<!-- <br> --></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para> compat*/<!-- <br> --></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para> doc/ <!-- <br> --></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para> src/ssys.* <!-- <br> --></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>Full instructions on this procedure and a little bit more about
|
|
installation issues in general can be found in the <ulink URL="../handbook/install.html">Handbook entry on installing FreeBSD.</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Help! The boot floppy image will not fit on a single floppy!
|
|
</para></question><answer>
|
|
|
|
<para>A 3.5 inch (1.44MB) floppy can accomodate 1474560 bytes of data.
|
|
The boot image is exactly 1474560 bytes in size.</para>
|
|
|
|
<para>Common mistakes when preparing the boot floppy are:
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>Not downloading the floppy image in <emphasis remap=tt>binary</emphasis> mode when
|
|
using <acronym>FTP</acronym>.
|
|
</para>
|
|
|
|
<para>Some FTP clients default their transfer mode to <emphasis remap=tt>ascii</emphasis>
|
|
and attempt to change any end-of-line characters received to match
|
|
the conventions used by the client's system.
|
|
This will almost invariably corrupt the boot image. Check the
|
|
size of the downloaded boot image: if it is not <emphasis>exactly</emphasis>
|
|
that on the server, then the download process is suspect.</para>
|
|
|
|
<para>To workaround: type <emphasis remap=tt>binary</emphasis> at the FTP command prompt
|
|
after getting connected to the server and before starting the
|
|
download of the image.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Using the DOS <emphasis remap=tt>copy</emphasis> command (or equivalent GUI tool) to
|
|
transfer the boot image to floppy.
|
|
</para>
|
|
|
|
<para>Programs like <emphasis remap=tt>copy</emphasis> will not work as the boot
|
|
image has been created to be booted into directly. The image has
|
|
the complete content of the floppy, track for track, and is not
|
|
meant to be placed on the floppy as a regular file.
|
|
You have to transfer it to the floppy ``raw'', using the
|
|
low-level tools (e.g. <emphasis remap=tt>fdimage</emphasis> or <emphasis remap=tt>rawrite</emphasis>)
|
|
described in the <ulink URL="../handbook/install.html">installation guide to FreeBSD</ulink>.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Where are the instructions for installing FreeBSD?</para></question><answer>
|
|
|
|
<para>Installation instructions can be found in the
|
|
<ulink URL="../handbook/install.html">Handbook entry on installing FreeBSD.</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What do I need in order to run FreeBSD?</para></question><answer>
|
|
|
|
<para>You'll need a 386 or better PC, with 5 MB or more of RAM and at
|
|
least 60 MB of hard disk space. It can run with a low end MDA
|
|
graphics card but to run X11R6, a VGA or better video card is needed.</para>
|
|
|
|
<para>See also the section on <xref linkend="hardware" remap="Hardware compatibility"></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I have only 4 MB of RAM. Can I install FreeBSD?</para></question><answer>
|
|
|
|
<para>FreeBSD 2.1.7 was the last version of FreeBSD that could be installed
|
|
on a 4MB system. Newer versions of FreeBSD, like 2.2, need at least 5MB
|
|
to install on a new system.</para>
|
|
|
|
<para>All versions of FreeBSD, including 3.0, will RUN in 4MB of ram, they
|
|
just can't run the installation program in 4MB. You can add
|
|
extra memory for the install process, if you like, and then
|
|
after the system is up and running, go back to 4MB. Or you could
|
|
always just swap your disk into a system which has >4MB, install onto
|
|
it and then swap it back.</para>
|
|
|
|
<para>There are also situations in which FreeBSD 2.1.7 will not install
|
|
in 4 MB. To be exact: it does not install with 640 kB base + 3 MB
|
|
extended memory. If your motherboard can remap some of the ``lost''
|
|
memory out of the 640kB to 1MB region, then you may still be able
|
|
to get FreeBSD 2.1.7 up.</para>
|
|
|
|
<para>Try to go into your BIOS setup and look for a ``remap'' option.
|
|
Enable it. You may also have to disable ROM shadowing.</para>
|
|
|
|
<para>It may be easier to get 4 more MB just for the install. Build a
|
|
custom kernel with only the options you need and then get the 4
|
|
MB out again.</para>
|
|
|
|
<para>You may also install 2.0.5 and then upgrade your system to 2.1.7
|
|
with the ``upgrade'' option of the 2.1.7 installation program.</para>
|
|
|
|
<para>After the installation, if you build a custom kernel, it will run
|
|
in 4 MB. Someone has even succeeded in booting with 2 MB (the
|
|
system was almost unusable though :-))</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> How can I make my own custom install floppy?
|
|
</para></question><answer>
|
|
|
|
<para>Currently there's no way to *just* make a custom install floppy.
|
|
You have to cut a whole new release, which will include your install
|
|
floppy. There's some code in <filename>/usr/src/release/floppies/Makefile</filename>
|
|
that's supposed to let you *just* make those floppies, but it's not
|
|
really gelled yet.</para>
|
|
|
|
<para>To make a custom release, follow the instructions <xref linkend="custrel" remap="here">.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can I have more than one operating system on my PC?</para></question><answer>
|
|
|
|
<para>Have a look at <ulink URL="../tutorials/multios/multios.html">The multi-OS page.</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can Windows 95 co-exist with FreeBSD?</para></question><answer>
|
|
|
|
<para>Install Windows 95 first, after that FreeBSD. FreeBSD's boot
|
|
manager will then manage to boot Win95 and FreeBSD. If you
|
|
install Windows 95 second, it will boorishly overwrite your
|
|
boot manager without even asking. If that happens, see
|
|
the next section.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Windows 95 killed my boot manager! How do I get it back?
|
|
</para></question><answer>
|
|
|
|
<para>You can reinstall the boot manager FreeBSD comes with in one of
|
|
two ways:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>Running DOS, go into the tools/ directory of your FreeBSD
|
|
distribution and look for <filename>bootinst.exe</filename>. You run it like so:
|
|
|
|
</para>
|
|
|
|
<para><emphasis remap=bf>bootinst.exe boot.bin</emphasis></para>
|
|
|
|
<para></para>
|
|
|
|
<para>and the boot manager will be reinstalled.</para>
|
|
|
|
<para></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Boot the FreeBSD boot floppy again and go to the Custom
|
|
installation menu item. Choose Partition. Select the drive which
|
|
used to contain your boot manager (likely the first one) and when you
|
|
come to the partition editor for it, as the very first thing (e.g.
|
|
do not make any changes) select (W)rite. This will ask for
|
|
confirmation, say yes, and when you get the Boot Manager selection
|
|
prompt, be sure to select "Boot Manager."
|
|
This will re-write the boot manager to disk. Now quit out of the
|
|
installation menu and reboot off the hard disk as normal.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can I install on a disk with bad blocks?</para></question><answer>
|
|
|
|
<para>FreeBSD's bad block (the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?bad144">bad144</ulink>
|
|
command) handling is still not 100% (to put it charitably) and
|
|
it must unfortunately be said that if you've got an IDE or ESDI drive
|
|
with lots of bad blocks, then FreeBSD is probably not for you!
|
|
That said, it does work on thousands of IDE based systems, so
|
|
you'd do well to try it first before simply giving up.</para>
|
|
|
|
<para>If you have a SCSI drive with bad blocks, see <xref linkend="awre" remap="this answer">.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Strange things happen when I boot the install floppy!</para></question><answer>
|
|
|
|
<para>If you're seeing things like the machine grinding to a halt or
|
|
spontaneously rebooting when you try to boot the install floppy,
|
|
here are three questions to ask yourself:-</para>
|
|
|
|
<para>
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>Did you use a new, freshly-formatted, error-free floppy
|
|
(preferably a brand-new one straight out of the box, as
|
|
opposed to the magazine coverdisk that's been lying under
|
|
the bed for the last three years)?
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Did you download the floppy image in binary (or image) mode?
|
|
(don't be embarrassed, even the best of us have accidentally
|
|
downloaded a binary file in ASCII mode at least once!)
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If you're using one of these new-fangled operating systems
|
|
like Windows95 or Windows NT, did you shut it down and restart
|
|
the system in plain, honest DOS? It seems these OS's can
|
|
interfere with programs that write directly to hardware, which
|
|
the disk creation program does; even running it inside a DOS
|
|
shell in the GUI can cause this problem.</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
</para>
|
|
|
|
<para>There have also been reports of Netscape causing problems when
|
|
downloading the boot floppy, so it's probably best to use a different
|
|
FTP client if you can.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Help! I can't install from tape!</para></question><answer>
|
|
|
|
<para>If you are installing 2.1.7R from tape, you must create the tape
|
|
using a tar blocksize of 10 (5120 bytes). The default tar
|
|
blocksize is 20 (10240 bytes), and tapes created using this
|
|
default size cannot be used to install 2.1.7R; with these tapes,
|
|
you will get an error that complains about the record size being
|
|
too big.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Connect two FreeBSD boxes over a parallel line (PLIP)
|
|
</para></question><answer>
|
|
|
|
<para>Get a laplink cable. Make sure both computer have a kernel
|
|
with lpt driver support.</para>
|
|
|
|
<para>
|
|
<literallayout> $ dmesg | grep lp
|
|
lpt0 at 0x378-0x37f irq 7 on isa
|
|
lpt0: Interrupt-driven port
|
|
lp0: TCP/IP capable interface
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Plug in the laplink cable into the parallel interface.</para>
|
|
|
|
<para>Configure the network interface parameters for lp0 on both
|
|
sites as root. For example, if you want connect the host max
|
|
with moritz</para>
|
|
|
|
<para>
|
|
<literallayout> max <-----> moritz
|
|
IP Address 10.0.0.1 10.0.0.2
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>on max start
|
|
<literallayout> # ifconfig lp0 10.0.0.1 10.0.0.2
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>on moritz start</para>
|
|
|
|
<para>
|
|
<literallayout> # ifconfig lp0 10.0.0.2 10.0.0.1
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Thats all! Please read also the manpages
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?lp">lp(4)</ulink> and
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?lpt">lpt(4)</ulink>.</para>
|
|
|
|
<para>You should also add the hosts to /etc/hosts</para>
|
|
|
|
<para>
|
|
<literallayout> 127.0.0.1 localhost.my.domain localhost
|
|
10.0.0.1 max.my.domain max
|
|
10.0.0.2 moritz.my.domain moritz
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>To check if it works do:</para>
|
|
|
|
<para>on max:</para>
|
|
|
|
<para>
|
|
<literallayout>$ ifconfig lp0
|
|
lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
|
inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000 </literallayout>
|
|
</para>
|
|
|
|
<para>
|
|
<literallayout>$ netstat -r
|
|
Routing tables
|
|
|
|
Internet:
|
|
Destination Gateway Flags Refs Use Netif Expire
|
|
moritz max UH 4 127592 lp0</literallayout>
|
|
</para>
|
|
|
|
<para>
|
|
<literallayout>$ ping -c 4 moritz
|
|
PING moritz (10.0.0.2): 56 data bytes
|
|
64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms
|
|
64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms
|
|
64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms
|
|
64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms
|
|
|
|
--- moritz ping statistics ---
|
|
4 packets transmitted, 4 packets received, 0% packet loss
|
|
round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Can I install on my laptop over PLIP (Parallel Line IP)?
|
|
</para></question><answer>
|
|
|
|
<para>Connect the two computers using a Laplink parallel cable to use
|
|
this feature:</para>
|
|
|
|
<para>
|
|
<literallayout> +----------------------------------------+
|
|
|A-name A-End B-End Descr. Port/Bit |
|
|
+----------------------------------------+
|
|
|DATA0 2 15 Data 0/0x01 |
|
|
|-ERROR 15 2 1/0x08 |
|
|
+----------------------------------------+
|
|
|DATA1 3 13 Data 0/0x02 |
|
|
|+SLCT 13 3 1/0x10 |
|
|
+----------------------------------------+
|
|
|DATA2 4 12 Data 0/0x04 |
|
|
|+PE 12 4 1/0x20 |
|
|
+----------------------------------------+
|
|
|DATA3 5 10 Strobe 0/0x08 |
|
|
|-ACK 10 5 1/0x40 |
|
|
+----------------------------------------+
|
|
|DATA4 6 11 Data 0/0x10 |
|
|
|BUSY 11 6 1/0x80 |
|
|
+----------------------------------------+
|
|
|GND 18-25 18-25 GND - |
|
|
+----------------------------------------+
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>See also <link linkend="pao">this note</link> on the Mobile Computing page.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="geometry">
|
|
<para> Which geometry should I use for a disk drive?
|
|
</para></question><answer>
|
|
|
|
<para>(By the "geometry" of a disk, we mean the number of cylinders,
|
|
heads and sectors/track on a disk - I'll refer to this as
|
|
C/H/S for convenience. This is how the PC's BIOS works out
|
|
which area on a disk to read/write from).</para>
|
|
|
|
<para>This seems to cause a lot of confusion for some reason. First
|
|
of all, the <emphasis remap=tt>physical</emphasis> geometry of a SCSI drive is totally
|
|
irrelevant, as FreeBSD works in term of disk blocks. In fact, there
|
|
is no such thing as "the" physical geometry, as the sector density
|
|
varies across the disk - what manufacturers claim is the "true"
|
|
physical geometry is usually the geometry that they've worked out
|
|
results in the least wasted space. For IDE disks, FreeBSD does
|
|
work in terms of C/H/S, but all modern drives will convert this
|
|
into block references internally as well.</para>
|
|
|
|
<para>All that matters is the <emphasis remap=tt>logical</emphasis> geometry - the answer that the
|
|
BIOS gets when it asks "what is your geometry?" and then uses to access
|
|
the disk. As FreeBSD uses the BIOS when booting, it's very important
|
|
to get this right. In particular, if you have more than one operating
|
|
system on a disk, they must all agree on the geometry, otherwise you
|
|
will have serious problems booting!</para>
|
|
|
|
<para>For SCSI disks, the geometry to use depends on whether extended
|
|
translation support is turned on in your controller (this is
|
|
often referred to as "support for DOS disks >1GB" or something
|
|
similar). If it's turned off, then use N cylinders, 64 heads
|
|
and 32 sectors/track, where 'N' is the capacity of the disk in
|
|
MB. For example, a 2GB disk should pretend to have 2048 cylinders,
|
|
64 heads and 32 sectors/track.</para>
|
|
|
|
<para>If it <emphasis remap=tt>is</emphasis> turned on (it's often supplied this way to get around
|
|
certain limitations in MSDOS) and the disk capacity is more than 1GB,
|
|
use M cylinders, 63 sectors per track (*not* 64), and 255 heads, where
|
|
'M' is the disk capacity in MB divided by 7.844238 (!). So our
|
|
example 2GB drive would have 261 cylinders, 63 sectors per track and
|
|
255 heads.</para>
|
|
|
|
<para>If you are not sure about this, or FreeBSD fails to detect the
|
|
geometry correctly during installation, the simplest way around
|
|
this is usually to create a small DOS partition on the disk. The
|
|
correct geometry should then be detected (and you can always remove
|
|
the DOS partition in the partition editor if you don't want to keep
|
|
it, or leave it around for programming network cards and the like).</para>
|
|
|
|
<para>Alternatively, there is a freely available utility distributed with
|
|
FreeBSD called ``<filename>pfdisk.exe</filename>'' (located in the <emphasis remap=tt>tools</emphasis>
|
|
subdirectory on the FreeBSD CDROM or on the various FreeBSD
|
|
ftp sites) which can be used to work out what geometry the other
|
|
operating systems on the disk are using. You can then enter this
|
|
geometry in the partition editor.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Any restrictions on how I divide the disk up?</para></question><answer>
|
|
|
|
<para>Yes. You must make sure that your root partition is below 1024
|
|
cylinders so the BIOS can boot the kernel from it. (Note that this
|
|
is a limitation in the PC's BIOS, not FreeBSD).</para>
|
|
|
|
<para>For a SCSI drive, this will normally imply that the root partition
|
|
will be in the first 1024MB (or in the first 4096MB if extended
|
|
translation is turned on - see previous question). For IDE, the
|
|
corresponding figure is 504MB.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> What about disk managers? Or, I have a large drive!
|
|
</para></question><answer>
|
|
|
|
<para>FreeBSD recognizes the Ontrack Disk Manager and makes allowances
|
|
for it. Other disk managers are not supported.</para>
|
|
|
|
<para>If you just want to use the disk with FreeBSD you don't need a
|
|
disk manager. Just configure the disk for as much space as the
|
|
BIOS can deal with (usually 504 megabytes), and FreeBSD
|
|
should figure out how much space you really have. If you're using
|
|
an old disk with an MFM controller, you may need to explicitly
|
|
tell FreeBSD how many cylinders to use.</para>
|
|
|
|
<para>If you want to use the disk with FreeBSD and another operating
|
|
system, you may be able to do without a disk manager: just make sure
|
|
the the FreeBSD boot partition and the slice for the other
|
|
operating system are in the first 1024 cylinders. If you're
|
|
reasonably careful, a 20 megabyte boot partition should be plenty.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="missing-os">
|
|
<para> When I boot FreeBSD I get ``Missing Operating System''
|
|
|
|
</para></question><answer>
|
|
|
|
<para>This is classically a case of FreeBSD and DOS or some other OS
|
|
conflicting over their ideas of disk <xref linkend="geometry" remap="geometry."> You will have to reinstall FreeBSD, but obeying the
|
|
instructions given above will almost always get you going.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I can't get past the boot manager's `F?' prompt.</para></question><answer>
|
|
|
|
<para>This is another symptom of the problem described in the preceding
|
|
question. Your BIOS geometry and FreeBSD geometry settings do
|
|
not agree! If your controller or BIOS supports cylinder
|
|
translation (often marked as ``>1GB drive support''), try
|
|
toggling its setting and reinstalling FreeBSD.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="bigram">
|
|
<para> I have >16MB of RAM. Will this cause any problems?
|
|
</para></question><answer>
|
|
|
|
<para>Apart from performance issues, no. FreeBSD 2.X comes with bounce
|
|
buffers which allow your bus mastering controller access to greater
|
|
than 16MB. (Note that this should only be required if you are using
|
|
ISA devices, although one or two broken EISA and VLB devices may
|
|
need it as well).</para>
|
|
|
|
<para>Also look at the section on <xref linkend="reallybigram" remap=">64M machines"> if you have that much memory,
|
|
or if you're using a Compaq or other BIOS that lies about
|
|
the available memory.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Do I need to install the complete sources?</para></question><answer>
|
|
|
|
<para>In general, no. However, we would strongly recommend that you
|
|
install, at a minimum, the ``<emphasis remap=tt>base</emphasis>'' source kit, which
|
|
includes several of the files mentioned here, and the
|
|
``<emphasis remap=tt>sys</emphasis>'' (kernel) source kit, which includes sources for the
|
|
kernel. There is nothing in the system which requires the
|
|
presence of the sources to operate, however, except for the
|
|
kernel-configuration program
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?config">config</ulink>. With the exception
|
|
of the kernel sources, our build structure is set up so that you
|
|
can read-only mount the sources from elsewhere via NFS and still
|
|
be able to make new binaries. (Because of the kernel-source
|
|
restriction, we recommend that you not mount this on
|
|
<filename>/usr/src</filename> directly, but rather in some other location
|
|
with appropriate symbolic links to duplicate the top-level
|
|
structure of the source tree.)</para>
|
|
|
|
<para>Having the sources on-line and knowing how to build a system with
|
|
them will make it much easier for you to upgrade to future
|
|
releases of FreeBSD.</para>
|
|
|
|
<para>To actually select a subset of the sources, use the Custom
|
|
menu item when you are in the Distributions menu of the
|
|
system installation tool. The <filename>src/install.sh</filename> script
|
|
will also install partial pieces of the source distribution,
|
|
depending on the arguments you pass it.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Do I need to build a kernel?</para></question><answer>
|
|
|
|
<para>Building a new kernel was originally pretty much a required
|
|
step in a FreeBSD installation, but more recent releases have
|
|
benefited from the introduction of a much friendlier kernel
|
|
configuration tool. When at the FreeBSD boot prompt (boot:),
|
|
use the "-c" flag and you will be dropped into a visual
|
|
configuration screen which allows you to configure the kernel's
|
|
settings for most common ISA cards.</para>
|
|
|
|
<para>It's still recommended that you eventually build a new
|
|
kernel containing just the drivers that you need, just to save a
|
|
bit of RAM, but it's no longer a strict requirement for most
|
|
systems.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I live outside the US. Can I use DES encryption?</para></question><answer>
|
|
|
|
<para>If it is not absolutely imperative that you use DES style
|
|
encryption, you can use FreeBSD's default encryption for even
|
|
<emphasis remap=bf>better</emphasis> security, and with no export restrictions. FreeBSD
|
|
2.0's password default scrambler is now <emphasis remap=bf>MD5</emphasis>-based, and is
|
|
more CPU-intensive to crack with an automated password cracker
|
|
than DES, and allows longer passwords as well. The only reason
|
|
for not using the <emphasis remap=bf>MD5</emphasis>-based crypt today would be to use the
|
|
the same password entries on FreeBSD and non-FreeBSD systems.</para>
|
|
|
|
<para>Since the DES encryption algorithm cannot legally be exported
|
|
from the US, non-US users should not download this software (as
|
|
part of the <emphasis remap=tt>secrdist</emphasis> from US FTP sites.</para>
|
|
|
|
<para>There is however a replacement libcrypt available, based on
|
|
sources written in Australia by David Burren. This code is now
|
|
available on some non-US FreeBSD mirror sites. Sources for the
|
|
unencumbered libcrypt, and binaries of the programs which use it,
|
|
can be obtained from the following FTP sites:</para>
|
|
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry><term>South Africa</term>
|
|
<listitem>
|
|
<para><filename>ftp://ftp.internat.FreeBSD.org/pub/FreeBSD</filename><!-- <br> -->
|
|
<filename>ftp://storm.sea.uct.ac.za/pub/FreeBSD</filename></para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>Brazil</term>
|
|
|
|
<listitem>
|
|
<para><filename>ftp://ftp.iqm.unicamp.br/pub/FreeBSD</filename></para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>Finland</term>
|
|
|
|
<listitem>
|
|
<para><filename>ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt</filename></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>The non-US <emphasis remap=tt>securedist</emphasis> can be used as a direct replacement
|
|
for the encumbered US <emphasis remap=tt>securedist</emphasis>. This <emphasis remap=tt>securedist</emphasis>
|
|
package is installed the same way as the US package (see
|
|
installation notes for details). If you are going to install DES
|
|
encryption, you should do so as soon as possible, before
|
|
installing other software.</para>
|
|
|
|
<para>Non-US users should please not download any encryption software
|
|
from the USA. This can get the maintainers of the sites from
|
|
which the software is downloaded into severe legal difficulties.</para>
|
|
|
|
<para>A non-US distribution of Kerberos is also being developed, and
|
|
current versions can generally be obtained by anonymous FTP from
|
|
<filename>braae.ru.ac.za</filename>.</para>
|
|
|
|
<para>There is also a <xref linkend="mailing" remap="mailing list"> for the
|
|
discussion of non-US encryption software. For more information, send
|
|
an email message with a single line saying ``<emphasis remap=tt>help</emphasis>'' in the body
|
|
of your message to</para>
|
|
|
|
<para><email><majordomo@braae.ru.ac.za></email>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>The boot floppy starts but hangs at the ``Probing Devices...''
|
|
screen.</para></question><answer>
|
|
|
|
<para>If you have a IDE Zip or Jaz drive installed, remove it and try again.
|
|
The boot floppy can get confused by the drives.
|
|
After the system is installed you can reconnect the drive. Hopefully
|
|
this will be fixed in a later release.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I get a ``panic: cant mount root'' error when rebooting the system after installation.</para></question><answer>
|
|
|
|
<para>This error comes from confusion between the boot block's and the
|
|
kernel's understanding of the disk devices. The error usually
|
|
manifests on two-disk IDE systems, with the hard disks arranged as the
|
|
master or single device on separate IDE controllers, with FreeBSD
|
|
installed on the secondary IDE controller. The boot blocks think
|
|
the system is installed on wd1 (the second BIOS disk) while the kernel
|
|
assigns the first disk on the secondary controller device wd2. After
|
|
the device probing, the kernel tries to mount what the boot blocks
|
|
think is the boot disk, wd1, while it is really wd2, and fails.</para>
|
|
|
|
<para>To fix the problem, do one of the following:</para>
|
|
|
|
<para>
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>At the Boot: prompt, enter
|
|
<emphasis remap=tt>1:wd(2,a)kernel</emphasis> and press Enter. If the system starts, then
|
|
run the command
|
|
<literallayout>echo "1:wd(2,a)kernel" > /boot.config</literallayout>
|
|
|
|
to make it the default boot string.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Move the FreeBSD disk onto the primary IDE controller, so the
|
|
hard disks are consecutive.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="../handbook/kernelconfig.html">Rebuild your kernel,</ulink>
|
|
modify the wd configuration lines to read:
|
|
|
|
<literallayout>controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr
|
|
disk wd0 at wdc0 drive 0
|
|
# disk wd1 at wdc0 drive 1 # comment out this line
|
|
|
|
controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr
|
|
disk wd1 at wdc1 drive 0 # change from wd2 to wd1
|
|
disk wd2 at wdc1 drive 1 # change from wd3 to wd2</literallayout>
|
|
|
|
|
|
Install the new kernel.
|
|
If you moved your disks and wish to restore the previous
|
|
configuration, replace the disks in the desired configuration and reboot.
|
|
Your system should boot successfully.
|
|
</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What are the limits for memory?</para></question><answer>
|
|
|
|
<para>For memory, the (theoretical) limit is 4 gigabytes. One gigabyte
|
|
has been tested; you generally can't buy i386 PCs that can support
|
|
much more than that.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What are the limits for ffs filesystems?</para></question><answer>
|
|
|
|
<para>For ffs filesystems, the maximum theoretical limit is 8 terabytes
|
|
(2G blocks), or 16TB for the default block size of 8K.
|
|
In practice, there is a soft limit of 1 terabyte, but with modifications
|
|
filesystems with 4 terabytes are possible (and exist).</para>
|
|
|
|
<para>The maximum size of a single ffs file is approximately 1G blocks
|
|
(4TB) if the block size is 4K.</para>
|
|
|
|
<para>
|
|
<literallayout> maxfilesize
|
|
----------------------------------
|
|
2.2.7 3.0
|
|
fs block size -stable -current works should-work
|
|
------------- ------- -------- ----- -----------
|
|
4K 4T-1 4T-1 4T-1 4+T
|
|
8K 32+G 8T-1 32+G 16T-1
|
|
16K 128+G 16T-1 128+G 32T-1
|
|
32K 512+G 32T-1 512+G 64T-1
|
|
64K 2048+G 64T-1 2048+G 128T-1
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>When the fs block size is 4K, triple indirect blocks work and
|
|
everything should be limited by the maximum fs block number that can
|
|
be represented using triple indirect blocks (approx. 1K^3 + 1K^2 +
|
|
1K), but everything is limited by a (wrong) limit of 1G-1 on fs block
|
|
numbers. The limit on fs block numbers should be 2G-1. There are
|
|
some bugs for fs block numbers near 2G-1, but such block numbers are
|
|
unreachable when the fs block size is 4K.</para>
|
|
|
|
<para>For block sizes of 8K and larger, everything should be limited
|
|
by the 2G-1 limit on fs block numbers, but is actually limited by the
|
|
1G-1 limit on fs block numbers, except under -stable triple indirect
|
|
blocks are unreachable, so the limit is the maxiumum fs block number
|
|
that can be represented using double indirect blocks
|
|
(approx. (blocksize/4)^2 + (blocksize/4)), and under -current
|
|
exceeding this limit may cause problems. Using the correct limit of
|
|
2G-1 blocks does cause problems.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I put 1TB files on my floppy?</para></question><answer>
|
|
|
|
<para>I keep several virtual ones on floppies :-). The maxiumum
|
|
file size is not closely related to the maximum disk size. The
|
|
maximum disk size is 1TB. It is a feature that the file size can be
|
|
larger than the disk size.</para>
|
|
|
|
<para>The following example creates a file of size 8T-1 using a
|
|
whole 32K of disk space (3 indirect blocks and 1 data block) on a
|
|
small root partition. The dd command requires a dd that works with
|
|
large files.</para>
|
|
|
|
<para>
|
|
<literallayout>ttyv0:bde@alphplex:/tmp/q> cat foo
|
|
df .
|
|
dd if=/dev/zero of=z bs=1 seek=`echo 2^43 - 2 | bc` count=1
|
|
ls -l z
|
|
du z
|
|
df .
|
|
ttyv0:bde@alphplex:/tmp/q> sh foo
|
|
Filesystem 1024-blocks Used Avail Capacity Mounted on
|
|
/dev/sd0a 64479 27702 31619 47% /
|
|
1+0 records in
|
|
1+0 records out
|
|
1 bytes transferred in 0.000187 secs (5346 bytes/sec)
|
|
-rw-r--r-- 1 bde bin 8796093022207 Sep 7 16:04 z
|
|
32 z
|
|
Filesystem 1024-blocks Used Avail Capacity Mounted on
|
|
/dev/sd0a 64479 27734 31587 47% /
|
|
ttyv0:bde@alphplex:/tmp/q> exit</literallayout>
|
|
</para>
|
|
|
|
<para>Bruce Evans, September 1998</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I compiled a new kernel and now I get the error message "archsw.readin.failed" when booting.</para></question><answer>
|
|
|
|
<para>You can boot by specifying the kernel directly at the second
|
|
stage, pressing any key when the | shows up before loader is
|
|
started. More specifically, you have upgraded the source for your
|
|
kernel, and installed a new kernel builtin from them <emphasis>without making
|
|
world</emphasis>. This is not supported. Make world.</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="hardware">
|
|
<title>Hardware compatibility </title>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para>What kind of hard drives does FreeBSD support?</para></question><answer>
|
|
|
|
<para>FreeBSD supports EIDE and SCSI drives (with a compatible
|
|
controller; see the next section), and all drives using the
|
|
original "Western Digital" interface (MFM, RLL, ESDI, and
|
|
of course IDE). A few ESDI controllers that use proprietary
|
|
interfaces may not work: stick to WD1002/3/6/7 interfaces
|
|
and clones.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Which SCSI controllers are supported?</para></question><answer>
|
|
|
|
<para>See the complete list in the
|
|
<ulink URL="../handbook/install.html#INSTALL-HW">Handbook</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Which CD-ROM drives are supported by FreeBSD?</para></question><answer>
|
|
|
|
<para>Any SCSI drive connected to a supported controller is supported.</para>
|
|
|
|
<para>The following proprietary CD-ROM interfaces are also supported:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>Mitsumi LU002 (8bit), LU005 (16bit) and FX001D (16bit 2x Speed).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Sony CDU 31/33A<!-- <br> --></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Sound Blaster Non-SCSI CD-ROM<!-- <br> --></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Matsushita/Panasonic CD-ROM<!-- <br> --></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>ATAPI compatible IDE CD-ROMs<!-- <br> --></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>All non-SCSI cards are known to be extremely slow compared to
|
|
SCSI drives, and some ATAPI CDROMs may not work.</para>
|
|
|
|
<para>As of 2.2 the FreeBSD CDROM from Walnut Creek supports booting
|
|
directly from the CD.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Does FreeBSD support ZIP drives?</para></question><answer>
|
|
|
|
<para>FreeBSD supports the SCSI ZIP drive out of the box, of course. The
|
|
ZIP drive can only be set to run at SCSI target IDs 5 or 6, but if
|
|
your SCSI host adapter's BIOS supports it you can even boot from
|
|
it. I don't know which host adapters let you boot from targets
|
|
other than 0 or 1... look at your docs (and let me know if it works
|
|
out for you).</para>
|
|
|
|
<para>ATAPI (IDE) Zip drives are supported in FreeBSD 2.2.6 and
|
|
later releases.</para>
|
|
|
|
<para>FreeBSD has contained support for Parallel Port Zip Drives since
|
|
version 3.0. If you are using a sufficiently up to date version, then
|
|
you should check that your kernel contains the <emphasis remap=tt>scbus0</emphasis>, <emphasis remap=tt>da0</emphasis>, <emphasis remap=tt>ppbus0</emphasis>, and <emphasis remap=tt>vp0</emphasis> drivers (the GENERIC kernel
|
|
contains everything except vp0). With all these drivers present, the
|
|
Parallel Port drive should be available as /dev/da0s4. Disks can
|
|
be mounted using <command>mount /dev/da0s4 /mnt</command> OR (for dos disks) <emphasis remap=tt>mount_msdos /dev/da0s4 /mnt</emphasis> as appropriate.</para>
|
|
|
|
<para>Also check out <link linkend="jaz">this note on removable drives</link>,
|
|
and <link linkend="disklabel">this note on 'formatting'</link>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Does FreeBSD support JAZ, EZ and other removable drives?
|
|
</para></question><answer>
|
|
|
|
<para>Apart from the IDE version of the EZ drive, these are all SCSI
|
|
devices, so the should all look like SCSI disks to FreeBSD, and
|
|
the IDE EZ should look like an IDE drive.</para>
|
|
|
|
<para><anchor id="jaz">I'm not sure how well FreeBSD supports changing
|
|
the media out while running. You will of course need to dismount the
|
|
drive before swapping media, and make sure that any external units are
|
|
powered on when you boot the system so FreeBSD can see them.</para>
|
|
|
|
<para>See <link linkend="disklabel">this note on 'formatting'</link>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Which multi-port serial cards are supported by FreeBSD?</para></question><answer>
|
|
|
|
<para>There is a list of these in the <ulink URL="../handbook/install.html#INSTALL-MISC">Miscellaneous devices</ulink>
|
|
section of the handbook.</para>
|
|
|
|
<para>Some unnamed clone cards have also been known to work, especially
|
|
those that claim to be AST compatible.</para>
|
|
|
|
<para>Check the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?sio">sio</ulink> man page to get more information on configuring such cards.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="busmouse">
|
|
<para>I have an unusual bus mouse. How do I set it up?</para></question><answer>
|
|
|
|
<para>FreeBSD supports the bus mouse and the InPort bus mouse from such
|
|
manufactures as Microsoft, Logitech and ATI. The bus device driver
|
|
is compiled in the GENERIC kernel by default. If you are building
|
|
a custom kernel with the bus mouse driver, make sure to add the
|
|
following line to the kernel config file:</para>
|
|
|
|
<para>
|
|
<literallayout> device mse0 at isa? port 0x23c tty irq5 vector mseintr
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>The bus mouse usually comes with an dedicatd interface card.
|
|
It may allow you to set the port address and the IRQ number other
|
|
than shown above. Refer to the manual of your mouse and the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?mse">mse</ulink>
|
|
man page for more information.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="ps2mouse">
|
|
<para> How do I use my PS/2 (``mouse port'' or ``keyboard'') mouse?</para></question><answer>
|
|
|
|
<para>If you're running a post-2.2.5 version of FreeBSD, the necessary
|
|
driver, psm, is included and enabled in the kernel. The kernel
|
|
should detect your PS/2 mouse at boot time.</para>
|
|
|
|
<para>If you're running a previous but relatively recent version of
|
|
FreeBSD (2.1.x or better) then you can simply enable it in the
|
|
kernel configuration menu at installation time, otherwise later with
|
|
-c at the boot: prompt. It is disabled by default, so you will need
|
|
to enable it explicitly.</para>
|
|
|
|
<para>If you're running an older version of FreeBSD then you'll have to
|
|
add the following lines to your kernel configuration file and compile
|
|
a new kernel:</para>
|
|
|
|
<para>
|
|
<literallayout> device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>See the <ulink URL="../handbook/kernelconfig.html">Handbook entry on configuring the kernel</ulink> if you've no
|
|
experience with building kernels.</para>
|
|
|
|
<para>Once you have a kernel detecting psm0 correctly at boot time,
|
|
make sure that an entry for psm0 exists in /dev. You can do this
|
|
by typing:</para>
|
|
|
|
<para>
|
|
<literallayout> cd /dev; sh MAKEDEV psm0
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>when logged in as root.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="moused">
|
|
<para>Is it possible to make use of a mouse in any way outside the X Window?</para></question><answer>
|
|
|
|
<para>If you are using the default console driver, syscons, you can
|
|
use a mouse pointer in text consoles to cut & paste text.
|
|
Run the mouse daemon, moused, and turn on the mouse pointer
|
|
in the virtual console:</para>
|
|
|
|
<para>
|
|
<literallayout> moused -p /dev/xxxx -t yyyy
|
|
vidcontrol -m on
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Where <emphasis remap=tt>xxxx</emphasis> is the mouse device name and <emphasis remap=tt>yyyy</emphasis>
|
|
is a protocol type for the mouse. See the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?moused">moused</ulink>
|
|
man page for supported protocol types. </para>
|
|
|
|
<para>You may wish to run the mouse daemon automatically when the
|
|
system starts. In version 2.2.1, set the following variables in
|
|
<filename>/etc/sysconfig</filename>.</para>
|
|
|
|
<para>
|
|
<literallayout> mousedtype="yyyy"
|
|
mousedport="xxxx"
|
|
mousedflags=""
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>In versions 2.2.2 or later, set the following variables in
|
|
<filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>
|
|
<literallayout> moused_type="yyyy"
|
|
moused_port="xxxx"
|
|
moused_flags=""
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Staring from FreeBSD 2.2.6, the mouse daemon is capable of
|
|
determining the correct protocol type automatically unless the mouse
|
|
is a relatively old serial mouse model. Specify ``<emphasis remap=tt>auto</emphasis>'' as
|
|
the protocol to invoke automatic detection.</para>
|
|
|
|
<para>When the mouse daemon is running, access to the mouse needs to be
|
|
coordinated between the mouse daemon and other programs such as the
|
|
X Window. Refer to <xref linkend="x-and-moused" remap="another section">
|
|
on this issue".</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I cut and paste text with mouse in the text console?</para></question><answer>
|
|
|
|
<para>Once you get the mouse daemon running (see <xref linkend="moused" remap="previous section">), hold down the button 1 (left button)
|
|
and move the mouse to select a region of
|
|
text. Then, press the button 2 (middle button) or the button 3 (right
|
|
button) to paste it at the text cursor.</para>
|
|
|
|
<para>In versions 2.2.6 and later, pressing the button 2 will paste
|
|
the text. Pressing the button 3 will ``extend'' the selected region
|
|
of text. If your mouse does not have the middle button, you may wish
|
|
to emulate it or remap buttons using moused options. See the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?moused">moused</ulink>
|
|
man page for details.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My mouse has a fancy wheel and buttons. Can I use them in FreeBSD?</para></question><answer>
|
|
|
|
<para>The answer is, unfortunately, ``It depends.'' These mice with
|
|
additional features require specialized driver in most cases.
|
|
Unless the mouse device driver or the user program has specific
|
|
support for the mouse, it will act just like a standard two, or
|
|
three button mouse.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> How do I use the mouse/trackball/touchpad on my laptop?
|
|
</para></question><answer>
|
|
|
|
<para>Please refer to <link linkend="ps2mouse">the answer to the previous question</link>. And check out <link linkend="pao">this note</link> on the Mobile
|
|
Computing page.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What types of tape drives are supported?</para></question><answer>
|
|
|
|
<para>FreeBSD supports SCSI, QIC-36 (with a QIC-02 interface) and
|
|
QIC-40/80 (Floppy based) tape drives. This includes 8-mm (aka Exabyte)
|
|
and DAT drives. The QIC-40/80 drives are known to be slow.</para>
|
|
|
|
<para>Some of the early 8-mm drives are not quite compatible with SCSI-2,
|
|
and may not work well with FreeBSD.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Does FreeBSD support tape changers?</para></question><answer>
|
|
|
|
<para>FreeBSD 2.2 supports SCSI changers using the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ch(4)">ch</ulink> device and
|
|
the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?chio">chio</ulink>
|
|
command. The details of how you actually control the changer can be
|
|
found in the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?chio">chio</ulink> man page.</para>
|
|
|
|
<para>If you're not using <ulink URL="http://www.FreeBSD.org/cgi/ports.cgi?amanda">AMANDA</ulink> or
|
|
some other product that already understands changers, remember that
|
|
they're only know how to move a tape from one point to another, so
|
|
you need to keep track of which slot a tape is in, and which slot the
|
|
tape currently in the drive needs to go back to.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Which sound cards are supported by FreeBSD?</para></question><answer>
|
|
|
|
<para>FreeBSD supports the SoundBlaster, SoundBlaster Pro, SoundBlaster
|
|
16, Pro Audio Spectrum 16, AdLib and Gravis UltraSound sound cards.
|
|
There is also limited support for MPU-401 and compatible MIDI cards.
|
|
Cards conforming to the Microsoft Sound System specification are also
|
|
supported through the pcm driver.</para>
|
|
|
|
<para><acronym>NOTE</acronym> This is only for sound! This driver does not support
|
|
CD-ROMs, SCSI or joysticks on these cards, except for the
|
|
SoundBlaster. The SoundBlaster SCSI interface and some non-SCSI
|
|
CDROMS are supported, but you can't boot off this device.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Workarounds for no sound from es1370 with pcm driver?</para></question><answer>
|
|
|
|
<para>You can run the following command everytime the machine booted up:</para>
|
|
|
|
<para>mixer pcm 100 vol 100 cd 100</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Which network cards does FreeBSD support?</para></question><answer>
|
|
|
|
<para>See the <ulink URL="../handbook/install.html#INSTALL-NICS">Ethernet cards</ulink> section of the handbook for a more
|
|
complete list. </para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I don't have a math co-processor - is that bad?</para></question><answer>
|
|
|
|
<para><emphasis remap=tt>Note</emphasis> This will only affect 386/486SX/486SLC owners - other
|
|
machines will have one built into the CPU.</para>
|
|
|
|
<para>In general this will not cause any problems, but there are
|
|
circumstances where you will take a hit, either in performance or
|
|
accuracy of the math emulation code (see the section <xref linkend="emul" remap="on FP emulation">). In particular, drawing arcs in X will be
|
|
VERY slow. It is highly recommended that you buy a math
|
|
co-processor; it's well worth it.</para>
|
|
|
|
<para><acronym>NOTE</acronym> Some math co-processors are better than others. It pains
|
|
us to say it, but nobody ever got fired for buying Intel. Unless
|
|
you're sure it works with FreeBSD, beware of clones.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What other devices does 2.X support?</para></question><answer>
|
|
|
|
<para>See the <ulink URL="../handbook/install.html#INSTALL-MISC">Handbook</ulink>
|
|
for the list of other devices supported.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Does FreeBSD support power management on my laptop?</para></question><answer>
|
|
|
|
<para>FreeBSD supports APM on certain machines. Please look in the
|
|
<acronym>LINT</acronym> kernel config file, searching for the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?apm">APM</ulink> keyword.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My Micron system hangs at boot time</para></question><answer>
|
|
|
|
<para>Certain Micron motherboards have a non-conforming PCI BIOS
|
|
implementation that causes grief when FreeBSD boots because
|
|
PCI devices don't get configured at their reported addresses.</para>
|
|
|
|
<para>Disable the "Plug and Play Operating System" flag in the BIOS
|
|
to work around this problem. More information can be found at
|
|
<ulink URL="http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron">http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I have a newer Adaptec controller and FreeBSD can't find it.
|
|
</para></question><answer>
|
|
|
|
<para>The newer AIC789x series Adaptec chips are supported under the CAM SCSI
|
|
framework which made it's debut in 3.0. Patches against 2.2-STABLE
|
|
are in <ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/">ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/</ulink>.
|
|
A CAM-enhanced boot floppy is available at <ulink URL="http://www.FreeBSD.org/~abial/cam-boot/">http://www.FreeBSD.org/~abial/cam-boot/</ulink>. In both cases read the README before
|
|
beginning. </para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I have an internal Plug & Play modem and FreeBSD can't find it.
|
|
</para></question><answer>
|
|
|
|
<para>You will need to add the modem's PnP ID to the PnP ID list in the serial driver.
|
|
To enable Plug & Play support, compile a new kernel with <emphasis remap=tt>controller pnp0</emphasis> in
|
|
the configuration file, then reboot the system. The kernel will print the PnP IDs
|
|
of all the devices it finds. Copy the PnP ID from the modem to the table in
|
|
<filename>/sys/i386/isa/sio.c</filename>, at about line 2777. Look for the string "SUP1310"
|
|
in the structure "siopnp_ids[]" to
|
|
find the table. Build the kernel again, install, reboot, and your modem should be found.</para>
|
|
|
|
<para>You may have to manually configure the PnP devices using the `pnp' command in the
|
|
boot-time configuration with a command like
|
|
<literallayout> pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8
|
|
</literallayout>
|
|
|
|
to make the modem show.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I get the boot: prompt to show on the serial console?
|
|
</para></question><answer>
|
|
|
|
<para>
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>Build a kernel with <emphasis remap=tt>options COMCONSOLE</emphasis>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Create /boot.config and place <option>-P</option> as the only text in the file.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Unplug the keyboard from the system.</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
</para>
|
|
|
|
<para>See <filename>/usr/src/sys/i386/boot/biosboot/README.serial</filename> for information.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why doesn't my 3Com PCI network card work with my Micron computer?</para></question><answer>
|
|
|
|
<para>Certain Micron motherboards have a non-conforming PCI BIOS
|
|
implementation that does not configure PCI devices at
|
|
the addresses reported. This causes grief when FreeBSD boots.</para>
|
|
|
|
<para>To work around this problem, disable the "Plug and Play Operating
|
|
System" flag in the BIOS. </para>
|
|
|
|
<para>More information on this problem is available at URL:
|
|
<ulink URL="http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron">http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Does FreeBSD support Symmetric Multiproccessing (SMP)?
|
|
</para></question><answer>
|
|
|
|
<para>SMP is supported in 3.0-STABLE and later releases only.</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="troubleshoot">
|
|
<title>Troubleshooting</title>
|
|
|
|
|
|
<qandaset><qandaentry><question
|
|
id="awre">
|
|
<para>I have bad blocks on my hard drive!</para></question><answer>
|
|
|
|
<para>With SCSI drives, the drive should be capable of re-mapping
|
|
these automatically. However, many drives are shipped with
|
|
this feature disabled, for some mysterious reason...</para>
|
|
|
|
<para>To enable this, you'll need to edit the first device page mode,
|
|
which can be done on FreeBSD by giving the command (as root)</para>
|
|
|
|
<para>
|
|
<literallayout> scsi -f /dev/rsd0c -m 1 -e -P 3
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>and changing the values of AWRE and ARRE from 0 to 1:-</para>
|
|
|
|
<para>
|
|
<literallayout> AWRE (Auto Write Reallocation Enbld): 1
|
|
ARRE (Auto Read Reallocation Enbld): 1
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>The following paragraphs were submitted by
|
|
<ulink URL="mailto:tedm@toybox.placo.com">Ted Mittelstaedt</ulink>:</para>
|
|
|
|
<para>For IDE drives, any bad block is usually a sign of potential trouble.
|
|
All modern IDE drives come with internal bad-block remapping turned
|
|
on. All IDE hard drive manufacturers today offer extensive
|
|
warranties and will replace drives with bad blocks on them.</para>
|
|
|
|
<para>If you still want to attempt to rescue an IDE drive with bad blocks,
|
|
you can attempt to download the IDE drive manufacturer's IDE diagnostic
|
|
program, and run this against the drive. Sometimes these programs can
|
|
be set to force the drive electronics to rescan the drive for bad blocks
|
|
and lock them out.</para>
|
|
|
|
<para>For ESDI, RLL and MFM drives, bad blocks are a normal part of the
|
|
drive and are no sign of trouble, generally. With a PC, the disk drive
|
|
controller card and BIOS handle the task of locking out bad sectors.
|
|
This is fine for operating systems like DOS that use BIOS code to
|
|
access the disk. However, FreeBSD's disk driver does not go through
|
|
BIOS, therefore a mechanism, bad144, exists that replaces this
|
|
functionality. bad144 only works with the wd driver,
|
|
it is NOT able to be used with SCSI. bad144 works by entering all bad
|
|
sectors found into a special file.</para>
|
|
|
|
<para>One caveat with bad144 - the bad block special file is placed on the
|
|
last track of the disk. As this file may possibly contain a listing for
|
|
a bad sector that would occur near the beginning of the disk, where the
|
|
/kernel file might be located, it therefore must be accessible to the
|
|
bootstrap program that uses BIOS calls to read the kernel file. This
|
|
means that the disk with bad144 used on it must not exceed 1024
|
|
cylinders, 16 heads, and 63 sectors. This places an effective limit
|
|
of 500MB on a disk that is mapped with bad144.</para>
|
|
|
|
<para>To use bad144, simply set the "Bad Block" scanning to ON in the
|
|
FreeBSD fdisk screen during the initial install. This works up through
|
|
FreeBSD 2.2.7. The disk must have less than 1024 cylinders. It is
|
|
generally recommended that the disk drive has been in operation for at
|
|
least 4 hours prior to this to allow for thermal expansion and track
|
|
wandering.</para>
|
|
|
|
<para>If the disk has more than 1024 cylinders (such as a large ESDI drive)
|
|
the ESDI controller uses a special translation mode to make it work
|
|
under DOS. The wd driver understands about these translation modes,
|
|
IF you enter the "translated" geometry with the "set geometry" command
|
|
in fdisk. You must also NOT use the "dangerously dedicated" mode of
|
|
creating the FreeBSD partition, as this ignores the geometry. Also,
|
|
even though fdisk will use your overridden geometry, it still knows the
|
|
true size of the disk, and will attempt to create a too large FreeBSD
|
|
partition. If the disk geometry is changed to the translated geometry,
|
|
the partition MUST be manually created with the number of blocks.</para>
|
|
|
|
<para>A quick trick to use is to set up the large ESDI disk with the ESDI
|
|
controller, boot it with a DOS disk and format it with a DOS partition.
|
|
Then, boot the FreeBSD install and in the fdisk screen, read off and
|
|
write down the blocksize and block numbers for the DOS partition. Then,
|
|
reset the geometry to the same that DOS uses, delete the DOS partition,
|
|
and create a "cooperative" FreeBSD partition using the blocksize you
|
|
recorded earlier. Then, set the partition bootable and turn on bad
|
|
block scanning. During the actual install, bad144 will run first,
|
|
before any filesystems are created. (you can view this with an Alt-F2)
|
|
If it has any trouble creating the badsector file, you have set too
|
|
large a disk geometry - reboot the system and start all over again
|
|
(including repartitioning and reformatting with DOS).</para>
|
|
|
|
<para>If remapping is enabled and you are seeing bad blocks, consider
|
|
replacing the drive. The bad blocks will only get worse as time goes on.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>FreeBSD does not recognize my Bustek 742a EISA SCSI!</para></question><answer>
|
|
|
|
<para>This info is specific to the 742a but may also cover other
|
|
Buslogic cards. (Bustek = Buslogic)</para>
|
|
|
|
<para>There are 2 general ``versions'' of the 742a card. They are
|
|
hardware revisions A-G, and revisions H - onwards. The revision
|
|
letter is located after the Assembly number on the edge of the
|
|
card. The 742a has 2 ROM chips on it, one is the BIOS chip and
|
|
the other is the Firmware chip. FreeBSD doesn't care what
|
|
version of BIOS chip you have but it does care about what version
|
|
of firmware chip. Buslogic will send upgrade ROMS out if you
|
|
call their tech support dept. The BIOS and Firmware chips are
|
|
shipped as a matched pair. You must have the most current
|
|
Firmware ROM in your adapter card for your hardware revision.</para>
|
|
|
|
<para>The REV A-G cards can only accept BIOS/Firmware sets up to
|
|
2.41/2.21. The REV H- up cards can accept the most current
|
|
BIOS/Firmware sets of 4.70/3.37. The difference between the
|
|
firmware sets is that the 3.37 firmware supports ``round robin''</para>
|
|
|
|
<para>The Buslogic cards also have a serial number on them. If you
|
|
have a old hardware revision card you can call the Buslogic RMA
|
|
department and give them the serial number and attempt to
|
|
exchange the card for a newer hardware revision. If the card is
|
|
young enough they will do so.</para>
|
|
|
|
<para>FreeBSD 2.1 only supports Firmware revisions 2.21 onward. If you
|
|
have a Firmware revision older than this your card will not be
|
|
recognized as a Buslogic card. It may be recognized as an
|
|
Adaptec 1540, however. The early Buslogic firmware contains an
|
|
AHA1540 ``emulation'' mode. This is not a good thing for an EISA
|
|
card, however.</para>
|
|
|
|
<para>If you have an old hardware revision card and you obtain the 2.21
|
|
firmware for it, you will need to check the position of jumper W1
|
|
to B-C, the default is A-B.</para>
|
|
|
|
<para>The 742a EISA cards never had the ``>16MB'' problem mentioned in
|
|
the section <xref linkend="bigram" remap="on >16 MB machines">. This is a
|
|
problem that occurs with the Vesa-Local Buslogic SCSI cards.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> My HP Netserver's SCSI controller is not detected!
|
|
</para></question><answer>
|
|
|
|
<para>This is basically a known problem. The EISA on-board SCSI controller
|
|
in the HP Netserver machines occupies EISA slot number 11, so all
|
|
the ``true'' EISA slots are in front of it. Alas, the address space
|
|
for EISA slots >= 10 collides with the address space assigned to PCI,
|
|
and FreeBSD's auto-configuration currently cannot handle this
|
|
situation very well.</para>
|
|
|
|
<para>So now, the best you can do is to pretend there is no address
|
|
range clash :), by bumping the kernel option <symbol>EISA_SLOTS</symbol>
|
|
to a value of 12.
|
|
Configure and compile a kernel, as described in the
|
|
<ulink URL="../handbook/kernelconfig.html">Handbook entry on configuring the kernel</ulink>.</para>
|
|
|
|
<para>Of course, this does present you with a chicken-and-egg problem when
|
|
installing on such a machine. In order to work around this
|
|
problem, a special hack is available inside <emphasis>UserConfig</emphasis>.
|
|
Do not use the ``visual'' interface, but the plain command-line
|
|
interface there. Simply type</para>
|
|
|
|
<para>
|
|
<literallayout> eisa 12
|
|
quit
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>at the prompt, and install your system as usual. While it's
|
|
recommended you compile and install a custom kernel anyway,</para>
|
|
|
|
<para><ulink URL="http://www.FreeBSD.org/cgi/man.cgi?dset">dset</ulink>
|
|
now also understands to save this value.</para>
|
|
|
|
<para>Hopefully, future versions will have a proper fix for this problem.</para>
|
|
|
|
<para><emphasis remap=tt>NOTE:</emphasis> You can not use a <emphasis remap=bf>dangerously dedicated</emphasis> disk with
|
|
an HP Netserver. See <link linkend="dedicate">this note</link> for
|
|
more info.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What's up with this CMD640 IDE controller?</para></question><answer>
|
|
|
|
<para>It's broken. It cannot handle commands on both channels
|
|
simultaneously.</para>
|
|
|
|
<para>There's a workaround available now and it is enabled automatically
|
|
if your system uses this chip. For the details refer to the
|
|
manual page of the disk driver (man 4 wd).</para>
|
|
|
|
<para>If you're already running FreeBSD 2.2.1 or 2.2.2 with a
|
|
CMD640 IDE controller and you want to use the second channel,
|
|
build a new kernel with <emphasis remap=tt>options "CMD640"</emphasis> enabled. This
|
|
is the default for 2.2.5 and later.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I keep seeing messages like ``<emphasis remap=tt>ed1: timeout</emphasis>''.</para></question><answer>
|
|
|
|
<para>This is usually caused by an interrupt conflict (e.g., two boards
|
|
using the same IRQ). FreeBSD prior to 2.0.5R used to be tolerant
|
|
of this, and the network driver would still function in the
|
|
presence of IRQ conflicts. However, with 2.0.5R and later, IRQ
|
|
conflicts are no longer tolerated. Boot with the -c option and
|
|
change the ed0/de0/... entry to match your board.</para>
|
|
|
|
<para>If you're using the BNC connector on your network card, you may
|
|
also see device timeouts because of bad termination. To check this,
|
|
attach a terminator directly to the NIC (with no cable) and see if
|
|
the error messages go away. </para>
|
|
|
|
<para>Some NE2000 compatible cards will give this error if there is
|
|
no link on the UTP port or if the cable is disconnected.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>When I mount a CDROM, I get ``Incorrect super block''.</para></question><answer>
|
|
|
|
<para>You have to tell
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?mount">mount</ulink>
|
|
the type of the device that you want to mount. By default,
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?mount">mount</ulink>
|
|
will assume the filesystem is of type ``<emphasis remap=tt>ufs</emphasis>''. You want to mount
|
|
a CDROM filesystem, and you do this by specifying the ``<option>-t cd9660</option>''
|
|
option to <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?mount">mount</ulink>. This does, of course, assume that the
|
|
CDROM contains an ISO 9660 filesystem, which is what most CDROMs
|
|
have. As of 1.1R, FreeBSD automatically understands the Rock Ridge
|
|
(long filename) extensions as well.</para>
|
|
|
|
<para>As an example, if you want to mount the CDROM device,
|
|
``<filename>/dev/cd0c</filename>'', under <filename>/mnt</filename>, you would execute:</para>
|
|
|
|
<para>
|
|
<literallayout> mount -t cd9660 /dev/cd0c /mnt
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Note that your device name (``<filename>/dev/cd0c</filename>'' in this
|
|
example) could be different, depending on the CDROM interface.
|
|
Note that the ``<option>-t cd9660</option>'' option just causes the
|
|
``<symbol>mount_cd9660</symbol>'' command to be executed, and so the
|
|
above example could be shortened to:</para>
|
|
|
|
<para>
|
|
<literallayout> mount_cd9660 /dev/cd0c /mnt
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>When I mount a CDROM, I get ``Device not configured''.</para></question><answer>
|
|
|
|
<para>This generally means that there is no CDROM in the CDROM drive,
|
|
or the drive is not visible on the bus. Feed the drive
|
|
something, and/or check its master/slave status if it is
|
|
IDE (ATAPI). It can take a couple of seconds for a CDROM drive
|
|
to notice that it's been fed, so be patient.</para>
|
|
|
|
<para>Sometimes a SCSI CD-ROM may be missed because it hadn't enough time
|
|
to answer the bus reset. If you have a SCSI CD-ROM please try to
|
|
add the following symbol into your kernel configuration file
|
|
and recompile.</para>
|
|
|
|
<para>
|
|
<literallayout> options "SCSI_DELAY=15"
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My printer is ridiculously slow. What can I do ?</para></question><answer>
|
|
|
|
<para>If it's parallel, and the only problem is that it's terribly
|
|
slow, try setting your printer port into ``polled'' mode:</para>
|
|
|
|
<para>
|
|
<literallayout> lptcontrol -p
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Some newer HP printers are claimed not to work correctly in
|
|
interrupt mode, apparently due to some (not yet exactly
|
|
understood) timing problem.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My programs occasionally die with ``Signal 11'' errors.</para></question><answer>
|
|
|
|
<para>This can be caused by bad hardware (memory, motherboard, etc.).
|
|
Try running a memory-testing program on your PC. Note that, even
|
|
though every memory testing program you try will report your
|
|
memory as being fine, it's possible for slightly marginal memory
|
|
to pass all memory tests, yet fail under operating conditions
|
|
(such as during bus mastering DMA from a SCSI controller like the
|
|
Adaptec 1542, when you're beating on memory by compiling a kernel,
|
|
or just when the system's running particularly hot).</para>
|
|
|
|
<para>The SIG11 FAQ (listed below) points up slow memory as being the
|
|
most common problem. Increase the number of wait states in your
|
|
BIOS setup, or get faster memory.</para>
|
|
|
|
<para>For me the guilty party has been bad cache RAM or a bad on-board
|
|
cache controller. Try disabling the on-board (secondary) cache in
|
|
the BIOS setup and see if that solves the problem.</para>
|
|
|
|
<para>There's an extensive FAQ on this at
|
|
<ulink URL="http://www.bitwizard.nl/sig11/">the SIG11 problem FAQ</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>When I boot, the screen goes black and loses sync!</para></question><answer>
|
|
|
|
<para>This is a known problem with the ATI Mach 64 video card.
|
|
The problem is that this card uses address <emphasis remap=tt>2e8</emphasis>, and
|
|
the fourth serial port does too. Due to a bug (feature?) in the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?sio">sio.c</ulink>
|
|
driver it will touch this port even if you don't have the
|
|
fourth serial port, and <emphasis remap=bf>even</emphasis> if you disable sio3 (the fourth
|
|
port) which normally uses this address.</para>
|
|
|
|
<para>Until the bug has been fixed, you can use this workaround:</para>
|
|
|
|
<para>
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>Enter <option>-c</option> at the bootprompt. (This will put the kernel
|
|
into configuration mode).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Disable <emphasis remap=tt>sio0</emphasis>, <emphasis remap=tt>sio1</emphasis>, <emphasis remap=tt>sio2</emphasis> and <emphasis remap=tt>sio3</emphasis>
|
|
(all of them). This way the sio driver doesn't get activated
|
|
-> no problems.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Type exit to continue booting.</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
</para>
|
|
|
|
<para>If you want to be able to use your serial ports,
|
|
you'll have to build a new kernel with the following
|
|
modification: in <filename>/usr/src/sys/i386/isa/sio.c</filename> find the
|
|
one occurrence of the string <literal>0x2e8</literal> and remove that string
|
|
and the preceding comma (keep the trailing comma). Now follow
|
|
the normal procedure of building a new kernel.</para>
|
|
|
|
<para>Even after applying these workarounds, you may still find that
|
|
X Window does not work properly. Some newer ATI Mach 64 video
|
|
cards (notably ATI Mach Xpression) do not run with the current
|
|
version of <emphasis remap=tt>XFree86</emphasis>; the screen goes black when you start
|
|
X Window, or it works with strange problems. You can get
|
|
a beta-version of a new X-server that works better, by looking at
|
|
<ulink URL="http://www.xfree86.org/">the XFree86 site</ulink>
|
|
and following the links to the new beta release. Get the
|
|
following files:</para>
|
|
|
|
<para><emphasis remap=tt>AccelCards, BetaReport, Cards, Devices, FILES, README.ati,
|
|
README.FreeBSD, README.Mach64, RELNOTES, VGADriver.Doc,
|
|
X312BMa64.tgz</emphasis></para>
|
|
|
|
<para>Replace the older files with the new versions and make sure you
|
|
run <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?manpath=xfree86&query=xf86config">xf86config</ulink> again.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="reallybigram">
|
|
<para> I have 128 MB of RAM but the system only uses 64 MB.
|
|
|
|
</para></question><answer>
|
|
|
|
<para>Due to the manner in which FreeBSD gets the memory size from the
|
|
BIOS, it can only detect 16 bits worth of Kbytes in size (65535
|
|
Kbytes = 64MB) (or less... some BIOSes peg the memory size to 16M).
|
|
If you have more than 64MB, FreeBSD will attempt to detect it;
|
|
however, the attempt may fail.</para>
|
|
|
|
<para>To work around this problem, you need to use the
|
|
kernel option specified below. There is a way to get complete
|
|
memory information from the BIOS, but we don't have room in the
|
|
bootblocks to do it. Someday when lack of room in the bootblocks
|
|
is fixed, we'll use the extended BIOS functions to get the full
|
|
memory information...but for now we're stuck with the kernel
|
|
option.</para>
|
|
|
|
<para><literal>options "MAXMEM=<n>"</literal></para>
|
|
|
|
<para>Where <emphasis remap=tt>n</emphasis> is your memory in Kilobytes. For a 128 MB machine,
|
|
you'd want to use <emphasis remap=tt>131072</emphasis>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>FreeBSD 2.0 panics with ``kmem_map too small!''</para></question><answer>
|
|
|
|
<para><emphasis remap=tt>Note</emphasis> The message may also be ``mb_map too small!''</para>
|
|
|
|
<para>The panic indicates that the system ran out of virtual memory for
|
|
network buffers (specifically, mbuf clusters). You can increase
|
|
the amount of VM available for mbuf clusters by adding:</para>
|
|
|
|
<para><literal>options "NMBCLUSTERS=<n>"</literal></para>
|
|
|
|
<para>to your kernel config file, where <n> is a number in the
|
|
range 512-4096, depending on the number of concurrent TCP
|
|
connections you need to support. I'd recommend trying 2048 - this
|
|
should get rid of the panic completely. You can monitor the
|
|
number of mbuf clusters allocated/in use on the system with
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?netstat">netstat -m</ulink>. The default value for NMBCLUSTERS is
|
|
<emphasis remap=tt>512 + MAXUSERS * 16</emphasis>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>``CMAP busy panic'' when rebooting with a new kernel.</para></question><answer>
|
|
|
|
<para>The logic that attempts to detect an out of date
|
|
<filename>/var/db/kvm_*.db</filename> files sometimes fails and using a
|
|
mismatched file can sometimes lead to panics.</para>
|
|
|
|
<para>If this happens, reboot single-user and do:</para>
|
|
|
|
<para>
|
|
<literallayout> rm /var/db/kvm_*.db
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>ahc0: brkadrint, Illegal Host Access at seqaddr 0x0</para></question><answer>
|
|
|
|
<para>This is a conflict with an Ultrastor SCSI Host Adapter. </para>
|
|
|
|
<para>During the boot process enter the kernel configuration menu and
|
|
disable <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?uha(4)">uha0</ulink>, which is causing the problem.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Sendmail says ``mail loops back to myself''</para></question><answer>
|
|
|
|
<para>This is answered in the sendmail FAQ as follows:-</para>
|
|
|
|
<para>
|
|
<literallayout> * I'm getting "Local configuration error" messages, such as:
|
|
|
|
553 relay.domain.net config error: mail loops back to myself
|
|
554 <user@domain.net>... Local configuration error
|
|
|
|
How can I solve this problem?
|
|
|
|
You have asked mail to the domain (e.g., domain.net) to be
|
|
forwarded to a specific host (in this case, relay.domain.net)
|
|
by using an MX record, but the relay machine doesn't recognize
|
|
itself as domain.net. Add domain.net to /etc/sendmail.cw
|
|
(if you are using FEATURE(use_cw_file)) or add "Cw domain.net"
|
|
to /etc/sendmail.cf.
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>The current version of the <ulink URL="ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq">sendmail FAQ</ulink> is no longer maintained with the sendmail
|
|
release. It is however regularly posted to
|
|
<ulink URL="news:comp.mail.sendmail">comp.mail.sendmail</ulink>,
|
|
<ulink URL="news:comp.mail.misc">comp.mail.misc</ulink>,
|
|
<ulink URL="news:comp.mail.smail">comp.mail.smail</ulink>,
|
|
<ulink URL="news:comp.answers">comp.answers</ulink>, and
|
|
<ulink URL="news:news.answers">news.answers</ulink>.
|
|
You can also receive a copy via email by sending a message to
|
|
<ulink URL="mailto:mail-server@rtfm.mit.edu">mail-server@rtfm.mit.edu</ulink> with the command "send
|
|
usenet/news.answers/mail/sendmail-faq" as the body of the
|
|
message.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Full screen applications on remote machines misbehave</para></question>
|
|
<answer>
|
|
|
|
<para>The remote machine may be setting your terminal type
|
|
to something other than the <emphasis remap=tt>cons25</emphasis> terminal type
|
|
required by the FreeBSD console.</para>
|
|
|
|
<para>There are a number of possible work-arounds for this problem:
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>After logging on to the remote machine, set your TERM shell
|
|
variable to <emphasis remap=tt>ansi</emphasis> or
|
|
<emphasis remap=tt>sco</emphasis> if the remote machine knows
|
|
about these terminal types.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Use a VT100 emulator like <ulink URL="http://www.FreeBSD.org/cgi/ports.cgi?screen-">screen</ulink>
|
|
at the FreeBSD console.
|
|
<emphasis remap=tt>screen</emphasis> offers you the ability to run multiple
|
|
concurrent sessions from one terminal, and is a neat program in its own right.
|
|
Each <emphasis remap=tt>screen</emphasis> window behaves like a VT100 terminal,
|
|
so the TERM variable at the remote end should be set to <emphasis remap=tt>
|
|
vt100</emphasis>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Install the <emphasis remap=tt>cons25</emphasis> terminal database entry on
|
|
the remote machine. The way to do this depends on the operating system on the
|
|
remote machine. The system administration manuals for the remote system
|
|
should be able to help you here.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Fire up an X server at the FreeBSD end and login to the remote machine
|
|
using an X based terminal emulator such as <emphasis remap=tt>xterm</emphasis> or
|
|
<emphasis remap=tt>rxvt</emphasis>. The TERM variable at the remote host
|
|
should be set to <emphasis remap=tt>xterm</emphasis> or <emphasis remap=tt>vt100
|
|
</emphasis>.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My machine prints "calcru: negative time..."</para></question><answer>
|
|
|
|
<para>This can be caused by various hardware and/or software ailments
|
|
relating to interrupts. It may be due to bugs but can also happen
|
|
by nature of certain devices. Running TCP/IP over the parallel
|
|
port using a large MTU is one good way to provoke this problem.
|
|
Graphics accelerators can also get you here, in which case you
|
|
should check the interrupt setting of the card first.</para>
|
|
|
|
<para>A side effect of this problem are dying processes with the
|
|
message "SIGXCPU exceeded cpu time limit".</para>
|
|
|
|
<para>For FreeBSD 3.0 and later from Nov 29, 1998 forward: If the
|
|
problem cannot be fixed otherwise the solution is to set
|
|
this sysctl variable:
|
|
<literallayout> sysctl -w kern.timecounter.method=1</literallayout>
|
|
</para>
|
|
|
|
<para> This means a performance impact, but considering the cause of
|
|
this problem, you probably will not notice. If the problem
|
|
persists, keep the sysctl set to one and set the "NTIMECOUNTER"
|
|
option in your kernel to increasingly large values. If by the
|
|
time you have reached "NTIMECOUNTER=20" the problem isn't
|
|
solved, interrupts are too hosed on your machine for reliable
|
|
timekeeping.</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="commercial">
|
|
<title>Commercial Applications</title>
|
|
|
|
<para><acronym>NOTE</acronym> This section is still very sparse, though we're hoping, of
|
|
course, that companies will add to it! :) The FreeBSD group has no
|
|
financial interest in any of the companies listed here but simply
|
|
lists them as a public service (and feels that commercial interest
|
|
in FreeBSD can have very positive effects on FreeBSD's long-term
|
|
viability). We encourage commercial software vendors to send their
|
|
entries here for inclusion. See
|
|
<ulink URL="../commercial/commercial.html">the Vendors page</ulink>
|
|
for a longer list.</para>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para>Where can I get Motif for FreeBSD?</para></question><answer>
|
|
|
|
<para>Contact <link linkend="apps2go">Apps2go</link> for an ELF Motif 2.1
|
|
distribution for FreeBSD.<anchor id="apps2go"></para>
|
|
|
|
<para>This distribution includes:
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>OSF/Motif manager, xmbind, panner, wsm.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Development kit with uil, mrm, xm, xmcxx, include and Imake
|
|
files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Static and dynamic ELF libraries (for use with FreeBSD 3.0
|
|
and above).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Demonstration applets.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>Be sure to specify that you want the FreeBSD version of Motif
|
|
when ordering! Versions for NetBSD and OpenBSD are also sold by
|
|
<emphasis>Apps2go</emphasis>. This is currently a FTP only download.</para>
|
|
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry><term>More info</term>
|
|
<listitem>
|
|
<para><ulink URL="http://www.apps2go.com/">Apps2go WWW page</ulink></para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>or</term>
|
|
|
|
<listitem>
|
|
<para><ulink URL="mailto:sales@apps2go.com">Sales</ulink> or
|
|
<ulink URL="mailto:support@apps2go.com">Support</ulink> email addresses.</para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>or</term>
|
|
|
|
<listitem>
|
|
<para>phone (817) 431 8775 or +1 817 431-8775</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>Contact <link linkend="metrox">Metro Link</link> for an either ELF or
|
|
a.out Motif 2.1 distribution for FreeBSD.</para>
|
|
|
|
<para>This distribution includes:
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>OSF/Motif manager, xmbind, panner, wsm.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Development kit with uil, mrm, xm, xmcxx, include and Imake
|
|
files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Static and dynamic libraries (specify ELF for use with FreeBSD
|
|
3.0 and later; or a.out for use with FreeBSD 2.2.8 and eariler).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Demonstration applets.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Preformatted man pages.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>Be sure to specify that you want the FreeBSD version of Motif
|
|
when ordering! Versions for Linux are also sold by
|
|
<emphasis>Metro Link</emphasis>. This is available on either a CDROM or for
|
|
FTP download.</para>
|
|
|
|
<para>Contact <link linkend="xig">Xi Graphics</link> for an a.out Motif 2.0
|
|
distribution for FreeBSD.</para>
|
|
|
|
<para>This distribution includes:
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>OSF/Motif manager, xmbind, panner, wsm.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Development kit with uil, mrm, xm, xmcxx, include and Imake
|
|
files.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Static and dynamic libraries (for use with FreeBSD 2.2.8 and
|
|
eariler).
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Demonstration applets.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Preformatted man pages.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>Be sure to specify that you want the FreeBSD version of Motif
|
|
when ordering! Versions for BSDI and Linux are also sold by
|
|
<emphasis>Xi Graphics</emphasis>. This is currently a 4 diskette set... in the
|
|
future this will change to a unified CD distribution like their CDE.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Where can I get CDE for FreeBSD?</para></question><answer>
|
|
|
|
<para><link linkend="xig">Xi Graphics</link> used to sell CDE for
|
|
FreeBSD, but no longer do.</para>
|
|
|
|
<para><ulink URL="http://www.kde.org/">KDE</ulink> is an open source
|
|
X11 desktop which is similar to CDE in many respects.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Are there any commercial high-performance X servers?
|
|
</para></question><answer>
|
|
|
|
<para>Yes, <ulink URL="http://www.xig.com/">Xi Graphics</ulink> and
|
|
<ulink URL="http://www.metrolink.com/">Metro Link</ulink> sells
|
|
Accelerated-X product for FreeBSD and other Intel based systems.
|
|
</para>
|
|
|
|
<para>The Metro Link offering is a high performance X Server that offers
|
|
easy configuration using the FreeBSD Package suite of tools, support
|
|
for multiple concurrent video boards and is distributed in binary
|
|
form only, in a convienent FTP download. Not to mention the Metro
|
|
Link offering is available at the very reasonable price of $39.
|
|
<anchor id="metrox"></para>
|
|
|
|
<para>Metro Link also sells both ELF and a.out Motif for FreeBSD (see above).</para>
|
|
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry><term>More info</term>
|
|
<listitem>
|
|
<para><ulink URL="http://www.metrolink.com/">Metro Link WWW page</ulink></para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>or</term>
|
|
|
|
<listitem>
|
|
<para><ulink URL="mailto:sales@metrolink.com">Sales</ulink> or
|
|
<ulink URL="mailto:tech@metrolink.com">Support</ulink> email addresses.</para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>or</term>
|
|
|
|
<listitem>
|
|
<para>phone (954) 938-0283 or +1 954 938-0283</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>The Xi Graphics offering is a high performance X Server that offers
|
|
easy configuration, support
|
|
for multiple concurrent video boards and is distributed in binary
|
|
form only, in a unified diskette distribution for FreeBSD and Linux.
|
|
Xi Graphics also offers a high performance X Server taylored for
|
|
laptop support.<anchor id="xig"></para>
|
|
|
|
<para>There is a free "compatibility demo" of version 5.0 available.</para>
|
|
|
|
<para>Xi Graphics also sells Motif and CDE for FreeBSD (see above).</para>
|
|
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry><term>More info</term>
|
|
<listitem>
|
|
<para><ulink URL="http://www.xig.com/">Xi Graphics WWW page</ulink></para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>or</term>
|
|
|
|
<listitem>
|
|
<para><ulink URL="mailto:sales@xig.com">Sales</ulink> or
|
|
<ulink URL="mailto:support@xig.com">Support</ulink> email addresses.</para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>or</term>
|
|
|
|
<listitem>
|
|
<para>phone (800) 946 7433 or +1 303 298-7478.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Are there any Database systems for FreeBSD?</para></question><answer>
|
|
|
|
<para>Yes! See the <ulink URL="../commercial/software_bycat.html#CATEGORY_DATABASE">Commercial Vendors</ulink> section of FreeBSD's Web site.</para>
|
|
|
|
<para>Also see the <ulink URL="../ports/databases.html">Databases</ulink> section of the Ports collection.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can I run Oracle on FreeBSD?</para></question><answer>
|
|
|
|
<para>Yes. The following pages tell you exactly how to setup Linux-Oracle
|
|
on FreeBSD:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="http://www.scc.nl/~marcel/howto-oracle.html">http://www.scc.nl/~marcel/howto-oracle.html</ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd">http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-freebsd</ulink></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="applications">
|
|
<title>User Applications</title>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para>So, where are all the user applications?</para></question><answer>
|
|
|
|
<para>Please take a look at <ulink URL="../ports/">the ports page</ulink> for info on software packages ported to
|
|
FreeBSD. The list currently tops 1800 and is growing daily, so come
|
|
back to check often or subscribe to the <emphasis remap=tt>freebsd-announce</emphasis>
|
|
<xref linkend="mailing" remap="mailing list"> for periodic updates on new
|
|
entries.</para>
|
|
|
|
<para>Most ports should be available for the 2.2, 3.x and 4.0
|
|
branches, and many of them should work on 2.1.x systems as
|
|
well. Each time a FreeBSD release is made, a snapshot of the
|
|
ports tree at the time of release in also included in the
|
|
<filename>ports/</filename> directory.</para>
|
|
|
|
<para>We also support the concept of a ``package'', essentially no
|
|
more than a gzipped binary distribution with a little extra
|
|
intelligence embedded in it for doing whatever custom installation
|
|
work is required. A package can be installed and uninstalled
|
|
again easily without having to know the gory details of which
|
|
files it includes.</para>
|
|
|
|
<para>Use the package installation menu in <filename>/stand/sysinstall</filename>
|
|
(under the post-configuration menu item) or invoke the
|
|
<command>pkg_add(1)</command> command on the specific package files you're
|
|
interested in installing. Package files can usually be identified by
|
|
their <filename>.tgz</filename> suffix and CDROM distribution people will have
|
|
a <filename>packages/All</filename> directory on their CD which contains such
|
|
files. They can also be downloaded over the net for various versions
|
|
of FreeBSD at the following locations:</para>
|
|
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry><term>for 2.2.8-release/2.2.8-stable</term>
|
|
<listitem>
|
|
<para><ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/</ulink></para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>for 3.2-release/3.2-stable</term>
|
|
|
|
<listitem>
|
|
<para><ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/</ulink></para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>for 4.0-current</term>
|
|
|
|
<listitem>
|
|
<para><ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-current/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-current/</ulink></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>or your nearest local mirror site.</para>
|
|
|
|
<para>Note that all ports may not be available as packages since
|
|
new ones are constantly being added. It is always a good
|
|
idea to check back periodically to see which packages are available
|
|
at the <ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/">ftp.FreeBSD.org</ulink> master site.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Where do I find libc.so.3.0?</para></question><answer>
|
|
|
|
<para>You are trying to run a package for 2.2/3.x/4.0 on a 2.1.x
|
|
system. Please take a look at the previous section and get
|
|
the correct port/package for your system.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="emul">
|
|
<para> ghostscript gives lots of errors with my 386/486SX.
|
|
</para></question><answer>
|
|
|
|
<para>You don't have a math co-processor, right?
|
|
You will need to add the alternative math emulator to your kernel;
|
|
you do this by adding the following to your kernel config file
|
|
and it will be compiled in.</para>
|
|
|
|
<para>
|
|
<literallayout> options GPL_MATH_EMULATE
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para><acronym>NOTE</acronym> You will need to remove the <symbol>MATH_EMULATE</symbol>
|
|
option when you do this.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> When I run a SCO/iBCS2 application, it bombs on <emphasis remap=tt>socksys</emphasis>.
|
|
</para></question><answer>
|
|
|
|
<para>You first need to edit the <filename>/etc/sysconfig</filename>
|
|
(or <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rc.conf(5)">/etc/rc.conf</ulink>) file in the last section to change the
|
|
following variable to <acronym>YES</acronym>:</para>
|
|
|
|
<para>
|
|
<literallayout> # Set to YES if you want ibcs2 (SCO) emulation loaded at startup
|
|
ibcs2=NO
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>It will load the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ibcs2">ibcs2</ulink>
|
|
kernel module at startup.</para>
|
|
|
|
<para>You'll then need to set up /compat/ibcs2/dev to look like:</para>
|
|
|
|
<para>
|
|
<literallayout>lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -> /dev/null
|
|
lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -> socksys
|
|
-rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null
|
|
lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -> /dev/null
|
|
crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>You just need socksys to go to <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?null(4)">/dev/null</ulink>
|
|
to fake the open & close. The code in -current will handle the
|
|
rest. This is much cleaner than the way it was done before. If you
|
|
want the <emphasis remap=tt>spx</emphasis> driver for a local socket X connection, define
|
|
<symbol>SPX_HACK</symbol> when you compile the system.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> How do I configure INN (Internet News) for my machine?
|
|
</para></question><answer>
|
|
|
|
<para>After installing the inn package or port, an excellent place to
|
|
start is <ulink URL="http://www.cis.ohio-state.edu/~barr/INN.html">Dave Barr's INN Page</ulink> where you'll find the INN FAQ.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What version of Microsoft FrontPage should I get?</para></question><answer>
|
|
|
|
<para>Use the Port, Luke! A pre-patched version of Apache is available
|
|
in the ports tree.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Does FreeBSD support Java?</para></question><answer>
|
|
|
|
<para>Yes. Please see <ulink URL="http://www.FreeBSD.org/java/">http://www.FreeBSD.org/java/</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why can't I build this port on my 3.x-stable machine?</para></question><answer>
|
|
|
|
<para>If you're running a FreeBSD version that lags significantly behind
|
|
-current or -stable, you may need a ports upgrade kit from
|
|
<ulink URL="http://www.FreeBSD.org/ports/">http://www.FreeBSD.org/ports/</ulink>. If you are up to date, then
|
|
someone might have committed a change to the port which works for
|
|
-current but which broke the port for -stable. Please submit a bug
|
|
report on this with the <command>send-pr(1)</command> command, since the ports
|
|
collection is supposed to work for both the -current and -stable
|
|
branches.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Where do I find ld.so?</para></question><answer>
|
|
|
|
<para>If you want to run some aout applications like
|
|
Netscape Navigator on an Elf'ened machine such as 3.1-R or later,
|
|
it would need /usr/libexec/ld.so and some aout libs.
|
|
They are included in the compat22 distribution.
|
|
Use /stand/sysinstall or install.sh in the compat22 subdirectory
|
|
and install it.
|
|
Also read ERRATAs for 3.1-R and 3.2-R.</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="kernelconfig">
|
|
<title>Kernel Configuration</title>
|
|
|
|
|
|
<qandaset><qandaentry><question
|
|
id="make-kernel">
|
|
<para> I'd like to customize my kernel. Is it difficult?
|
|
|
|
</para></question><answer>
|
|
|
|
<para>Not at all! Check out the <ulink URL="../handbook/kernelconfig.html">kernel config section of the Handbook</ulink>.</para>
|
|
|
|
<para><emphasis remap=bf>NOTE:</emphasis> I recommend making a dated snapshot of your kernel
|
|
in <filename>kernel.YYMMDD</filename> after you get it all working, that way if
|
|
you do something dire the next time you play with your configuration
|
|
you can boot that kernel instead of having to go all the way back
|
|
to <filename>kernel.GENERIC</filename>. This is particularly important if you're
|
|
now booting off a controller that isn't supported in the GENERIC
|
|
kernel (yes, personal experience).</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> My kernel compiles fail because <symbol>_hw_float</symbol> is missing.
|
|
</para></question><answer>
|
|
|
|
<para>Let me guess. You removed <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?npx(4)">npx0</ulink> from your
|
|
kernel configuration file because you don't have a math co-processor,
|
|
right? Wrong! :-) The <emphasis remap=tt>npx0</emphasis> is <acronym>MANDATORY</acronym>. Even if you don't
|
|
have a mathematic co-processor, you <emphasis remap=bf>must</emphasis> include the <emphasis remap=tt>npx0</emphasis>
|
|
device.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Interrupt conflicts with multi-port serial code.</para></question><answer>
|
|
|
|
<para><emphasis remap=bf>Q.</emphasis> When I compile a kernel with multi-port serial code, it
|
|
tells me that only the first port is probed and the rest skipped due to
|
|
interrupt conflicts. How do I fix this?</para>
|
|
|
|
<para><emphasis remap=bf>A.</emphasis> The problem here is that FreeBSD has code built-in to keep
|
|
the kernel from getting trashed due to hardware or software
|
|
conflicts. The way to fix this is to leave out the IRQ settings
|
|
on all but one port. Here is a example:</para>
|
|
|
|
<para>
|
|
<literallayout> #
|
|
# Multiport high-speed serial line - 16550 UARTS
|
|
#
|
|
device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
|
|
device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
|
|
device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
|
|
device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I enable support for QIC-40/80 drives?</para></question><answer>
|
|
|
|
<para>You need to uncomment the following line in the generic config
|
|
file (or add it to your config file), add a ``<literal>flags 0x1</literal>''
|
|
on the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?fdc(4)">fdc</ulink> line and recompile.</para>
|
|
|
|
<para>
|
|
<literallayout>controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 flags 0x1 vector fdintr
|
|
disk fd0 at fdc0 drive 0 ^^^^^^^^^
|
|
disk fd1 at fdc0 drive 1
|
|
#tape ft0 at fdc0 drive 2
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Next, you create a device called <filename>/dev/ft0</filename> by going into
|
|
<filename>/dev</filename> and run the following command:</para>
|
|
|
|
<para>
|
|
<literallayout> sh ./MAKEDEV ft0
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>for the first device. <emphasis remap=tt>ft1</emphasis> for a second one and so on.</para>
|
|
|
|
<para>You will have a device called <filename>/dev/ft0</filename>, which you can
|
|
write to through a special program to manage it called
|
|
``<emphasis remap=tt>ft</emphasis>'' - see the man page on <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ft">ft</ulink>
|
|
for further details.</para>
|
|
|
|
<para>Versions previous to <option>-current</option> also had some trouble dealing
|
|
with bad tape media; if you have trouble where <emphasis remap=tt>ft</emphasis> seems to
|
|
go back and forth over the same spot, try grabbing the latest
|
|
version of <emphasis remap=tt>ft</emphasis> from <filename>/usr/src/sbin/ft</filename> in
|
|
<option>-current</option> and try that.</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="admin">
|
|
<title>System Administration</title>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para>Where are the system start-up configuration files?</para></question><answer>
|
|
|
|
<para>From 2.0.5R to 2.2.1R, the primary configuration file is
|
|
<filename>/etc/sysconfig</filename>. All the options are to be specified in
|
|
this file and other files such as <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rc">/etc/rc</ulink> and
|
|
<filename>/etc/netstart</filename> just include it.</para>
|
|
|
|
<para>Look in the <filename>/etc/sysconfig</filename> file and change the value to
|
|
match your system. This file is filled with comments to show what
|
|
to put in there.</para>
|
|
|
|
<para>In post-2.2.1 and 3.0, <filename>/etc/sysconfig</filename> was renamed
|
|
to a more self-describing <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rc.conf(5)">rc.conf</ulink>
|
|
file and the syntax cleaned up a bit in the process.
|
|
<filename>/etc/netstart</filename> was also renamed to <filename>/etc/rc.network</filename>
|
|
so that all files could be copied with a <command><ulink URL="http://www.FreeBSD.org/cgi/man.cgi?cp">cp</ulink> /usr/src/etc/rc*
|
|
/etc</command> command.</para>
|
|
|
|
<para><filename>/etc/rc.local</filename> is here as always and may be used to
|
|
start up additional local services like <ulink URL="http://www.FreeBSD.org/cgi/ports.cgi?^inn">INN</ulink>
|
|
or set custom options.</para>
|
|
|
|
<para>The <filename>/etc/rc.serial</filename> is for serial port initialization
|
|
(e.g. locking the port characteristics, and so on.).</para>
|
|
|
|
<para>The <filename>/etc/rc.i386</filename> is for Intel-specifics settings, such
|
|
as iBCS2 emulation or the PC system console configuration.</para>
|
|
|
|
<para>Starting with 2.1.0R, you can also have "local" startup files in a
|
|
directory specified in <filename>/etc/sysconfig</filename> (or
|
|
<filename>/etc/rc.conf</filename>):</para>
|
|
|
|
<para>
|
|
<literallayout> # Location of local startup files.
|
|
local_startup=/usr/local/etc/rc.local.d
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Each file ending in <filename>.sh</filename> will be executed in alphabetical order.</para>
|
|
|
|
<para>If you want to ensure a certain execution order without changing all
|
|
the file names, you can use a scheme similar to the following with
|
|
digits prepended to each file name to insure the ordering:</para>
|
|
|
|
<para>
|
|
<literallayout> 10news.sh
|
|
15httpd.sh
|
|
20ssh.sh
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>It can be seen as ugly (or SysV :-)) but it provides a simple and
|
|
regular scheme for locally-added packages without resorting to
|
|
magical editing of <filename>/etc/rc.local</filename>. Many of the ports/packages
|
|
assume that <filename>/usr/local/etc/rc.d</filename> is a local startup directory.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I add a user easily?</para></question><answer>
|
|
|
|
<para>Use the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?adduser">adduser</ulink> command. For more complicated usage, the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?pw">pw</ulink> command.</para>
|
|
|
|
<para>To remove the user again, use the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rmuser">rmuser</ulink> command.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I add my new hard disk to my FreeBSD system?</para></question><answer>
|
|
|
|
<para>See the Disk Formatting Tutorial at
|
|
<ulink URL="../tutorials/diskformat/">www.FreeBSD.org</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I have a new removable drive, how do I use it?</para></question><answer>
|
|
|
|
<para>Whether it's a removable drive like a ZIP or an EZ drive (or
|
|
even a floppy, if you want to use it that way), or a new hard
|
|
disk, once it's installed and recognized by the system, and
|
|
you have your cartridge/floppy/whatever slotted in, things are
|
|
pretty much the same for all devices.</para>
|
|
|
|
<para><anchor id="disklabel">(this section is based on <ulink URL="http://www.vmunix.com/mark/FreeBSD/ZIP-FAQ.html">Mark Mayo's ZIP FAQ</ulink>)</para>
|
|
|
|
<para>If it's a ZIP drive or a floppy , you've already got a DOS
|
|
filesystem on it, you can use a command like this:</para>
|
|
|
|
<para>
|
|
<literallayout> mount -t msdos /dev/fd0c /floppy
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>if it's a floppy, or this:</para>
|
|
|
|
<para>
|
|
<literallayout> mount -t msdos /dev/da2s4 /zip
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>for a ZIP disk with the factory configuration.</para>
|
|
|
|
<para>For other disks, see how they're laid out using <emphasis remap=tt>fdisk</emphasis> or
|
|
<filename>/stand/sysinstall</filename>.</para>
|
|
|
|
<para>The rest of the examples will be for a ZIP drive on da2, the third
|
|
SCSI disk.</para>
|
|
|
|
<para>Unless it's a floppy, or a removable you plan on sharing with
|
|
other people, it's probably a better idea to stick a BSD file
|
|
system on it. You'll get long filename support, at least a 2X
|
|
improvement in performance, and a lot more stability. First, you
|
|
need to redo the DOS-level partitions/filesystems. You can either
|
|
use <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?fdisk">fdisk</ulink> or <filename>/stand/sysinstall</filename>, or for a small
|
|
drive that you don't want to bother with multiple operating system
|
|
support on, just blow away the whole FAT partition table (slices)
|
|
and just use the BSD partitioning:</para>
|
|
|
|
<para>
|
|
<literallayout> dd if=/dev/zero of=/dev/rda2 count=2
|
|
disklabel -Brw sd2 auto
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>You can use disklabel or <filename>/stand/sysinstall</filename> to create multiple
|
|
BSD partitions. You'll certainly want to do this if you're adding
|
|
swap space on a fixed disk, but it's probably irrelevant on a
|
|
removable drive like a ZIP.</para>
|
|
|
|
<para>Finally, create a new file system, this one's on our ZIP drive
|
|
using the whole disk:</para>
|
|
|
|
<para>
|
|
<literallayout> newfs /dev/rda2c
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>and mount it:</para>
|
|
|
|
<para>
|
|
<literallayout> mount /dev/da2c /zip
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>and it's probably a good idea to add a line like this to
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?fstab">/etc/fstab</ulink> so you can just type "mount /zip" in the
|
|
future:</para>
|
|
|
|
<para>
|
|
<literallayout> /dev/da2c /zip ffs rw,noauto 0 0
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I mount a secondary DOS partition?</para></question><answer>
|
|
|
|
<para>The secondary DOS partitions are found after ALL the primary
|
|
partitions. For example, if you have an "E" partition as the
|
|
second DOS partition on the second SCSI drive, you need to create
|
|
the special files for "slice 5" in /dev, then mount /dev/da1s5:</para>
|
|
|
|
<para>
|
|
<literallayout> # cd /dev
|
|
# ./MAKEDEV sd1s5
|
|
# mount -t msdos /dev/da1s5 /dos/e
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can I mount other foreign filesystems under FreeBSD?</para></question><answer>
|
|
|
|
<para><emphasis remap=bf> Digital UNIX</emphasis> UFS CDROMs can be mounted directly on FreeBSD.
|
|
Mounting disk partitions from Digital UNIX and other systems
|
|
that support UFS may be more complex, depending on the details
|
|
of the disk partitioning for the operating system in question.</para>
|
|
|
|
<para><emphasis remap=bf> Linux</emphasis>: 2.2 and later have support for <emphasis remap=bf>ext2fs</emphasis> partitions.
|
|
See <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?mount_ext2fs">mount_ext2fs</ulink> for more information.</para>
|
|
|
|
<para><emphasis remap=bf> NT</emphasis>: A read-only NTFS driver exists for FreeBSD. For more
|
|
information, see this tutorial by Mark Ovens at
|
|
<ulink URL="http://www.users.globalnet.co.uk/~markov/ntfs_install.html">http://www.users.globalnet.co.uk/~markov/ntfs_install.html</ulink>.</para>
|
|
|
|
<para>Any other information on this subject would be appreciated.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I use the NT loader to boot FreeBSD?</para></question><answer>
|
|
|
|
<para>The general idea is that you copy the first sector of your
|
|
native root FreeBSD partition into a file in the DOS/NT
|
|
partition. Assuming you name that file something like
|
|
<filename>c:\bootsect.bsd</filename> (inspired by <filename>c:\bootsect.dos</filename>),
|
|
you can then edit the <filename>c:\boot.ini</filename> file to come up with
|
|
something like this:</para>
|
|
|
|
<para>
|
|
<literallayout> [boot loader]
|
|
timeout=30
|
|
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
|
|
[operating systems]
|
|
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT"
|
|
C:\BOOTSECT.BSD="FreeBSD"
|
|
C:\="DOS"
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This procedure assumes that DOS, NT, FreeBSD, or whatever
|
|
have been installed into their respective fdisk partitions on the
|
|
<emphasis remap=bf>same</emphasis> disk. In my case DOS & NT are in the first fdisk
|
|
partition and FreeBSD is in the second. I also installed FreeBSD
|
|
to boot from its native partition, <emphasis remap=bf>not</emphasis> the disk MBR.</para>
|
|
|
|
<para>Mount a DOS-formatted floppy (if you've converted to NTFS) or the
|
|
FAT partition, under, say, <filename>/mnt</filename>.</para>
|
|
|
|
<para>
|
|
<literallayout> dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Reboot into DOS or NT. NTFS users copy the <filename>bootsect.bsd</filename>
|
|
and/or the <filename>bootsect.lnx</filename> file from the floppy to
|
|
<emphasis remap=tt>C:\</emphasis>. Modify the attributes (permissions) on
|
|
<filename>boot.ini</filename> with:</para>
|
|
|
|
<para>
|
|
<literallayout> attrib -s -r c:\boot.ini
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Edit to add the appropriate entries from the example
|
|
<filename>boot.ini</filename> above, and restore the attributes:</para>
|
|
|
|
<para>
|
|
<literallayout> attrib +s +r c:\boot.ini
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>If FreeBSD is booting from the MBR, restore it with the DOS
|
|
``<emphasis remap=tt>fdisk</emphasis>'' command after you reconfigure them to boot from their
|
|
native partitions.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> How do I boot FreeBSD and Linux from LILO?
|
|
</para></question><answer>
|
|
|
|
<para>If you have FreeBSD and Linux on the same disk, just follow
|
|
LILO's installation instructions for booting a non-Linux operating
|
|
system. Very briefly, these are:</para>
|
|
|
|
<para>Boot Linux, and add the following lines to
|
|
<filename>/etc/lilo.conf</filename>:
|
|
<literallayout> other=/dev/hda2
|
|
table=/dev/hda
|
|
label=FreeBSD
|
|
</literallayout>
|
|
|
|
(the above assumes that your FreeBSD slice is known to Linux as
|
|
<filename>/dev/hda2</filename>; tailor to suit your setup). Then,
|
|
run <emphasis remap=tt>lilo</emphasis> as root and you should be done.</para>
|
|
|
|
<para>If FreeBSD resides on another disk, you need to add
|
|
``<literal>loader=/boot/chain.b</literal>'' to the LILO entry.
|
|
For example:
|
|
<literallayout> other=/dev/dab4
|
|
table=/dev/dab
|
|
loader=/boot/chain.b
|
|
label=FreeBSD
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>In some cases you may need to specify the BIOS drive number
|
|
to the FreeBSD boot loader to successfully boot off the second disk.
|
|
For example, if your FreeBSD SCSI disk is probed by BIOS as BIOS
|
|
disk 1, at the FreeBSD boot loader prompt you need to specify:
|
|
<literallayout> Boot: 1:da(0,a)/kernel
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>On FreeBSD 2.2.5 and later, you can configure <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?boot(8)">boot(8)</ulink>
|
|
to automatically do this for you at boot time.</para>
|
|
|
|
<para>The <ulink URL="http://sunsite.unc.edu/LDP/HOWTO/mini/Linux+FreeBSD.html">Linux+FreeBSD mini-HOWTO</ulink> is a good reference for
|
|
FreeBSD and Linux interoperability issues.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> How do I boot FreeBSD and Linux using BootEasy?
|
|
</para></question><answer>
|
|
|
|
<para>Install LILO at the start of your Linux boot partition instead of
|
|
in the Master Boot Record. You can then boot LILO from BootEasy.</para>
|
|
|
|
<para>If you're running Windows-95 and Linux this is recommended anyway,
|
|
to make it simpler to get Linux booting again if you should need
|
|
to reinstall Windows95 (which is a Jealous Operating System, and
|
|
will bear no other Operating Systems in the Master Boot Record).</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Will a ``dangerously dedicated'' disk endanger my health?
|
|
</para></question><answer>
|
|
|
|
<para><anchor id="dedicate">The installation procedure allows you to chose
|
|
two different methods in partitioning your harddisk(s). The default way
|
|
makes it compatible with other operating systems on the same machine,
|
|
by using fdisk table entries (called ``slices'' in FreeBSD),
|
|
with a FreeBSD slice that employs partitions of its own.
|
|
Optionally, one can chose to install a boot-selector to switch
|
|
between the possible operating systems on the disk(s).
|
|
The alternative uses the entire disk for FreeBSD, and makes
|
|
no attempt to be compatible with other operating systems.</para>
|
|
|
|
<para>So why it is called ``dangerous''? A disk in this mode
|
|
doesn't contain what normal PC utilities would consider a
|
|
valid fdisk table. Depending on how well they have been
|
|
designed, they might complain at you once they are getting
|
|
in contact with such a disk, or even worse, they might
|
|
damage the BSD bootstrap without even asking or notifying
|
|
you. In addition, the ``dangerously dedicated'' disk's layout
|
|
is known to confuse many BIOSsen, including those from AWARD
|
|
(eg. as found in HP Netserver and Micronics systems as well as
|
|
many others) and Symbios/NCR (for the popular 53C8xx range of
|
|
SCSI controllers). This isn't a complete list, there are more.
|
|
Symptoms of this confusion include the "read error" message
|
|
printed by the FreeBSD bootstrap when it can't find itself,
|
|
as well as system lockups when booting.</para>
|
|
|
|
<para>Why have this mode at all then? It only saves a few kbytes
|
|
of disk space, and it can cause real problems for a new
|
|
installation. ``Dangerously dedicated'' mode's origins lie
|
|
in a desire to avoid one of the most common problems plaguing
|
|
new FreeBSD installers - matching the BIOS ``geometry'' numbers
|
|
for a disk to the disk itself.</para>
|
|
|
|
<para>``Geometry'' is an outdated concept, but one still at the
|
|
heart of the PC's BIOS and its interaction with disks. When
|
|
the FreeBSD installer creates slices, it has to record the
|
|
location of these slices on the disk in a fashion that
|
|
corresponds with the way the BIOS expects to find them. If
|
|
it gets it wrong, you won't be able to boot.</para>
|
|
|
|
<para>``Dangerously dedicated'' mode tries to work around this
|
|
by making the problem simpler. In some cases, it gets it right.
|
|
But it's meant to be used as a last-ditch alternative - there
|
|
are better ways to solve the problem 99 times out of 100.</para>
|
|
|
|
<para>So, how do you avoid the need for ``DD'' mode when you're
|
|
installing? Start by making a note of the geometry that your
|
|
BIOS claims to be using for your disks. You can arrange to have
|
|
the kernel print this as it boots by specifying ``-v'' at the
|
|
``boot:'' prompt, or using ``boot -v'' in the loader. Just
|
|
before the installer starts, the kernel will print a list of
|
|
BIOS geometries. Don't panic - wait for the installer to start
|
|
and then use scrollback to read the numbers. Typically the BIOS
|
|
disk units will be in the same order that FreeBSD lists your
|
|
disks, first IDE, then SCSI.</para>
|
|
|
|
<para>When you're slicing up your disk, check that the disk geometry
|
|
displayed in the FDISK screen is correct (ie. it matches the BIOS
|
|
numbers); if it's wrong, use the ``g'' key to fix it. You may have
|
|
to do this if there's absolutely nothing on the disk, or if the
|
|
disk has been moved from another system. Note that this is only
|
|
an issue with the disk that you're going to boot from; FreeBSD
|
|
will sort itself out just fine with any other disks you may have.</para>
|
|
|
|
<para>Once you've got the BIOS and FreeBSD agreeing about the
|
|
geometry of the disk, your problems are almost guaranteed to be
|
|
over, and with no need for ``DD'' mode at all. If, however,
|
|
you are still greeted with the dreaded ``read error'' message
|
|
when you try to boot, it's time to cross your fingers and
|
|
go for it - there's nothing left to lose.</para>
|
|
|
|
<para>To return a ``dangerously dedicated'' disk for normal PC
|
|
use, there are basically two options. The first is, you
|
|
write enough NULL bytes over the MBR to make any subsequent
|
|
installation believe this to be a blank disk. You can do
|
|
this for example with</para>
|
|
|
|
<para>
|
|
<literallayout> dd if=/dev/zero of=/dev/rda0 count=15
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Alternatively, the undocumented DOS ``feature''</para>
|
|
|
|
<para>
|
|
<literallayout> fdisk /mbr
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>will to install a new master boot record as well, thus clobbering the
|
|
BSD bootstrap.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I add more swap space?</para></question><answer>
|
|
|
|
<para>The best way is to increase the size of your swap partition, or
|
|
take advantage of this convenient excuse to add another disk. The
|
|
general rule of thumb is to have around 2x the swap space as you have
|
|
main memory. However, if you have a very small amount of main memory
|
|
you may want to configure swap beyond that. It is also a good idea
|
|
to configure sufficient swap relative to anticipated future memory
|
|
upgrades so you do not have to futz with your swap configuration later.</para>
|
|
|
|
<para>Adding swap onto a separate disk makes things faster than
|
|
simply adding swap onto the same disk. As an example, if you
|
|
are compiling source located on one disk, and the swap is on
|
|
another disk, this is much faster than both swap and compile
|
|
on the same disk. This is true for SCSI disks specifically.</para>
|
|
|
|
<para>When you have several disks, configuring a swap partition on
|
|
each one is usually beneficial, even if you wind up putting swap on a
|
|
work disk. Typically, each fast disk in your system should have some
|
|
swap configured. FreeBSD supports up to 4 interleaved swap devices by
|
|
default. When configuring multiple swap partitions you generally
|
|
want to make them all about the same size, but people sometimes make
|
|
their primary swap parition larger in order to accomodate a kernel
|
|
core dump. Your primary swap partition must be at least as large as
|
|
main memory in order to be able to accomodate a kernel core.</para>
|
|
|
|
<para>IDE drives are not able to allow access to both drives on
|
|
the same channel at the same time (FreeBSD doesn't support mode 4, so
|
|
all IDE disk I/O is ``programmed''). I would still suggest putting
|
|
your swap on a separate drive however. The drives are so cheap,
|
|
it is not worth worrying about.</para>
|
|
|
|
<para>Swapping over NFS is only recommended if you do not have a local
|
|
disk to swap to. Swapping over NFS is slow and inefficient in FreeBSD
|
|
releases prior to 4.x, but reasonably fast in releases greater or
|
|
equal to 4.0. Even so, it will be limited to the network bandwidth
|
|
available and puts an additional burden on the NFS server.</para>
|
|
|
|
<para>Here is an example for 64Mb vn-swap (<filename>/usr/swap0</filename>, though
|
|
of course you can use any name that you want).</para>
|
|
|
|
<para>Make sure your kernel was built with the line</para>
|
|
|
|
<para>
|
|
<literallayout> pseudo-device vn 1 #Vnode driver (turns a file into a device)
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>in your config-file. The GENERIC kernel already contains this.</para>
|
|
|
|
<para>
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>create a vn-device
|
|
|
|
<literallayout> cd /dev
|
|
sh ./MAKEDEV vn0
|
|
</literallayout>
|
|
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>create a swapfile (<filename>/usr/swap0</filename>)
|
|
|
|
<literallayout> dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
|
|
</literallayout>
|
|
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>set proper permissions on (<filename>/usr/swap0</filename>)
|
|
|
|
<literallayout> chmod 0600 /usr/swap0
|
|
</literallayout>
|
|
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>enable the swap file in <filename>/etc/rc.conf</filename>
|
|
|
|
<literallayout> swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.
|
|
</literallayout>
|
|
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>reboot the machine</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
</para>
|
|
|
|
<para>To enable the swap file immediately, type</para>
|
|
|
|
<para>
|
|
<literallayout> vnconfig -ce /dev/vn0c /usr/swap0 swap
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I'm having problems setting up my printer.</para></question><answer>
|
|
|
|
<para>Please have a look at the Handbook entry on printing. It
|
|
should cover most of your problem. See the
|
|
<ulink URL="../handbook/printing.html">Handbook entry on printing.</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>The keyboard mappings are wrong for my system.</para></question><answer>
|
|
|
|
<para>The kbdcontrol program has an option to load a keyboard map file.
|
|
Under <filename>/usr/share/syscons/keymaps</filename> are a number of map
|
|
files. Choose the one relevant to your system and load it.</para>
|
|
|
|
<para>
|
|
<literallayout> kbdcontrol -l uk.iso
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Both the <filename>/usr/share/syscons/keymaps</filename> and the <filename>.kbd</filename>
|
|
extension are assumed by
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?kbdcontrol">kbdcontrol</ulink>.</para>
|
|
|
|
<para>This can be configured in <filename>/etc/sysconfig</filename> (or <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rc.conf(5)">rc.conf</ulink>).
|
|
See the appropriate comments in this file.</para>
|
|
|
|
<para>In 2.0.5R and later, everything related to text fonts, keyboard
|
|
mapping is in <filename>/usr/share/examples/syscons</filename>.</para>
|
|
|
|
<para>The following mappings are currently supported:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>Belgian ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Brazilian 275 keyboard Codepage 850 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Brazilian 275 keyboard ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Danish Codepage 865 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Danish ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>French ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>German Codepage 850 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>German ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Italian ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Japanese 106 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Japanese 106x </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Latin American </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Norwegian ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Polish ISO-8859-2 (programmer's) </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Russian Codepage 866 (alternative) </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Russian koi8-r (shift) </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Russian koi8-r </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Spanish ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Swedish Codepage 850 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Swedish ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Swiss-German ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>United Kingdom Codepage 850 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>United Kingdom ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>United States of America ISO-8859-1 </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>United States of America dvorak </para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>United States of America dvorakx </para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I can't get user quotas to work properly.</para></question><answer>
|
|
|
|
<para>
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>Don't turn on quotas on '/',
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Put the quota file on the file system that the quotas are
|
|
to be enforced on. ie:
|
|
|
|
<literallayout> FS QUOTA FILE
|
|
/usr /usr/admin/quotas
|
|
/home /home/admin/quotas
|
|
...
|
|
</literallayout>
|
|
</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What's inappropriate about my ccd?</para></question><answer>
|
|
|
|
<para>The symptom of this is:</para>
|
|
|
|
<para>
|
|
<literallayout> # ccdconfig -C
|
|
ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format
|
|
#
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This usually happens when you are trying to concatenate the
|
|
`c' partitions, which default to type `unused'. The ccd
|
|
driver requires the underlying partition type to be
|
|
FS_BSDFFS. Edit the disklabel of the disks you are trying
|
|
to concatenate and change the types of partitions to
|
|
`4.2BSD'.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why can't I edit the disklabel on my ccd?</para></question><answer>
|
|
|
|
<para>The symptom of this is:</para>
|
|
|
|
<para>
|
|
<literallayout> # disklabel ccd0
|
|
(it prints something sensible here, so let's try to edit it)
|
|
# disklabel -e ccd0
|
|
(edit, save, quit)
|
|
disklabel: ioctl DIOCWDINFO: No disk label on disk;
|
|
use "disklabel -r" to install initial label
|
|
#
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This is because the disklabel returned by ccd is actually a
|
|
`fake' one that is not really on the disk. You can solve
|
|
this problem by writing it back explicitly, as in:</para>
|
|
|
|
<para>
|
|
<literallayout> # disklabel ccd0 > /tmp/disklabel.tmp
|
|
# disklabel -Rr ccd0 /tmp/disklabel.tmp
|
|
# disklabel -e ccd0
|
|
(this will work now)
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Does FreeBSD support System V IPC primitives?</para></question><answer>
|
|
|
|
<para>Yes, FreeBSD supports System V-style IPC. This includes shared
|
|
memory, messages and semaphores. You need to add the following
|
|
lines to your kernel config to enable them.</para>
|
|
|
|
<para>
|
|
<literallayout> options SYSVSHM
|
|
options "SHMMAXPGS=64" # 256Kb of sharable memory
|
|
options SYSVSEM # enable for semaphores
|
|
options SYSVMSG # enable for messaging
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Recompile and install.</para>
|
|
|
|
<para><emphasis remap=bf>NOTE:</emphasis> You may need to increase SHMMAXPGS to some
|
|
ridiculous number like 4096 (16M!) if you want to run
|
|
GIMP. 256Kb is plenty for X11R6 shared memory.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="uucpmail">
|
|
<para> How do I use sendmail for mail delivery with UUCP?
|
|
</para></question><answer>
|
|
|
|
<para>The sendmail configuration that ships with FreeBSD is
|
|
suited for sites that connect directly to the Internet.
|
|
Sites that wish to exchange their mail via UUCP must install
|
|
another sendmail configuration file.</para>
|
|
|
|
<para>Tweaking <filename>/etc/sendmail.cf</filename> manually is considered
|
|
something for purists. Sendmail version 8 comes with a
|
|
new approach of generating config files via some
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?m4">m4</ulink> preprocessing, where the actual hand-crafted configuration
|
|
is on a higher abstraction level. You should use the
|
|
configuration files under</para>
|
|
|
|
<para>
|
|
<literallayout> /usr/src/usr.sbin/sendmail/cf
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>If you didn't install your system with full sources, the sendmail
|
|
config stuff has been broken out into a separate source distribution
|
|
tarball just for you. Assuming you've got your CD-ROM mounted, do:</para>
|
|
|
|
<para>
|
|
<literallayout> cd /usr/src
|
|
tar -xvzf /cdrom/dists/src/ssmailcf.aa
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Don't panic, this is only a few hundred kilobytes in size.
|
|
The file <acronym>README</acronym> in the <emphasis remap=tt>cf</emphasis> directory can
|
|
serve as a basic introduction to m4 configuration.</para>
|
|
|
|
<para>For UUCP delivery, you are best advised to use the
|
|
<emphasis>mailertable</emphasis> feature. This constitutes a database
|
|
that sendmail can use to base its routing decision upon.</para>
|
|
|
|
<para>First, you have to create your <filename>.mc</filename> file. The
|
|
directory <filename>/usr/src/usr.sbin/sendmail/cf/cf</filename> is the
|
|
home of these files. Look around, there are already a few
|
|
examples. Assuming you have named your file <filename>foo.mc</filename>,
|
|
all you need to do in order to convert it into a valid
|
|
<filename>sendmail.cf</filename> is:</para>
|
|
|
|
<para>
|
|
<literallayout> cd /usr/src/usr.sbin/sendmail/cf/cf
|
|
make foo.cf
|
|
cp foo.cf /etc/sendmail.cf
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>A typical <filename>.mc</filename> file might look like:</para>
|
|
|
|
<para>
|
|
<literallayout> include(`../m4/cf.m4')
|
|
VERSIONID(`Your version number')
|
|
OSTYPE(bsd4.4)
|
|
|
|
FEATURE(nodns)
|
|
FEATURE(nocanonify)
|
|
FEATURE(mailertable)
|
|
|
|
define(`UUCP_RELAY', your.uucp.relay)
|
|
define(`UUCP_MAX_SIZE', 200000)
|
|
|
|
MAILER(local)
|
|
MAILER(smtp)
|
|
MAILER(uucp)
|
|
|
|
Cw your.alias.host.name
|
|
Cw youruucpnodename.UUCP
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>The <emphasis>nodns</emphasis> and <emphasis>nocanonify</emphasis> features will
|
|
prevent any usage of the DNS during mail delivery. The
|
|
<symbol>UUCP_RELAY</symbol> clause is needed for bizarre reasons,
|
|
don't ask. Simply put an Internet hostname there that
|
|
is able to handle .UUCP pseudo-domain addresses; most likely,
|
|
you will enter the mail relay of your ISP there.</para>
|
|
|
|
<para>Once you've got this, you need this file called
|
|
<filename>/etc/mailertable</filename>. A typical example of this
|
|
gender again:</para>
|
|
|
|
<para>
|
|
<literallayout> #
|
|
# makemap hash /etc/mailertable.db < /etc/mailertable
|
|
#
|
|
horus.interface-business.de uucp-dom:horus
|
|
.interface-business.de uucp-dom:if-bus
|
|
interface-business.de uucp-dom:if-bus
|
|
.heep.sax.de smtp8:%1
|
|
horus.UUCP uucp-dom:horus
|
|
if-bus.UUCP uucp-dom:if-bus
|
|
. uucp-dom:sax
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>As you can see, this is part of a real-life file. The first
|
|
three lines handle special cases where domain-addressed mail
|
|
should not be sent out to the default route, but instead to
|
|
some UUCP neighbor in order to ``shortcut'' the delivery
|
|
path. The next line handles mail to the local Ethernet
|
|
domain that can be delivered using SMTP. Finally, the UUCP
|
|
neighbors are mentioned in the .UUCP pseudo-domain notation,
|
|
to allow for a ``uucp-neighbor!recipient'' override of the
|
|
default rules. The last line is always a single dot, matching
|
|
everything else, with UUCP delivery to a UUCP neighbor that
|
|
serves as your universal mail gateway to the world. All of
|
|
the node names behind the <emphasis remap=tt>uucp-dom:</emphasis> keyword must
|
|
be valid UUCP neighbors, as you can verify using the
|
|
command <emphasis remap=tt>uuname</emphasis>.</para>
|
|
|
|
<para>As a reminder that this file needs to be converted into a
|
|
DBM database file before being usable, the command line to
|
|
accomplish this is best placed as a comment at the top of
|
|
the mailertable. You always have to execute this command
|
|
each time you change your mailertable.</para>
|
|
|
|
<para>Final hint: if you are uncertain whether some particular
|
|
mail routing would work, remember the <option>-bt</option> option to
|
|
sendmail. It starts sendmail in <emphasis>address test mode</emphasis>;
|
|
simply enter ``0 '', followed by the address you wish to
|
|
test for the mail routing. The last line tells you the used
|
|
internal mail agent, the destination host this agent will be
|
|
called with, and the (possibly translated) address. Leave
|
|
this mode by typing Control-D.</para>
|
|
|
|
<para>
|
|
<literallayout> j@uriah 191% sendmail -bt
|
|
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
|
|
Enter <ruleset> <address>
|
|
> 0 foo@interface-business.de
|
|
rewrite: ruleset 0 input: foo @ interface-business . de
|
|
...
|
|
rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo \
|
|
< @ interface-business . de >
|
|
> ^D
|
|
j@uriah 192%
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="ispmail">
|
|
<para> How do I set up mail with a dialup connection to the 'net?
|
|
|
|
</para></question><answer>
|
|
|
|
<para>If you've got a statically assigned IP number, you should not
|
|
need to adjust anything from the default. Set your host name up
|
|
as your assigned internet name and sendmail will do the rest.</para>
|
|
|
|
<para>If you've got a dynamically assigned IP number and use a dialup
|
|
<emphasis remap=bf>ppp</emphasis> connection to the internet, you will probably be given a
|
|
mailbox on your ISPs mail server. Lets assume your ISPs domain is
|
|
<filename>myISP.com</filename>, and that your user name is <emphasis remap=tt>user</emphasis>. Lets also
|
|
assume you've called your machine <filename>bsd.home</filename> and that your ISP
|
|
has told you that you may use <filename>relay.myISP.com</filename> as a mail relay.</para>
|
|
|
|
<para>In order to retrieve mail from your mailbox, you'll need to
|
|
install a retrieval agent. <emphasis remap=bf>Fetchmail</emphasis> is a good choice as it
|
|
supports many different protocols. Usually, POP3 will be provided
|
|
by your ISP. If you've chosen to use user-ppp, you can automatically
|
|
fetch your mail when a connection to the 'net is established with the
|
|
following entry in <filename>/etc/ppp/ppp.linkup</filename>:</para>
|
|
|
|
<para>
|
|
<literallayout> MYADDR:
|
|
!bg su user -c fetchmail
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>If you are using <emphasis remap=tt>sendmail</emphasis> (as shown below) to deliver mail to
|
|
non-local accounts, put the command</para>
|
|
|
|
<para>
|
|
<literallayout> !bg su user -c "sendmail -q"
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>after the above shown entry. This forces sendmail to process your
|
|
mailqueue as soon as the connection to the 'net is established.</para>
|
|
|
|
<para>I'm assuming that you have an account for <emphasis remap=tt>user</emphasis> on <filename>bsd.home</filename>.
|
|
In the home directory of <emphasis remap=tt>user</emphasis> on <filename>bsd.home</filename>, create a
|
|
<filename>.fetchmailrc</filename> file:</para>
|
|
|
|
<para>
|
|
<literallayout> poll myISP.com protocol pop3 fetchall pass MySecret;
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Needless to say, this file should not be readable by anyone except
|
|
<emphasis remap=tt>user</emphasis> as it contains the password <emphasis remap=tt>MySecret</emphasis>.</para>
|
|
|
|
<para>In order to send mail with the correct <emphasis remap=bf>from:</emphasis> header, you must
|
|
tell sendmail to use <email>user@myISP.com</email> rather than
|
|
<email>user@bsd.home</email>. You may also wish to tell sendmail to send all
|
|
mail via <filename>relay.myISP.com</filename>, allowing quicker mail transmission.</para>
|
|
|
|
<para>The following <filename>.mc</filename> file should suffice:</para>
|
|
|
|
<para>
|
|
<literallayout> VERSIONID(`bsd.home.mc version 1.0')
|
|
OSTYPE(bsd4.4)dnl
|
|
FEATURE(nouucp)dnl
|
|
MAILER(local)dnl
|
|
MAILER(smtp)dnl
|
|
Cwlocalhost
|
|
Cwbsd.home
|
|
MASQUERADE_AS(`myISP.com')dnl
|
|
FEATURE(allmasquerade)dnl
|
|
FEATURE(masquerade_envelope)dnl
|
|
FEATURE(nocanonify)dnl
|
|
FEATURE(nodns)dnl
|
|
define(SMART_HOST, `relay.myISP.com')
|
|
Dmbsd.home
|
|
define(`confDOMAIN_NAME',`bsd.home')dnl
|
|
define(`confDELIVERY_MODE',`deferred')dnl
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Refer to the previous section for details of how to turn this
|
|
<filename>.mc</filename> file into a <filename>sendmail.cf</filename> file. Also, don't forget to
|
|
restart sendmail after updating sendmail.cf.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Eek! I forgot the root password!</para></question><answer>
|
|
|
|
<para>Don't Panic! Simply restart the system, type -s at the Boot: prompt
|
|
to enter Single User mode. At the question about the shell to use,
|
|
hit ENTER. You'll be dropped to a # prompt. Enter <command>mount -u /</command> to
|
|
remount your root filesystem read/write, then run <command>mount -a</command> to
|
|
remount all the filesystems. Run <emphasis remap=tt>passwd root</emphasis> to
|
|
change the root password then run <emphasis remap=tt>exit</emphasis>
|
|
to continue booting. </para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I keep Control-Alt-Delete from rebooting the system?
|
|
</para></question><answer>
|
|
|
|
<para>Edit the keymap you are using for the console and replace the
|
|
<emphasis remap=tt>boot</emphasis> keywords with <emphasis remap=tt>nop</emphasis>. The default keymap is
|
|
<filename>/usr/share/syscons/keymaps/us.iso.kbd</filename>. You may have to instruct
|
|
<filename>/etc/rc.conf</filename> to load this keymap explicitly for the change to
|
|
take effect. Of course if you are using an alternate keymap for your
|
|
country, you should edit that one instead.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I reformat DOS text files to UNIX ones?</para></question><answer>
|
|
|
|
<para>Simply use this perl command:</para>
|
|
|
|
<para>
|
|
<literallayout>perl -i.bak -npe 's/\r\n/\n/g' file ...</literallayout>
|
|
</para>
|
|
|
|
<para>file is the file(s) to process. The modification is done in-place,
|
|
with the original file stored with a .bak extension.</para>
|
|
|
|
<para>Alternatively you can use the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tr">tr</ulink> command:</para>
|
|
|
|
<para>
|
|
<literallayout>tr -d '\r' < dos-text-file > unix-file</literallayout>
|
|
</para>
|
|
|
|
<para>dos-text-file is the file containing DOS text while
|
|
unix-file will contain the converted output. This can
|
|
be quite a bit faster than using perl.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I kill processes by name?</para></question><answer>
|
|
|
|
<para>Use <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?killall">killall</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why is su bugging me about not being in root's ACL?
|
|
</para></question><answer>
|
|
|
|
<para>The error comes from the Kerberos distributed authentication system.
|
|
The problem isn't fatal but annoying. You can either run su with the -K
|
|
option, or uninstall Kerberos as described in the next question.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I uninstall Kerberos?</para></question><answer>
|
|
|
|
<para>To remove Kerberos from the system, reinstall the bin distribution
|
|
for the release you are running. If you have the CDROM, you can
|
|
mount the cd (we'll assume on /cdrom) and run</para>
|
|
|
|
<para>
|
|
<literallayout>cd /cdrom/bin
|
|
./install.sh</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I add pseudoterminals to the system?</para></question><answer>
|
|
|
|
<para>If you have lots of telnet, ssh, X, or screen users, you'll probably run
|
|
out of pseudoterminals. Here's how to add more:</para>
|
|
|
|
<para>
|
|
<orderedlist>
|
|
|
|
<listitem>
|
|
<para>Build and install a new kernel with the line
|
|
|
|
<literallayout> pseudo-device pty 256
|
|
</literallayout>
|
|
|
|
|
|
</para>
|
|
|
|
<para>in the configuration file.</para>
|
|
|
|
<para></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Run the command
|
|
|
|
<literallayout> # cd /dev
|
|
# ./MAKEDEV pty{1,2,3,4,5,6,7}
|
|
</literallayout>
|
|
|
|
|
|
</para>
|
|
|
|
<para>to make 256 device nodes for the new terminals.</para>
|
|
|
|
<para></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Edit <filename>/etc/ttys</filename> and add lines for each of the 256
|
|
terminals. They should match the form of the existing entries, i.e. they look like
|
|
|
|
<literallayout> ttyqc none network
|
|
</literallayout>
|
|
|
|
|
|
</para>
|
|
|
|
<para>The order of the letter designations is <emphasis remap=tt>tty[pqrsPQRS][0-9a-v]</emphasis>,
|
|
using a regular expression. </para>
|
|
|
|
<para></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Reboot the system with the new kernel and you're ready to go.</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I can't create the snd0 device!</para></question><answer>
|
|
|
|
<para>The command to create the devices for the sound card is:
|
|
<literallayout> # cd /dev
|
|
# sh MAKEDEV snd0</literallayout>
|
|
</para>
|
|
|
|
<para>However, this does not make a device named <filename>/dev/snd0</filename>.
|
|
Instead, it creates devices named <emphasis remap=tt>mixer0</emphasis>, <emphasis remap=tt>audio0</emphasis>,
|
|
<emphasis remap=tt>dsp0</emphasis>, and others. Running the command is still necessary
|
|
to add sound devices, however.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I re-read /etc/rc.conf and re-start /etc/rc without
|
|
a reboot?</para></question><answer>
|
|
|
|
<para>Go into single user mode and than back to multi user mode.</para>
|
|
|
|
<para>On the console do:
|
|
<literallayout> # shutdown now
|
|
(Note: without -r or -h)
|
|
|
|
# return
|
|
# exit</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What is a sandbox?</para></question><answer>
|
|
|
|
<para>"Sandbox" is a security term. It can mean two things:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para></para>
|
|
|
|
<para>A process which is placed inside a set of virtual walls
|
|
that are designed to prevent someone who breaks into the
|
|
process from being able to break into the wider system.</para>
|
|
|
|
<para></para>
|
|
|
|
<para>The process is said to be able to "play" inside the
|
|
walls. That is, nothing the process does in regards to
|
|
executing code is supposed to be able to breech the walls
|
|
so you do not have to do a detailed audit of its code to
|
|
be able to say certain things about its security.</para>
|
|
|
|
<para></para>
|
|
|
|
<para>The walls might be a userid, for example. This is the
|
|
definition used in the security and named man pages.</para>
|
|
|
|
<para></para>
|
|
|
|
<para>Take the 'ntalk' service, for example (see
|
|
/etc/inetd.conf). This service used to run as userid
|
|
root. Now it runs as userid tty. The tty user is a
|
|
sandbox designed to make it more difficult for someone
|
|
who has successfully hacked into the system via ntalk from
|
|
being able to hack beyond that user id.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para></para>
|
|
|
|
<para>A process which is placed inside a simulation of the
|
|
machine. This is more hard-core. Basically it means that
|
|
someone who is able to break into the process may believe
|
|
that he can break into the wider machine but is, in fact,
|
|
only breaking into a simulation of that machine and not
|
|
modifying any real data.</para>
|
|
|
|
<para></para>
|
|
|
|
<para>The most common way to accomplish this is to build a
|
|
simulated environment in a subdirectory and then run the
|
|
processes in that directory chroot'd (i.e. "/" for that
|
|
process is this directory, not the real "/" of the
|
|
system).</para>
|
|
|
|
<para></para>
|
|
|
|
<para>Another common use is to mount an underlying filesystem
|
|
read-only and then create a filesystem layer on top of it
|
|
that gives a process a seemingly writeable view into that
|
|
filesystem. The process may believe it is able to write
|
|
to those files, but only the process sees the effects
|
|
- other processes in the system do not, necessarily.</para>
|
|
|
|
<para>An attempt is made to make this sort of sandbox so
|
|
transparent that the user (or hacker) does not realize
|
|
that he is sitting in it.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>UNIX implements two core sanboxes. One is at the process
|
|
level, and one is at the userid level.</para>
|
|
|
|
<para>Every UNIX process is completely firewalled off from every
|
|
other UNIX process. One process can not modify the address space
|
|
of another. This is unlike Windows where a process can easily
|
|
overwrite the address space of any other, leading to a crash.</para>
|
|
|
|
<para>A UNIX process is owned by a patricular userid. If the
|
|
userid is not the root user, it serves to firewall the process
|
|
off from processes owned by other users. The userid is also
|
|
used to firewall off on-disk data.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry>
|
|
<question>
|
|
<para>How do I let ordinary users mount floppies and other removable
|
|
media?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Ordinary users can be permitted to mount devices. Here is
|
|
how:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>As <username>root</username> assign the appropriate
|
|
permissions to the block device associated with the removable
|
|
media.</para>
|
|
|
|
<para>For example, to allow users to mount the first floppy
|
|
drive, use:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod 777 /dev/fd0</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>As <username>root</username> set the sysctl variable
|
|
<varname>vfs.usermount</varname> to
|
|
<literal>1</literal>.</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl -w vfs.usermount=1</userinput></screen>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>Users can now mount <filename>/dev/fd0</filename> onto a
|
|
directory that they own:</para>
|
|
|
|
<screen>&prompt.user; <userinput> mkdir ~/my-mount-point</userinput>
|
|
&prompt.user; <userinput> mount -t msdos /dev/fd0 ~/my-mount-point</userinput></screen>
|
|
|
|
<para>Unmounting the device is simple:</para>
|
|
|
|
<screen>&prompt.user; <userinput>umount <filename>~/my-mount-point</filename></userinput></screen>
|
|
|
|
<para>Another way to access MSDOS formatted media is to use the
|
|
<ulink
|
|
url="http://www.freebsd.org/cgi/ports.cgi?query=%5Emtools-&stype=name">mtools</ulink> package in the ports collection.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="x">
|
|
<title>The X Window System and Virtual Consoles</title>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para>I want to run X, how do I go about it?</para></question><answer>
|
|
|
|
<para>The easiest way is to simply specify that you want to run X
|
|
during the installation process.</para>
|
|
|
|
<para>Then read and follow the documentation on the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?manpath=xfree86&query=xf86config">xf86config</ulink> tool, which assists you in configuring XFree86(tm)
|
|
for your particular graphics card/mouse/etc.</para>
|
|
|
|
<para>You may also wish to investigate the Xaccel server.
|
|
See the section on <link linkend="xig">Xi Graphics</link> or
|
|
<link linkend="metrox">Metro Link</link> for more details.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="x-and-moused">
|
|
<para>Why doesn't my mouse work with X</para></question><answer>
|
|
|
|
<para>If you are using syscons (the default console driver), you can
|
|
configure FreeBSD to support a mouse pointer on each virtual
|
|
screen. In order to avoid conflicting with X, syscons supports
|
|
a virtual device called ``<filename>/dev/sysmouse</filename>''. All mouse events
|
|
received from the real mouse device are written to the sysmouse
|
|
device, using the MouseSystems protocol. If you wish to use your
|
|
mouse on one or more virtual consoles, <emphasis remap=bf>and</emphasis> use X, the
|
|
following configuration is recommended:</para>
|
|
|
|
<para>
|
|
<literallayout> /etc/rc.conf:
|
|
moused_type=ps/2 # or whatever your actual type is
|
|
moused_port=/dev/psm0 # or whatever your real port is
|
|
moused_flags=
|
|
|
|
/etc/XF86Config
|
|
Section Pointer
|
|
Protocol "MouseSystems"
|
|
Device "/dev/sysmouse"
|
|
.....
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Some people prefer to use ``<filename>/dev/mouse</filename>'' under X. To
|
|
make this work, ``<filename>/dev/mouse</filename>'' should be linked to
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?sysmouse">/dev/sysmouse</ulink>:</para>
|
|
|
|
<para>
|
|
<literallayout> # cd /dev
|
|
# rm -f mouse
|
|
# ln -s sysmouse mouse
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>X Window menus and dialog boxes don't work right!</para></question><answer>
|
|
|
|
<para>Try turning off the Num Lock key.</para>
|
|
|
|
<para>If your Num Lock key is on by default at boot-time, you may add
|
|
the following line in the ``<emphasis remap=tt>Keyboard</emphasis>'' section of the
|
|
<emphasis remap=tt>XF86Config</emphasis> file.</para>
|
|
|
|
<para>
|
|
<literallayout> # Let the server do the NumLock processing. This should only be
|
|
# required when using pre-R6 clients
|
|
ServerNumLock
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What is a virtual console and how do I make more?</para></question><answer>
|
|
|
|
<para>Virtual consoles, put simply, enable you to have several
|
|
simultaneous sessions on the same machine without doing anything
|
|
complicated like setting up a network or running X.</para>
|
|
|
|
<para>When the system starts, it will display a login prompt on
|
|
the monitor after displaying all the boot messages. You can
|
|
then type in your login name and password and start working (or
|
|
playing!) on the first virtual console.</para>
|
|
|
|
<para>At some point, you will probably wish to start another
|
|
session, perhaps to look at documentation for a program
|
|
you are running or to read your mail while waiting for an
|
|
FTP transfer to finish. Just do Alt-F2 (hold down the Alt
|
|
key and press the F2 key), and you will find a login prompt
|
|
waiting for you on the second ``virtual console''! When you
|
|
want to go back to the original session, do Alt-F1.</para>
|
|
|
|
<para>The default FreeBSD installation has three virtual consoles
|
|
enabled, and Alt-F1, Alt-F2, and Alt-F3 will switch between
|
|
these virtual consoles.</para>
|
|
|
|
<para>To enable more of them, edit <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ttys">/etc/ttys</ulink>
|
|
and add entries for ``<emphasis remap=tt>ttyv4</emphasis>'' to ``<emphasis remap=tt>ttyvc</emphasis>'' after the
|
|
comment on ``Virtual terminals'':</para>
|
|
|
|
<para>
|
|
<literallayout> # Edit the existing entry for ttyv3 in /etc/ttys and change
|
|
# "off" to "on".
|
|
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyv8 "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyv9 "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyva "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyvb "/usr/libexec/getty Pc" cons25 on secure
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Use as many or as few as you want. The more virtual terminals
|
|
you have, the more resources that are used; this can be important
|
|
if you have 8MB RAM or less. You may also want to change the
|
|
``<emphasis remap=tt>secure</emphasis>'' to ``<emphasis remap=tt>insecure</emphasis>''.</para>
|
|
|
|
<para><emphasis remap=bf>IMPORTANT NOTE</emphasis> if you want to run an X server you <acronym>MUST</acronym>
|
|
leave at least one virtual terminal unused (or turned off) for it
|
|
to use. That is to say that if you want to have a login
|
|
prompt pop up for all twelve of your Alt-function keys,
|
|
you're out of luck - you can only do this for eleven of them
|
|
if you also want to run an X server on the same machine.</para>
|
|
|
|
<para>The easiest way to disable a console is by turning it off. For
|
|
example, if you had the full 12 terminal allocation mentioned
|
|
above and you wanted to run X, you would change settings for
|
|
virtual terminal 12 from:</para>
|
|
|
|
<para>
|
|
<literallayout> ttyvb "/usr/libexec/getty Pc" cons25 on secure
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>to:</para>
|
|
|
|
<para>
|
|
<literallayout> ttyvb "/usr/libexec/getty Pc" cons25 off secure
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>If your keyboard has only ten function keys, you would end up with:</para>
|
|
|
|
<para>
|
|
<literallayout> ttyv9 "/usr/libexec/getty Pc" cons25 off secure
|
|
ttyva "/usr/libexec/getty Pc" cons25 off secure
|
|
ttyvb "/usr/libexec/getty Pc" cons25 off secure
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>(You could also just delete these lines.)</para>
|
|
|
|
<para>Once you have edited <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ttys">/etc/ttys</ulink>,
|
|
the next step is to make sure that you have enough virtual terminal
|
|
devices. The easiest way to do this is:</para>
|
|
|
|
<para>
|
|
<literallayout> # cd /dev
|
|
# ./MAKEDEV vty12 # For 12 devices
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Next, the easiest (and cleanest) way to activate the virtual
|
|
consoles is to reboot. However, if you really don't want to
|
|
reboot, you can just shut down the X Window system and execute (as
|
|
<emphasis remap=tt>root</emphasis>):</para>
|
|
|
|
<para>
|
|
<literallayout> kill -HUP 1
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>It's imperative that you completely shut down X Window if it is
|
|
running, before running this command. If you don't, your system
|
|
will probably appear to hang/lock up after executing the kill
|
|
command.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I access the virtual consoles from X?</para></question><answer>
|
|
|
|
<para>If the console is currently displaying X Window, you can use
|
|
Ctrl-Alt-F1, etc. to switch to a virtual console. Note, however,
|
|
that once you've switched away from X Window to a virtual
|
|
terminal, you may use only the Alt- function key to switch to another
|
|
virtual terminal or back to X Window. You do not need to also press the
|
|
Ctrl key. If you use the control key to switch back to X on some
|
|
older releases, you can find your text console stuck in ``control-lock''
|
|
mode. Tap the control key to wake it up again.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I start XDM on boot?</para></question><answer>
|
|
|
|
<para>There are two schools of thought on how to start <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?manpath=xfree86&query=xdm">xdm</ulink>. One school starts xdm from
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ttys">/etc/ttys</ulink> using the supplied example, while the other
|
|
simply runs xdm from <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rc">rc.local</ulink> or
|
|
from a <filename>X.sh</filename> script in <filename>/usr/local/etc/rc.d</filename>.
|
|
Both are equally valid, and one may work in
|
|
situations where the other doesn't. In both cases the result is the
|
|
same: X will popup a graphical login: prompt. </para>
|
|
|
|
<para>The ttys method has the advantage
|
|
of documenting which vty X will start on and passing the responsibility
|
|
of restarting the X server on logout to init. The rc.local method
|
|
makes it easy to kill xdm if there is a problem starting the X server. </para>
|
|
|
|
<para>If loaded from rc.local, <emphasis remap=tt>xdm</emphasis> should be started without any
|
|
arguments (i.e., as a daemon). xdm must start AFTER getty runs, or
|
|
else getty and xdm will conflict, locking out the console. The best
|
|
way around this is to have the script sleep 10 seconds or so then
|
|
launch xdm.</para>
|
|
|
|
<para>A previous version of the FAQ said to add the
|
|
<emphasis remap=tt>vt</emphasis> you want X to use to the
|
|
<filename>/usr/X11R6/lib/X11/xdm/Xservers</filename> file. This is not necessary:
|
|
X will use the first free <emphasis remap=tt>vt</emphasis> it finds.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>When I run xconsole, I get ``Couldn't open console''.</para></question><answer>
|
|
|
|
<para>If you start <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?manpath=xfree86&query=X">X</ulink> with <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?manpath=xfree86&query=startx">startx</ulink>, the permissions on /dev/console will <emphasis remap=tt>not</emphasis> get
|
|
changed, resulting in things like <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?manpath=xfree86&query=xterm">xterm -C</ulink> and <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?manpath=xfree86&query=xconsole">xconsole</ulink> not working.</para>
|
|
|
|
<para>This is because of the way console permissions are set by default.
|
|
On a multi-user system, one doesn't necessarily want just any user
|
|
to be able to write on the system console. For users who are logging
|
|
directly onto a machine with a VTY, the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?fbtab">fbtab</ulink>
|
|
file exists to solve such problems.</para>
|
|
|
|
<para>In a nutshell, make sure an uncommented line of the form</para>
|
|
|
|
<para>
|
|
<literallayout> /dev/ttyv0 0600 /dev/console
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>is in <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?fbtab(5)">/etc/fbtab</ulink> and it will ensure that whomever logs in on
|
|
<filename>/dev/ttyv0</filename> will own the console.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My PS/2 mouse doesn't behave properly under X.</para></question><answer>
|
|
|
|
<para>Your mouse and the mouse driver may have somewhat become out of
|
|
synchronization.</para>
|
|
|
|
<para>In versions 2.2.5 and earlier, switching away from X to a
|
|
virtual terminal and getting back to X again may make them
|
|
re-synchronized. If the problem occurs often, you may add the
|
|
following option in your kernel configuration file and recompile it.</para>
|
|
|
|
<para>
|
|
<literallayout> options PSM_CHECKSYNC
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>See the section on <xref linkend="make-kernel" remap="building a kernel">
|
|
if you've no experience with building kernels.</para>
|
|
|
|
<para>With this option, there should be less chance of synchronization
|
|
problem between the mouse and the driver. If, however, you
|
|
still see the problem, click any mouse button while holding
|
|
the mouse still to re-synchronize the mouse and the driver.</para>
|
|
|
|
<para>Note that unfortunately this option may not work with all the
|
|
systems and voids the ``tap'' feature of the ALPS GlidePoint
|
|
device attached to the PS/2 mouse port.</para>
|
|
|
|
<para>In versions 2.2.6 and later, synchronization check is done
|
|
in a slightly better way and is standard in the PS/2 mouse driver.
|
|
It should even work with GlidePoint. (As the check code has become
|
|
a standard feature, PSM_CHECKSYNC option is not available in these
|
|
versions.) However, in rare case the driver may erroneously report
|
|
synchronization problem and you may see the kernel message:</para>
|
|
|
|
<para>
|
|
<literallayout> psmintr: out of sync (xxxx != yyyy)
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>and find your mouse doesn't seem to work properly.</para>
|
|
|
|
<para>If this happens, disable the synchronization check code by
|
|
setting the driver flags for the PS/2 mouse driver to 0x100.
|
|
Enter <emphasis>UserConfig</emphasis> by giving the ``<option>-c</option>'' option
|
|
at the boot prompt:</para>
|
|
|
|
<para>
|
|
<literallayout> boot: -c
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Then, in the <emphasis>UserConfig</emphasis> command line, type:</para>
|
|
|
|
<para>
|
|
<literallayout> UserConfig> flags psm0 0x100
|
|
UserConfig> quit
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My PS/2 mouse from MouseSystems doesn't seem to work.</para></question><answer>
|
|
|
|
<para>There have been some reports that certain model of PS/2 mouse
|
|
from MouseSystems works only if it is put into the ``high resolution''
|
|
mode. Otherwise, the mouse cursor may jump to the upper-left
|
|
corner of the screen every so often.</para>
|
|
|
|
<para>Unfortunately there is no workaround for versions 2.0.X and
|
|
2.1.X. In versions 2.2 through 2.2.5, apply the following patch
|
|
to <filename>/sys/i386/isa/psm.c</filename> and rebuild the kernel. See the
|
|
section on <xref linkend="make-kernel" remap="building a kernel">
|
|
if you've no experience with building kernels.</para>
|
|
|
|
<para>
|
|
<literallayout>diff -u psm.c.orig psm.c
|
|
@@ -766,6 +766,8 @@
|
|
if (verbose >= 2)
|
|
log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n",
|
|
unit, i);
|
|
+ set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH);
|
|
+
|
|
#if 0
|
|
set_mouse_scaling(sc->kbdc); /* 1:1 scaling */
|
|
set_mouse_mode(sc->kbdc); /* stream mode */
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>In versions 2.2.6 or later, specify the flags 0x04 to the PS/2
|
|
mouse driver to put the mouse into the high resolution mode.
|
|
Enter <emphasis>UserConfig</emphasis> by giving the ``<option>-c</option>'' option
|
|
at the boot prompt:</para>
|
|
|
|
<para>
|
|
<literallayout> boot: -c
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Then, in the <emphasis>UserConfig</emphasis> command line, type:</para>
|
|
|
|
<para>
|
|
<literallayout> UserConfig> flags psm0 0x04
|
|
UserConfig> quit
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>See the previous section for another possible cause of mouse
|
|
problems.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>When building an X app, <emphasis remap=tt>imake</emphasis> can't find <filename>Imake.tmpl</filename>. Where is it?
|
|
</para></question><answer>
|
|
|
|
<para>Imake.tmpl is part of the Imake package, a standard X application building tool.
|
|
Imake.tmpl, as well as several header files that are required to build X apps,
|
|
is contained in the X prog distribution. You can install this from sysinstall or
|
|
manually from the X distribution files. </para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I reverse the mouse buttons?
|
|
</para></question><answer>
|
|
|
|
<para>Run the command <literal> xmodmap -e "pointer = 3 2 1"</literal> from your .xinitrc or .xsession.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I install a splash screen and where do I find them?
|
|
</para></question><answer>
|
|
|
|
<para>Just prior to the release of FreeBSD 3.1, a new feature was
|
|
added to allow the display of "splash" screens during
|
|
the boot messages. The splash screens currently must be a 256
|
|
color bitmap (<filename>*.BMP</filename>) or ZSoft PCX
|
|
(<filename>*.PCX</filename>) file. In addition, they must have a
|
|
resolution of 320x200 or less to work on standard VGA adapters.
|
|
If you compile VESA support into your kernel, then you can use
|
|
larger bitmaps up to 1024x768. Note that VESA support requires
|
|
the <emphasis remap=tt>VM86</emphasis> kernel option to be compiled into the
|
|
kernel. The actual VESA support can either be compiled directly
|
|
into the kernel with the <acronym>VESA</acronym> kernel config option
|
|
or by loading the VESA kld module during bootup.</para>
|
|
|
|
<para>To use a splash screen, you need to modify the startup files
|
|
that control the boot process for FreeBSD. The files for this
|
|
changed prior to the release of FreeBSD 3.2, so there are now
|
|
two ways of loading a splash screen:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>FreeBSD 3.1
|
|
|
|
</para>
|
|
|
|
<para>The first step is to find a bitmap version of your splash
|
|
screen. Release 3.1 only supports Windows bitmap splash
|
|
screens. Once you've found your splash screen of choice
|
|
copy it to <filename>/boot/splash.bmp</filename>. Next, you need to
|
|
have a <filename>/boot/loader.rc</filename> file that contains the
|
|
following lines:</para>
|
|
|
|
<para>
|
|
<literallayout> load kernel
|
|
load -t splash_image_data /boot/splash.bmp
|
|
load splash_bmp
|
|
autoboot
|
|
</literallayout>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>FreeBSD 3.2+
|
|
|
|
</para>
|
|
|
|
<para>In addition to adding support for PCX splash screens,
|
|
FreeBSD 3.2 includes a nicer way of configuring the boot
|
|
process. If you wish, you can use the method listed above
|
|
for FreeBSD 3.1. If you do and you want to use PCX, replace
|
|
<symbol>splash_bmp</symbol> with <symbol>splash_pcx</symbol>. If,
|
|
on the other hand, you want to use the newer boot
|
|
configuration, you need to create a
|
|
<filename>/boot/loader.rc</filename> file that contains the
|
|
following lines:</para>
|
|
|
|
<para>
|
|
<literallayout> include /boot/loader.4th
|
|
start
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para></para>
|
|
|
|
<para>and a <filename>/boot/loader.conf</filename> that contains the
|
|
following:</para>
|
|
|
|
<para>
|
|
<literallayout> splash_bmp_load="YES"
|
|
bitmap_load="YES"
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para></para>
|
|
|
|
<para>This assumes you are using <filename>/boot/splash.bmp</filename>
|
|
for your splash screen. If you'd rather use a PCX file,
|
|
copy it to <filename>/boot/splash.pcx</filename>, create a
|
|
<filename>/boot/loader.rc</filename> as instructed above, and
|
|
create a <filename>/boot/loader.conf</filename> that contains:</para>
|
|
|
|
<para>
|
|
<literallayout> splash_pcx_load="YES"
|
|
bitmap_load="YES"
|
|
bitmap_name="/boot/splash.pcx"
|
|
</literallayout>
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>Now all you need is a splash screen. For that you can surf
|
|
on over to the gallery at <ulink URL="http://www.cslab.vt.edu/~jobaldwi/splash/">http://www.cslab.vt.edu/~jobaldwi/splash/</ulink>.</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="networking">
|
|
<title>Networking</title>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para>Where can I get information on ``diskless booting''?</para></question><answer>
|
|
|
|
<para>``Diskless booting'' means that the FreeBSD box is booted over a
|
|
network, and reads the necessary files from a server instead of
|
|
its hard disk. For full details, please read
|
|
<ulink URL="../handbook/diskless.html">the Handbook entry on diskless booting</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Can a FreeBSD box be used as a dedicated network router?
|
|
</para></question><answer>
|
|
|
|
<para>Internet standards and good engineering practice prohibit us from
|
|
providing packet forwarding by default in FreeBSD. You can
|
|
however enable this feature by changing the following variable to
|
|
<acronym>YES</acronym> in <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rc.conf">rc.conf</ulink>:</para>
|
|
|
|
<para>
|
|
<literallayout> gateway_enable=YES # Set to YES if this host will be a gateway
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This option will put the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?sysctl">sysctl</ulink> variable
|
|
<filename>net.inet.ip.forwarding</filename> to <emphasis remap=tt>1</emphasis>.</para>
|
|
|
|
<para>In most cases, you will also need to run a routing process to
|
|
tell other systems on your network about your router; FreeBSD
|
|
comes with the standard BSD routing daemon
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?routed">routed</ulink>, or for more complex situations you may want to try
|
|
<emphasis>GaTeD</emphasis> (available by FTP from <filename>ftp.gated.Merit.EDU</filename>) which
|
|
supports FreeBSD as of 3_5Alpha7.</para>
|
|
|
|
<para>It is our duty to warn you that, even when FreeBSD is configured
|
|
in this way, it does not completely comply with the Internet
|
|
standard requirements for routers; however, it comes close enough
|
|
for ordinary usage.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can I connect my Win95 box to the Internet via FreeBSD?</para></question><answer>
|
|
|
|
<para>Typically, people who ask this question have two PC's at home, one
|
|
with FreeBSD and one with Win95; the idea is to use the FreeBSD
|
|
box to connect to the Internet and then be able to access the
|
|
Internet from the Windows95 box through the FreeBSD box. This
|
|
is really just a special case of the previous question.</para>
|
|
|
|
<para>There's a useful document available which explains how to set
|
|
FreeBSD up as a <ulink URL="http://www.ssimicro.com/~jeremyc/ppp.html">PPP Dialup Router</ulink></para>
|
|
|
|
<para><emphasis remap=bf>NOTE:</emphasis> This requires having at least two fixed IP addresses
|
|
available, and possibly three or more, depending on how much
|
|
work you want to go through to set up the Windows box. As an
|
|
alternative, if you don't have a fixed IP, you can use one of
|
|
the private IP subnets and install <emphasis remap=bf>proxies</emphasis> such as
|
|
<ulink URL="http://squid.nlanr.net/Squid/">SQUID</ulink> and
|
|
<ulink URL="http://www.tis.com/">the TIS firewall toolkit</ulink>
|
|
on your FreeBSD box.</para>
|
|
|
|
<para>See also the section on <xref linkend="natd" remap="natd">.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Why does recompiling the latest BIND from ISC fail?
|
|
</para></question><answer>
|
|
|
|
<para>There is a conflict between the ``<filename>cdefs.h</filename>'' file in the
|
|
distribution and the one shipped with FreeBSD. Just remove
|
|
<filename>compat/include/sys/cdefs.h</filename>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Does FreeBSD support SLIP and PPP?</para></question><answer>
|
|
|
|
<para>Yes. See the man pages for
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?slattach">slattach</ulink>, <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?sliplogin">sliplogin</ulink>,
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?pppd">pppd</ulink> and
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ppp">ppp</ulink>.
|
|
<emphasis remap=tt>pppd</emphasis> and <emphasis remap=tt>ppp</emphasis> provide support for both incoming and outgoing
|
|
connections. <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?sliplogin">Sliplogin</ulink> deals exclusively with incoming connections and
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?slattach">slattach</ulink> deals exclusively with outgoing connections.</para>
|
|
|
|
<para>These programs are described in the following sections of the
|
|
<ulink URL="../handbook/index.html">handbook</ulink>:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="../handbook/slips.html">Handbook entry on SLIP (server side)</ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="../handbook/slipc.html">Handbook entry on SLIP (client side)</ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="../handbook/ppp.html">Handbook entry on PPP (kernel version)</ulink>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink URL="../handbook/ppp-and-slip.html#USERPPP">Handbook entry on PPP (user-mode version)</ulink></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>If you only have access to the Internet through a "shell
|
|
account", you may want to have a look at the <ulink URL="http://www.FreeBSD.org/cgi/ports.cgi?^slirp">slirp</ulink>
|
|
package. It can provide you with (limited) access to services
|
|
such as ftp and http direct from your local machine.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="natd">
|
|
<para> Does FreeBSD support NAT or Masquerading
|
|
</para></question><answer>
|
|
|
|
<para>If you have a local subnet (one or more local machines), but have
|
|
been allocated only a single IP number from your Internet provider
|
|
(or even if you receive a dynamic IP number), you may want to look at
|
|
the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?natd">natd</ulink>
|
|
program. <emphasis remap=tt>Natd</emphasis> allows you to connect an entire subnet to the
|
|
internet using only a single IP number.</para>
|
|
|
|
<para>The <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ppp">ppp</ulink> program has similar functionality built in via
|
|
the <option>-alias</option> switch. The <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?libalias">alias library</ulink>
|
|
is used in both cases.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
|
|
<qandaentry><question>
|
|
<para>I can't create a <filename>/dev/ed0</filename> device!</para></question><answer>
|
|
|
|
<para>In the Berkeley networking framework, network interfaces are only
|
|
directly accessible by kernel code. Please see the
|
|
<filename>/etc/rc.network</filename> file and the manual pages for the various
|
|
network programs mentioned there for more information. If this
|
|
leaves you totally confused, then you should pick up a book
|
|
describing network administration on another BSD-related
|
|
operating system; with few significant exceptions, administering
|
|
networking on FreeBSD is basically the same as on SunOS 4.0 or
|
|
Ultrix.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I setup Ethernet aliases?</para></question><answer>
|
|
|
|
<para>Add ``<literal>netmask 0xffffffff</literal>'' to your <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ifconfig">ifconfig</ulink>
|
|
command-line like the following:</para>
|
|
|
|
<para>
|
|
<literallayout> ifconfig ed0 alias 204.141.95.2 netmask 0xffffffff
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I get my 3C503 to use the other network port?</para></question><answer>
|
|
|
|
<para>If you want to use the other ports, you'll have to specify an
|
|
additional parameter on the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ifconfig">ifconfig</ulink> command line. The
|
|
default port is ``<emphasis remap=tt>link0</emphasis>''. To use the AUI port instead of
|
|
the BNC one, use ``<emphasis remap=tt>link2</emphasis>''. These flags should be specified
|
|
using the ifconfig_* variables in <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rc.conf">/etc/rc.conf</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I'm having problems with NFS to/from FreeBSD.</para></question><answer>
|
|
|
|
<para>Certain PC network cards are better than others (to put it
|
|
mildly) and can sometimes cause problems with network intensive
|
|
applications like NFS.</para>
|
|
|
|
<para>See <ulink URL="../handbook/nfs.html">the Handbook entry on NFS</ulink>
|
|
for more information on this topic.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why can't I NFS-mount from a Linux box?</para></question><answer>
|
|
|
|
<para>Some versions of the Linux NFS code only accept mount requests
|
|
from a privileged port; try</para>
|
|
|
|
<para>
|
|
<literallayout> mount -o -P linuxbox:/blah /mnt
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why can't I NFS-mount from a Sun box?</para></question><answer>
|
|
|
|
<para>Sun workstations running SunOS 4.X only accept mount requests
|
|
from a privileged port; try</para>
|
|
|
|
<para>
|
|
<literallayout> mount -o -P sunbox:/blah /mnt
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I'm having problems talking PPP to NeXTStep machines.</para></question><answer>
|
|
|
|
<para>Try disabling the TCP extensions in <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rc.conf">/etc/rc.conf</ulink> by
|
|
changing the following variable to NO:</para>
|
|
|
|
<para>
|
|
<literallayout> tcp_extensions=NO
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Xylogic's Annex boxes are also broken in this regard and you must
|
|
use the above change to connect thru them.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I enable IP multicast support?</para></question><answer>
|
|
|
|
<para>Multicast host operations are fully supported in FreeBSD 2.0 and
|
|
later by default. If you want your box to run as a multicast router,
|
|
you will need to recompile your kernel with the <acronym>MROUTING</acronym>
|
|
option and run <emphasis remap=tt>mrouted</emphasis>. FreeBSD 2.2 and later will start
|
|
<emphasis remap=tt>mrouted</emphasis> at boot time if the flag <symbol>mrouted_enable</symbol> is set
|
|
to "YES" in <filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>MBONE tools are available in their own ports category, mbone. If
|
|
you are looking for the conference tools <emphasis remap=tt>vic</emphasis> and <emphasis remap=tt>vat</emphasis>,
|
|
look there!</para>
|
|
|
|
<para>For more information, see the
|
|
<ulink URL="http://www.mbone.com/">Mbone Information Web</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Which network cards are based on the DEC PCI chipset?</para></question><answer>
|
|
|
|
<para>Here is a list compiled by <ulink URL="mailto:gfoster@driver.nsta.org">Glen Foster</ulink>, with some more modern additions:</para>
|
|
|
|
<para>
|
|
<literallayout> Vendor Model
|
|
----------------------------------------------
|
|
ASUS PCI-L101-TB
|
|
Accton ENI1203
|
|
Cogent EM960PCI
|
|
Compex ENET32-PCI
|
|
D-Link DE-530
|
|
Dayna DP1203, DP2100
|
|
DEC DE435, DE450
|
|
Danpex EN-9400P3
|
|
JCIS Condor JC1260
|
|
Linksys EtherPCI
|
|
Mylex LNP101
|
|
SMC EtherPower 10/100 (Model 9332)
|
|
SMC EtherPower (Model 8432)
|
|
TopWare TE-3500P
|
|
Znyx (2.2.x) ZX312, ZX314, ZX342, ZX345, ZX346, ZX348
|
|
(3.x) ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442,
|
|
ZX444, ZX474, ZX478, ZX212, ZX214 (10mbps/hd)
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why do I have to use the FQDN for hosts on my site?</para></question><answer>
|
|
|
|
<para>You will probably find that the host is actually in a different
|
|
domain; for example, if you are in foo.bar.edu and you wish to reach
|
|
a host called ``mumble'' in the bar.edu domain, you will have to
|
|
refer to it by the fully-qualified domain name, ``mumble.bar.edu'',
|
|
instead of just ``mumble''.</para>
|
|
|
|
<para>Traditionally, this was allowed by BSD BIND resolvers. However
|
|
the current version of <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?named">bind</ulink> that ships
|
|
with FreeBSD no longer provides default abbreviations for non-fully
|
|
qualified domain names other than the domain you are in.
|
|
So an unqualified host <emphasis remap=tt>mumble</emphasis> must either be found
|
|
as <filename>mumble.foo.bar.edu</filename>, or it will be searched for
|
|
in the root domain.</para>
|
|
|
|
<para>This is different from the previous behavior, where the
|
|
search continued across <filename>mumble.bar.edu</filename>, and
|
|
<filename>mumble.edu</filename>. Have a look at RFC 1535 for why this
|
|
was considered bad practice, or even a security hole.</para>
|
|
|
|
<para>As a good workaround, you can place the line</para>
|
|
|
|
<para>
|
|
<literallayout> search foo.bar.edu bar.edu
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>instead of the previous</para>
|
|
|
|
<para>
|
|
<literallayout> domain foo.bar.edu
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>into your <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?resolv.conf">/etc/resolv.conf</ulink> file. However, make sure that the search order
|
|
does not go beyond the ``boundary between local and public
|
|
administration'', as RFC 1535 calls it.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>``Permission denied'' for all networking operations.</para></question><answer>
|
|
|
|
<para>If you have compiled your kernel with the <acronym>IPFIREWALL</acronym>
|
|
option, you need to be aware that the default policy as of
|
|
2.1.7R (this actually changed during 2.1-STABLE development)
|
|
is to deny all packets that are not explicitly allowed.</para>
|
|
|
|
<para>If you had unintentionally misconfigured your system for
|
|
firewalling, you can restore network operability by typing
|
|
the following while logged in as root:</para>
|
|
|
|
<para>
|
|
<literallayout> ipfw add 65534 allow all from any to any
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>You can also set "firewall_type='open'" in <filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>For further information on configuring a FreeBSD firewall,
|
|
see the <ulink URL="../handbook/firewalls.html">Handbook section</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How much overhead does IPFW incur?</para></question><answer>
|
|
|
|
<para>The answer to this depends mostly on your rule set and processor
|
|
speed. For most applications dealing with ethernet and small
|
|
rule sets, the answer is, negligible. For those of you that need
|
|
actual measurements to satisfy your curiosity, read on.</para>
|
|
|
|
<para>The following measurements were made using 2.2.5-STABLE on
|
|
a 486-66. IPFW was modified to measure the time spent within
|
|
the <symbol>ip_fw_chk</symbol> routine, displaying the results to the console
|
|
every 1000 packets.</para>
|
|
|
|
<para>Two rule sets, each with 1000 rules were tested. The first set
|
|
was designed to demonstrate a worst case scenario by repeating the
|
|
rule:</para>
|
|
|
|
<para>
|
|
<literallayout> ipfw add deny tcp from any to any 55555
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This demonstrates worst case by causing most of IPFW's packet
|
|
check routine to be executed before finally deciding that the
|
|
packet does not match the rule (by virtue of the port number).
|
|
Following the 999th iteration of this rule was an <emphasis remap=tt>allow ip
|
|
from any to any</emphasis>.</para>
|
|
|
|
<para>The second set of rules were designed to abort the rule
|
|
check quickly:</para>
|
|
|
|
<para>
|
|
<literallayout> ipfw add deny ip from 1.2.3.4 to 1.2.3.4
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>The nonmatching source IP address for the above rule causes
|
|
these rules to be skipped very quickly. As before, the 1000th
|
|
rule was an <emphasis remap=tt>allow ip from any to any</emphasis>.</para>
|
|
|
|
<para>The per-packet processing overhead in the former case was
|
|
approximately 2.703ms/packet, or roughly 2.7 microseconds per
|
|
rule. Thus the theoretical packet processing limit with these
|
|
rules is around 370 packets per second. Assuming 10Mbps ethernet
|
|
and a ~1500 byte packet size, we would only be able to achieve a
|
|
55.5% bandwidth utilization.</para>
|
|
|
|
<para>For the latter case each packet was processed in
|
|
approximately 1.172ms, or roughly 1.2 microseconds per rule.
|
|
The theoretical packet processing limit here would be about
|
|
853 packets per second, which could consume 10Mbps ethernet
|
|
bandwidth.</para>
|
|
|
|
<para>The excessive number of rules tested and the nature of those
|
|
rules do not provide a real-world scenario -- they were used only
|
|
to generate the timing information presented here. Here are a
|
|
few things to keep in mind when building an efficient rule set:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>Place an `established' rule early on to handle the
|
|
majority of TCP traffic. Don't put any <emphasis remap=tt>allow tcp</emphasis>
|
|
statements before this rule.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Place heavily triggered rules earlier in the rule
|
|
set than those rarely used (<emphasis remap=bf>without changing the
|
|
permissiveness of the firewall</emphasis>, of course). You can see
|
|
which rules are used most often by examining the packet counting
|
|
statistics with <command>ipfw -a l</command>.
|
|
</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I redirect service requests from one machine to another?
|
|
</para></question><answer>
|
|
|
|
<para>You can redirect FTP (and other service) request with the 'socket'
|
|
package, available in the ports tree in category 'sysutils'.
|
|
Simply replace the service's commandline to call socket instead, like so:</para>
|
|
|
|
<para>
|
|
<literallayout>ftp stream tcp nowait nobody /usr/local/bin/socket socket ftp.foo.com ftp</literallayout>
|
|
</para>
|
|
|
|
<para>where 'ftp.foo.com' and 'ftp' are the host and port to redirect to,
|
|
respectively.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Where can I get a bandwidth management tool?</para></question><answer>
|
|
|
|
<para>There are two bandwidth management tools available for FreeBSD.
|
|
<ulink URL="http://www.csl.sony.co.jp/person/kjc/programs.html">ALTQ</ulink> is available for free; Bandwidth Manager from
|
|
<ulink URL="http://www.etinc.com/">Emerging Technologies</ulink> is
|
|
a commercial product. </para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why do I get ``/dev/bpf0: device not configured"?</para></question><answer>
|
|
|
|
<para>The Berkeley Packet Filter <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?bpf">(bpf)</ulink> driver
|
|
needs to be enabled before running programs that utilize it.
|
|
Add this to your kernel config file and build a new kernel:</para>
|
|
|
|
<para>
|
|
<literallayout> pseudo-device bpfilter # Berkeley Packet Filter
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Secondly, after rebooting you will have to create the device
|
|
node. This can be accomplished by a change to the <filename>/dev</filename>
|
|
directory, followed by the execution of:</para>
|
|
|
|
<para>
|
|
<informalexample>
|
|
<screen> # sh MAKEDEV bpf0
|
|
</screen>
|
|
</informalexample>
|
|
</para>
|
|
|
|
<para>Please see the <ulink URL="../handbook/kernelconfig-nodes.html">handbook's entry on device nodes</ulink> for more information
|
|
on creating devices.</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<chapter id="ppp">
|
|
<title>PPP</title>
|
|
<qandaset>
|
|
<qandaentry><question
|
|
id="userppp">
|
|
<para> I can't make ppp work. What am I doing wrong ?
|
|
</para></question><answer>
|
|
|
|
<para>You should first read the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ppp">ppp man page</ulink> and
|
|
the <ulink URL="../handbook/ppp-and-slip.html#USERPPP">ppp section of the handbook</ulink>. Enable logging with the command</para>
|
|
|
|
<para>
|
|
<literallayout> set log Phase Chat Connect Carrier lcp ipcp ccp command
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This command may be typed at the <emphasis remap=bf>ppp</emphasis> command prompt or
|
|
it may be entered in the <filename>/etc/ppp/ppp.conf</filename> configuration file
|
|
(the start of the <emphasis remap=bf>default</emphasis> section is the best place to put it).
|
|
Make sure that <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?syslog.conf">/etc/syslog.conf</ulink> contains the lines</para>
|
|
|
|
<para>
|
|
<literallayout> !ppp
|
|
*.* /var/log/ppp.log
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>and that the file <filename>/var/log/ppp.log</filename> exists. You can
|
|
now find out a lot about what's going on from the log file.
|
|
Don't worry if it doesn't all make sense. If you need to
|
|
get help from someone, it may make sense to them.</para>
|
|
|
|
<para>If your version of ppp doesn't understand the "set log"
|
|
command, you should download the
|
|
<ulink URL="http://www.FreeBSD.org/~brian/">latest version</ulink>.
|
|
It will build on FreeBSD version 2.1.5 and higher.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Ppp just hangs when I run it</para></question><answer>
|
|
|
|
<para>This is usually because your hostname won't resolve. The best
|
|
way to fix this is to make sure that <filename>/etc/hosts</filename> is
|
|
consoluted by your resolver first by editing <filename>/etc/host.conf</filename>
|
|
and putting the <emphasis remap=tt>hosts</emphasis> line first. Then, simply put an
|
|
entry in <filename>/etc/hosts</filename> for your local machine. If you have
|
|
no local network, change your <emphasis remap=tt>localhost</emphasis> line:</para>
|
|
|
|
<para>
|
|
<literallayout>127.0.0.1 foo.bar.com foo localhost
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Otherwise, simply add another entry for your host. Consult the
|
|
relevant man pages for more details.</para>
|
|
|
|
<para>You should be able to successfully <command>ping -c1 `hostname`</command>
|
|
when you're done.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Ppp won't dial in -auto mode</para></question><answer>
|
|
|
|
<para>First, check that you've got a default route. By running <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?netstat">http://www.FreeBSD.org/cgi/man.cgi?netstat</ulink>
|
|
name="netstat -rn">, you should see two entries like this:</para>
|
|
|
|
<para>
|
|
<literallayout>Destination Gateway Flags Refs Use Netif Expire
|
|
default 10.0.0.2 UGSc 0 0 tun0
|
|
10.0.0.2 10.0.0.1 UH 0 0 tun0
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This is assuming that you've used the addresses from the
|
|
handbook, the man page or from the ppp.conf.sample file.
|
|
If you haven't got a default route, it may be because you're
|
|
running an old version of <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ppp">ppp</ulink> that doesn't understand the
|
|
word <acronym>HISADDR</acronym> in the ppp.conf file. If your version of
|
|
<emphasis remap=bf>ppp</emphasis> is from before FreeBSD 2.2.5, change the</para>
|
|
|
|
<para>
|
|
<literallayout> add 0 0 HISADDR
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>line to one saying</para>
|
|
|
|
<para>
|
|
<literallayout> add 0 0 10.0.0.2
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Another reason for the default route line being missing is that
|
|
you have mistakenly set up a default router in your
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?rc.conf">/etc/rc.conf</ulink> file (this file was called
|
|
<filename>/etc/sysconfig</filename> prior to release 2.2.2), and you have
|
|
omitted the line saying</para>
|
|
|
|
<para>
|
|
<literallayout> delete ALL
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>from <filename>ppp.conf</filename>. If this is the case, go back to the
|
|
<ulink URL="../handbook/ppp-and-slip.html#USERPPP-FINAL">Final system configuration</ulink> section of the handbook.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What does "No route to host" mean</para></question><answer>
|
|
|
|
<para>This error is usually due to a missing</para>
|
|
|
|
<para>
|
|
<literallayout> MYADDR:
|
|
delete ALL
|
|
add 0 0 HISADDR
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>section in your <filename>/etc/ppp/ppp.linkup</filename> file. This is
|
|
only necessary if you have a dynamic IP address or don't know the
|
|
address of your gateway. If you're using interactive mode, you can
|
|
type the following after entering <emphasis remap=tt>packet mode</emphasis> (packet mode is
|
|
indicated by the capitalized <acronym>PPP</acronym> in the prompt):</para>
|
|
|
|
<para>
|
|
<literallayout> delete ALL
|
|
add 0 0 HISADDR
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Refer to the <ulink URL="../handbook/ppp-and-slip.html#USERPPP-DYNAMICIP">PPP and Dynamic IP addresses</ulink> section of the handbook
|
|
for further details.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My connection drops after about 3 minutes</para></question><answer>
|
|
|
|
<para>The default ppp timeout is 3 minutes. This can be adjusted
|
|
with the line</para>
|
|
|
|
<para>
|
|
<literallayout> set timeout NNN
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>where <acronym>NNN</acronym> is the number of seconds of inactivity before the
|
|
connection is closed. If <acronym>NNN</acronym> is zero, the connection is
|
|
never closed due to a timeout. It is possible to put this command in
|
|
the <filename>ppp.conf</filename> file, or to type it at the prompt in
|
|
interactive mode. It is also possible to adjust it on the fly while
|
|
the line is active by connecting to <emphasis remap=bf>ppp</emphasis>s server socket using
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?telnet">telnet</ulink>
|
|
or <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?pppctl">pppctl</ulink>. Refer to the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ppp">ppp</ulink> man
|
|
page for further details.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My connection drops under heavy load</para></question><answer>
|
|
|
|
<para>If you have Link Quality Reporting (LQR) configured, it is
|
|
possible that too many LQR packets are lost between your
|
|
machine and the peer. Ppp deduces that the line must therefore
|
|
be bad, and disconnects. Prior to FreeBSD version 2.2.5,
|
|
LQR was enabled by default. It is now disabled by default.
|
|
LQR can be disabled with the line</para>
|
|
|
|
<para>
|
|
<literallayout> disable lqr
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My connection drops after a random amount of time</para></question><answer>
|
|
|
|
<para>Sometimes, on a noisy phone line or even on a line with
|
|
call waiting enabled, your modem may hang up because it
|
|
thinks (incorrectly) that it lost carrier.</para>
|
|
|
|
<para>There's a setting on most modems for determining how tolerant
|
|
it should be to temporary losses of carrier. On a USR
|
|
Sportster for example, this is measured by the S10 register in
|
|
tenths of a second. To make your modem more forgiving, you could
|
|
add the following send-expect sequence to your dial string:</para>
|
|
|
|
<para>
|
|
<literallayout> set dial "...... ATS10=10 OK ......"
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Refer to your modem manual for details.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My connection hangs after a random amount of time</para></question><answer>
|
|
|
|
<para>Many people experience hung connections with no apparent
|
|
explaination. The first thing to establish is which side of the
|
|
link is hung.</para>
|
|
|
|
<para>If you are using an external modem, you can simply try using
|
|
<emphasis remap=tt>ping</emphasis> to see if the <acronym>TD</acronym> light is flashing when you
|
|
transmit data. If it flashes (and the <acronym>RD</acronym> light doesn't), the
|
|
problem is with the remote end. If <acronym>TD</acronym> doesn't flash, the problem
|
|
is local. With an internal modem, you'll need to use the <emphasis remap=tt>set
|
|
server</emphasis> command in your <filename>ppp.conf</filename> file. When the hang occurs,
|
|
connect to ppp using pppctl. If your network connection suddenly
|
|
revives (ppp was revived due to the activity on the diagnostic socket)
|
|
or if you can't connect (assuming the <emphasis remap=tt>set socket</emphasis> command
|
|
succeeded at startup time), the problem is local. If you can connect
|
|
and things are still hung, enable local async logging with <emphasis remap=tt>set log
|
|
local async</emphasis> and use <emphasis remap=tt>ping</emphasis> from another window or terminal to make
|
|
use of the link. The async logging will show you the data being
|
|
transmitted and received on the link. If data is going out and not
|
|
coming back, the problem is remote.</para>
|
|
|
|
<para>Having established whether the problem is local or remote,
|
|
you now have two possibilities:</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>The remote end isn't responding</para></question><answer>
|
|
|
|
<para>There's very little you can do about this. Most ISPs will
|
|
refuse to help if you're not running a Microsoft OS. You can
|
|
<emphasis remap=tt>enable lqr</emphasis> in your <filename>ppp.conf</filename> file, allowing ppp to
|
|
detect the remote failure and hang up, but this detection is
|
|
relatively slow and therefore not that useful. You may want
|
|
to avoid telling your ISP that you're running user-ppp....</para>
|
|
|
|
<para>First, try disabling all local compression by adding the
|
|
following to your configuration:</para>
|
|
|
|
<para>
|
|
<literallayout> disable pred1 deflate deflate24 protocomp acfcomp shortseq vj
|
|
deny pred1 deflate deflate24 protocomp acfcomp shortseq vj
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Then reconnect to ensure that this makes no difference.
|
|
If things improve or if the problem is solved completely,
|
|
determine which setting makes the difference through trial
|
|
and error. This will provide good amunition when you contact
|
|
your ISP (although it may make it apparent that you're not
|
|
running a Microsoft product).</para>
|
|
|
|
<para>Before contacting your ISP, enable async logging locally
|
|
and wait until the connection hangs again. This may use up
|
|
quite a bit of disk space. The last data read from the port
|
|
may be of interest. It is usually ascii data, and may even
|
|
describe the problem (``Memory fault, core dumped'' ?).</para>
|
|
|
|
<para>If your ISP is helpful, they should be able to enable logging
|
|
on their end, then when the next link drop occurs, they may be
|
|
able to tell you why their side is having a problem. Feel free
|
|
to send the details to <ulink URL="mailto:brian@Awfulhak.org">brian@Awfulhak.org</ulink>, or even to ask your ISP to
|
|
contact me directly.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Ppp is hung</para></question><answer>
|
|
|
|
<para>Your best bet here is to rebuild ppp by adding <literal>CFLAGS+=-g</literal>
|
|
and <literal>STRIP=</literal> to the end of the Makefile, then doing a
|
|
<emphasis remap=tt>make clean && make && make install</emphasis>. When
|
|
ppp hangs, find the ppp process id with <emphasis remap=tt>ps ajxww | fgrep ppp</emphasis>
|
|
and run <emphasis remap=tt>gdb ppp PID</emphasis>. From the gdb prompt, you can then use
|
|
<emphasis remap=tt>bt</emphasis> to get a stack trace.</para>
|
|
|
|
<para>Send the results to <ulink URL="mailto:brian@Awfulhak.org">brian@Awfulhak.org</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Nothing happens after the Login OK! message</para></question><answer>
|
|
|
|
<para>Prior to FreeBSD version 2.2.5, once the link was established,
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ppp">ppp</ulink> would wait for the peer to initiate the Line Control
|
|
Protocol (LCP). Many ISPs will not initiate negotiations and
|
|
expect the client to do so. To force <emphasis remap=bf>ppp</emphasis> to initiate
|
|
the LCP, use the following line:</para>
|
|
|
|
<para>
|
|
<literallayout> set openmode active
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para><emphasis remap=bf>Note</emphasis>: It usually does no harm if both sides initiate
|
|
negotiation, so openmode is now active by default. However,
|
|
the next section explains when it <emphasis remap=bf>does</emphasis> do some harm.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I keep seeing errors about magic being the same</para></question><answer>
|
|
|
|
<para>Occasionally, just after connecting, you may see messages in
|
|
the log that say "magic is the same". Sometimes, these
|
|
messages are harmless, and sometimes one side or the other
|
|
exits. Most ppp implementations cannot survive this problem, and
|
|
even if the link seems to come up, you'll see repeated configure
|
|
requests and configure acknowledgements in the log file until
|
|
ppp eventually gives up and closes the connection.</para>
|
|
|
|
<para>This normally happens on server machines with slow disks that
|
|
are spawning a getty on the port, and executing ppp from a
|
|
login script or program after login. I've also heard reports
|
|
of it happening consistently when using slirp. The reason is
|
|
that in the time taken between getty exiting and ppp starting, the
|
|
client-side ppp starts sending Line Control Protocol (LCP)
|
|
packets. Because ECHO is still switched on for the port on
|
|
the server, the client ppp sees these packets "reflect" back.</para>
|
|
|
|
<para>One part of the LCP negotiation is to establish a magic number
|
|
for each side of the link so that "reflections" can be detected.
|
|
The protocol says that when the peer tries to negotiate
|
|
the same magic number, a NAK should be sent and a new magic
|
|
number should be chosen. During the period that the server
|
|
port has ECHO turned on, the client ppp sends LCP packets,
|
|
sees the same magic in the reflected packet and NAKs it. It
|
|
also sees the NAK reflect (which also means ppp must change
|
|
its magic). This produces a potentially enormous number of
|
|
magic number changes, all of which are happily piling into
|
|
the server's tty buffer. As soon as ppp starts on the server,
|
|
it's flooded with magic number changes and almost immediately
|
|
decides it's tried enough to negotiate LCP and gives up.
|
|
Meanwhile, the client, who no longer sees the reflections,
|
|
becomes happy just in time to see a hangup from the server.</para>
|
|
|
|
<para>This can be avoided by allowing the peer to start negotiating
|
|
with the following line in your ppp.conf file:</para>
|
|
|
|
<para>
|
|
<literallayout> set openmode passive
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This tells ppp to wait for the server to initiate LCP
|
|
negotiations. Some servers however may never initiate negotiations.
|
|
If this is the case, you can do something like:</para>
|
|
|
|
<para>
|
|
<literallayout> set openmode active 3
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This tells ppp to be passive for 3 seconds, and then to start
|
|
sending LCP requests. If the peer starts sending requests during
|
|
this period, ppp will immediately respond rather than waiting for
|
|
the full 3 second period.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> LCP negotiations continue 'till the connection is closed
|
|
</para></question><answer>
|
|
|
|
<para>There is currently an implementation mis-feature in <emphasis remap=bf>ppp</emphasis>
|
|
where it doesn't associate LCP, CCP & IPCP responses with
|
|
their original requests. As a result, if one <emphasis remap=bf>ppp</emphasis>
|
|
implementation is more than 6 seconds slower than the other side,
|
|
the other side will send two additional LCP configuration requests.
|
|
This is fatal.</para>
|
|
|
|
<para>Consider two implementations, <emphasis remap=bf>A</emphasis> and <emphasis remap=bf>B</emphasis>. <emphasis remap=bf>A</emphasis> starts
|
|
sending LCP requests immediately after connecting and <emphasis remap=bf>B</emphasis> takes
|
|
7 seconds to start. When <emphasis remap=bf>B</emphasis> starts, <emphasis remap=bf>A</emphasis> has sent 3 LCP
|
|
REQs. We're assuming the line has ECHO switched off, otherwise
|
|
we'd see magic number problems as described in the previous section.
|
|
<emphasis remap=bf>B</emphasis> sends a REQ, then an ACK to the first of <emphasis remap=bf>A</emphasis>'s REQs.
|
|
This results in <emphasis remap=bf>A</emphasis> entering the <acronym>OPENED</acronym> state and sending
|
|
and ACK (the first) back to <emphasis remap=bf>B</emphasis>. In the meantime, <emphasis remap=bf>B</emphasis> sends
|
|
back two more ACKs in response to the two additional REQs sent by
|
|
<emphasis remap=bf>A</emphasis> before <emphasis remap=bf>B</emphasis> started up. <emphasis remap=bf>B</emphasis> then receives the first
|
|
ACK from <emphasis remap=bf>A</emphasis> and enters the <acronym>OPENED</acronym> state. <emphasis remap=bf>A</emphasis> receives
|
|
the second ACK from <emphasis remap=bf>B</emphasis> and goes back to the <emphasis remap=bf>REQ-SENT</emphasis> state,
|
|
sending another (forth) REQ as per the RFC. It then receives the
|
|
third ACK and enters the <acronym>OPENED</acronym> state. In the meantime,
|
|
<emphasis remap=bf>B</emphasis> receives the forth REQ from <emphasis remap=bf>A</emphasis>, resulting in it reverting
|
|
to the <emphasis remap=bf>ACK-SENT</emphasis> state and sending another (second) REQ and
|
|
(forth) ACK as per the RFC. <emphasis remap=bf>A</emphasis> gets the REQ, goes into
|
|
<emphasis remap=bf>REQ-SENT</emphasis> and sends another REQ. It immediately receives the
|
|
following ACK and enters <acronym>OPENED</acronym>.</para>
|
|
|
|
<para>This goes on 'till one side figures out that they're getting
|
|
nowhere and gives up.</para>
|
|
|
|
<para>The best way to avoid this is to configure one side to be
|
|
<emphasis remap=bf>passive</emphasis> - that is, make one side wait for the other to start
|
|
negotiating. This can be done with the</para>
|
|
|
|
<para>
|
|
<literallayout> set openmode passive
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>command. Care should be taken with this option. You should also
|
|
use the</para>
|
|
|
|
<para>
|
|
<literallayout> set stopped N
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>command to limit the amount of time that <emphasis remap=bf>ppp</emphasis> waits for the peer
|
|
to begin negotiations. Alternatively, the</para>
|
|
|
|
<para>
|
|
<literallayout> set openmode active N
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>command (where <emphasis remap=bf>N</emphasis> is the number of seconds to wait before
|
|
starting negotiations) can be used. Check the manual page for
|
|
details.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Ppp locks up shortly after connecting</para></question><answer>
|
|
|
|
<para>Prior to version 2.2.5 of FreeBSD, it was possible that your
|
|
link was disabled shortly after connection due to <emphasis remap=bf>ppp</emphasis>
|
|
mis-handling Predictor1 compression negotiation. This would
|
|
only happen if both sides tried to negotiate different
|
|
Compression Control Protocols (CCP). This problem is now
|
|
corrected, but if you're still running an old version of
|
|
<emphasis remap=bf>ppp</emphasis>, the problem can be circumvented with the line</para>
|
|
|
|
<para>
|
|
<literallayout> disable pred1
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Ppp locks up when I shell out to test it</para></question><answer>
|
|
|
|
<para>When you execute the <emphasis remap=tt>shell</emphasis> or <emphasis remap=tt>!</emphasis> command, <emphasis remap=bf>ppp</emphasis>
|
|
executes a shell (or if you've passed any arguements, <emphasis remap=bf>ppp</emphasis>
|
|
will execute those arguements). Ppp will wait for the command
|
|
to complete before continuing. If you attempt to use the
|
|
ppp link while running the command, the link will appear to have
|
|
frozen. This is because <emphasis remap=bf>ppp</emphasis> is waiting for the command
|
|
to complete.</para>
|
|
|
|
<para>If you wish to execute commands like this, use the
|
|
<emphasis remap=tt>!bg</emphasis> command instead. This will execute the given command
|
|
in the background, and ppp can continue to service the link.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Ppp over a null-modem cable never exits</para></question><answer>
|
|
|
|
<para>There is no way for <emphasis remap=bf>ppp</emphasis> to automatically determine that
|
|
a direct connection has been dropped. This is due to the
|
|
lines that are used in a null-modem serial cable. When using
|
|
this sort of connection, LQR should always be enabled with
|
|
the line</para>
|
|
|
|
<para>
|
|
<literallayout> enable lqr
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>LQR is accepted by default if negotiated by the peer.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why does ppp dial for no reason in -auto mode</para></question><answer>
|
|
|
|
<para>If <emphasis remap=bf>ppp</emphasis> is dialing unexpectedly, you must determine the
|
|
cause, and set up Dial filters (dfilters) to prevent such dialing.</para>
|
|
|
|
<para>To determine the cause, use the following line:</para>
|
|
|
|
<para>
|
|
<literallayout> set log +tcp/ip
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This will log all traffic through the connection. The next
|
|
time the line comes up unexpectedly, you will see the reason
|
|
logged with a convenient timestamp next to it.</para>
|
|
|
|
<para>You can now disable dialing under these circumstances. Usually,
|
|
this sort of problem arises due to DNS lookups. To prevent
|
|
DNS lookups from establishing a connection (this will <emphasis remap=bf>not</emphasis>
|
|
prevent <emphasis remap=bf>ppp</emphasis> from passing the packets through an established
|
|
connection), use the following:</para>
|
|
|
|
<para>
|
|
<literallayout> set dfilter 1 deny udp src eq 53
|
|
set dfilter 2 deny udp dst eq 53
|
|
set dfilter 3 permit 0/0 0/0
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This is not always suitable, as it will effectively break your
|
|
demand-dial capabilities - most programs will need a DNS lookup
|
|
before doing any other network related things.</para>
|
|
|
|
<para>In the DNS case, you should try to determine what is actually
|
|
trying to resolve a host name. A lot of the time,
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?sendmail">sendmail</ulink> is the culprit. You should make sure that you tell
|
|
sendmail not to do any DNS lookups in its configuration file. See
|
|
the section on <xref linkend="ispmail" remap="Mail Configuration"> for
|
|
details on how to create your own configuration file and what should
|
|
go into it. You may also want to add the following line to your
|
|
<filename>.mc</filename> file:</para>
|
|
|
|
<para>
|
|
<literallayout> define(`confDELIVERY_MODE', `d')dnl
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This will make sendmail queue everything until the queue is
|
|
run (usually, sendmail is invoked with ``-bd -q30m'', telling it
|
|
to run the queue every 30 minutes) or until a ``sendmail -q''
|
|
is done (perhaps from your ppp.linkup file).</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What do these CCP errors mean</para></question><answer>
|
|
|
|
<para>I keep seeing the following errors in my log file:</para>
|
|
|
|
<para>
|
|
<literallayout> CCP: CcpSendConfigReq
|
|
CCP: Received Terminate Ack (1) state = Req-Sent (6)
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This is because ppp is trying to negotiate Predictor1
|
|
compression, and the peer does not want to negotiate any
|
|
compression at all. The messages are harmless, but if you
|
|
wish to remove them, you can disable Predictor1 compression
|
|
locally too:</para>
|
|
|
|
<para>
|
|
<literallayout> disable pred1
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Ppp locks up during file transfers with IO errors</para></question><answer>
|
|
|
|
<para>Under FreeBSD 2.2.2 and before, there was a bug in the tun
|
|
driver that prevents incoming packets of a size larger than
|
|
the tun interface's MTU size. Receipt of a packet greater than
|
|
the MTU size results in an IO error being logged via syslogd.</para>
|
|
|
|
<para>The ppp specification says that an MRU of 1500 should
|
|
<emphasis remap=bf>always</emphasis> be accepted as a minimum, despite any LCP
|
|
negotiations, therefore it is possible that should you decrease
|
|
the MTU to less than 1500, your ISP will transmit packets of
|
|
1500 regardless, and you will tickle this non-feature - locking
|
|
up your link.</para>
|
|
|
|
<para>The problem can be circumvented by never setting an MTU of
|
|
less than 1500 under FreeBSD 2.2.2 or before.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why doesn't ppp log my connection speed?</para></question><answer>
|
|
|
|
<para>In order to log all lines of your modem ``conversation'',
|
|
you must enable the following:</para>
|
|
|
|
<para>
|
|
<literallayout> set log +connect
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This will make
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ppp">ppp</ulink>
|
|
log everything up until the last requested "expect" string.</para>
|
|
|
|
<para>If you wish to see your connect speed and are using PAP or CHAP
|
|
(and therefore don't have anything to "chat" after the CONNECT
|
|
in the dial script - no "set login" script), you must make sure that
|
|
you instruct ppp to "expect" the whole CONNECT line, something like
|
|
this:</para>
|
|
|
|
<para>
|
|
<literallayout> set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Here, we get our CONNECT, send nothing, then expect a line-feed,
|
|
forcing <emphasis remap=bf>ppp</emphasis> to read the whole CONNECT response.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Ppp ignores the `\' character in my chat script</para></question><answer>
|
|
|
|
<para>Ppp parses each line in your config files so that it can
|
|
interpret strings such as <emphasis remap=tt>set phone "123 456 789"</emphasis> correctly
|
|
(and realize that the number is actually only <emphasis remap=bf>one</emphasis> argument.
|
|
In order to specify a ``"'' character, you must escape it using
|
|
a backslash (``\'').</para>
|
|
|
|
<para>When the chat interpreter parses each argument, it re-interprets
|
|
the argument in order to find any special escape sequences such
|
|
as ``\P'' or ``\T'' (see the man page). As a result of this
|
|
double-parsing, you must remember to use the correct number of
|
|
escapes.</para>
|
|
|
|
<para>If you wish to actually send a ``\'' character to (say) your
|
|
modem, you'd need something like:</para>
|
|
|
|
<para>
|
|
<literallayout> set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK"
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>resulting in the following sequence:</para>
|
|
|
|
<para>
|
|
<literallayout> ATZ
|
|
OK
|
|
AT\X
|
|
OK
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>or</para>
|
|
|
|
<para>
|
|
<literallayout> set phone 1234567
|
|
set dial "\"\" ATZ OK ATDT\\T"
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>resulting in the following sequence:</para>
|
|
|
|
<para>
|
|
<literallayout> ATZ
|
|
OK
|
|
ATDT1234567
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Ppp gets a seg-fault, but I see no <filename>ppp.core</filename> file</para></question><answer>
|
|
|
|
<para>Ppp (or any other program for that matter) should never
|
|
dump core. Because ppp runs with an effective user id of 0,
|
|
the operating system will not write ppps core image to disk
|
|
before terminating it. If, however ppp <emphasis remap=bf>is</emphasis> actually
|
|
termating due to a segmentation violation or some other
|
|
signal that normally causes core to be dumped, <emphasis remap=bf>and</emphasis> you're
|
|
sure you're using the latest version (see the start of this
|
|
section), then you should do the following:</para>
|
|
|
|
<para>
|
|
<literallayout> $ tar xfz ppp-*.src.tar.gz
|
|
$ cd ppp*/ppp
|
|
$ echo STRIP= >>Makefile
|
|
$ echo CFLAGS+=-g >>Makefile
|
|
$ make clean all
|
|
$ su
|
|
# make install
|
|
# chmod 555 /usr/sbin/ppp
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>You will now have a debuggable version of ppp installed. You
|
|
will have to be root to run ppp as all of its privileges have
|
|
been revoked. When you start ppp, take a careful note of what
|
|
your current directory was at the time.</para>
|
|
|
|
<para>Now, if and when ppp receives the segmentation violation, it
|
|
will dump a core file called ppp.core. You should then do the
|
|
following:</para>
|
|
|
|
<para>
|
|
<literallayout> $ su
|
|
# gdb /usr/sbin/ppp ppp.core
|
|
(gdb) bt
|
|
.....
|
|
(gdb) f 0
|
|
.....
|
|
(gdb) i args
|
|
.....
|
|
(gdb) l
|
|
.....
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>All of this information should be given alongside your
|
|
question, making it possible to diagnose the problem.</para>
|
|
|
|
<para>If you're familiar with gdb, you may wish to find out some
|
|
other bits and pieces such as what actually caused the dump and
|
|
the addresses & values of the relevant variables.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> The process that forces a dial in auto mode never connects
|
|
</para></question><answer>
|
|
|
|
<para>This was a known problem with <emphasis remap=bf>ppp</emphasis> set up to negotiate
|
|
a dynamic local IP number with the peer in auto mode. It is
|
|
fixed in the latest version - search the man page for <emphasis remap=bf>iface</emphasis>.</para>
|
|
|
|
<para>The problem was that when that initial program calls
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?connect">connect(2)</ulink>, the IP number of the tun interface is
|
|
assigned to the socket endpoint. The kernel creates the first
|
|
outgoing packet and writes it to the tun device. <emphasis remap=bf>Ppp</emphasis> then
|
|
reads the packet and establishes a connection. If, as a result
|
|
of <emphasis remap=bf>ppp</emphasis>s dynamic IP assignment, the interface address is changed,
|
|
the original socket endpoint will be invalid. Any subsequent
|
|
packets sent to the peer will usually be dropped. Even if
|
|
they aren't, any responses will not route back to the originating
|
|
machine as the IP number is no longer owned by that machine.</para>
|
|
|
|
<para>There are several theoretical ways to approach this problem.
|
|
It would be nicest if the peer would re-assign the same IP number
|
|
if possible <emphasis remap=tt>:-)</emphasis> The current version of <emphasis remap=bf>ppp</emphasis> does this,
|
|
but most other implementations don't.</para>
|
|
|
|
<para>The easiest method from our side would be to never change the
|
|
tun interface IP number, but instead to change all outgoing packets
|
|
so that the source IP number is changed from the interface IP to
|
|
the negotiated IP on the fly. This is essentially what the
|
|
<emphasis remap=tt>iface-alias</emphasis> option in the latest version of <emphasis remap=bf>ppp</emphasis> is
|
|
doing (with the help of <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?libalias">libalias(3)</ulink>
|
|
and ppp's <option>-alias</option> switch) - it's maintaining all previous
|
|
interface addresses and aliasing them to the last negotiated address.</para>
|
|
|
|
<para>Another alternative (and probably the most reliable) would be
|
|
to implement a system call that changes all bound sockets from one
|
|
IP to another. <emphasis remap=bf>Ppp</emphasis> would use this call to modify the
|
|
sockets of all existing programs when a new IP number is
|
|
negotiated. The same system call could be used by dhcp clients
|
|
when they are forced to re-bind() their sockets.</para>
|
|
|
|
<para>Yet another possibility is to allow an interface to be brought
|
|
up without an IP number. Outgoing packets would be given
|
|
an IP number of 255.255.255.255 up until the first SIOCAIFADDR
|
|
ioctl is done. This would result in fully binding the socket. It
|
|
would be up to <emphasis remap=bf>ppp</emphasis> to change the source IP number, but only if
|
|
it's set to 255.255.255.255, and only the IP number and IP checksum
|
|
would need to change. This, however is a bit of a hack as
|
|
the kernel would be sending bad packets to an improperly
|
|
configured interface, on the assumption that some other mechanism
|
|
is capable of fixing things retrospectively.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why don't most games work with the -alias switch</para></question><answer>
|
|
|
|
<para>The reason games and the like don't work when libalias is
|
|
in use is that the machine on the outside will try to open a
|
|
connection or send (unsolicited) UDP packets to the machine
|
|
on the inside. The packet alias software doesn't know that
|
|
it should send these packets to the interior machine.</para>
|
|
|
|
<para>To make things work, make sure that the only thing running
|
|
is the software that you're having problems with, then either
|
|
run tcpdump on the tun interface of the gateway or enable ppp
|
|
tcp/ip logging (``set log +tcp/ip'') on the gateway.</para>
|
|
|
|
<para>When you start the offending software, you should see packets
|
|
passing through the gateway machine. When something comes back
|
|
from the outside, it'll be dropped (that's the problem). Note
|
|
the port number of these packets then shut down the offending
|
|
software. Do this a few times to see if the port numbers are
|
|
consistent. If they are, then the following line in the relevant
|
|
section of /etc/ppp/ppp.conf will make the software functional:</para>
|
|
|
|
<para>
|
|
<literallayout> alias port proto internalmachine:port port
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>where ``proto'' is either ``tcp'' or ``udp'',
|
|
``internalmachine'' is the machine that you want the packets
|
|
to be sent to and ``port'' is the destination port number of
|
|
the packets.</para>
|
|
|
|
<para>You won't be able to use the software on other machines
|
|
without changing the above command, and running the software
|
|
on two internal machines at the same time is out of the question
|
|
- after all, the outside world is seeing your entire internal
|
|
network as being just a single machine.</para>
|
|
|
|
<para>If the port numbers aren't consistent, there are three more
|
|
options:</para>
|
|
|
|
<para><emphasis remap=bf>1)</emphasis> Submit support in libalias. Examples of ``special
|
|
cases'' can be found in /usr/src/lib/libalias/alias_*.c (alias_ftp.c
|
|
is a good prototype). This usually involves reading certain
|
|
recognised outgoing packets, identifying the instruction that
|
|
tells the outside machine to initiate a connection back to the
|
|
internal machine on a specific (random) port and setting up a
|
|
``route'' in the alias table so that the subsequent packets
|
|
know where to go.</para>
|
|
|
|
<para>This is the most difficult solution, but it is the best and
|
|
will make the software work with multiple machines.</para>
|
|
|
|
<para><emphasis remap=bf>2)</emphasis> Use a proxy. The application may support socks5
|
|
for example, or (as in the ``cvsup'' case) may have a ``passive''
|
|
option that avoids ever requesting that the peer open connections
|
|
back to the local machine.</para>
|
|
|
|
<para><emphasis remap=bf>3)</emphasis> Redirect everything to the internal machine using
|
|
``alias addr''. This is the sledge-hammer approach.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Has anybody made a list of useful port numbers ?</para></question><answer>
|
|
|
|
<para>Not yet, but this is intended to grow into such a list (if
|
|
any interest is shown). In each example, <emphasis remap=tt>internal</emphasis> should
|
|
be replaced with the IP number of the machine playing the game.</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><emphasis remap=bf>Quake</emphasis>
|
|
</para>
|
|
|
|
<para><emphasis remap=tt>alias port udp internal:6112 6112</emphasis></para>
|
|
|
|
<para>Alternatively, you may want to take a look at
|
|
<ulink URL="http://www.battle.net/support/proxy/">www.battle.net</ulink> for Quake proxy support.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><emphasis remap=bf>Quake 2</emphasis>
|
|
</para>
|
|
|
|
<para><emphasis remap=tt>alias port udp internal:27901 27910</emphasis></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><emphasis remap=bf>Red Alert</emphasis>
|
|
</para>
|
|
|
|
<para><emphasis remap=tt>alias port udp internal:8675 8675</emphasis></para>
|
|
|
|
<para><emphasis remap=tt>alias port udp internal:5009 5009</emphasis></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><emphasis remap=bf>Half Life</emphasis>
|
|
</para>
|
|
|
|
<para><emphasis remap=tt>alias port udp internal:27005 27015</emphasis></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><emphasis remap=bf>PCAnywhere 8.0</emphasis>
|
|
</para>
|
|
|
|
<para><emphasis remap=tt>alias port udp internal:5632 5632</emphasis></para>
|
|
|
|
<para><emphasis remap=tt>alias port tcp internal:5631 5631</emphasis></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What are FCS errors ?</para></question><answer>
|
|
|
|
<para>FCS stands for <emphasis remap=bf>F</emphasis>rame <emphasis remap=bf>C</emphasis>heck <emphasis remap=bf>S</emphasis>equence. Each
|
|
ppp packet has a checksum attached to ensure that the data
|
|
being received is the data being sent. If the FCS of an
|
|
incoming packet is incorrect, the packet is dropped and the
|
|
HDLC FCS count is increased. The HDLC error values can be
|
|
displayed using the <emphasis remap=tt>show hdlc</emphasis> command.</para>
|
|
|
|
<para>If your link is bad (or if your serial driver is dropping
|
|
packets), you will see the occasional FCS error. This is not
|
|
usually worth worrying about although it does slow down the
|
|
compression protocols substantially. If you have an external
|
|
modem, make sure your cable is properly shielded from
|
|
interference - this may eradicate the problem.</para>
|
|
|
|
<para>If your link freezes as soon as you've connected and you see
|
|
a large number of FCS errors, this may be because your link is
|
|
not 8 bit clean. Make sure your modem is not using software
|
|
flow control (XON/XOFF). If your datalink <emphasis remap=bf>must</emphasis> use
|
|
software flow control, use the command
|
|
<literal>set accmap 0x000a0000</literal> to tell <emphasis remap=bf>ppp</emphasis> to escape
|
|
the ^Q and ^S characters.</para>
|
|
|
|
<para>Another reason for seeing too many FCS errors may be that
|
|
the remote end has stopped talking <acronym>PPP</acronym>. You may want to
|
|
enable <emphasis remap=tt>async</emphasis> logging at this point to determine if the
|
|
incoming data is actually a login or shell prompt. If you
|
|
have a shell prompt at the remote end, it's possible to
|
|
terminate ppp without dropping the line by using the
|
|
<emphasis remap=tt>close lcp</emphasis> command (a following <emphasis remap=tt>term</emphasis> command
|
|
will reconnect you to the shell on the remote machine.</para>
|
|
|
|
<para>If nothing in your log file indicates why the link might
|
|
have been terminated, you should ask the remote administrator
|
|
(your ISP?) why the session was terminated.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>None of this helps - I'm desperate !</para></question><answer>
|
|
|
|
<para>If all else fails, send as much information as you can,
|
|
including your config files, how you're starting <emphasis remap=bf>ppp</emphasis>,
|
|
the relevant parts of your log file and the output of the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?netstat">netstat -rn</ulink> command (before and after connecting) to the
|
|
<ulink URL="mailto:freebsd-questions@FreeBSD.org">freebsd-questions@FreeBSD.org</ulink> mailing list or the
|
|
<ulink URL="news:comp.unix.bsd.freebsd.misc">comp.unix.bsd.freebsd.misc</ulink> news group, and someone
|
|
should point you in the right direction.</para>
|
|
|
|
</answer></qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<chapter
|
|
id="serial">
|
|
<title>Serial Communications</title>
|
|
|
|
<para>This section answers common questions about serial communications
|
|
with FreeBSD. PPP and SLIP are covered in the <xref linkend="networking" remap="Networking"> section.</para>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para>How do I tell if FreeBSD found my serial ports?</para></question><answer>
|
|
|
|
<para>As the FreeBSD kernel boots, it will probe for the serial ports
|
|
in your system for which the kernel was configured. You can
|
|
either watch your system closely for the messages it prints or
|
|
run the command</para>
|
|
|
|
<para>
|
|
<literallayout> dmesg | grep sio
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>after your system's up and running.</para>
|
|
|
|
<para>Here's some example output from the above command:</para>
|
|
|
|
<para>
|
|
<literallayout> sio0 at 0x3f8-0x3ff irq 4 on isa
|
|
sio0: type 16550A
|
|
sio1 at 0x2f8-0x2ff irq 3 on isa
|
|
sio1: type 16550A
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This shows two serial ports. The first is on irq 4, is using
|
|
port address <literal>0x3f8</literal>, and has a 16550A-type UART chip. The
|
|
second uses the same kind of chip but is on irq 3 and is at port
|
|
address <literal>0x2f8</literal>. Internal modem cards are treated just like
|
|
serial ports---except that they always have a modem ``attached''
|
|
to the port.</para>
|
|
|
|
<para>The <acronym>GENERIC</acronym> kernel includes support for two serial ports
|
|
using the same irq and port address settings in the above
|
|
example. If these settings aren't right for your system, or if
|
|
you've added modem cards or have more serial ports than your
|
|
kernel is configured for, just reconfigure your kernel. See
|
|
section <xref linkend="make-kernel" remap="about building a kernel"> for
|
|
more details.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I tell if FreeBSD found my modem cards?</para></question><answer>
|
|
|
|
<para>Refer to the answer to the previous question.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I just upgraded to 2.0.5 and my <emphasis remap=tt>tty0X</emphasis> are missing!</para></question><answer>
|
|
|
|
<para>Don't worry, they have been merged with the <emphasis remap=tt>ttydX</emphasis> devices.
|
|
You'll have to change any old configuration files you have, though.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I access the serial ports on FreeBSD?</para></question><answer>
|
|
|
|
<para>The third serial port, <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?sio">sio2</ulink> (known as
|
|
COM3 in DOS), is on <filename>/dev/cuaa2</filename> for dial-out devices, and on
|
|
<filename>/dev/ttyd2</filename> for dial-in devices. What's the difference
|
|
between these two classes of devices?</para>
|
|
|
|
<para>You use <emphasis remap=tt>ttydX</emphasis> for dial-ins. When opening <filename>/dev/ttydX</filename>
|
|
in blocking mode, a process will wait for the corresponding
|
|
<emphasis remap=tt>cuaaX</emphasis> device to become inactive, and then wait
|
|
for the carrier detect line to go active. When you open the
|
|
<emphasis remap=tt>cuaaX</emphasis> device, it makes sure the serial port isn't already in
|
|
use by the <emphasis remap=tt>ttydX</emphasis> device. If the port's available, it
|
|
``steals'' it from the <emphasis remap=tt>ttydX</emphasis> device. Also, the <emphasis remap=tt>cuaXX</emphasis>
|
|
device doesn't care about carrier detect. With this scheme and
|
|
an auto-answer modem, you can have remote users log in and you
|
|
can still dialout with the same modem and the system will take
|
|
care of all the conflicts.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I enable support for a multiport serial card?</para></question><answer>
|
|
|
|
<para>Again, the section on kernel configuration provides information
|
|
about configuring your kernel. For a multiport serial card,
|
|
place an <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?sio">sio</ulink> line for each serial port on the card in the
|
|
kernel configuration file. But place the irq and vector
|
|
specifiers on only one of the entries. All of the ports on the
|
|
card should share one irq. For consistency, use the last serial
|
|
port to specify the irq. Also, specify the <symbol>COM_MULTIPORT</symbol>
|
|
option.</para>
|
|
|
|
<para>The following example is for an AST 4-port serial card on irq 7:</para>
|
|
|
|
<para>
|
|
<literallayout> options "COM_MULTIPORT"
|
|
device sio4 at isa? port 0x2a0 tty flags 0x781
|
|
device sio5 at isa? port 0x2a8 tty flags 0x781
|
|
device sio6 at isa? port 0x2b0 tty flags 0x781
|
|
device sio7 at isa? port 0x2b8 tty flags 0x781 irq 7 vector siointr
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>The flags indicate that the master port has minor number 7
|
|
(<literal>0x700</literal>), diagnostics enabled during probe (<literal>0x080</literal>), and
|
|
all the ports share an irq (<literal>0x001</literal>).</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can FreeBSD handle multiport serial cards sharing irqs?</para></question><answer>
|
|
|
|
<para>Not yet. You'll have to use a different irq for each card.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can I set the default serial parameters for a port?</para></question><answer>
|
|
|
|
<para>The <emphasis remap=tt>ttydX</emphasis> (or <emphasis remap=tt>cuaaX</emphasis>) device is the regular device
|
|
you'll want to open for your applications. When a process opens
|
|
the device, it'll have a default set of terminal I/O settings.
|
|
You can see these settings with the command</para>
|
|
|
|
<para>
|
|
<literallayout> stty -a -f /dev/ttyd1
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>When you change the settings to this device, the settings are in
|
|
effect until the device is closed. When it's 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 <acronym>CLOCAL</acronym> mode, 8 bits, and
|
|
<filename>XON/XOFF</filename> flow control by default for ttyd5, do:</para>
|
|
|
|
<para>
|
|
<literallayout> stty -f /dev/ttyid5 clocal cs8 ixon ixoff
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>A good place to do this is in <filename>/etc/rc.serial</filename>. Now, an
|
|
application will have these settings by default when it opens
|
|
<emphasis remap=tt>ttyd5</emphasis>. It can still change these settings to its liking,
|
|
though.</para>
|
|
|
|
<para>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 <emphasis remap=tt>ttyd5</emphasis> to 57600 bps, do</para>
|
|
|
|
<para>
|
|
<literallayout> stty -f /dev/ttyld5 57600
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Now, an application that opens <emphasis remap=tt>ttyd5</emphasis> and tries to change the
|
|
speed of the port will be stuck with 57600 bps.</para>
|
|
|
|
<para>Naturally, you should make the initial state and lock state
|
|
devices writable only by <emphasis remap=tt>root</emphasis>. The <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?MAKEDEV">MAKEDEV</ulink> script does <acronym>NOT</acronym> do this when it creates the
|
|
device entries.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I enable dialup logins on my modem?</para></question><answer>
|
|
|
|
<para>So you want to become an Internet service provider, eh? First,
|
|
you'll need one or more modems that can auto-answer. Your modem
|
|
will need to assert carrier-detect when it detects a carrier and
|
|
not assert it all the time. It will need to hang up the phone
|
|
and reset itself when the data terminal ready (<acronym>DTR</acronym>) line
|
|
goes from on to off. It should probably use <filename>RTS/CTS</filename>
|
|
flow control or no local flow control at all. Finally, it must
|
|
use a constant speed between the computer and itself, but (to be
|
|
nice to your callers) it should negotiate a speed between itself
|
|
and the remote modem.</para>
|
|
|
|
<para>For many Hayes command-set--compatible modems, this command will
|
|
make these settings and store them in nonvolatile memory:</para>
|
|
|
|
<para>
|
|
<literallayout> AT &C1 &D3 &K3 &Q6 S0=1 &W
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>See the section <xref linkend="direct-at" remap="on sending AT commands"> below for information on how to make these settings
|
|
without resorting to an MS-DOS terminal program.</para>
|
|
|
|
<para>Next, make an entry in <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ttys">/etc/ttys</ulink> for the
|
|
modem. This file lists all the ports on which the operating system will
|
|
await logins. Add a line that looks something like this:</para>
|
|
|
|
<para>
|
|
<literallayout> ttyd1 "/usr/libexec/getty std.57600" dialup on insecure
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This line indicates that the second serial port
|
|
(<filename>/dev/ttyd1</filename>) has a modem connected running at 57600 bps
|
|
and no parity (<emphasis remap=tt>std.57600</emphasis>, which comes from the file
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?gettytab">/etc/gettytab</ulink>). The terminal type for this port is
|
|
``dialup.'' The port is ``on'' and is ``insecure''---meaning
|
|
root logins on the port aren't allowed. For dialin ports like
|
|
this one, use the <emphasis remap=tt>ttydX</emphasis> entry.</para>
|
|
|
|
<para>It's common practice to use ``dialup'' as the terminal type.
|
|
Many users set up in their .profile or .login files a prompt for
|
|
the actual terminal type if the starting type is dialup. The
|
|
example shows the port as insecure. To become root on this port,
|
|
you have to login as a regular user, then ``<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?su">su</ulink>'' to
|
|
<emphasis remap=tt>root</emphasis>. If you use ``secure'' then <emphasis remap=tt>root</emphasis> can login in
|
|
directly.</para>
|
|
|
|
<para>After making modifications to <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ttys">/etc/ttys</ulink>, you
|
|
need to send a hangup or <acronym>HUP</acronym> signal to the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?init">init</ulink> process:</para>
|
|
|
|
<para>
|
|
<literallayout> kill -HUP 1
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This forces the init process to reread <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ttys">/etc/ttys</ulink>. The
|
|
init process will then start getty processes on all ``on'' ports.
|
|
You can find out if logins are available for your port by typing</para>
|
|
|
|
<para>
|
|
<literallayout> ps -ax | grep '[t]tyd1'
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>You should see something like:</para>
|
|
|
|
<para>
|
|
<literallayout> 747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I connect a dumb terminal to my FreeBSD box?</para></question><answer>
|
|
|
|
<para>If you're using another computer as a terminal into your FreeBSD
|
|
system, get a null modem cable to go between the two serial
|
|
ports. If you're using an actual terminal, see its accompanying
|
|
instructions.</para>
|
|
|
|
<para>Then, modify <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ttys">/etc/ttys</ulink>, like above. For example, if you're hooking up a
|
|
WYSE-50 terminal to the fifth serial port, use an entry like this:</para>
|
|
|
|
<para>
|
|
<literallayout> ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>This example shows that the port on <filename>/dev/ttyd4</filename> has a
|
|
wyse50 terminal connected at 38400 bps with no parity
|
|
(<emphasis remap=tt>std.38400</emphasis> from <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?gettytab">/etc/gettytab</ulink>) and <emphasis remap=tt>root</emphasis> logins are allowed (secure).</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why can't I run <emphasis remap=tt>tip</emphasis> or <emphasis remap=tt>cu</emphasis>?</para></question><answer>
|
|
|
|
<para>On your system, the programs <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tip">tip</ulink> and <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?cu">cu</ulink> are probably
|
|
executable only by <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?uucp">uucp</ulink> and group <emphasis remap=tt>dialer</emphasis>. You can use the group <emphasis remap=tt>dialer</emphasis>
|
|
to control who has access to your modem or remote systems. Just add
|
|
yourself to group dialer.</para>
|
|
|
|
<para>Alternatively, you can let everyone on your system run <emphasis remap=tt>tip</emphasis>
|
|
and <emphasis remap=tt>cu</emphasis> by typing:</para>
|
|
|
|
<para>
|
|
<literallayout> # chmod 4511 /usr/bin/cu
|
|
# chmod 4511 /usr/bin/tip
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>My stock Hayes modem isn't supported---what can I do?</para></question><answer>
|
|
|
|
<para>Actually, the man page for <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tip">tip</ulink> is out of
|
|
date. There is a generic Hayes dialer already built in. Just use
|
|
``<literal>at=hayes</literal>'' in your <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?remote">/etc/remote</ulink> file.</para>
|
|
|
|
<para>The Hayes driver isn't smart enough to recognize some of the
|
|
advanced features of newer modems---messages like <acronym>BUSY</acronym>,
|
|
<emphasis remap=tt>NO DIALTONE</emphasis>, or <emphasis remap=tt>CONNECT 115200</emphasis> will just confuse it.
|
|
You should turn those messages off when you use <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tip">tip</ulink> (using
|
|
<emphasis remap=tt>ATX0&W</emphasis>).</para>
|
|
|
|
<para>Also, the dial timeout for <emphasis remap=tt>tip</emphasis> is 60 seconds. Your modem
|
|
should use something less, or else tip will think there's a
|
|
communication problem. Try <literal>ATS7=45&W</literal>.</para>
|
|
|
|
<para>Actually, as shipped <emphasis remap=tt>tip</emphasis> doesn't yet support it fully. The
|
|
solution is to edit the file <filename>tipconf.h</filename> in the directory
|
|
<filename>/usr/src/usr.bin/tip/tip</filename>. Obviously you need the source
|
|
distribution to do this.</para>
|
|
|
|
<para>Edit the line ``<emphasis remap=tt>#define HAYES 0</emphasis>'' to ``<emphasis remap=tt>#define HAYES
|
|
1</emphasis>''. Then ``<emphasis remap=tt>make</emphasis>'' and ``<emphasis remap=tt>make install</emphasis>''. Everything
|
|
works nicely after that.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="direct-at">
|
|
<para> How am I expected to enter these AT commands?
|
|
</para></question><answer>
|
|
|
|
<para>Make what's called a ``<emphasis remap=tt>direct</emphasis>'' entry in your
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?remote">/etc/remote</ulink> file. For example, if your modem's hooked
|
|
up to the first serial port, <filename>/dev/cuaa0</filename>, then put in the
|
|
following line:</para>
|
|
|
|
<para>
|
|
<literallayout> cuaa0:dv=/dev/cuaa0:br#19200:pa=none
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Use the highest bps rate your modem supports in the br
|
|
capability. Then, type <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tip">tip cuaa0</ulink> and
|
|
you'll be connected to your modem.</para>
|
|
|
|
<para>If there is no <filename>/dev/cuaa0</filename> on your system, do this:</para>
|
|
|
|
<para>
|
|
<literallayout> # cd /dev
|
|
# ./MAKEDEV cuaa0
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Or use cu as root with the following command:</para>
|
|
|
|
<para>
|
|
<literallayout> # cu -l``line'' -s``speed''
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>with line being the serial port (e.g.<filename>/dev/cuaa0</filename>)
|
|
and speed being the speed (e.g.<emphasis remap=tt>57600</emphasis>). When you are done
|
|
entering the AT commands hit <emphasis remap=tt>~.</emphasis> to exit.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>The <email>@</email> sign for the pn capability doesn't work!</para></question><answer>
|
|
|
|
<para>The <email>@</email> sign in the phone number capability tells tip to look in
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?phones(5)">/etc/phones</ulink> for a phone number. But the <email>@</email> sign is
|
|
also a special character in capability files like
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?remote">/etc/remote</ulink>. Escape it with a backslash:</para>
|
|
|
|
<para>
|
|
<literallayout> pn=\@
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I dial a phone number on the command line?</para></question><answer>
|
|
|
|
<para>Put what's called a ``<emphasis remap=tt>generic</emphasis>'' entry in your
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?remote">/etc/remote</ulink> file. For example:</para>
|
|
|
|
<para>
|
|
<literallayout> 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:
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Then you can do something like ``<command>tip -115200 5551234</command>''. If you
|
|
prefer <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?cu">cu</ulink> over <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tip">tip</ulink>, use a
|
|
generic cu entry:</para>
|
|
|
|
<para>
|
|
<literallayout> cu115200|Use cu to dial any number at 115200bps:\
|
|
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>and type ``<command>cu 5551234 -s 115200</command>''.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Do I have to type in the bps rate every time I do that?</para></question><answer>
|
|
|
|
<para>Put in an entry for <emphasis remap=tt>tip1200</emphasis> or <emphasis remap=tt>cu1200</emphasis>, but go ahead and
|
|
use whatever bps rate is appropriate with the br capability. <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tip">tip</ulink> thinks a good
|
|
default is 1200 bps which is why it looks for a ``<emphasis remap=tt>tip1200</emphasis>'' entry.
|
|
You don't have to use 1200 bps, though.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I access a number of hosts through a terminal server.</para></question><answer>
|
|
|
|
<para>Rather than waiting until you're connected and typing
|
|
``<emphasis remap=tt>CONNECT <host></emphasis>'' each time, use tip's <emphasis remap=tt>cm</emphasis>
|
|
capability. For example, these entries in
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?remote">/etc/remote</ulink>:</para>
|
|
|
|
<para>
|
|
<literallayout> 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:
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>will let you type ``<emphasis remap=tt>tip pain</emphasis>'' or ``<emphasis remap=tt>tip muffin</emphasis>'' to
|
|
connect to the hosts pain or muffin; and ``<emphasis remap=tt>tip deep13</emphasis>'' to
|
|
get to the terminal server.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can tip try more than one line for each site?</para></question><answer>
|
|
|
|
<para>This is often a problem where a university has several modem lines
|
|
and several thousand students trying to use them...</para>
|
|
|
|
<para>Make an entry for your university in <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?remote">/etc/remote</ulink>
|
|
and use <email>\@</email> for the <emphasis remap=tt>pn</emphasis> capability:</para>
|
|
|
|
<para>
|
|
<literallayout> big-university:\
|
|
:pn=\@:tc=dialout
|
|
dialout:\
|
|
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Then, list the phone numbers for the university in
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?phones">/etc/phones</ulink>:</para>
|
|
|
|
<para>
|
|
<literallayout> big-university 5551111
|
|
big-university 5551112
|
|
big-university 5551113
|
|
big-university 5551114
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para><ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tip">tip</ulink> will try each one in the listed order, then give up. If
|
|
you want to keep retrying, run <emphasis remap=tt>tip</emphasis> in a while loop.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why do I have to hit CTRL+P twice to send CTRL+P once?</para></question><answer>
|
|
|
|
<para>CTRL+P is the default ``force'' character, used to tell
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tip">tip</ulink>
|
|
that the next character is literal data. You can set the force
|
|
character to any other character with the <emphasis remap=tt>~s</emphasis> escape, which
|
|
means ``set a variable.''</para>
|
|
|
|
<para>Type ``<literal>~sforce=<single-char></literal>'' followed by a newline.
|
|
<emphasis remap=tt><single-char></emphasis> is any single character. If you leave
|
|
out <emphasis remap=tt><single-char></emphasis>, then the force character is the nul
|
|
character, which you can get by typing CTRL+2 or CTRL+SPACE. A
|
|
pretty good value for <emphasis remap=tt><single-char></emphasis> is SHIFT+CTRL+6,
|
|
which I've seen only used on some terminal servers.</para>
|
|
|
|
<para>You can have the force character be whatever you want by
|
|
specifying the following in your <filename>$HOME/.tiprc</filename>
|
|
file:</para>
|
|
|
|
<para>
|
|
<literallayout> force=<single-char>
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Suddenly everything I type is in UPPER CASE??</para></question><answer>
|
|
|
|
<para>You must've pressed CTRL+A, <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?tip">tip</ulink> ``raise
|
|
character,'' specially designed for people with broken caps-lock keys.
|
|
Use <emphasis remap=tt>~s</emphasis> 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.</para>
|
|
|
|
<para>Here's a sample .tiprc file perfect for Emacs users who need to
|
|
type CTRL+2 and CTRL+A a lot:</para>
|
|
|
|
<para>
|
|
<literallayout> force=^^
|
|
raisechar=^^
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>The ^^ is SHIFT+CTRL+6.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I do file transfers with <emphasis remap=tt>tip</emphasis>?</para></question><answer>
|
|
|
|
<para>If you're talking to another UNIX system, you can send and
|
|
receive files with <emphasis remap=tt>~p</emphasis> (put) and <emphasis remap=tt>~t</emphasis> (take). These
|
|
commands run <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?cat">cat</ulink> and <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?echo">echo</ulink> on the remote system to accept and send files. The syntax
|
|
is:</para>
|
|
|
|
<para>
|
|
<literallayout> ~p <local-file> [<remote-file>]
|
|
~t <remote-file> [<local-file>]
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>There's no error checking, so you probably should use another
|
|
protocol, like zmodem.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How can I run zmodem with <emphasis remap=tt>tip</emphasis>?</para></question><answer>
|
|
|
|
<para>First, install one of the zmodem programs from the ports
|
|
collection (such as one of the two from the comms category,
|
|
<ulink URL="http://www.FreeBSD.org/cgi/ports.cgi?^lrzsz">lrzsz</ulink>
|
|
and <ulink URL="http://www.FreeBSD.org/cgi/ports.cgi?^rzsz">rzsz</ulink>).</para>
|
|
|
|
<para>To receive files, start the sending program on the remote end.
|
|
Then, press enter and type ``<emphasis remap=tt>~C rz</emphasis>'' (or ``<emphasis remap=tt>~C lrz</emphasis>'' if
|
|
you installed lrzsz) to begin receiving them locally.</para>
|
|
|
|
<para>To send files, start the receiving program on the remote end.
|
|
Then, press enter and type ``<emphasis remap=tt>~C sz <files></emphasis>'' (or
|
|
``<emphasis remap=tt>~C lsz <files></emphasis>'') to send them to the
|
|
remote system.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>FreeBSD can't seem to find my serial ports, even when the
|
|
settings are correct.</para></question><answer>
|
|
|
|
<para>Motherboards and cards with Acer UARTs do not probe properly under
|
|
the FreeBSD sio probe. Obtain a patch from
|
|
<ulink URL="http://www.lemis.com/serial-port-patch.html">www.lemis.com</ulink> to fix your problem.</para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="misc">
|
|
<title>Miscellaneous Questions</title>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para> FreeBSD uses far more swap space than Linux. Why?
|
|
</para></question><answer>
|
|
|
|
<para>FreeBSD only appears to use more swap than Linux. In actual fact,
|
|
it does not. The main difference between FreeBSD and Linux in this
|
|
regard is that FreeBSD will proactively move entirely idle, unused pages
|
|
of main memory into swap in order to make more main memory available
|
|
for active use. Linux tends to only move pages to swap as a last resort.
|
|
The perceived heavier use of swap is balanced by the more efficient use
|
|
of main memory. </para>
|
|
|
|
<para>Note that while FreeBSD is proactive in this regard, it does not
|
|
arbitrarily decide to swap pages when the system is truely idle. Thus
|
|
you will not find your system all paged out when you get up in the
|
|
morning after leaving it idle overnight.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Why use (what are) a.out and ELF executable formats?
|
|
</para></question><answer>
|
|
|
|
<para>To understand why FreeBSD uses the <filename>a.out</filename> format, you must
|
|
first know a little about the 3 currently "dominant" executable
|
|
formats for UNIX:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><ulink URL="http://www.FreeBSD.org/cgi/man.cgi?a.out(5)">a.out</ulink>
|
|
|
|
</para>
|
|
|
|
<para>The oldest and `classic' unix object format. It uses a
|
|
short and compact header with a magic number at the beginning
|
|
that's often used to characterize the format (see
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?a.out(5)">a.out(5)</ulink> for more details). It contains three loaded
|
|
segments: .text, .data, and .bss plus a symbol table and a
|
|
string table.</para>
|
|
|
|
<para></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><acronym>COFF</acronym>
|
|
</para>
|
|
|
|
<para>The SVR3 object format. The header now comprises a section
|
|
table, so you can have more than just .text, .data, and .bss
|
|
sections.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><acronym>ELF</acronym>
|
|
</para>
|
|
|
|
<para>The successor to <acronym>COFF</acronym>, featuring Multiple sections
|
|
and 32-bit or 64-bit possible values. One major drawback:
|
|
<acronym>ELF</acronym> was also designed with the assumption that there
|
|
would be only one ABI per system architecture. That
|
|
assumption is actually quite incorrect, and not even in the
|
|
commercial SYSV world (which has at least three ABIs: SVR4,
|
|
Solaris, SCO) does it hold true.</para>
|
|
|
|
<para></para>
|
|
|
|
<para>FreeBSD tries to work around this problem somewhat by
|
|
providing a utility for <emphasis>branding</emphasis> a known <acronym>ELF</acronym>
|
|
executable with information about the ABI it's compliant with.
|
|
See the man page for
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?brandelf">brandelf</ulink> for more information.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>FreeBSD comes from the "classic" camp and has traditionally used
|
|
the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?a.out(5)">a.out</ulink> format, a technology tried and proven through
|
|
many generations of BSD releases. Though it has also been possible
|
|
for some time to build and run native <acronym>ELF</acronym> binaries (and
|
|
kernels) on a FreeBSD system, FreeBSD initially resisted the "push"
|
|
to switch to <acronym>ELF</acronym> as the default format. Why? Well,
|
|
when the Linux camp made their painful transition to <acronym>ELF</acronym>, it
|
|
was not so much to flee the <filename>a.out</filename> executable format
|
|
as it was their inflexible jump-table based shared library
|
|
mechanism, which made the construction of shared libraries
|
|
very difficult for vendors and developers alike. Since the <acronym>ELF</acronym>
|
|
tools available offered a solution to the shared library
|
|
problem and were generally seen as "the way forward" anyway, the
|
|
migration cost was accepted as necessary and the transition
|
|
made.</para>
|
|
|
|
<para>In FreeBSD's case, our shared
|
|
library mechanism is based more closely on Sun's
|
|
<emphasis remap=tt>SunOS</emphasis>-style shared library mechanism and, as such, is very
|
|
easy to use.
|
|
However, starting with 3.0, FreeBSD officially supports <acronym>ELF</acronym>
|
|
binaries as the default format. Even though the <filename>a.out</filename>
|
|
executable format has served us well, the GNU people, who author the
|
|
compiler tools we use, have dropped support for the <filename>a.out</filename>
|
|
format. This has forced us to maintain a divergent version of
|
|
the compler and linker, and has kept us from reaping the benefits
|
|
of the latest GNU development efforts. Also the demands of
|
|
ISO-C++, notably contstructors and destructors, has also led to
|
|
native <acronym>ELF</acronym> support in future FreeBSD releases.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Yes, but why are there so many different
|
|
formats?</para></question><answer>
|
|
|
|
<para>Back in the dim, dark past, there was simple hardware. This
|
|
simple hardware supported a simple, small system. a.out was
|
|
completely adequate for the job of representing binaries on this
|
|
simple system (a PDP-11). As people ported unix from this
|
|
simple system, they retained the a.out format because it was
|
|
sufficient for the early ports of unix to architectures like the
|
|
Motorola 68k, VAXen, etc.</para>
|
|
|
|
<para>Then some bright hardware engineer decided that if he could
|
|
force software to do some sleazy tricks, then he'd be able to
|
|
shave a few gates off the design and allow his CPU core to run
|
|
faster. While it was made to work with this new kind of
|
|
hardware (known these days as RISC), <filename>a.out</filename> was ill-suited
|
|
for this hardware, so many formats were developed to get to a
|
|
better performance from this hardware than the limited, simple
|
|
<filename>a.out</filename> format could offer. Things like <acronym>COFF</acronym>,
|
|
<acronym>ECOFF</acronym>, and a few obscure others were invented and their
|
|
limitations explored before things seemed to settle on <acronym>ELF</acronym>.</para>
|
|
|
|
<para>In addition, program sizes were getting huge and disks (and
|
|
physical memory) were still relatively small so the concept of a
|
|
shared library was born. The VM system also became more
|
|
sophisticated. While each one of these advancements was done
|
|
using the <filename>a.out</filename> format, its usefulness was stretched more
|
|
and more with each new feature. In addition, people wanted to
|
|
dynamically load things at run time, or to junk parts of their
|
|
program after the init code had run to save in core memory
|
|
and/or swap space. Languages became more sophistocated and
|
|
people wanted code called before main automatically. Lots of
|
|
hacks were done to the <filename>a.out</filename> format to allow all of these
|
|
things to happen, and they basically worked for a time. In
|
|
time, <filename>a.out</filename> wasn't up to handling all these problems
|
|
without an ever increasing overhead in code and complexity.
|
|
While <acronym>ELF</acronym> solved many of these problems, it would be
|
|
painful to switch from the system that basically worked. So
|
|
<acronym>ELF</acronym> had to wait until it was more painful to remain with
|
|
<filename>a.out</filename> than it was to migrate to <acronym>ELF</acronym>.</para>
|
|
|
|
<para>However, as time passed, the build tools that FreeBSD derived
|
|
their build tools from (the assembler and loader especially)
|
|
evolved in two parallel trees. The FreeBSD tree added shared
|
|
libraries and fixed some bugs. The GNU folks that originally
|
|
write these programs rewrote them and added simpler support for
|
|
building cross compilers, plugging in different formats at will,
|
|
etc. Since many people wanted to build cross compilers
|
|
targeting FreeBSD, they were out of luck since the older sources
|
|
that FreeBSD had for as and ld weren't up to the task. The new
|
|
gnu tools chain (binutils) does support cross compiling,
|
|
<acronym>ELF</acronym>, shared libraries, C++ extnensions, etc. In addition,
|
|
many vendors are releasing <acronym>ELF</acronym> binaries, and it is a good
|
|
thing for FreeBSD to run them. And if it is running <acronym>ELF</acronym>
|
|
binaries, why bother having <filename>a.out</filename> any more? It is a tired
|
|
old horse that has proven useful for a long time, but it is time
|
|
to turn him out to pasture for his long, faithful years of
|
|
service.</para>
|
|
|
|
<para><acronym>ELF</acronym> is more expressive than a.out and will allow more
|
|
extensibility in the base system. The <acronym>ELF</acronym> tools are better
|
|
maintained, and offer cross compilation support, which is
|
|
important to many people. <acronym>ELF</acronym> may be a little slower than
|
|
a.out, but trying to measure it can be difficult. There are
|
|
also numerous details that are different between the two in how
|
|
they map pages, handle init code, etc. None of these are very
|
|
important, but they are differences. In time support for
|
|
<filename>a.out</filename> will be moved out of the GENERIC kernel, and
|
|
eventually removed from the kernel once the need to run legacy
|
|
<filename>a.out</filename> programs is past.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Why won't chmod change the permissions on symlinks?</para></question><answer>
|
|
|
|
<para>You have to use either ``<option>-H</option>'' or ``<option>-L</option>'' together with
|
|
the ``<option>-R</option>'' option to make this work. See the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?chmod">chmod</ulink> and
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?symlink">symlink</ulink>
|
|
man pages for more info.</para>
|
|
|
|
<para><acronym>WARNING</acronym> the ``<option>-R</option>'' option does a <acronym>RECURSIVE</acronym>
|
|
<emphasis remap=tt>chmod</emphasis>. Be careful about specifying directories or symlinks
|
|
to directories to <emphasis remap=tt>chmod</emphasis>. If you want to change the
|
|
permissions of a directory referenced by a symlink, use
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?chmod">chmod</ulink>
|
|
without any options and follow the symlink with a trailing slash
|
|
(``<filename>/</filename>''). For example, if ``<emphasis remap=tt>foo</emphasis>'' is a symlink to
|
|
directory ``<emphasis remap=tt>bar</emphasis>'', and you want to change the permissions of
|
|
``<emphasis remap=tt>foo</emphasis>'' (actually ``<emphasis remap=tt>bar</emphasis>''), you would do something like:</para>
|
|
|
|
<para>
|
|
<literallayout> chmod 555 foo/
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>With the trailing slash, <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?chmod">chmod</ulink> will
|
|
follow the symlink, ``<emphasis remap=tt>foo</emphasis>'', to change the permissions of the
|
|
directory, ``<emphasis remap=tt>bar</emphasis>''.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> Why are login names <emphasis remap=bf>still</emphasis> restricted to 8 characters?
|
|
</para></question><answer>
|
|
|
|
<para>You'd think it'd be easy enough to change <symbol>UT_NAMESIZE</symbol> and rebuild
|
|
the whole world, and everything would just work. Unfortunately there
|
|
are often scads of applications and utilities (including system tools)
|
|
that have hard-coded small numbers (not always "8" or "9", but oddball
|
|
ones like "15" and "20") in structures and buffers. Not only will
|
|
this get you log files which are trashed (due to variable-length
|
|
records getting written when fixed records were expected), but it can
|
|
break Sun's NIS clients and potentially cause other problems in
|
|
interacting with other UNIX systems.</para>
|
|
|
|
<para>In FreeBSD 3.0 and later, the maximum name length has been
|
|
increased to 16 characters and those various utilities with
|
|
hard-coded name sizes have been found and fixed. The fact that this
|
|
touched so many areas of the system is why, in fact, the change was
|
|
not made until 3.0.</para>
|
|
|
|
<para>If you're absolutely confident in your ability to find and fix
|
|
these sorts of problems for yourself when and if they pop up, you
|
|
can increase the login name length in earlier releases by editing
|
|
/usr/include/utmp.h and changing UT_NAMESIZE accordingly. You must
|
|
also update MAXLOGNAME in /usr/include/sys/param.h to match
|
|
the UT_NAMESIZE change. Finally, if you build from sources, don't
|
|
forget that /usr/include is updated each time! Change the appropriate
|
|
files in /usr/src/.. instead.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Can I run DOS binaries under FreeBSD?</para></question><answer>
|
|
|
|
<para>Yes, starting with version 3.0 you can using BSDI's <emphasis remap=tt>rundos</emphasis>
|
|
DOS emulation which has been integrated and enhanced.
|
|
Send mail to <ulink URL="mailto:freebsd-emulation@FreeBSD.org">The FreeBSD emulation discussion list</ulink> if you're interested in
|
|
joining this ongoing effort!</para>
|
|
|
|
<para>For pre-3.0 systems, there is a neat utility called
|
|
<ulink URL="http://www.FreeBSD.org/cgi/ports.cgi?^pcemu">pcemu</ulink>
|
|
in the ports collection which emulates an 8088 and enough BIOS services
|
|
to run DOS text mode applications. It requires the X Window
|
|
System (provided as XFree86).</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> What is ``<emphasis remap=tt>sup</emphasis>'', and how do I use it?
|
|
</para></question><answer>
|
|
|
|
<para><ulink URL="http://www.FreeBSD.org/cgi/ports.cgi?^sup">SUP</ulink>
|
|
stands for Software Update Protocol, and was developed by CMU
|
|
for keeping their development trees in sync. We used it to keep
|
|
remote sites in sync with our central development sources.</para>
|
|
|
|
<para>SUP is not bandwidth friendly, and has been retired. The current
|
|
recommended method to keep your sources up to date is
|
|
<ulink URL="../handbook/synching.html#CVSUP">Handbook entry on CVSup</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How cool is FreeBSD?</para></question><answer>
|
|
|
|
<para>Q. Has anyone done any temperature testing while running FreeBSD?
|
|
I know Linux runs cooler than dos, but have never seen a mention of
|
|
FreeBSD. It seems to run really hot.</para>
|
|
|
|
<para>A. No, but we have done numerous taste tests on blindfolded
|
|
volunteers who have also had 250 micrograms of LSD-25
|
|
administered beforehand. 35% of the volunteers said that FreeBSD
|
|
tasted sort of orange, whereas Linux tasted like purple haze.
|
|
Neither group mentioned any particular variances in temperature
|
|
that I can remember. We eventually had to throw the results of
|
|
this survey out entirely anyway when we found that too many
|
|
volunteers were wandering out of the room during the tests, thus
|
|
skewing the results. I think most of the volunteers are at Apple
|
|
now, working on their new ``scratch and sniff'' GUI. It's a
|
|
funny old business we're in!</para>
|
|
|
|
<para>Seriously, both FreeBSD and Linux use the ``<acronym>HLT</acronym>'' (halt)
|
|
instruction when the system is idle thus lowering its energy
|
|
consumption and therefore the heat it generates. Also if you
|
|
have APM (automatic power management) configured, then FreeBSD
|
|
can also put the CPU into a low power mode.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Who's scratching in my memory banks??</para></question><answer>
|
|
|
|
<para>Q. Is there anything "odd" that FreeBSD does when compiling the
|
|
kernel which would cause the memory to make a scratchy sound? When
|
|
compiling (and for a brief moment after recognizing the floppy drive
|
|
upon startup, as well), a strange scratchy sound emanates from what
|
|
appears to be the memory banks.</para>
|
|
|
|
<para>A. Yes! You'll see frequent references to ``daemons'' in the BSD
|
|
documentation, and what most people don't know is that this
|
|
refers to genuine, non-corporeal entities that now possess your
|
|
computer. The scratchy sound coming from your memory is actually
|
|
high-pitched whispering exchanged among the daemons as they best
|
|
decide how to deal with various system administration tasks.</para>
|
|
|
|
<para>If the noise gets to you, a good ``<command>fdisk /mbr</command>'' from DOS
|
|
will get rid of them, but don't be surprised if they react
|
|
adversely and try to stop you. In fact, if at any point during
|
|
the exercise you hear the satanic voice of Bill Gates coming from
|
|
the built-in speaker, take off running and don't ever look back!
|
|
Freed from the counterbalancing influence of the BSD daemons, the
|
|
twin demons of DOS and Windows are often able to re-assert total
|
|
control over your machine to the eternal damnation of your soul.
|
|
Given a choice, I think I'd prefer to get used to the scratchy
|
|
noises, myself!</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What does 'MFC' mean?</para></question><answer>
|
|
|
|
<para>MFC is an acronym for 'Merged From -CURRENT.' It's used in the CVS
|
|
logs to denote when a change was migrated from the CURRENT to the STABLE
|
|
branches.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>What does 'BSD' mean?</para></question><answer>
|
|
|
|
<para>It stands for something in a secret language that only
|
|
members can know. It doesn't translate literally but its ok to
|
|
tell you that BSD's translation is something between, 'Formula-1
|
|
Racing Team', 'Penguins are tasty snacks', and 'We have a better
|
|
sense of humor than Linux.' :-)</para>
|
|
|
|
<para>Seriously, BSD is an acronym for 'Berkeley Software
|
|
Distribution', which is the name the Berkeley CSRG (Computer
|
|
Systems Research Group) chose for their Unix distribution way
|
|
back when.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How many FreeBSD hackers does it take to change a lightbulb?</para></question><answer>
|
|
|
|
<para>One thousand, one hundred and seventy-two:</para>
|
|
|
|
<para>Twenty-three to complain to -current about the lights being
|
|
out;</para>
|
|
|
|
<para>Four to claim that it is a configuration problem, and that
|
|
such matters really belong on -questions;</para>
|
|
|
|
<para>Three to submit PRs about it, one of which is misfiled under
|
|
doc and consists only of "it's dark";</para>
|
|
|
|
<para>One to commit an untested lightbulb which breaks buildworld,
|
|
then back it out five minutes later;</para>
|
|
|
|
<para>Eight to flame the PR originators for not including patches
|
|
in their PRs;</para>
|
|
|
|
<para>Five to complain about buildworld being broken;</para>
|
|
|
|
<para>Thirty-one to answer that it works for them, and they must
|
|
have cvsupped at a bad time;</para>
|
|
|
|
<para>One to post a patch for a new lightbulb to -hackers;</para>
|
|
|
|
<para>One to complain that he had patches for this three years ago,
|
|
but when he sent them to -current they were just ignored, and he
|
|
has had bad experiences with the PR system; besides, the
|
|
proposed new lightbulb is non-reflexive;</para>
|
|
|
|
<para>Thirty-seven to scream that lightbulbs do not belong in the
|
|
base system, that committers have no right to do things like
|
|
this without consulting the Community, and WHAT IS -CORE DOING
|
|
ABOUT IT!?</para>
|
|
|
|
<para>Two hundred to complain about the color of the bicycle shed;</para>
|
|
|
|
<para>Three to point out that the patch breaks style(9);</para>
|
|
|
|
<para>Seventeen to complain that the proposed new lightbulb is
|
|
under GPL;</para>
|
|
|
|
<para>Five hundred and eighty-six to engage in a flame war about
|
|
the comparative advantages of the GPL, the BSD license, the MIT
|
|
license, the NPL, and the personal hygiene of unnamed FSF
|
|
founders;</para>
|
|
|
|
<para>Seven to move various portions of the thread to -chat and
|
|
-advocacy;</para>
|
|
|
|
<para>One to commit the suggested lightbulb, even though it shines
|
|
dimmer than the old one;</para>
|
|
|
|
<para>Two to back it out with a furious flame of a commit message,
|
|
arguing that FreeBSD is better off in the dark than with a dim
|
|
lightbulb;</para>
|
|
|
|
<para>Forty-six to argue vociferously about the backing out of the
|
|
dim lightbulb and demanding a statement from -core;</para>
|
|
|
|
<para>Eleven to request a smaller lightbulb so it will fit their
|
|
Tamagotchi if we ever decide to port FreeBSD to that platform;</para>
|
|
|
|
<para>Seventy-three to complain about the SNR on -hackers and -chat
|
|
and unsubscribe in protest;</para>
|
|
|
|
<para>Thirteen to post "unsubscribe", "How do I unsubscribe?", or
|
|
"Please remove me from the list", followed by the usual footer;</para>
|
|
|
|
<para>One to commit a working lightbulb while everybody is too busy
|
|
flaming everybody else to notice;</para>
|
|
|
|
<para>Thirty-one to point out that the new lightbulb would shine
|
|
0.364% brighter if compiled with TenDRA (although it will have
|
|
to be reshaped into a cube), and that FreeBSD should therefore
|
|
switch to TenDRA instead of EGCS;</para>
|
|
|
|
<para>One to complain that the new lightbulb lacks fairings;</para>
|
|
|
|
<para>Nine (including the PR originators) to ask "what is MFC?";</para>
|
|
|
|
<para>Fifty-seven to complain about the lights being out two weeks
|
|
after the bulb has been changed.</para>
|
|
|
|
<para><emphasis><ulink URL="mailto:nik@FreeBSD.org">Nik Clayton</ulink>
|
|
adds:</emphasis></para>
|
|
|
|
<para><emphasis>I was laughing quite hard at this.</emphasis></para>
|
|
|
|
<para><emphasis>And then I thought, "Hang on, shouldn't there be '1 to
|
|
document it.' in that list somewhere?"</emphasis></para>
|
|
|
|
<para><emphasis>And then I was enlightened :-)</emphasis></para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="hackers">
|
|
<title>For serious FreeBSD hackers only</title>
|
|
|
|
|
|
<qandaset><qandaentry><question>
|
|
<para> What are SNAPs and RELEASEs?
|
|
</para></question><answer>
|
|
|
|
<para>There are currently three active/semi-active branches in the FreeBSD
|
|
<ulink URL="http://www.FreeBSD.org/cgi/cvsweb.cgi">CVS Repository</ulink>:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para><symbol>RELENG_2_2</symbol> AKA <emphasis remap=bf>2.2-stable</emphasis> AKA <emphasis remap=bf>"2.2 branch"</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><symbol>RELENG_3</symbol> AKA <emphasis remap=bf>3.x-stable</emphasis> AKA <emphasis remap=bf>"3.0 branch"</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><acronym>HEAD</acronym> AKA <option>-current</option> AKA <emphasis remap=bf>4.0-current</emphasis></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para><acronym>HEAD</acronym> is not an actual branch tag, like the other two, it's
|
|
simply a symbolic constant for
|
|
<emphasis>"the current, non-branched development stream"</emphasis> which we simply
|
|
refer to as <option>-current</option>.</para>
|
|
|
|
<para>Right now, <option>-current</option> is the 4.0 development stream and the
|
|
<emphasis remap=bf>3.0-stable</emphasis> branch, <symbol>RELENG_3</symbol>, forked off from
|
|
<option>-current</option> in Jan 1999.</para>
|
|
|
|
<para>The <emphasis remap=bf>2.2-stable</emphasis> branch, <symbol>RELENG_2_2</symbol>, departed -current in
|
|
November 1996.</para>
|
|
|
|
<para>The <emphasis remap=bf>2.1-stable</emphasis> branch, <symbol>RELENG_2_1_0</symbol>, departed -current in
|
|
September of 1994. This branch has been fully retired.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="custrel">
|
|
<para> How do I make my own custom release?
|
|
</para></question><answer>
|
|
|
|
<para>To make a release you need to do three things: First, you need to
|
|
be running a kernel with the <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?vn">vn</ulink> driver configured
|
|
in. Add this to your kernel config file and build a new kernel:</para>
|
|
|
|
<para>
|
|
<literallayout> pseudo-device vn #Vnode driver (turns a file into a device)
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Second, you have to have the whole CVS repository at hand.
|
|
To get this you can use <ulink URL="../handbook/synching.html#CVSUP">CVSUP</ulink>
|
|
but in your supfile set the release name to cvs and remove any tag or
|
|
date fields:</para>
|
|
|
|
<para>
|
|
<literallayout> *default prefix=/home/ncvs
|
|
*default base=/a
|
|
*default host=cvsup.FreeBSD.org
|
|
*default release=cvs
|
|
*default delete compress use-rel-suffix
|
|
|
|
## Main Source Tree
|
|
src-all
|
|
src-eBones
|
|
src-secure
|
|
|
|
# Other stuff
|
|
ports-all
|
|
www
|
|
doc-all
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Then run <command>cvsup -g supfile</command> to suck all the good bits onto your
|
|
box...</para>
|
|
|
|
<para>Finally, you need a chunk of empty space to build into. Let's
|
|
say it's in <filename>/some/big/filesystem</filename>, and from the example
|
|
above you've got the CVS repository in <filename>/home/ncvs</filename>:</para>
|
|
|
|
<para>
|
|
<literallayout> setenv CVSROOT /home/ncvs # or export CVSROOT=/home/ncvs
|
|
cd /usr/src/release
|
|
make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>An entire release will be built in
|
|
<filename>/some/big/filesystem/release</filename> and you will have a full FTP-type
|
|
installation in <filename>/some/big/filesystem/release/R/ftp</filename> when you're
|
|
done. If you want to build your SNAP along some other branch than
|
|
-current, you can also add <literal>RELEASETAG=SOMETAG</literal> to
|
|
the make release command line above, e.g. <literal>RELEASETAG=RELENG_2_2</literal>
|
|
would build an up-to-the- minute 2.2-STABLE snapshot.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How do I create customized installation disks?</para></question><answer>
|
|
|
|
<para>The entire process of creating installation disks and source and
|
|
binary archives is automated by various targets in
|
|
<filename>/usr/src/release/Makefile</filename>. The information there should
|
|
be enough to get you started. However, it should be said that this
|
|
involves doing a ``make world'' and will therefore take up a lot of
|
|
time and disk space.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>``make world'' clobbers my existing installed binaries.</para></question><answer>
|
|
|
|
<para>Yes, this is the general idea; as its name might suggest,
|
|
``make world'' rebuilds every system binary from scratch, so you can be
|
|
certain of having a clean and consistent environment at the end (which
|
|
is why it takes so long).</para>
|
|
|
|
<para>If the environment variable <acronym>DESTDIR</acronym> is defined while running
|
|
``<emphasis remap=tt>make world</emphasis>'' or ``<emphasis remap=tt>make install</emphasis>'', the newly-created
|
|
binaries will be deposited in a directory tree identical to the
|
|
installed one, rooted at <emphasis remap=tt>${DESTDIR}</emphasis>.
|
|
Some random combination of shared libraries modifications and
|
|
program rebuilds can cause this to fail in ``<emphasis remap=tt>make world</emphasis>'',
|
|
however.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para> When my system boots, it says ``(bus speed defaulted)''.
|
|
</para></question><answer>
|
|
|
|
<para>The Adaptec 1542 SCSI host adapters allow the user to configure
|
|
their bus access speed in software. Previous versions of the
|
|
1542 driver tried to determine the fastest usable speed and set
|
|
the adapter to that. We found that this breaks some users'
|
|
systems, so you now have to define the ``<symbol>TUNE_1542</symbol>'' kernel
|
|
configuration option in order to have this take place. Using it
|
|
on those systems where it works may make your disks run faster,
|
|
but on those systems where it doesn't, your data could be
|
|
corrupted.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question
|
|
id="ctm">
|
|
<para> Can I follow current with limited Internet access?
|
|
</para></question><answer>
|
|
|
|
<para>Yes, you can do this <emphasis remap=tt>without</emphasis> downloading the whole source tree
|
|
by using the <ulink URL="../handbook/synching.html#CTM">CTM facility.</ulink></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How did you split the distribution into 240k files?</para></question><answer>
|
|
|
|
<para>Newer BSD based systems have a ``<option>-b</option>'' option to split that
|
|
allows them to split files on arbitrary byte boundaries.</para>
|
|
|
|
<para>Here is an example from <filename>/usr/src/Makefile</filename>.</para>
|
|
|
|
<para>
|
|
<literallayout> bin-tarball:
|
|
(cd ${DISTDIR}; \
|
|
tar cf - . \
|
|
gzip --no-name -9 -c | \
|
|
split -b 240640 - \
|
|
${RELEASEDIR}/tarballs/bindist/bin_tgz.)
|
|
</literallayout>
|
|
</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I've written a kernel extension, who do I send it to?</para></question><answer>
|
|
|
|
<para>Please take a look at <ulink URL="../handbook/contrib.html">The Handbook entry on how to submit code.</ulink></para>
|
|
|
|
<para>And thanks for the thought!</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>How are Plug N Play ISA cards detected and initialized?</para></question><answer>
|
|
|
|
<para>By: <ulink URL="mailto:uhclem@nemesis.lonestar.org">Frank Durda IV</ulink></para>
|
|
|
|
<para>In a nutshell, there a few I/O ports that all of the PnP boards
|
|
respond to when the host asks if anyone is out there. So when
|
|
the PnP probe routine starts, he asks if there are any PnP boards
|
|
present, and all the PnP boards respond with their model # to
|
|
a I/O read of the same port, so the probe routine gets a wired-OR
|
|
``yes'' to that question. At least one bit will be on in that
|
|
reply. Then the probe code is able to cause boards with board
|
|
model IDs (assigned by Microsoft/Intel) lower than X to go
|
|
``off-line''. It then looks to see if any boards are still
|
|
responding to the query. If the answer was ``<emphasis remap=tt>0</emphasis>'', then
|
|
there are no boards with IDs above X. Now probe asks if there
|
|
are any boards below ``X''. If so, probe knows there are boards
|
|
with a model numbers below X. Probe then asks for boards greater
|
|
than X-(limit/4) to go off-line. If repeats the query. By
|
|
repeating this semi-binary search of IDs-in-range enough times,
|
|
the probing code will eventually identify all PnP boards present
|
|
in a given machine with a number of iterations that is much lower
|
|
than what 2^64 would take.</para>
|
|
|
|
<para>The IDs are two 32-bit fields (hence 2ˆ64) + 8 bit checksum.
|
|
The first 32 bits are a vendor identifier. They never come out
|
|
and say it, but it appears to be assumed that different types of
|
|
boards from the same vendor could have different 32-bit vendor
|
|
ids. The idea of needing 32 bits just for unique manufacturers
|
|
is a bit excessive.</para>
|
|
|
|
<para>The lower 32 bits are a serial #, ethernet address, something
|
|
that makes this one board unique. The vendor must never produce
|
|
a second board that has the same lower 32 bits unless the upper
|
|
32 bits are also different. So you can have multiple boards of
|
|
the same type in the machine and the full 64 bits will still be
|
|
unique.</para>
|
|
|
|
<para>The 32 bit groups can never be all zero. This allows the
|
|
wired-OR to show non-zero bits during the initial binary search.</para>
|
|
|
|
<para>Once the system has identified all the board IDs present, it will
|
|
reactivate each board, one at a time (via the same I/O ports),
|
|
and find out what resources the given board needs, what interrupt
|
|
choices are available, etc. A scan is made over all the boards
|
|
to collect this information.</para>
|
|
|
|
<para>This info is then combined with info from any ECU files on the
|
|
hard disk or wired into the MLB BIOS. The ECU and BIOS PnP
|
|
support for hardware on the MLB is usually synthetic, and the
|
|
peripherals don't really do genuine PnP. However by examining
|
|
the BIOS info plus the ECU info, the probe routines can cause the
|
|
devices that are PnP to avoid those devices the probe code cannot
|
|
relocate.</para>
|
|
|
|
<para>Then the PnP devices are visited once more and given their I/O,
|
|
DMA, IRQ and Memory-map address assignments. The devices will
|
|
then appear at those locations and remain there until the next
|
|
reboot, although there is nothing that says you can't move them
|
|
around whenever you want.</para>
|
|
|
|
<para>There is a lot of oversimplification above, but you should get
|
|
the general idea.</para>
|
|
|
|
<para>Microsoft took over some of the primary printer status ports to
|
|
do PnP, on the logic that no boards decoded those addresses for
|
|
the opposing I/O cycles. I found a genuine IBM printer board
|
|
that did decode writes of the status port during the early PnP
|
|
proposal review period, but MS said ``tough''. So they do a
|
|
write to the printer status port for setting addresses, plus that
|
|
use that address + <literal>0x800</literal>, and a third I/O port for reading
|
|
that can be located anywhere between <literal>0x200</literal> and <literal>0x3ff</literal>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Does FreeBSD support architectures other than the x86?</para></question><answer>
|
|
|
|
<para>Several groups of people have expressed interest in working on
|
|
multi-architecture ports for FreeBSD and the FreeBSD/AXP (ALPHA)
|
|
port is one such effort which has been quite successful, now
|
|
available in 3.0 SNAPshot release form at <ulink URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/alpha/">ftp://ftp.FreeBSD.org/pub/FreeBSD/alpha</ulink>. The ALPHA
|
|
port currently runs on a growing number of ALPHA machine
|
|
types, among them the AlphaStation, AXPpci, PC164, Miata and Multia
|
|
models. This port is not yet considered a full release and won't be
|
|
until a full compliment of system installation tools and a distribution
|
|
on CDROM installation media is available, including a reasonable
|
|
number of working ports and packages.
|
|
FreeBSD/AXP should be considered BETA quality software at this
|
|
time. For status information, please join the
|
|
<email><freebsd-alpha@FreeBSD.org></email><xref linkend="mailing" remap="mailing list">.</para>
|
|
|
|
<para>Interest has also been expressed in a port of FreeBSD to
|
|
the SPARC architecture, join the <email><freebsd-sparc@FreeBSD.org></email><xref linkend="mailing" remap="mailing list"> if you are interested
|
|
in joining that project. For general discussion on new architectures,
|
|
join the <email><freebsd-platforms@FreeBSD.org></email>
|
|
<xref linkend="mailing" remap="mailing list">.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>I need a major number for a device driver I've written.</para></question><answer>
|
|
|
|
<para>This depends on whether or not you plan on making the driver
|
|
publicly available. If you do, then please send us a copy of the
|
|
driver source code, plus the appropriate modifications to
|
|
<emphasis remap=tt>files.i386</emphasis>, a sample configuration file entry, and the
|
|
appropriate <ulink URL="http://www.FreeBSD.org/cgi/man.cgi?MAKEDEV">MAKEDEV</ulink> code to create any special files your device uses. If
|
|
you do not, or are unable to because of licensing restrictions, then
|
|
character major number 32 and block major number 8 have been reserved
|
|
specifically for this purpose; please use them. In any case, we'd
|
|
appreciate hearing about your driver on
|
|
<email><freebsd-hackers@FreeBSD.org></email>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Alternative layout policies for directories</para></question><answer>
|
|
|
|
<para>In answer to the question of alternative layout policies for
|
|
directories, the scheme that is currently in use is unchanged
|
|
from what I wrote in 1983. I wrote that policy for the original
|
|
fast filesystem, and never revisited it. It works well at keeping
|
|
cylinder groups from filling up. As several of you have noted,
|
|
it works poorly for find. Most filesystems are created from
|
|
archives that were created by a depth first search (aka ftw).
|
|
These directories end up being striped across the cylinder groups
|
|
thus creating a worst possible senario for future depth first
|
|
searches. If one knew the total number of directories to be
|
|
created, the solution would be to create (total / fs_ncg) per
|
|
cylinder group before moving on. Obviously, one would have to
|
|
create some heuristic to guess at this number. Even using a
|
|
small fixed number like say 10 would make an order of magnitude
|
|
improvement. To differentiate restores from normal operation
|
|
(when the current algorithm is probably more sensible), you
|
|
could use the clustering of up to 10 if they were all done
|
|
within a ten second window. Anyway, my conclusion is that this
|
|
is an area ripe for experimentation.</para>
|
|
|
|
<para>Kirk McKusick, September 1998</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Making the most of a kernel panic</para></question><answer>
|
|
|
|
<para>
|
|
<emphasis>[This section was extracted from a mail written by <ulink URL="mailto:wpaul@FreeBSD.org">Bill Paul</ulink> on the
|
|
freebsd-current <xref linkend="mailing" remap="mailing list"> by <ulink URL="mailto:des@FreeBSD.org">Dag-Erling Coïdan Smørgrav</ulink>, who fixed a few typos and added the bracketed
|
|
comments]</emphasis></para>
|
|
|
|
<para>
|
|
<literallayout>From: Bill Paul <wpaul@skynet.ctr.columbia.edu>
|
|
Subject: Re: the fs fun never stops
|
|
To: ben@rosengart.com
|
|
Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT)
|
|
Cc: current@FreeBSD.org
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para><emphasis>[<ben@rosengart.com> posted the following panic
|
|
message]</emphasis>
|
|
<literallayout>> Fatal trap 12: page fault while in kernel mode
|
|
> fault virtual address = 0x40
|
|
> fault code = supervisor read, page not present
|
|
> instruction pointer = 0x8:0xf014a7e5
|
|
^^^^^^^^^^
|
|
> stack pointer = 0x10:0xf4ed6f24
|
|
> frame pointer = 0x10:0xf4ed6f28
|
|
> code segment = base 0x0, limit 0xfffff, type 0x1b
|
|
> = DPL 0, pres 1, def32 1, gran 1
|
|
> processor eflags = interrupt enabled, resume, IOPL = 0
|
|
> current process = 80 (mount)
|
|
> interrupt mask =
|
|
> trap number = 12
|
|
> panic: page fault
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para> [When] you see a message like this, it's not enough to just
|
|
reproduce it and send it in. The instruction pointer value that
|
|
I highlighted up there is important; unfortunately, it's also
|
|
configuration dependent. In other words, the value varies
|
|
depending on the exact kernel image that you're using. If you're
|
|
using a GENERIC kernel image from one of the snapshots, then
|
|
it's possible for somebody else to track down the offending
|
|
function, but if you're running a custom kernel then only
|
|
<emphasis>you</emphasis> can tell us where the fault occured.</para>
|
|
|
|
<para> What you should do is this:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>Write down the instruction pointer value. Note that the
|
|
<literal>0x8:</literal> part at the begining is not significant in this case:
|
|
it's the <literal>0xf0xxxxxx</literal> part that we want.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>When the system reboots, do the following:
|
|
<literallayout>% nm /kernel.that.caused.the.panic | grep f0xxxxxx
|
|
</literallayout>
|
|
|
|
where <literal>f0xxxxxx</literal> is the instruction pointer value. The
|
|
odds are you will not get an exact match since the symbols
|
|
in the kernel symbol table are for the entry points of
|
|
functions and the instruction pointer address will be
|
|
somewhere inside a function, not at the start. If you don't
|
|
get an exact match, omit the last digit from the instruction
|
|
pointer value and try again, i.e.:
|
|
<literallayout>% nm /kernel.that.caused.the.panic | grep f0xxxxx
|
|
</literallayout>
|
|
|
|
If that doesn't yield any results, chop off another digit.
|
|
Repeat until you get some sort of output. The result will be
|
|
a possible list of functions which caused the panic. This is
|
|
a less than exact mechanism for tracking down the point of
|
|
failure, but it's better than nothing.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para> I see people constantly show panic messages like this but
|
|
rarely do I see someone take the time to match up the
|
|
instruction pointer with a function in the kernel symbol table.</para>
|
|
|
|
<para> The best way to track down the cause of a panic is by
|
|
capturing a crash dump, then using <command>gdb(1)</command> to to a stack
|
|
trace on the crash dump. Of course, this depends on <command>gdb(1)</command>
|
|
in -current working correctly, which I can't guarantee (I recall
|
|
somebody saying that the new ELF-ized <command>gdb(1)</command> didn't handle
|
|
kernel crash dumps correctly: somebody should check this before
|
|
3.0 goes out of beta or there'll be a lot of red faces after the
|
|
CDs ship).</para>
|
|
|
|
<para>In any case, the method I normally use is this:</para>
|
|
|
|
<para>
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
<para>Set up a kernel config file, optionally adding 'options DDB' if you
|
|
think you need the kernel debugger for something. (I use this mainly
|
|
for setting beakpoints if I suspect an infinite loop condition of
|
|
some kind.)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Use <command>config -g KERNELCONFIG</command> to set up the build directory.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><command>cd /sys/compile/KERNELCONFIG; make</command></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Wait for kernel to finish compiling.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis remap=tt>cp kernel kernel.debug</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><command>strip -d kernel</command></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><emphasis remap=tt>mv </emphasis>kernel /kernel.orig/</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><command>cp kernel /</command></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>reboot</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para> <emphasis>[Note: Now that FreeBSD 3.x kernels are Elf by default,
|
|
you should use <command>strip -g</command> instead of <command>strip -d</command>. If for some
|
|
reason your kernel is still a.out, use <command>strip -aout -d</command>.]</emphasis></para>
|
|
|
|
<para> Note that YOU DO <acronym>NOT</acronym> WANT TO ACTUALLY BOOT THE KERNEL
|
|
WITH ALL THE DEBUG SYMBOLS IN IT. A kernel compiled with <option>-g</option>
|
|
can easily be close to 10MB in size. You don't have to actually
|
|
boot this massive image: you only need it later for <command>gdb(1)</command>
|
|
(<command>gdb(1)</command> wants the symbol table). Instead, you want to keep
|
|
a copy of the full image and create a second image with the
|
|
debug symbols stripped out using <command>strip -d</command>. It is this
|
|
second stripped image that you want to boot.</para>
|
|
|
|
<para> To make sure you capture a crash dump, you need edit
|
|
<filename>/etc/rc.conf</filename> and set <emphasis remap=tt>dumpdev</emphasis> to point to your swap
|
|
partition. This will cause the <command>rc(8)</command> scripts to use the
|
|
<command>dumpon(8)</command> command to enable crash dumps. You can also run
|
|
<command>dumpon(8)</command> manually. After a panic, the crash dump can be
|
|
recovered using <command>savecore(8)</command>; if <emphasis remap=tt>dumpdev</emphasis> is set in
|
|
<filename>/etc/rc.conf</filename>, the <command>rc(8)</command> scripts will run
|
|
<command>savecore(8)</command> automatically and put the crash dump in
|
|
<filename>/var/crash</filename>.</para>
|
|
|
|
<para> NOTE: FreeBSD crash dumps are usually the same size as the
|
|
physical RAM size of your machine. That is, if you have 64MB of
|
|
RAM, you will get a 64MB crash dump. Therefore you must make sure
|
|
there's enough space in <filename>/var/crash</filename> to hold the dump.
|
|
Alternatively, you run <command>savecore(8)</command> manually and have it
|
|
recover the crash dump to another directory where you have more
|
|
room. It's possible to limit the size of the crash dump by using
|
|
<literal>options MAXMEM=(foo)</literal> to set the amount of memory the kernel
|
|
will use to something a little more sensible. For example, if
|
|
you have 128MB of RAM, you can limit the kernel's memory usage
|
|
to 16MB so that your crash dump size will be 16MB instead of
|
|
128MB.</para>
|
|
|
|
<para> Once you have recovered the crash dump, you can get a stack
|
|
trace with <command>gdb(1)</command> as follows:</para>
|
|
|
|
<para>
|
|
<literallayout>% gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0
|
|
(gdb) where
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para> Note that there may be several screens worth of information;
|
|
ideally you should use <command>script(1)</command> to capture all of them.
|
|
Using the unstripped kernel image with all the debug symbols
|
|
should show the exact line of kernel source code where the panic
|
|
occured. Usually you have to read the stack trace from the
|
|
bottom up in order to trace the exact sequence of events that
|
|
lead to the crash. You can also use <command>gdb(1)</command> to print out the
|
|
contents of various variables or structures in order to examine
|
|
the system state at the time of the crash.</para>
|
|
|
|
<para> Now, if you're really insane and have a second computer, you
|
|
can also configure <command>gdb(1)</command> to do remote debugging such that
|
|
you can use <command>gdb(1)</command> on one system to debug the kernel on
|
|
another system, including setting breakpoints, single-stepping
|
|
through the kernel code, just like you can do with a normal
|
|
user-mode program. I haven't played with this yet as I don't
|
|
often have the chance to set up two machines side by side for
|
|
debugging purposes.</para>
|
|
|
|
<para> <emphasis>[Bill adds: "I forgot to mention one thing: if you have
|
|
DDB enabled and the kernel drops into the debugger, you can
|
|
force a panic (and a crash dump) just by typing 'panic' at the
|
|
ddb prompt. It may stop in the debugger again during the panic
|
|
phase. If it does, type 'continue' and it will finish the crash
|
|
dump." -ed]</emphasis></para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>dlsym() stopped working for ELF executables!</para></question><answer>
|
|
|
|
<para>The ELF toolchain does not, by default, make the symbols
|
|
defined in an executable visible to the dynamic linker.
|
|
Consequently <function>dlsym()</function> searches on handles obtained
|
|
from calls to <emphasis remap=tt>dlopen(NULL, flags)</emphasis> will fail to find
|
|
such symbols.</para>
|
|
|
|
<para>If you want to search, using <function>dlsym()</function>, for symbols
|
|
present in the main executable of a process, you need to link
|
|
the executable using the <option>-export-dynamic</option> option to the
|
|
<ulink URL="http://www.FreeBSD.org/cgi/man.cgi?ld">ELF linker</ulink>.</para>
|
|
|
|
</answer></qandaentry>
|
|
|
|
<qandaentry><question>
|
|
<para>Increasing or reducing the kernel address space</para></question><answer>
|
|
|
|
<para>By default, the kernel address space is 256 MB on FreeBSD 3.x
|
|
and 1 GB on FreeBSD 4.x. If you run a network-intensive server
|
|
(e.g. a large FTP or HTTP server), you might find that 256 MB is
|
|
not enough.</para>
|
|
|
|
<para>So how do you increase the address space? There are two aspects
|
|
to this. First, you need to tell the kernel to reserve a larger
|
|
portion of the address space for itself. Second, since the
|
|
kernel is loaded at the top of the address space, you need to
|
|
lower the load address so it doesn't bump its head against the
|
|
ceiling.</para>
|
|
|
|
<para>The first goal is achieved by increasing the value of
|
|
<acronym>NKPDE</acronym> in <filename>src/sys/i386/include/pmap.h</filename>. Here's what
|
|
it looks like for a 1 GB address space:</para>
|
|
|
|
<para>
|
|
<literallayout>#ifndef NKPDE
|
|
#ifdef SMP
|
|
#define NKPDE 254 /* addressable number of page tables/pde's */
|
|
#else
|
|
#define NKPDE 255 /* addressable number of page tables/pde's */
|
|
#endif /* SMP */
|
|
#endif
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>To find the correct value of <acronym>NKPDE</acronym>, divide the desired
|
|
address space size (in megabytes) by four, then subtract one for
|
|
UP and two for SMP.</para>
|
|
|
|
<para>To achieve the second goal, you need to compute the correct load
|
|
address: simply subtract the address space size (in bytes) from
|
|
0x100100000; the result is 0xc0100000 for a 1 GB address space.
|
|
Set <symbol>LOAD_ADDRESS</symbol> in <filename>src/sys/i386/conf/Makefile.i386</filename>
|
|
to that value; then set the location counter in the beginning of
|
|
the section listing in <filename>src/sys/i386/conf/kernel.script</filename>
|
|
to the same value, as follows:</para>
|
|
|
|
<para>
|
|
<literallayout>OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
|
OUTPUT_ARCH(i386)
|
|
ENTRY(btext)
|
|
SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/obj/elf/home/src/tmp/usr/i386-unknown-freebsdelf/lib);
|
|
SECTIONS
|
|
{
|
|
/* Read-only sections, merged into text segment: */
|
|
. = 0xc0100000 + SIZEOF_HEADERS;
|
|
.interp : { *(.interp) }
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>Then reconfig and rebuild your kernel. You will probably have
|
|
problems with <command>ps(1)</command>, <command>top(1)</command> and the like; <emphasis remap=tt>make
|
|
world</emphasis> should take care of it (or a manual rebuild of
|
|
<emphasis remap=tt>libkvm</emphasis>, <emphasis remap=tt>ps</emphasis> and <emphasis remap=tt>top</emphasis> after copying the patched
|
|
<filename>pmap.h</filename> to <filename>/usr/include/vm/</filename>.</para>
|
|
|
|
<para>NOTE: the size of the kernel address space must be a multiple of
|
|
four megabytes.</para>
|
|
|
|
<para>[<ulink URL="mailto:dg@FreeBSD.org">David Greenman</ulink>
|
|
adds: <emphasis> I think the kernel address space needs to be a power
|
|
of two, but I'm not certain about that. The old(er) boot code
|
|
used to monkey with the high order address bits and I think
|
|
expected at least 256MB granularity.]</emphasis></para>
|
|
|
|
</answer></qandaentry></qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="acknowledgments">
|
|
<title>ACKNOWLEDGMENTS</title>
|
|
|
|
<para>
|
|
<literallayout> If you see a problem with this FAQ, or wish to submit an entry,
|
|
please mail us at <FAQ@FreeBSD.org>. We appreciate your
|
|
feedback, and cannot make this a better FAQ without your help!
|
|
|
|
|
|
FreeBSD Core Team
|
|
</literallayout>
|
|
</para>
|
|
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry><term>Jordan Hubbard</term>
|
|
<listitem>
|
|
<para>Occasional fits of FAQ-reshuffling and updating.</para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>Doug White</term>
|
|
|
|
<listitem>
|
|
<para>Services above and beyond the call of duty on freebsd-questions</para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>Joerg Wunsch</term>
|
|
|
|
<listitem>
|
|
<para>Services above and beyond the call of duty on Usenet</para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>Garrett Wollman</term>
|
|
|
|
<listitem>
|
|
<para>Networking and formatting</para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>Jim Lowe</term>
|
|
|
|
<listitem>
|
|
<para>Multicast information</para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>Peter da Silva</term>
|
|
|
|
<listitem>
|
|
<para>FreeBSD FAQ typing machine slavey</para>
|
|
|
|
<para></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry><term>The FreeBSD Team</term>
|
|
|
|
<listitem>
|
|
<para>Kvetching, moaning, submitting data</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>And to any others we've forgotten, apologies and heartfelt thanks!</para>
|
|
|
|
</chapter>
|
|
</book>
|