12164 lines
502 KiB
Text
12164 lines
502 KiB
Text
<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
|
<!ENTITY % books.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Books Entity Set//EN">
|
|
%books.ent;
|
|
<!ENTITY bibliography SYSTEM "../../../share/sgml/bibliography.sgml">
|
|
]>
|
|
|
|
<book>
|
|
<bookinfo>
|
|
<title>Frequently Asked Questions for FreeBSD 4.X, 5.X, and 6.X</title>
|
|
|
|
<corpauthor>The FreeBSD Documentation Project</corpauthor>
|
|
|
|
<pubdate>$FreeBSD$</pubdate>
|
|
|
|
<copyright>
|
|
<year>1995</year>
|
|
<year>1996</year>
|
|
<year>1997</year>
|
|
<year>1998</year>
|
|
<year>1999</year>
|
|
<year>2000</year>
|
|
<year>2001</year>
|
|
<year>2002</year>
|
|
<year>2003</year>
|
|
<year>2004</year>
|
|
<year>2005</year>
|
|
<holder>The FreeBSD Documentation Project</holder>
|
|
</copyright>
|
|
|
|
&bookinfo.legalnotice;
|
|
|
|
<legalnotice id="trademarks" role="trademarks">
|
|
&tm-attrib.freebsd;
|
|
&tm-attrib.3com;
|
|
&tm-attrib.adobe;
|
|
&tm-attrib.creative;
|
|
&tm-attrib.cvsup;
|
|
&tm-attrib.ibm;
|
|
&tm-attrib.ieee;
|
|
&tm-attrib.intel;
|
|
&tm-attrib.iomega;
|
|
&tm-attrib.linux;
|
|
&tm-attrib.microsoft;
|
|
&tm-attrib.mips;
|
|
&tm-attrib.netscape;
|
|
&tm-attrib.opengroup;
|
|
&tm-attrib.oracle;
|
|
&tm-attrib.sgi;
|
|
&tm-attrib.sparc;
|
|
&tm-attrib.sun;
|
|
&tm-attrib.usrobotics;
|
|
&tm-attrib.xfree86;
|
|
&tm-attrib.general;
|
|
</legalnotice>
|
|
|
|
<abstract>
|
|
<para>This is the FAQ for FreeBSD versions 4.X, 5.X, and 6.X.
|
|
All entries are assumed to be relevant to FreeBSD 4.0 and
|
|
later, unless otherwise noted. If you are interested in
|
|
helping with this project, send email to the &a.doc;. The
|
|
latest version of this document is always available from the
|
|
<ulink
|
|
url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/faq/index.html">FreeBSD
|
|
World Wide Web server</ulink>. It may also be downloaded as
|
|
one large <ulink url="book.html">HTML</ulink> file with HTTP
|
|
or as plain text, &postscript;, PDF, etc. from the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">FreeBSD FTP
|
|
server</ulink>. You may also want to <ulink
|
|
url="&url.base;/search/index.html">Search the
|
|
FAQ</ulink>.</para>
|
|
</abstract>
|
|
</bookinfo>
|
|
|
|
<chapter id="introduction">
|
|
<title>Introduction</title>
|
|
|
|
<para>Welcome to the FreeBSD 4.X-6.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 &a.doc;.</para>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="what-is-FreeBSD">
|
|
<para>What is FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Briefly, FreeBSD is a &unix; like operating system for
|
|
the Alpha/AXP, AMD64 and &intel; EM64T, &i386; IA-64,
|
|
PC-98, and &ultrasparc; platforms
|
|
based on U.C. Berkeley's <quote>4.4BSD-Lite</quote>
|
|
release, with some <quote>4.4BSD-Lite2</quote>
|
|
enhancements. It is also based indirectly on William
|
|
Jolitz's port of U.C. Berkeley's <quote>Net/2</quote> to
|
|
the &i386;, known as <quote>386BSD</quote>, 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="&url.base;/index.html">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.</para>
|
|
|
|
<para>For more detailed information on FreeBSD, please see the
|
|
<ulink url="&url.books.handbook;/index.html">FreeBSD
|
|
Handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="FreeBSD-goals">
|
|
<para>What is the goal of the FreeBSD Project?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The goal of the FreeBSD Project is 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 definitely do not
|
|
insist on it. We believe that our first and foremost
|
|
<quote>mission</quote> 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
|
|
<ulink url="http://www.FreeBSD.org/copyright/COPYING">GNU
|
|
General Public License (GPL)</ulink> or <ulink
|
|
url="http://www.FreeBSD.org/copyright/COPYING.LIB">GNU
|
|
Library General Public License (LGPL)</ulink> 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 <ulink
|
|
url="http://www.FreeBSD.org/copyright/freebsd-license.html">
|
|
FreeBSD license</ulink> whenever possible.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bsd-license-restrictions">
|
|
<para>Does the FreeBSD license have any restrictions?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Those restrictions do not control how you use
|
|
the code, merely how you treat the FreeBSD Project itself.
|
|
If you have serious license concerns, read the actual
|
|
<ulink
|
|
url="http://www.FreeBSD.org/copyright/freebsd-license.html">
|
|
license</ulink>. For the simply curious, the license can
|
|
be summarized like this.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Do not claim that you wrote this.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Do not sue us if it breaks.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="replace-current-OS">
|
|
<para>Can FreeBSD replace my current operating system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For most people, yes. But this question is not quite
|
|
that cut-and-dried.</para>
|
|
|
|
<para>Most people do not actually use an operating system.
|
|
They use applications. The applications are what really
|
|
use the operating system. FreeBSD is designed to provide
|
|
a robust and full-featured environment for applications.
|
|
It supports a wide variety of web browsers, office suites,
|
|
email readers, graphics programs, programming
|
|
environments, network servers, and just about everything
|
|
else you might want. Most of these applications can be
|
|
managed through the <ulink
|
|
url="http://www.FreeBSD.org/ports/">Ports
|
|
Collection</ulink>.</para>
|
|
|
|
<para>If you need to use an application that is only
|
|
available on one operating system, you simply cannot
|
|
replace that operating system. Chances are there is a very
|
|
similar application on FreeBSD, however. If you want a
|
|
solid office or Internet server, a reliable workstation,
|
|
or just the ability to do your job without interruptions,
|
|
FreeBSD will almost certainly do everything you need.
|
|
Many computer users across the world, including both
|
|
novices and experienced &unix; administrators, use FreeBSD
|
|
as their only desktop operating system.</para>
|
|
|
|
<para>If you are migrating to FreeBSD from some other &unix;
|
|
environment, you already know most of what you need to.
|
|
If your background is in graphic-driven operating systems
|
|
such as &windows; and older versions of &macos;, expect to
|
|
invest additional time learning the &unix; way of doing
|
|
things. This FAQ and the <ulink
|
|
url="&url.books.handbook;/index.html">FreeBSD Handbook</ulink> are
|
|
excellent places to start.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="why-called-FreeBSD">
|
|
<para>Why is it called FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<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 or bug fix is free
|
|
to submit their code and have it added to the source tree
|
|
(subject to one or two obvious provisions).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>It is worth pointing out that the word
|
|
<quote>free</quote> is being used in two ways here, one meaning
|
|
<quote>at no cost</quote>, the other meaning <quote>you can do
|
|
whatever you like</quote>. Apart from one or two things you
|
|
<emphasis>cannot</emphasis> do with the FreeBSD code, for
|
|
example pretending you wrote it, you can really do whatever you
|
|
like with it.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="differences-to-other-bsds">
|
|
<para>What are the differences between FreeBSD and NetBSD, OpenBSD,
|
|
and other open source BSD operating systems?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>James Howard wrote a good explanation of the history
|
|
and differences between the various projects for <ulink
|
|
url="http://www.daemonnews.org/">DaemonNews</ulink>,
|
|
called <ulink
|
|
url="http://www.daemonnews.org/200104/bsd_family.html">The
|
|
BSD Family Tree</ulink> which goes a fair way to answering
|
|
this question.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="latest-version">
|
|
<para>What is the latest version of FreeBSD?</para>
|
|
</question>
|
|
|
|
<!--
|
|
This answer is a hack to deal with the fact that for now there are
|
|
multiple "latest" versions of FreeBSD.
|
|
-->
|
|
|
|
<answer>
|
|
<para>At this point in FreeBSD's development, there are three
|
|
parallel development branches; releases are being made from
|
|
two of the three branches. The 4.X series of releases
|
|
is being made from the <emphasis>4-STABLE</emphasis> branch
|
|
and the 5.X series of releases is being made from
|
|
<emphasis>5-STABLE</emphasis>. It will be some time in
|
|
mid-to-late 2005 before the first release will be made from the
|
|
<emphasis>6-CURRENT</emphasis> branch; that release (6.0)
|
|
will be aimed at early adopters.</para>
|
|
|
|
<para>Up until the release of 5.3, the 4.X series was the
|
|
one known as <emphasis>-STABLE</emphasis>. However,
|
|
as of 5.3, 5.X has been designated the new
|
|
<emphasis>-STABLE</emphasis> and 4.X will no longer see
|
|
much new development. Instead, it will be designated
|
|
for an "extended support" status and receive
|
|
only fixes for major problems (such as security-related
|
|
fixes.)</para>
|
|
|
|
<!-- note: the entity definitions are out of date -->
|
|
<para>Version <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel.current;-RELEASE/">&rel.current;</ulink>
|
|
is the latest release from the
|
|
<emphasis>5-STABLE</emphasis> branch; it was released in
|
|
&rel.current.date;. Version <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">&rel2.current;</ulink>
|
|
is the latest release from the
|
|
<emphasis>4-STABLE</emphasis> branch; it was released in
|
|
&rel2.current.date;.</para>
|
|
|
|
<para>Briefly, <emphasis>-STABLE</emphasis> is aimed at the
|
|
ISP, corporate user, or any user who wants stability and a
|
|
minimal number of changes compared to the new (and
|
|
possibly unstable) features of the latest
|
|
<emphasis>-CURRENT</emphasis> snapshot. Releases can come
|
|
from either branch, but <emphasis>-CURRENT</emphasis>
|
|
should only be used if you are prepared for its increased
|
|
volatility (relative to <emphasis>-STABLE</emphasis>, that
|
|
is).</para>
|
|
|
|
<para>Releases are made <link linkend="release-freq">every
|
|
few months</link>. While many people stay more up-to-date with
|
|
the FreeBSD sources (see the questions on <link
|
|
linkend="current">FreeBSD-CURRENT</link> and <link
|
|
linkend="stable">FreeBSD-STABLE</link>) than that, doing so
|
|
is more of a commitment, as the sources are a moving
|
|
target.</para>
|
|
|
|
<para>More information on FreeBSD releases can be found on
|
|
the <ulink
|
|
url="http://www.FreeBSD.org/releng/index.html">Release
|
|
Engineering page</ulink> on the FreeBSD Web site.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="current">
|
|
<para>What is FreeBSD-CURRENT?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><ulink
|
|
url="&url.books.handbook;/cutting-edge.html#CURRENT">FreeBSD-CURRENT</ulink>
|
|
is the development version of the operating system, which
|
|
will in due course become the new &os.stable; branch.
|
|
As such, it is
|
|
really only of interest to developers working on the
|
|
system and die-hard hobbyists. See the <ulink
|
|
url="&url.books.handbook;/cutting-edge.html#CURRENT">relevant
|
|
section</ulink> in the <ulink
|
|
url="&url.books.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 <quote>glitches</quote>. Questions
|
|
such as <quote>make world produces some error about
|
|
groups</quote> on the -CURRENT mailing list may be
|
|
treated with contempt.</para>
|
|
|
|
<para>Every day, <ulink
|
|
url="&url.base;/releases/snapshots.html">snapshot
|
|
</ulink> releases are made based on the current state of the
|
|
-CURRENT and -STABLE branches. Distributions of the
|
|
occasional snapshot are made available. The goals
|
|
behind each snapshot release are:</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 or
|
|
-STABLE but who do not have the time 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 all new features and fixes in need
|
|
of testing have the greatest possible number of
|
|
potential testers.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>No claims are made that any -CURRENT snapshot can be
|
|
considered <quote>production quality</quote> for any purpose.
|
|
If you want to run a stable and fully tested system, you will
|
|
have to stick to full releases, or use the -STABLE
|
|
snapshots.</para>
|
|
|
|
<para>Snapshot releases are directly available from <ulink
|
|
url="ftp://current.FreeBSD.org/pub/FreeBSD/snapshots/">
|
|
ftp://current.FreeBSD.org/pub/FreeBSD/snapshots/</ulink>.</para>
|
|
|
|
<para>Snapshots are generated, on the average, daily for
|
|
all actively developed 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, FreeBSD
|
|
development branched in two. One branch was named <ulink
|
|
url="&url.books.handbook;/current-stable.html#STABLE">-STABLE</ulink>,
|
|
one <ulink
|
|
url="&url.books.handbook;/current-stable.html#CURRENT">-CURRENT</ulink>.
|
|
FreeBSD-STABLE is intended for Internet Service Providers
|
|
and other commercial enterprises for whom sudden shifts or
|
|
experimental features are quite undesirable. It receives
|
|
only well-tested bug fixes and other small incremental
|
|
enhancements. FreeBSD-CURRENT, on the other hand, has
|
|
been one unbroken line since 2.0 was released, leading
|
|
towards 5.3-RELEASE (and beyond). Just before 5.3-RELEASE, the
|
|
5-STABLE branch was created, and
|
|
&os.current; became 6-CURRENT. For more detailed information,
|
|
see <quote><ulink url="&url.articles.releng;/release-proc.html#REL-BRANCH">
|
|
FreeBSD Release Engineering:
|
|
Creating the Release Branch</ulink></quote>.</para>
|
|
|
|
<para>The 2.2-STABLE branch was retired with the release of 2.2.8.
|
|
The 3-STABLE branch has ended with the release of 3.5.1, the
|
|
final 3.X release. The only changes made to either of these
|
|
branches will be, for the most part, security-related bug
|
|
fixes. Support for the 4-STABLE branch will continue
|
|
for some time but focus primarily on security-related bug
|
|
fixes and other serious issues.</para>
|
|
|
|
<para>5-STABLE is the actively developed -STABLE branch.
|
|
The latest release on the 5-STABLE branch is
|
|
&rel.current;-RELEASE, which was released in
|
|
&rel.current.date;.</para>
|
|
|
|
<para>The 6-CURRENT branch is the actively developed
|
|
-CURRENT branch toward the next generation of &os;.
|
|
See <link linkend="current">What is &os;-CURRENT?</link> for more
|
|
information on this branch.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="release-freq">
|
|
<para>When are FreeBSD releases made?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &a.re; releases a new version of FreeBSD about every
|
|
four months, on average. Release dates are announced well in
|
|
advance, so that the people working on the system know
|
|
when their projects need to be finished and tested.
|
|
A testing period precedes each release, in order to ensure
|
|
that the addition of new features does not compromise the
|
|
stability of the release.
|
|
Many users regard this caution as one of the best things about
|
|
FreeBSD, even though waiting for all the latest goodies to reach
|
|
-STABLE can be a little frustrating.</para>
|
|
|
|
<para>More information on the release engineering process
|
|
(including a schedule of upcoming releases) can be found
|
|
on the <ulink
|
|
url="http://www.FreeBSD.org/releng/index.html">release
|
|
engineering</ulink> pages on the FreeBSD Web site.</para>
|
|
|
|
<para>For people who need or want a little more excitement,
|
|
binary snapshots are made daily as discussed above.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="responsible">
|
|
<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="&url.articles.contributors;/article.html#STAFF-CORE">core
|
|
team</ulink> of 9 people. There is a much larger team of
|
|
more than 300 <ulink
|
|
url="&url.articles.contributors;/article.html#STAFF-COMMITTERS">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 <link linkend="mailing">mailing lists</link>, 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>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The latest 5-STABLE release, &rel.current;-RELEASE can be
|
|
found in the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel.current;-RELEASE/">&rel.current;-RELEASE directory</ulink>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://current.FreeBSD.org/pub/FreeBSD/">
|
|
Snapshot</ulink> releases are made daily for the
|
|
<link linkend="current">-CURRENT</link> branch, these being
|
|
of service purely to bleeding-edge testers and
|
|
developers.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The latest 4-STABLE release, &rel2.current;-RELEASE can be
|
|
found in the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">&rel2.current;-RELEASE directory</ulink>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://current.FreeBSD.org/pub/FreeBSD/snapshots/">5.X
|
|
snapshots</ulink> are usually made daily.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Information about obtaining FreeBSD on CD, DVD, and other
|
|
media can be found in <ulink url="&url.books.handbook;/mirrors.html">the
|
|
Handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="howto-mirror">
|
|
<para>How do I set up a FreeBSD mirror?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Information on setting up a FreeBSD mirror can be
|
|
found in the <ulink url="&url.articles.hubs;/">Mirroring
|
|
FreeBSD</ulink> article.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="access-pr">
|
|
<para>How do I access the Problem Report database?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The Problem Report database of all user change requests
|
|
may be queried by using our web-based PR
|
|
<ulink
|
|
url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">
|
|
query</ulink>
|
|
interface. The &man.send-pr.1; command can
|
|
be used to submit problem reports and change requests via
|
|
electronic mail.</para>
|
|
|
|
<para>The web-based problem report submission interface is
|
|
currently disabled due to persistent abuse.</para>
|
|
|
|
<para>Before submitting a problem report, please read <ulink
|
|
url="&url.articles.problem-reports;/article.html">Writing
|
|
FreeBSD Problem Reports</ulink>, an article on how to write
|
|
good problem reports.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="become-web-mirror">
|
|
<para>How do I become a FreeBSD Web mirror?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are multiple ways to mirror the Web pages.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>You can retrieve the formatted files from a
|
|
FreeBSD CVSup server using the application
|
|
<filename role="package">net/cvsup</filename>. The file
|
|
<filename>/usr/share/examples/cvsup/www-supfile</filename>
|
|
contains an example CVSup configuration file for web
|
|
mirrors.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>You can download the web site source code from any
|
|
FreeBSD FTP server using your favorite ftp mirror
|
|
tool. Keep in mind that you have to build these
|
|
sources before publishing them. Start mirroring at
|
|
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www/"></ulink>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="other-info-sources">
|
|
<para>What other sources of information are there?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please check the <ulink
|
|
url="http://www.FreeBSD.org/docs.html">Documentation</ulink>
|
|
list on the main <ulink
|
|
url="http://www.FreeBSD.org">FreeBSD</ulink> web
|
|
site.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="support">
|
|
<title>Documentation and Support</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="books">
|
|
<para>What good books are there about FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The project produces a wide range of documentation,
|
|
available online from this link: <ulink
|
|
url="http://www.FreeBSD.org/docs.html"></ulink>. The same
|
|
documents are available as packages, that you can easily
|
|
install on your FreeBSD system. More details on
|
|
documentation packages can be found in the next
|
|
paragraphs.</para>
|
|
|
|
<para>In addition, the Bibliography at the end of this
|
|
FAQ, and the one in the Handbook reference other
|
|
recommended books.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="doc-formats">
|
|
<para>Is the documentation available in other formats, such as plain
|
|
text (ASCII), or &postscript;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. The documentation is available in a number of
|
|
different formats and compression schemes on the FreeBSD
|
|
FTP site, in the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">/pub/FreeBSD/doc/</ulink>
|
|
directory.</para>
|
|
|
|
<para>The documentation is categorized in a number of different
|
|
ways. These include:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The document's name, such as <literal>faq</literal>, or
|
|
<literal>handbook</literal>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The document's language and encoding. These are
|
|
based on the locale names you will find under
|
|
<filename>/usr/share/locale</filename> on your FreeBSD
|
|
system. The current languages and encodings that we
|
|
have for documentation are as follows:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Name</entry>
|
|
|
|
<entry>Meaning</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><literal>en_US.ISO8859-1</literal></entry>
|
|
|
|
<entry>US English</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>de_DE.ISO8859-1</literal></entry>
|
|
|
|
<entry>German</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>es_ES.ISO8859-1</literal></entry>
|
|
|
|
<entry>Spanish</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>fr_FR.ISO8859-1</literal></entry>
|
|
|
|
<entry>French</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>it_IT.ISO8859-15</literal></entry>
|
|
|
|
<entry>Italian</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>ja_JP.eucJP</literal></entry>
|
|
|
|
<entry>Japanese (EUC encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>ru_RU.KOI8-R</literal></entry>
|
|
|
|
<entry>Russian (KOI8-R encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>zh_TW.Big5</literal></entry>
|
|
|
|
<entry>Chinese (Big5 encoding)</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<note>
|
|
<para>Some documents may not be available in all
|
|
languages.</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The document's format. We produce the documentation in a
|
|
number of different output formats. Each format has its own
|
|
advantages and disadvantages. Some formats are better suited
|
|
for online reading, while others are meant to be aesthetically
|
|
pleasing when printed on paper. Having the documentation
|
|
available in any of these formats ensures that our readers
|
|
will be able to read the parts they are interested in, either
|
|
on their monitor, or on paper after printing the documents.
|
|
The currently available formats are:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Format</entry>
|
|
|
|
<entry>Meaning</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><literal>html-split</literal></entry>
|
|
|
|
<entry>A collection of small, linked, HTML
|
|
files.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>html</literal></entry>
|
|
|
|
<entry>One large HTML file containing the entire
|
|
document</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>pdb</literal></entry>
|
|
|
|
<entry>Palm Pilot database format, for use with the
|
|
<ulink url="http://www.iSilo.com/">iSilo</ulink>
|
|
reader.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>pdf</literal></entry>
|
|
|
|
<entry>Adobe's Portable Document Format</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>ps</literal></entry>
|
|
|
|
<entry>&postscript;</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>rtf</literal></entry>
|
|
|
|
<entry>Microsoft's Rich Text Format<footnote>
|
|
<para>Page numbers are not automatically
|
|
updated when loading this format into Word.
|
|
Press <keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>A</keycap></keycombo>,
|
|
<keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>END</keycap></keycombo>,
|
|
<keycap>F9</keycap> after loading the
|
|
document, to update the page numbers.</para>
|
|
</footnote>
|
|
</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>txt</literal></entry>
|
|
|
|
<entry>Plain text</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The compression and packaging scheme. There are three of
|
|
these currently in use.</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Where the format is
|
|
<literal>html-split</literal>, the files are
|
|
bundled up using &man.tar.1;. The resulting
|
|
<filename>.tar</filename> file is then compressed
|
|
using the compression schemes detailed in the next
|
|
point.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>All the other formats generate one file,
|
|
called
|
|
<filename>book.<replaceable>format</replaceable></filename>
|
|
(i.e., <filename>book.pdb</filename>,
|
|
<filename>book.html</filename>, and so on).</para>
|
|
|
|
<para>These files are then compressed using two
|
|
compression schemes.</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Scheme</entry>
|
|
|
|
<entry>Description</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><literal>zip</literal></entry>
|
|
|
|
<entry>The Zip format. If you want to
|
|
uncompress this on FreeBSD you will need
|
|
to install the <filename
|
|
role="package">archivers/unzip</filename>
|
|
port first.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>bz2</literal></entry>
|
|
|
|
<entry>The BZip2 format. Less widespread
|
|
than Zip, but generally gives
|
|
smaller files. Install the <filename
|
|
role="package">archivers/bzip2</filename>
|
|
port to uncompress these files.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>So the &postscript; version of the Handbook,
|
|
compressed using BZip2 will be stored in a file
|
|
called <filename>book.ps.bz2</filename> in the
|
|
<filename>handbook/</filename> directory.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>After choosing the format and compression mechanism that you
|
|
want to download, you must then decide whether or not you want to
|
|
download the document as a FreeBSD
|
|
<emphasis>package</emphasis>.</para>
|
|
|
|
<para>The advantage of downloading and installing the package is
|
|
that the documentation can then be managed using the normal
|
|
FreeBSD package management comments, such as &man.pkg.add.1; and
|
|
&man.pkg.delete.1;.</para>
|
|
|
|
<para>If you decide to download and install the package then
|
|
you must know the filename to download. The
|
|
documentation-as-packages files are stored in a directory
|
|
called <filename>packages</filename>. Each package file
|
|
looks like
|
|
<filename><replaceable>document-name</replaceable>.<replaceable>lang</replaceable>.<replaceable>encoding</replaceable>.<replaceable>format</replaceable>.tgz</filename>.</para>
|
|
|
|
<para>For example, the FAQ, in English, formatted as PDF, is in the
|
|
package called
|
|
<filename>faq.en_US.ISO8859-1.pdf.tgz</filename>.</para>
|
|
|
|
<para>Knowing this, you can use the following command to
|
|
install the English PDF FAQ package.</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg_add ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/packages/faq.en_US.ISO8859-1.pdf.tgz</userinput></screen>
|
|
|
|
<para>Having done that, you can use &man.pkg.info.1; to determine
|
|
where the file has been installed.</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg_info -f faq.en_US.ISO8859-1.pdf</userinput>
|
|
Information for faq.en_US.ISO8859-1.pdf:
|
|
|
|
Packing list:
|
|
Package name: faq.en_US.ISO8859-1.pdf
|
|
CWD to /usr/share/doc/en_US.ISO8859-1/books/faq
|
|
File: book.pdf
|
|
CWD to .
|
|
File: +COMMENT (ignored)
|
|
File: +DESC (ignored)</screen>
|
|
|
|
<para>As you can see, <filename>book.pdf</filename> will
|
|
have been installed into
|
|
<filename>/usr/share/doc/en_US.ISO8859-1/books/faq</filename>.</para>
|
|
|
|
<para>If you do not want to use the packages then you will have to
|
|
download the compressed files yourself, uncompress them, and then
|
|
copy the appropriate documents into place.</para>
|
|
|
|
<para>For example, the split HTML version of the FAQ,
|
|
compressed using &man.bzip2.1;, can be found in the
|
|
<filename>doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2</filename>
|
|
file. To download and uncompress that file you would have
|
|
to do this.</para>
|
|
|
|
<screen>&prompt.root; <userinput>fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2</userinput>
|
|
&prompt.root; <userinput>bzip2 -d book.html-split.tar.bz2</userinput>
|
|
&prompt.root; <userinput>tar xvf book.html-split.tar</userinput></screen>
|
|
|
|
<para>You will be left with a collection of
|
|
<filename>.html</filename> files. The main one is called
|
|
<filename>index.html</filename>, which will contain the
|
|
table of contents, introductory material, and links to the
|
|
other parts of the document. You can then copy or move
|
|
these to their final location as necessary.</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="&url.books.handbook;/eresources.html#ERESOURCES-MAIL">Handbook
|
|
entry on mailing-lists</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="y2k">
|
|
<para>Where do I find the FreeBSD Y2K info?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can find full information in the <ulink
|
|
url="&url.base;/y2kbug.html">FreeBSD Y2K page</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="newsgroups">
|
|
<para>What FreeBSD news groups are available?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can find full information in the <ulink
|
|
url="&url.books.handbook;/eresources-news.html">Handbook entry on
|
|
newsgroups</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="irc">
|
|
<para>Are there FreeBSD IRC (Internet Relay Chat)
|
|
channels?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, most major IRC networks host a FreeBSD chat
|
|
channel:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on
|
|
<ulink url="http://www.efnet.org/index.php">EFNet</ulink>
|
|
is a FreeBSD forum, but do not go there for tech
|
|
support or try to get folks there to help you avoid
|
|
the pain of reading manual 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 <hostid>irc.chat.org</hostid>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSDhelp</literal> on
|
|
<ulink url="http://www.efnet.org/index.php">EFNet</ulink>
|
|
is a channel dedicated to helping FreeBSD users. They
|
|
are much more sympathetic to questions than
|
|
<literal>#FreeBSD</literal> is.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on
|
|
<ulink url="http://www.dal.net/">DALNET</ulink>
|
|
is available at <hostid>irc.dal.net</hostid> in the
|
|
US and <hostid>irc.eu.dal.net</hostid> in Europe.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on
|
|
<ulink url="http://www.undernet.org/">UNDERNET</ulink>
|
|
is available at <hostid>us.undernet.org</hostid>
|
|
in the US and <hostid>eu.undernet.org</hostid> in Europe.
|
|
Since it is a help channel, be prepared to read the
|
|
documents you are referred to.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on <ulink
|
|
url="http://www.hybnet.net/">HybNet</ulink>. This channel
|
|
<emphasis>is</emphasis> a help channel. A list of servers
|
|
can be found on the <ulink
|
|
url="http://www.hybnet.net/">HybNet web site</ulink>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<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 <emphasis>all</emphasis> types of IRC
|
|
traffic, if you are easily offended or cannot deal with
|
|
lots of young people (and more than a few older ones)
|
|
doing the verbal equivalent of jello wrestling, do not
|
|
even bother with it.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="training">
|
|
<para>Where can I get commercial FreeBSD training and support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>DaemonNews provides commercial training and support for
|
|
FreeBSD. More information can be found at their
|
|
<ulink url="http://www.bsdmall.com/">BSD Mall</ulink>
|
|
site.</para>
|
|
|
|
<para>FreeBSD Services Ltd provide commercial support for FreeBSD
|
|
in the UK (as well as selling FreeBSD on DVD). See their
|
|
<ulink url="http://www.freebsd-services.com">web site</ulink>
|
|
for more information.</para>
|
|
|
|
<para>The FreeBSD Mall provides commercial FreeBSD support.
|
|
You can get more information at their <ulink
|
|
url="http://www.freebsdmall.com/">web site</ulink>.</para>
|
|
|
|
<para>Any other organizations providing training and support should
|
|
contact the project in order to be listed here.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="install">
|
|
<chapterinfo>
|
|
<author>
|
|
<firstname>Nik</firstname>
|
|
<surname>Clayton</surname>
|
|
<affiliation>
|
|
<address><email>nik@FreeBSD.org</email></address>
|
|
</affiliation>
|
|
</author>
|
|
</chapterinfo>
|
|
|
|
<title>Installation</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="floppy-download">
|
|
<para>Which file do I download to get FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For 4.X you need two floppy images:
|
|
<filename>floppies/kernel.flp</filename> and
|
|
<filename>floppies/mfsroot.flp</filename>. These images need to
|
|
be copied onto floppies by tools like
|
|
<command>fdimage</command> or &man.dd.1;.
|
|
In &os; 5.3 and later, the boot floppies have been restructured
|
|
and you need <filename>floppies/boot.flp</filename> and
|
|
all the <filename>floppies/kern<replaceable>X</replaceable></filename>
|
|
files (of which there are currently two).</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>
|
|
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>base/ (bin/ in 4.X)</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>manpages/</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>compat*/</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>doc/</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>src/ssys.*</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
|
|
<para>Full instructions on this procedure and a little bit more
|
|
about installation issues in general can be found in the
|
|
<ulink url="&url.books.handbook;/install.html">Handbook entry on
|
|
installing FreeBSD</ulink>.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="floppy-image-too-large">
|
|
<para>What do I do if the floppy images does not fit on a single
|
|
floppy?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>A 3.5 inch (1.44MB) floppy can accommodate 1474560 bytes
|
|
of data. The boot image is exactly 1474560 bytes in size.</para>
|
|
|
|
<para>Common mistakes when preparing the boot floppy are:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Not downloading the floppy image in
|
|
<emphasis>binary</emphasis> mode when using
|
|
<acronym>FTP</acronym>.</para>
|
|
|
|
|
|
<para>Some FTP clients default their transfer mode to
|
|
<emphasis>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>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 <command>copy</command> command (or
|
|
equivalent GUI tool) to transfer the boot image to
|
|
floppy.</para>
|
|
|
|
<para>Programs like <command>copy</command> 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
|
|
<quote>raw</quote>, using the low-level tools (e.g.
|
|
<command>fdimage</command> or <command>rawrite</command>)
|
|
described in the <ulink
|
|
url="&url.books.handbook;/install.html">installation guide to
|
|
FreeBSD</ulink>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="install-instructions-location">
|
|
<para>Where are the instructions for installing FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Installation instructions can be found in the
|
|
<ulink url="&url.books.handbook;/install.html">Handbook entry on installing FreeBSD</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="need-to-run">
|
|
<para>What do I need in order to run FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For versions prior to 5.X, you will need a 386 or better
|
|
PC, with 5 MB or more of RAM
|
|
and at least 60 MB of hard disk space. The &os;
|
|
installation process requires somewhat more memory so in
|
|
practice, 16 MB of RAM is a minimum requirement for a
|
|
standalone &os; system.</para>
|
|
|
|
<para>For &os; 5.X and later you will need a 486 or better
|
|
PC, with 24 MB or more of RAM and at least 150 MB of hard disk
|
|
space.</para>
|
|
|
|
<para>All versions of &os; 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 <xref linkend="hardware">.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="four-meg-ram-install">
|
|
<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. FreeBSD 2.2 and later
|
|
needs at least 5MB, and &os; 5.X and later need at least 8MB to
|
|
install on a new system.</para>
|
|
|
|
<para>All versions of FreeBSD prior to 5.X will <emphasis>run</emphasis>
|
|
in 4MB of RAM, they just cannot 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 swap your disk into
|
|
a system which has >4MB, install onto the disk and then
|
|
swap it back.</para>
|
|
|
|
<para>After the installation, if you build a custom kernel,
|
|
it will run in 4 MB. Someone has even successfully booted
|
|
with 2 MB, although the system was almost unusable.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="custom-boot-floppy">
|
|
<para>How can I make my own custom install floppy?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Currently there is no way to <emphasis>just</emphasis>
|
|
make a custom install floppy. You have to cut a whole new
|
|
release, which will include your install floppy.</para>
|
|
|
|
<para>To make a custom release, follow the instructions in the
|
|
<ulink url="&url.articles.releng;/article.html">Release
|
|
Engineering</ulink> article.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="multiboot">
|
|
<para>Can I have more than one operating system on my PC?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Have a look at
|
|
<ulink url="&url.articles.multi-os;/index.html">
|
|
the multi-OS page</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="windows-coexist">
|
|
<para>Can &windows; co-exist with FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Install &windows; first, then FreeBSD.
|
|
FreeBSD's boot manager will then manage to boot &windows; and
|
|
FreeBSD. If you install &windows; second, it will boorishly
|
|
overwrite your boot manager without even asking. If that
|
|
happens, see the next section.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="win95-damaged-boot-manager">
|
|
<para>&windows; 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 three ways:</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>
|
|
|
|
<screen><prompt>...\TOOLS></prompt> <userinput>bootinst.exe boot.bin</userinput></screen>
|
|
|
|
<para>and the boot manager will be reinstalled.</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 <quote>Boot Manager</quote>. 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>
|
|
|
|
<listitem>
|
|
<para>Boot the FreeBSD boot floppy (or CDROM) and choose the
|
|
<quote>Fixit</quote> menu item. Select either the Fixit
|
|
floppy or CDROM #2 (the <quote>live</quote> filesystem
|
|
option) as appropriate and enter the fixit shell. Then
|
|
execute the following command:</para>
|
|
|
|
<screen><prompt>Fixit#</prompt> <userinput>fdisk -B -b /boot/boot0 <replaceable>bootdevice</replaceable></userinput></screen>
|
|
|
|
<para>substituting <replaceable>bootdevice</replaceable> for
|
|
your real
|
|
boot device such as <devicename>ad0</devicename> (first IDE
|
|
disk), <devicename>ad4</devicename> (first IDE disk on
|
|
auxiliary controller), <devicename>da0</devicename> (first
|
|
SCSI disk), etc.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="boot-on-thinkpad">
|
|
<para>My A, T, or X series IBM Thinkpad locks up when I first
|
|
booted up my FreeBSD installation. How can I solve this?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>A bug in early revisions of IBM's BIOS on these machines
|
|
mistakenly identifies the FreeBSD partition as a potential FAT
|
|
suspend-to-disk partition. When the BIOS tries to parse the
|
|
FreeBSD partition it hangs.</para>
|
|
|
|
<para>According to IBM<footnote><para>In an e-mail from Keith
|
|
Frechette
|
|
<email>kfrechet@us.ibm.com</email>.</para></footnote>, the
|
|
following model/BIOS release numbers incorporate the fix.</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Model</entry>
|
|
<entry>BIOS revision</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>T20</entry>
|
|
<entry>IYET49WW or later</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>T21</entry>
|
|
<entry>KZET22WW or later</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>A20p</entry>
|
|
<entry>IVET62WW or later</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>A20m</entry>
|
|
<entry>IWET54WW or later</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>A21p</entry>
|
|
<entry>KYET27WW or later</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>A21m</entry>
|
|
<entry>KXET24WW or later</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>A21e</entry>
|
|
<entry>KUET30WW</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>It has been reported that later IBM BIOS revisions may
|
|
have reintroduced the bug. <ulink
|
|
url="http://docs.FreeBSD.org/cgi/mid.cgi?20010427133759.A71732">This
|
|
message</ulink> from Jacques Vidrine to the &a.mobile;
|
|
describes a procedure which may work if your newer IBM
|
|
laptop does not boot FreeBSD properly, and you can upgrade
|
|
or downgrade the BIOS.</para>
|
|
|
|
<para>If you have an earlier BIOS, and upgrading is not an option, a
|
|
workaround is to install FreeBSD, change the partition ID FreeBSD
|
|
uses, and install new boot blocks that can handle the different
|
|
partition ID.</para>
|
|
|
|
<para>First, you will need to restore the machine to a state where
|
|
it can get through its self-test screen. Doing this requires
|
|
powering up the machine without letting it find a FreeBSD
|
|
partition on its primary disk. One way is to remove the hard disk
|
|
and temporarily move it to an older ThinkPad (such as a ThinkPad
|
|
600) or a desktop PC with an appropriate conversion cable. Once
|
|
it is there, you can delete the FreeBSD partition and move the hard
|
|
disk back. The ThinkPad should now be in a bootable state
|
|
again.</para>
|
|
|
|
<para>With the machine functional again, you can use the workaround
|
|
procedure described here to get a working FreeBSD
|
|
installation.</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Download <filename>boot1</filename> and
|
|
<filename>boot2</filename> from <ulink
|
|
url="http://people.FreeBSD.org/~bmah/ThinkPad/"></ulink>.
|
|
Put these files somewhere you will be able to retrieve them
|
|
later.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Install FreeBSD as normal on to the ThinkPad.
|
|
<emphasis>Do not</emphasis> use <literal>Dangerously
|
|
Dedicated</literal> mode. <emphasis>Do not</emphasis>
|
|
reboot when the install has finished.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Either switch to the <quote>Emergency Holographic
|
|
Shell</quote> (<keycombo action="simul"><keycap>ALT</keycap>
|
|
<keycap>F4</keycap></keycombo>) or start a
|
|
<quote>fixit</quote> shell.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Use &man.fdisk.8; to change the FreeBSD partition ID from
|
|
<literal>165</literal> to <literal>166</literal> (this is the
|
|
type used by OpenBSD).</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Bring the <filename>boot1</filename> and
|
|
<filename>boot2</filename> files to the local
|
|
filesystem.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Use &man.disklabel.8; to write <filename>boot1</filename>
|
|
and <filename>boot2</filename> to your FreeBSD slice.</para>
|
|
|
|
<screen>&prompt.root; <userinput>disklabel -B -b boot1 -s boot2 ad0s<replaceable>n</replaceable></userinput></screen>
|
|
|
|
<para><replaceable>n</replaceable> is the number of the slice
|
|
where you installed FreeBSD.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Reboot. At the boot prompt you will be given the option
|
|
of booting <literal>OpenBSD</literal>. This will actually
|
|
boot FreeBSD.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>Getting this to work in the case where you want to dual boot
|
|
OpenBSD and FreeBSD on the same laptop is left as an exercise for
|
|
the reader.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="install-bad-blocks">
|
|
<para>Can I install on a disk with bad blocks?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can, but it is a bad idea.</para>
|
|
|
|
<para>If you are seeing bad block errors with a modern IDE
|
|
drive, chances are the drive is going to die very soon (the
|
|
drive's internal remapping functions are no longer sufficient
|
|
to fix the bad blocks, which means the disk is heavily
|
|
corrupted); we suggest you buy a new hard drive.</para>
|
|
|
|
<para>If you have a SCSI drive with bad blocks, see
|
|
<link linkend="awre">this answer</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bad144-3x-4x">
|
|
<para>I have just upgraded from 3.X to 4.X, and my first boot
|
|
failed with <errorname>bad sector table not
|
|
supported</errorname></para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD 3.X and earlier supported
|
|
<command>bad144</command>, which automatically remapped
|
|
bad blocks. FreeBSD 4.X and later do not support this, as
|
|
modern IDE drives include this functionality. See <link
|
|
linkend="install-bad-blocks">this question</link> for
|
|
more information.</para>
|
|
|
|
<para>To fix this after an upgrade, you need to physically
|
|
place the drive in a working system and use
|
|
&man.disklabel.8; as discussed in the following
|
|
questions.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="find-bad144">
|
|
<para>How do I tell if a drive has <command>bad144</command>
|
|
information on it before I try to upgrade to FreeBSD 4.0
|
|
and it fails?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use &man.disklabel.8; for this. <command>disklabel -r
|
|
<replaceable>drive device</replaceable></command> will
|
|
give you the contents of your disk label. Look for a
|
|
<literal>flags</literal> field. If you see
|
|
<literal>flags: badsect</literal>, this drive is using
|
|
bad144. For example, the following drive has
|
|
<command>bad144</command> enabled.:</para>
|
|
|
|
<screen>&prompt.root; <userinput>disklabel -r wd0</userinput>
|
|
# /dev/rwd0c:
|
|
type: ESDI
|
|
disk: wd0s1
|
|
label:
|
|
flags: badsect
|
|
bytes/sector: 512
|
|
sectors/track: 63</screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="disable-bad144">
|
|
<para>How do I remove <command>bad144</command> from my
|
|
pre-4.X system so I can upgrade safely?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use <command>disklabel -e -rwd0 </command> to edit the
|
|
disklabel in place. Just remove the word
|
|
<literal>badsect</literal> from the flags field, save, and
|
|
exit. The bad144 file will still take up some space on
|
|
your drive, but the disk itself will be usable.</para>
|
|
|
|
<para>We still recommend you purchase a new disk if you have
|
|
a large number of bad blocks.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="boot-floppy-strangeness">
|
|
<para>Strange things happen when I boot the install floppy!
|
|
What is happening?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are 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>
|
|
|
|
<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 cover disk that has 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? (do not 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 are using &windows; 95 or 98 did you run
|
|
<command>fdimage</command> or
|
|
<command>rawrite</command> in pure DOS mode? These
|
|
operating systems 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>There have also been reports of &netscape; causing problems
|
|
when downloading the boot floppy, so it is probably best to use
|
|
a different FTP client if you can.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="no-install-cdrom">
|
|
<para>I booted from my ATAPI CDROM, but the install program
|
|
says no CDROM is found. Where did it go?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The usual cause of this problem is a mis-configured CDROM
|
|
drive. Many PCs now ship with the CDROM as the slave device on
|
|
the secondary IDE controller, with no master device on that
|
|
controller. This is illegal according to the ATAPI specification,
|
|
but &windows; plays fast and loose with the specification, and the
|
|
BIOS ignores it when booting. This is why the BIOS was able to
|
|
see the CDROM to boot from it, but why FreeBSD cannot see it to
|
|
complete the install.</para>
|
|
|
|
<para>Reconfigure your system so that the CDROM is either the
|
|
master device on the IDE controller it is attached to, or make
|
|
sure that it is the slave on an IDE controller that also has a
|
|
master device.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="install-PLIP">
|
|
<para>Can I install on my laptop over PLIP (Parallel Line
|
|
IP)?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Use a standard Laplink cable. If necessary, you
|
|
can check out the <ulink url="&url.books.handbook;/network-plip.html">PLIP
|
|
section of the Handbook</ulink> for details on parallel
|
|
port networking.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="geometry">
|
|
<para>Which geometry should I use for a disk drive?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<note>
|
|
<para>By the <quote>geometry</quote> of a disk, we mean
|
|
the number of cylinders, heads and sectors/track on a
|
|
disk. We will 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>
|
|
</note>
|
|
|
|
<para>This causes a lot of confusion among new system
|
|
administrators. First of all, the
|
|
<emphasis>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
|
|
<quote>the</quote> physical geometry, as the sector
|
|
density varies across the disk. What manufacturers claim
|
|
is the <quote>physical geometry</quote> is usually the
|
|
geometry that they have determined wastes the least
|
|
space. For IDE disks, FreeBSD does work in terms of C/H/S,
|
|
but all modern drives internally convert this into block
|
|
references.</para>
|
|
|
|
<para>All that matters is the <emphasis>logical</emphasis>
|
|
geometry. This is the answer that the BIOS gets when it
|
|
asks the drive <quote>what is your geometry?</quote> It
|
|
then uses this geometry to access the disk. As FreeBSD
|
|
uses the BIOS when booting, it is 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 <quote>support for
|
|
DOS disks >1GB</quote> or something similar). If it is
|
|
turned off, then use <replaceable>N</replaceable>
|
|
cylinders, 64 heads and 32 sectors/track, where
|
|
<replaceable>N</replaceable> 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>is</emphasis> turned on (it is often
|
|
supplied this way to get around certain limitations in
|
|
&ms-dos;) and the disk capacity is more than 1GB, use M
|
|
cylinders, 63 sectors per track (<emphasis>not</emphasis>
|
|
64), and 255 heads, where <literal>M</literal> 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 BIOS should then detect the
|
|
correct geometry, and you can always remove the DOS
|
|
partition in the partition editor if you do not want to
|
|
keep it. You might want to leave it around for
|
|
programming network cards and the like, however.</para>
|
|
|
|
<para>Alternatively, there is a freely available utility
|
|
distributed with FreeBSD called
|
|
<filename>pfdisk.exe</filename>. You can find it in the
|
|
<filename>tools</filename> subdirectory on the FreeBSD
|
|
CDROM or on the various FreeBSD FTP sites. This program
|
|
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 id="disk-divide-restrictions">
|
|
<para>Are there 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 id="disk-manager">
|
|
<para>Is FreeBSD compatible with any disk managers?</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 do not
|
|
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 are
|
|
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 FreeBSD boot partition and the slice for
|
|
the other operating system are in the first 1024 cylinders. If
|
|
you are reasonably careful, a 20 megabyte boot partition should
|
|
be plenty.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="missing-os">
|
|
<para>When I boot FreeBSD for the first time after install I get <errorname>Missing Operating
|
|
System</errorname>. What is happening?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is classically a case of FreeBSD and DOS or some other
|
|
OS conflicting over their ideas of disk <link
|
|
linkend="geometry">geometry</link>. You will have to reinstall
|
|
FreeBSD, but obeying the instructions given above will almost
|
|
always get you going.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="stop-at-boot-manager">
|
|
<para>Why can I not get past the boot manager's <prompt>F?</prompt>
|
|
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 <quote>>1GB drive
|
|
support</quote>), try toggling its setting and reinstalling
|
|
FreeBSD.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="need-complete-sources">
|
|
<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 <literal>base</literal> source
|
|
kit, which includes several of the files mentioned here, and
|
|
the <literal>sys</literal> (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 &man.config.8;.
|
|
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
|
|
(due to 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.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="need-kernel">
|
|
<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 much friendlier kernel
|
|
configuration methods. In 4.X and earlier, when at the FreeBSD boot prompt (boot:),
|
|
use the <option>-c</option> 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. In &os; 5.X and later
|
|
this has been replaced by much more flexible "hints" which
|
|
can be set from the loader prompt.</para>
|
|
|
|
<para>It may still be worthwhile building a new
|
|
kernel containing just the drivers that you need, just to save a
|
|
bit of RAM, but it is no longer necessary for most
|
|
systems.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="password-encryption">
|
|
<para>Should I use DES, Blowfish, or MD5 passwords and how
|
|
do I specify which form my users receive?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The default password format on FreeBSD is to use
|
|
<emphasis>MD5</emphasis>-based passwords. These are
|
|
believed to be more secure than the traditional &unix;
|
|
password format, which used a scheme based on the
|
|
<emphasis>DES</emphasis> algorithm. DES passwords are
|
|
still available if you need to share your password file
|
|
with legacy operating systems which still use the less
|
|
secure password format (they are available if you choose
|
|
to install the <quote>crypto</quote> distribution in
|
|
sysinstall, or by installing the crypto sources if
|
|
building from source). Installing the crypto libraries
|
|
will also allow you to use the Blowfish password format,
|
|
which is more secure. Which password format to use for
|
|
new passwords is controlled by the
|
|
<quote>passwd_format</quote> login capability in
|
|
<filename>/etc/login.conf</filename>, which takes values
|
|
of <quote>des</quote>, <quote>blf</quote> (if these are
|
|
available) or <quote>md5</quote>. See the
|
|
&man.login.conf.5; manual page for more information about
|
|
login capabilities.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="boot-floppy-hangs">
|
|
<para>Why does the boot floppy start, but hang at the
|
|
<literal>Probing Devices...</literal> screen?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>If you have a IDE &iomegazip; 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 id="panic-on-install-reboot">
|
|
<para>Why do I get a <errorname>panic: can't mount root</errorname>
|
|
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>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>For FreeBSD 3.3 and later, reboot the system and hit
|
|
<keycap>Enter</keycap> at the <literal>Booting kernel
|
|
in 10 seconds; hit [Enter] to interrupt</literal> prompt.
|
|
This will drop you into the boot loader.</para>
|
|
|
|
<para>Then type
|
|
<literal>
|
|
set root_disk_unit="<replaceable>disk_number</replaceable>"
|
|
</literal>. <replaceable>disk_number</replaceable>
|
|
will be <literal>0</literal> if FreeBSD is installed on
|
|
the master drive on the first IDE controller,
|
|
<literal>1</literal> if it is installed on the slave on
|
|
the first IDE controller, <literal>2</literal> if it is
|
|
installed on the master of the second IDE controller, and
|
|
<literal>3</literal> if it is installed on the slave of
|
|
the second IDE controller.</para>
|
|
|
|
<para>Then type <literal>boot</literal>, and your system
|
|
should boot correctly.</para>
|
|
|
|
<para>To make this change permanent (ie so you do not
|
|
have to do this every time you reboot or turn on
|
|
your FreeBSD machine), put the line <literal>
|
|
root_disk_unit="<replaceable>disk_number</replaceable>"</literal>
|
|
in <filename>/boot/loader.conf.local
|
|
</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If using FreeBSD 3.2 or earlier, at the Boot:
|
|
prompt, enter <literal>1:wd(2,a)kernel</literal> and
|
|
press <keycap>Enter</keycap>. If the system starts,
|
|
then run the command <command>echo "1:wd(2,a)kernel"
|
|
> /boot.config</command> 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="&url.books.handbook;/kernelconfig.html">Rebuild
|
|
your kernel,</ulink> modify the wd configuration lines to
|
|
read:</para>
|
|
|
|
<programlisting>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</programlisting>
|
|
|
|
<para>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>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="memory-limits">
|
|
<para>What are the limits for memory?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The limit is 4 gigabytes on a standard &i386; install.
|
|
Beginning with &os; versions 4.9 and 5.1, more memory can be
|
|
supported through &man.pae.4;. This does require a kernel
|
|
recompile, with an extra option to enable PAE:</para>
|
|
|
|
<programlisting>options PAE</programlisting>
|
|
|
|
<para>&os;/pc98 has a limit of 4 GB memory, and PAE can not
|
|
be used with it. On &os;/alpha, the limit on memory depends
|
|
on the type of hardware in use - consult the Alpha Hardware
|
|
Release Notes for details. Other architectures
|
|
supported by &os; have much higher theoretical limits on
|
|
maximum memory (many terabytes).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ffs-limits">
|
|
<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, or 4TB with a block size of 4K.</para>
|
|
|
|
<table>
|
|
<title>Maximum file sizes</title>
|
|
|
|
<tgroup cols="5">
|
|
<thead>
|
|
<row>
|
|
<entry>fs block size</entry>
|
|
|
|
<entry>2.2.7-stable</entry>
|
|
|
|
<entry>3.0-current</entry>
|
|
|
|
<entry>works</entry>
|
|
|
|
<entry>should work</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>4K</entry>
|
|
|
|
<entry>4T-1</entry>
|
|
|
|
<entry>4T-1</entry>
|
|
|
|
<entry>4T-1</entry>
|
|
|
|
<entry>>4T</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>8K</entry>
|
|
|
|
<entry>>32G</entry>
|
|
|
|
<entry>8T-1</entry>
|
|
|
|
<entry>>32G</entry>
|
|
|
|
<entry>32T-1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>16K</entry>
|
|
|
|
<entry>>128G</entry>
|
|
|
|
<entry>16T-1</entry>
|
|
|
|
<entry>>128G</entry>
|
|
|
|
<entry>32T-1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>32K</entry>
|
|
|
|
<entry>>512G</entry>
|
|
|
|
<entry>32T-1</entry>
|
|
|
|
<entry>>512G</entry>
|
|
|
|
<entry>64T-1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>64K</entry>
|
|
|
|
<entry>>2048G</entry>
|
|
|
|
<entry>64T-1</entry>
|
|
|
|
<entry>>2048G</entry>
|
|
|
|
<entry>128T-1</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<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 maximum 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 id="archsw-readin-failed-error">
|
|
<para>Why do I get an error message,
|
|
<errorname>archsw.readin.failed</errorname> after compiling
|
|
and booting a new kernel?</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>
|
|
|
|
<qandaentry>
|
|
<question id="security-profiles">
|
|
<para>What are these <quote>security profiles</quote>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>A <quote>security profile</quote> is a set of configuration
|
|
options that attempts to achieve the desired ratio of security
|
|
to convenience by enabling and disabling certain programs and
|
|
other settings. For full details, see the <ulink
|
|
url="&url.books.handbook;/install-post.html#SECURITYPROFILE">Security
|
|
Profile</ulink> section of the Handbook's <ulink
|
|
url="&url.books.handbook;/install-post.html">post-install
|
|
chapter</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter
|
|
id="hardware">
|
|
<title>Hardware compatibility</title>
|
|
|
|
<sect1 id="compatibility-general">
|
|
<title>General</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="which-hardware-to-get">
|
|
<para>I want to get a piece of hardware for my FreeBSD
|
|
system. Which model/brand/type is best?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is discussed continually on the FreeBSD mailing
|
|
lists. Since hardware changes so quickly, however, we
|
|
expect this. We <emphasis>still</emphasis> strongly
|
|
recommend that you read through the Hardware notes for &os;
|
|
<ulink url="&rel.current.hardware;">&rel.current;</ulink>
|
|
or
|
|
<ulink url="&rel2.current.hardware;">&rel2.current;</ulink>
|
|
and search the mailing list
|
|
<ulink url="http://www.FreeBSD.org/search/#mailinglists">
|
|
archives</ulink> before asking about the latest and
|
|
greatest hardware. Chances are a discussion about the
|
|
type of hardware you are looking for took place just last
|
|
week.</para>
|
|
|
|
<para>If you are looking for a laptop, check the
|
|
FreeBSD-mobile mailing list archives. Otherwise, you
|
|
probably want the archives for FreeBSD-questions, or
|
|
possibly a specific mailing list for a particular hardware
|
|
type.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-processors">
|
|
<title>Architectures and processors</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="architectures">
|
|
<para>Does FreeBSD support architectures other than the x86?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>Yes. FreeBSD currently runs on the Intel x86 and DEC (now
|
|
Compaq) Alpha architectures. As of FreeBSD 5.0, the
|
|
AMD64 and Intel EM64T, IA-64, and &sparc64; architectures are also
|
|
supported.
|
|
Upcoming platforms are
|
|
&mips; and &powerpc;, join the &a.ppc; or the
|
|
&a.mips; respectively for more information about ongoing
|
|
work on these platforms. For general discussion on new
|
|
architectures, join the &a.platforms;.</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 id="smp-support">
|
|
<para>Does FreeBSD support Symmetric Multiprocessing
|
|
(SMP)?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. SMP was enabled by default in the
|
|
<emphasis>GENERIC</emphasis> kernel as of &os; 5.2.</para>
|
|
|
|
<para>The intention was also to enable it by default for
|
|
the &os; 5.3 release, but problems running the SMP kernel
|
|
on certain UP machines led to the decision to disable it
|
|
until those problems can be addressed. This is a priority
|
|
for &os; 5.4.</para>
|
|
|
|
<para>In &os; 4.X, SMP is not enabled in the default kernel,
|
|
so you must recompile your kernel to enable SMP. Take a
|
|
look at <filename>/sys/i386/conf/LINT</filename> to learn
|
|
which options to put in your kernel config file.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="no-math-coprocessor">
|
|
<para>I do not have a math co-processor - is that bad?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<note>
|
|
<para>This will only affect 386/486SX/486SLC owners - other
|
|
machines will have one built into the CPU.</para>
|
|
</note>
|
|
|
|
<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 <link
|
|
linkend="emul">on FP emulation</link>). In particular, drawing
|
|
arcs in X will be VERY slow. It is highly recommended that you
|
|
buy a math co-processor; it is well worth it.</para>
|
|
|
|
<note>
|
|
<para>Some math co-processors are better than others. It
|
|
pains us to say it, but nobody ever got fired for buying
|
|
Intel. Unless you are sure it works with FreeBSD, beware of
|
|
clones.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-drives">
|
|
<title>Hard drives, tape drives, and CD and DVD drives</title>
|
|
|
|
<qandaset>
|
|
|
|
<qandaentry>
|
|
<question id="supported-hard-drives">
|
|
<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 <quote>Western Digital</quote> 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 id="supported-scsi-controllers">
|
|
<para>Which SCSI controllers are supported?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the complete list in the Hardware Notes for &os;
|
|
<ulink url="&rel.current.hardware;">&rel.current;</ulink> or
|
|
<ulink url="&rel2.current.hardware;">&rel2.current;</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="tape-support">
|
|
<para>What types of tape drives are supported?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>FreeBSD supports SCSI and QIC-36 (with a QIC-02 interface).
|
|
This includes 8-mm (aka Exabyte) and DAT drives.</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 id="tape-changer-support">
|
|
<para>Does FreeBSD support tape changers?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD supports SCSI changers using the &man.ch.4;
|
|
device and the &man.chio.1; command. The details of how you
|
|
actually control the changer can be found in the &man.chio.1;
|
|
manual page.</para>
|
|
|
|
<para>If you are not using <application>AMANDA</application>
|
|
or some other product that already understands changers,
|
|
remember that they 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 id="supported-cdrom-drives">
|
|
<para>Which CDROM drives are supported by FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Any SCSI drive connected to a supported controller is
|
|
supported.</para>
|
|
|
|
<para>The following proprietary CDROM interfaces are also
|
|
supported:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Mitsumi LU002 (8bit), LU005 (16bit) and FX001D
|
|
(16bit 2x Speed).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Sony CDU 31/33A</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Sound Blaster Non-SCSI CDROM</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Matsushita/Panasonic CDROM</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>ATAPI compatible IDE CDROMs</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>All non-SCSI cards are known to be extremely slow compared
|
|
to SCSI drives, and some ATAPI CDROMs may not work.</para>
|
|
|
|
<para>The official FreeBSD CDROM ISO, and CDROMs from Daemon
|
|
News and FreeBSD Mall, support booting directly from the
|
|
CD.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="supported-cdrw-drives">
|
|
<para>Which CD-RW drives are supported by FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD supports any ATAPI-compatible IDE CD-R or CD-RW
|
|
drive. For FreeBSD versions 4.0 and later, see the manual page for
|
|
&man.burncd.8;. For earlier FreeBSD versions, see the examples
|
|
in <filename>/usr/share/examples/atapi</filename>.</para>
|
|
|
|
<para>FreeBSD also supports any SCSI CD-R or CD-RW drives.
|
|
Install and use the <command>cdrecord</command> command from the
|
|
ports or packages system, and make sure that you have the
|
|
<devicename>pass</devicename> device compiled in your
|
|
kernel.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="zip-support">
|
|
<para>Does FreeBSD support &iomegazip; drives?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD supports SCSI and ATAPI (IDE) &iomegazip; drives out
|
|
of the box, of course. SCSI ZIP drives 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. It
|
|
is not clear which host adapters support booting from
|
|
targets other than 0 or 1, so you will have to consult
|
|
your adapter's documentation if you would like to use this
|
|
feature.</para>
|
|
|
|
<para>FreeBSD also supports Parallel Port Zip Drives. Check
|
|
that your kernel contains the
|
|
<devicename>scbus0</devicename>,
|
|
<devicename>da0</devicename>,
|
|
<devicename>ppbus0</devicename>, and
|
|
<devicename>vp0</devicename> drivers (the GENERIC kernel
|
|
contains everything except
|
|
<devicename>vp0</devicename>). With all these drivers
|
|
present, the Parallel Port drive should be available as
|
|
<devicename>/dev/da0s4</devicename>. Disks can be mounted
|
|
using <command>mount /dev/da0s4 /mnt</command> OR (for dos
|
|
disks) <command>mount_msdos /dev/da0s4 /mnt</command> as
|
|
appropriate.</para>
|
|
|
|
<para>Also check out <link linkend="jaz">the FAQ on
|
|
removable drives</link> later in this chapter, and <link
|
|
linkend="disklabel">the note on
|
|
<quote>formatting</quote></link>in the Administration
|
|
chapter.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="jaz-zip-removable-support">
|
|
<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 they should all look like SCSI disks to
|
|
FreeBSD, and the IDE EZ should look like an IDE drive.</para>
|
|
|
|
<para><anchor id="jaz">I am 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
|
|
<quote>formatting</quote></link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-kbd-mice">
|
|
<title>Keyboards and mice</title>
|
|
|
|
<qandaset>
|
|
|
|
<qandaentry>
|
|
<question id="usbkbd">
|
|
<para>Does FreeBSD support my USB keyboard?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD 4.X and later supports USB keyboards
|
|
out-of-the-box. Enable USB support in
|
|
<filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>Once you have USB keyboard support enabled on your
|
|
system, the AT keyboard becomes
|
|
<devicename>/dev/kbd0</devicename> and the USB keyboard
|
|
becomes <devicename>/dev/kbd1</devicename>, if both are
|
|
connected to the system. If there is the USB keyboard
|
|
only, it will be
|
|
<devicename>/dev/ukbd0</devicename>.</para>
|
|
|
|
<para>If you want to use the USB keyboard in the console,
|
|
you have to explicitly tell the console driver to use the
|
|
existing USB keyboard. This can be done by running the
|
|
following command as a part of system
|
|
initialization.</para>
|
|
|
|
<screen>&prompt.root; <userinput>kbdcontrol -k /dev/kbd1 < /dev/ttyv0 > /dev/null</userinput></screen>
|
|
|
|
<para>Note that if the USB keyboard is the only keyboard, it
|
|
is accessed as <devicename>/dev/kbd0</devicename>, thus,
|
|
the command should look like:</para>
|
|
|
|
<screen>&prompt.root; <userinput>kbdcontrol -k /dev/kbd0 < /dev/ttyv0 > /dev/null</userinput></screen>
|
|
|
|
<para><filename>/etc/rc.i386</filename> is a good place to
|
|
add the above command.</para>
|
|
|
|
<para>Once this is done, the USB keyboard should work in the
|
|
X environment as well without any special settings.</para>
|
|
|
|
<para>Hot-plugging and unplugging of the USB keyboard may
|
|
not work quite right yet. We recommend connecting the
|
|
keyboard before starting the system and leaving it
|
|
connected until the system is shutdown to avoid
|
|
troubles.</para>
|
|
|
|
<para>See the &man.ukbd.4; manual page for more information.</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 manufacturers as Microsoft, Logitech and
|
|
ATI. The GENERIC kernel does not include the device
|
|
driver. To build a custom kernel with the bus mouse
|
|
driver, add the following line to the kernel config
|
|
file:</para>
|
|
|
|
<programlisting>device mse0 at isa? port 0x23c irq5</programlisting>
|
|
|
|
<para>Bus mice usually come with dedicated interface cards.
|
|
These cards 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 &man.mse.4; manual page for more
|
|
information.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ps2mouse">
|
|
<para>How do I use my PS/2 (<quote>mouse port</quote> or
|
|
<quote>keyboard</quote>) mouse?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The PS/2 mouse is supported out-of-the-box. The
|
|
necessary device driver, <devicename>psm</devicename>, is
|
|
included in the kernel.</para>
|
|
|
|
<para>If your custom kernel does not have this, add the
|
|
following line to your kernel configuration and compile a
|
|
new kernel.</para>
|
|
|
|
<programlisting>device psm0 at atkbdc? irq 12</programlisting>
|
|
|
|
<para>Once the kernel detects <devicename>psm0</devicename>
|
|
correctly at boot time, make sure that an entry for
|
|
<devicename>psm0</devicename> exists in
|
|
<filename>/dev</filename>. You can create this entry by
|
|
typing:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev; sh MAKEDEV psm0</userinput></screen>
|
|
|
|
<para>when logged in as <username>root</username>.</para>
|
|
|
|
<note>
|
|
<para>You can omit this step if you are running FreeBSD
|
|
5.0-RELEASE or newer with &man.devfs.5; enabled,
|
|
since the proper device nodes will be created automatically
|
|
under <filename>/dev</filename>.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="moused">
|
|
<para>Is it possible to use a mouse in any way outside the X
|
|
Window system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are using the default console driver,
|
|
&man.syscons.4;, you can use a mouse pointer in text
|
|
consoles to cut & paste text. Run the mouse daemon,
|
|
&man.moused.8;, and turn on the mouse pointer in the
|
|
virtual console:</para>
|
|
|
|
<screen>&prompt.root; <userinput>moused -p /dev/<replaceable>xxxx</replaceable> -t <replaceable>yyyy</replaceable></userinput>
|
|
&prompt.root; <userinput>vidcontrol -m on</userinput></screen>
|
|
|
|
<para>Where <replaceable>xxxx</replaceable> is the mouse
|
|
device name and <replaceable>yyyy</replaceable> is a
|
|
protocol type for the mouse. The mouse daemon can
|
|
automatically determine the protocol type of most
|
|
mice, except old serial mice. Specify the
|
|
<literal>auto</literal> protocol to invoke automatic
|
|
detection. If automatic detection does not work, see the
|
|
&man.moused.8; manual page for a list of supported
|
|
protocol types.</para>
|
|
|
|
<para>If you have a PS/2 mouse, just add
|
|
<literal>moused_enable="YES"</literal> to
|
|
<filename>/etc/rc.conf</filename> to start the mouse
|
|
daemon at boot-time. Additionally, if you would like to
|
|
use the mouse daemon on all virtual terminals instead of
|
|
just the console, add <literal>allscreens_flags="-m
|
|
on"</literal> to <filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>When the mouse daemon is running, access to the mouse
|
|
must be coordinated between the mouse daemon and other
|
|
programs such as X Windows. Refer to the FAQ <link
|
|
linkend="x-and-moused">Why does my mouse not work with
|
|
X?</link> for more details on this issue.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="text-mode-cut-paste">
|
|
<para>How do I cut and paste text with a mouse in the text
|
|
console?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Once you get the mouse daemon running (see the <link
|
|
linkend="moused">previous section</link>), hold down the
|
|
button 1 (left button) and move the mouse to select a
|
|
region of text. Then, press the button 2 (middle button)
|
|
to paste it at the text cursor. Pressing button 3 (right
|
|
button) will <quote>extend</quote> the selected region of
|
|
text.</para>
|
|
|
|
<para>If your mouse does not have a middle button, you may
|
|
wish to emulate one or remap buttons using mouse daemon
|
|
options. See the &man.moused.8; manual page for
|
|
details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mouse-wheel-buttons">
|
|
<para>My mouse has a fancy wheel and buttons. Can I use them in
|
|
FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The answer is, unfortunately, <quote>It depends</quote>.
|
|
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>
|
|
|
|
<para>For the possible usage of wheels in the X Window
|
|
environment, refer to <link linkend="x-and-wheel">that
|
|
section</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="laptop-mouse-trackball">
|
|
<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>. Also check out the <ulink
|
|
url="http://www.FreeBSD.org/docs.html#PAO">Mobile
|
|
Computing page</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-networking">
|
|
<title>Networking and serial devices</title>
|
|
|
|
<qandaset>
|
|
|
|
<qandaentry>
|
|
<question id="network-cards">
|
|
<para>Which network cards does FreeBSD support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the Hardware Notes supplied with each release of
|
|
FreeBSD for a more
|
|
complete list.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="internal-plugnplay-modem">
|
|
<para>Why is FreeBSD not finding my internal Plug & Play
|
|
modem?</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 <literal>controller pnp0</literal> 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 <literal>SUP1310</literal> in the structure
|
|
<literal>siopnp_ids[]</literal> 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 <literal>pnp</literal> command in the boot-time
|
|
configuration with a command like</para>
|
|
|
|
<programlisting>pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8</programlisting>
|
|
|
|
<para>to make the modem show.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="support-winmodem">
|
|
<para>Does FreeBSD support software modems, such as Winmodems?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD supports many software modems via add-on
|
|
software. The <filename role="package">comms/ltmdm</filename> port adds
|
|
support for modems based on the very popular Lucent LT
|
|
chipset. The <filename role="package">comms/mwavem</filename> port
|
|
supports the modem in IBM Thinkpad 600 and 700
|
|
laptops.</para>
|
|
|
|
<para>You cannot install FreeBSD via a software modem; this
|
|
software must be installed after the OS is
|
|
installed.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="support-broadcom">
|
|
<para>Is there a native driver for the Broadcom 43xx cards?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>No, and there is not likely to be.</para>
|
|
|
|
<para>Broadcom refuses to publically release programming
|
|
information for their wireless chipsets, most likely because
|
|
they use software controlled radios. In order to get FCC type
|
|
acceptance for their parts, they have to ensure that users
|
|
cannot arbitrarily set things like operating frequencies,
|
|
modulation parameters and power output. But without knowing
|
|
how to program the chipsets, it is nearly impossible to write
|
|
a driver.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="multiport-serial-support">
|
|
<para>Which multi-port serial cards are supported by
|
|
FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is a list of these in the <ulink
|
|
url="&url.books.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 &man.sio.4; manual page to get more
|
|
information on configuring such cards.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="serial-console-prompt">
|
|
<para>How do I get the boot: prompt to show on the serial
|
|
console?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Build a kernel with
|
|
<literal>options COMCONSOLE</literal>.</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>See
|
|
<filename>/usr/src/sys/i386/boot/biosboot/README.serial</filename>
|
|
for information.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-sound">
|
|
<title>Sound devices</title>
|
|
|
|
<qandaset>
|
|
|
|
<qandaentry>
|
|
<question id="sound-card-support">
|
|
<para>Which sound cards are supported by FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports various sound cards including the &soundblaster;,
|
|
&soundblaster; Pro, &soundblaster; 16, Pro Audio Spectrum 16,
|
|
AdLib, and Gravis UltraSound sound cards (for more details,
|
|
see <ulink url="&url.base;/releases/">&os; Release Information</ulink>
|
|
and the &man.snd.4; manual page).
|
|
There is also limited support for
|
|
MPU-401 and compatible MIDI cards. Cards conforming to the
|
|
µsoft; Sound System specification are also supported.</para>
|
|
|
|
<note>
|
|
<para>This is only for sound! This driver does not support
|
|
CDROMs, SCSI or joysticks on these cards, except for the
|
|
&soundblaster;. The &soundblaster; SCSI interface and some
|
|
non-SCSI CDROMs are supported, but you cannot boot off this
|
|
device.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="es1370-silent-pcm">
|
|
<para>Workarounds for no sound from es1370 with &man.pcm.4; driver?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can run the following command every time the machine
|
|
booted up:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mixer pcm 100 vol 100 cd 100</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-other">
|
|
<title>Other hardware</title>
|
|
|
|
<qandaset>
|
|
|
|
<qandaentry>
|
|
<question id="other-device-support">
|
|
<para>What other devices does FreeBSD support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <ulink
|
|
url="&url.books.handbook;/install.html#INSTALL-MISC">Handbook</ulink>
|
|
for the list of other devices supported.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="power-management-support">
|
|
<para>Does FreeBSD support power management on my laptop?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD supports <acronym>APM</acronym> on certain machines.
|
|
Please look in the <filename>LINT</filename> kernel config file,
|
|
searching for the <acronym>APM</acronym> keyword. Further
|
|
information can be found in &man.apm.4;.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="micron-hang-boot">
|
|
<para>Why does my Micron system hang 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 do not get configured at their reported addresses.</para>
|
|
|
|
<para>Disable the <quote>Plug and Play Operating System</quote>
|
|
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 id="asusk7v-boot-failure">
|
|
<para>The boot floppy hangs on a system with an ASUS K7V
|
|
motherboard. How do I fix this?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Go into the BIOS setup and disable the <quote>boot virus
|
|
protection</quote>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="micron-3comnic-failure">
|
|
<para>Why does my &tm.3com; PCI network card not 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
|
|
<quote>Plug and Play Operating System</quote> 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"></ulink></para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
|
|
</sect1>
|
|
|
|
</chapter>
|
|
|
|
<chapter id="troubleshoot">
|
|
<title>Troubleshooting</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="awre">
|
|
<para>What do I do when 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 will need to edit the first device page
|
|
mode, which can be done on FreeBSD by giving the command
|
|
(as <username>root</username>)</para>
|
|
|
|
<screen>&prompt.root; <userinput>camcontrol modepage sd0 -m 1 -e -P 3</userinput></screen>
|
|
|
|
<para>and changing the values of AWRE and ARRE from 0 to 1:-</para>
|
|
|
|
<programlisting>AWRE (Auto Write Reallocation Enbld): 1
|
|
ARRE (Auto Read Reallocation Enbld): 1</programlisting>
|
|
|
|
<para>The following paragraphs were submitted by Ted Mittelstaedt
|
|
<email>tedm@toybox.placo.com</email>:</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 the BIOS, therefore a
|
|
mechanism, bad144, exists that replaces this functionality.
|
|
bad144 only works with the wd driver (which means it is not
|
|
supported in FreeBSD 4.0), it is <emphasis>not</emphasis> 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 <quote>Bad Block</quote>
|
|
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
|
|
<quote>translated</quote> geometry with the <quote>set
|
|
geometry</quote> command in fdisk. You must also NOT use the
|
|
<quote>dangerously dedicated</quote> 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
|
|
<quote>cooperative</quote> 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 <keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>).
|
|
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 id="bustek742a-eisa-scsi">
|
|
<para>Why does FreeBSD not recognize my Bustek 742a EISA
|
|
SCSI controller?</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 <quote>versions</quote> 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 does not 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 <quote>round
|
|
robin</quote>.</para>
|
|
|
|
<para>The Buslogic cards also have a serial number on them. If
|
|
you have an 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 <quote>emulation</quote> 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>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="hpnetserver-scsi-failure">
|
|
<para>Why does FreeBSD not detect my HP Netserver's SCSI
|
|
controller?</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 <quote>true</quote> 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
|
|
<literal>EISA_SLOTS</literal> to a value of 12. Configure and
|
|
compile a kernel, as described in the <ulink
|
|
url="&url.books.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
|
|
<quote>visual</quote> interface, but the plain command-line
|
|
interface there. Simply type</para>
|
|
|
|
<programlisting>eisa 12
|
|
quit</programlisting>
|
|
|
|
<para>at the prompt, and install your system as usual. While
|
|
it is recommended you compile and install a custom kernel
|
|
anyway.</para>
|
|
|
|
<para>Hopefully, future versions will have a proper fix for
|
|
this problem.</para>
|
|
|
|
<note>
|
|
<para>You cannot use a
|
|
<literal>dangerously dedicated</literal> disk
|
|
with an HP Netserver. See <link linkend="dedicate">this
|
|
note</link> for more info.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ed1-timeout">
|
|
<para>I keep seeing messages like
|
|
<errorname>ed1: timeout</errorname>. What do these messages
|
|
mean?</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 are 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 id="bad-3c509">
|
|
<para>Why did my &tm.3com; 3C509 card stop working for no
|
|
apparent reason?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This card has a bad habit of losing its configuration
|
|
information. Refresh your card's settings with the DOS
|
|
utility <command>3c5x9.exe</command>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="printer-slow">
|
|
<para>My parallel printer is ridiculously slow. What can I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If the only problem is that the printer is terribly
|
|
slow, try changing your <ulink
|
|
url="&url.books.handbook;/printing-intro-setup.html#PRINTING-PARALLEL-PORT-MODE">printer
|
|
port mode</ulink> as discussed in the <ulink
|
|
url="&url.books.handbook;/printing-intro-setup.html">Printer
|
|
Setup</ulink> section of the Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="signal11">
|
|
<para>Why do my programs occasionally die with
|
|
<errorname>Signal 11</errorname> errors?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Signal 11 errors are caused when your process has attempted
|
|
to access memory which the operating system has not granted it
|
|
access to. If something like this is happening at seemingly
|
|
random intervals then you need to start investigating things
|
|
very carefully.</para>
|
|
|
|
<para>These problems can usually be attributed to either:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>If the problem is occurring only in a specific
|
|
application that you are developing yourself it is probably
|
|
a bug in your code.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If it is a problem with part of the base FreeBSD system,
|
|
it may also be buggy code, but more often than not these
|
|
problems are found and fixed long before us general FAQ
|
|
readers get to use these bits of code (that is what -current
|
|
is for).</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>In particular, a dead giveaway that this is
|
|
<emphasis>not</emphasis> a FreeBSD bug is if you see the
|
|
problem when you are compiling a program, but the activity
|
|
that the compiler is carrying out changes each
|
|
time.</para>
|
|
|
|
<para>For example, suppose you are running <quote>make
|
|
buildworld</quote>, and the compile fails while trying to
|
|
compile <filename>ls.c</filename> into
|
|
<filename>ls.o</filename>. If you then run <quote>make
|
|
buildworld</quote> again, and the compile fails in the same
|
|
place then this is a broken build -- try updating your sources
|
|
and try again. If the compile fails elsewhere then this is
|
|
almost certainly hardware.</para>
|
|
|
|
<para>What you should do:</para>
|
|
|
|
<para>In the first case you can use a debugger e.g. gdb to find
|
|
the point in the program which is attempting to access a bogus
|
|
address and then fix it.</para>
|
|
|
|
<para>In the second case you need to verify that it is not your
|
|
hardware at fault.</para>
|
|
|
|
<para>Common causes of this include:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Your hard disks might be overheating: Check the fans in
|
|
your case are still working, as your disk (and perhaps
|
|
other hardware might be overheating).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The processor running is overheating: This might be
|
|
because the processor has been overclocked, or the fan on
|
|
the processor might have died. In either case you need to
|
|
ensure that you have hardware running at what it is
|
|
specified to run at, at least while trying to solve this
|
|
problem. i.e. Clock it back to the default settings.</para>
|
|
|
|
<para>If you are overclocking then note that it is far cheaper
|
|
to have a slow system than a fried system that needs
|
|
replacing! Also the wider community is not often
|
|
sympathetic to problems on overclocked systems, whether you
|
|
believe it is safe or not.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Dodgy memory: If you have multiple memory SIMMS/DIMMS
|
|
installed then pull them all out and try running the
|
|
machine with each SIMM or DIMM individually and narrow the
|
|
problem down to either the problematic DIMM/SIMM or perhaps
|
|
even a combination.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Over-optimistic Motherboard settings: In your BIOS
|
|
settings, and some motherboard jumpers you have options to
|
|
set various timings, mostly the defaults will be
|
|
sufficient, but sometimes, setting the wait states on RAM
|
|
too low, or setting the <quote>RAM Speed: Turbo</quote> option, or
|
|
similar in the BIOS will cause strange behavior. A
|
|
possible idea is to set to BIOS defaults, but it might be
|
|
worth noting down your settings first!</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Unclean or insufficient power to the motherboard. If you
|
|
have any unused I/O boards, hard disks, or CDROMs in your
|
|
system, try temporarily removing them or disconnecting the
|
|
power cable from them, to see if your power supply can
|
|
manage a smaller load. Or try another power supply,
|
|
preferably one with a little more power (for instance, if
|
|
your current power supply is rated at 250 Watts try one
|
|
rated at 300 Watts).</para>
|
|
</listitem>
|
|
|
|
</orderedlist>
|
|
|
|
<para>You should also read the SIG11 FAQ (listed below) which has
|
|
excellent explanations of all these problems, albeit from a
|
|
&linux; viewpoint. It also discusses how memory testing software
|
|
or hardware can still pass faulty memory.</para>
|
|
|
|
<para>Finally, if none of this has helped it is possible that
|
|
you have just found a bug in FreeBSD, and you should follow the
|
|
instructions to send a problem report.</para>
|
|
|
|
<para>There is an extensive FAQ on this at <ulink
|
|
url="http://www.bitwizard.nl/sig11/">
|
|
the SIG11 problem FAQ</ulink></para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="trap-12-panic">
|
|
<para>My system crashes with either <errorname>Fatal
|
|
trap 12: page fault in kernel mode</errorname>, or
|
|
<errorname>panic:</errorname>, and spits out a
|
|
bunch of information. What should I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The FreeBSD developers are very interested in these
|
|
errors, but need some more information than just the
|
|
error you see. Copy your full crash message. Then
|
|
consult the FAQ section on <link linkend=
|
|
"KERNEL-PANIC-TROUBLESHOOTING">kernel panics</link>,
|
|
build a debugging kernel, and get a backtrace. This
|
|
might sound difficult, but you do not need any
|
|
programming skills; you just have to follow the
|
|
instructions.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="screen-loses-sync">
|
|
<para>Why does the screen go black and lose sync when I
|
|
boot?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is a known problem with the ATI Mach 64 video card.
|
|
The problem is that this card uses address
|
|
<literal>2e8</literal>, and the fourth serial port does too.
|
|
Due to a bug (feature?) in the &man.sio.4;
|
|
driver it will touch this port even if you do not have the
|
|
fourth serial port, and <emphasis>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>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Enter <option>-c</option> at the boot prompt.
|
|
(This will put the kernel into configuration mode).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Disable <devicename>sio0</devicename>,
|
|
<devicename>sio1</devicename>,
|
|
<devicename>sio2</devicename> and
|
|
<devicename>sio3</devicename> (all of them). This way
|
|
the sio driver does not get activated -> no
|
|
problems.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Type exit to continue booting.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>If you want to be able to use your serial ports, you will
|
|
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 the X Window System does not work properly. If this is the
|
|
case, make sure that the &xfree86; version you are using is at
|
|
least &xfree86; 3.3.3 or higher. This version and upwards has
|
|
built-in support for the Mach64 cards and even a dedicated X
|
|
server for those cards.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="reallybigram">
|
|
<para>Why does FreeBSD only use 64 MB of RAM when my system has
|
|
128 MB of RAM installed?</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 do not have room in the
|
|
bootblocks to do it. Someday when lack of room in the
|
|
bootblocks is fixed, we will use the extended BIOS functions to
|
|
get the full memory information...but for now we are stuck with
|
|
the kernel option.</para>
|
|
|
|
<para><literal>options "MAXMEM=<replaceable>n</replaceable>"</literal></para>
|
|
|
|
<para>Where <replaceable>n</replaceable> is your memory in
|
|
Kilobytes. For a 128 MB machine, you would want to use
|
|
<literal>131072</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kmem-map-too-small">
|
|
<para>My system has more than 1 GB of RAM, and I'm getting panics
|
|
with <quote>kmem_map too small</quote> messages. What is wrong?
|
|
</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Normally, FreeBSD determines a number of kernel parameters,
|
|
such as as the maximum number of files that can be open
|
|
concurrently, from the amount of memory installed in the
|
|
system. On systems with one gigabyte of RAM or more, this
|
|
<quote>auto sizing</quote> mechanism may choose values that are
|
|
too high: while starting up, the kernel allocates various tables
|
|
and other structures that fill up most of the available kernel
|
|
memory. Later on, while the system is running, the kernel has no
|
|
more space left for dynamic memory allocations, and
|
|
panics.</para>
|
|
|
|
<para>Compile your own kernel, and add the
|
|
<option>VM_KMEM_SIZE_MAX</option> to your kernel configuration
|
|
file, increasing the maximum size to 400 MB
|
|
(<option>options VM_KMEM_SIZE_MAX=419430400</option>).
|
|
400 MB appears to be sufficient for machines with up to
|
|
6 GB of memory.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="panic-kmemmap-too-small">
|
|
<para>My system does not have 1 GB of RAM, and FreeBSD still
|
|
panics with <errorname>kmem_map too small!</errorname>
|
|
</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<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=<replaceable>n</replaceable></literal></para>
|
|
|
|
<para>to your kernel config file, where
|
|
<replaceable>n</replaceable> is a number in the range
|
|
512-4096, depending on the number of concurrent TCP
|
|
connections you need to support. We 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 <command>netstat -m</command> (see
|
|
&man.netstat.1;). The default value for NMBCLUSTERS is
|
|
<literal>1024 + MAXUSERS * 64</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="proc-table-full">
|
|
<para>Why do I get the error <errorname>/kernel: proc: table
|
|
is full</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The FreeBSD kernel will only allow a certain number of
|
|
processes to exist at one time. The number is based on
|
|
the <literal>MAXUSERS</literal> option in the kernel
|
|
configuration. <literal>MAXUSERS</literal> also affects
|
|
various other in-kernel limits, such as network buffers
|
|
(see <link linkend="panic-kmemmap-too-small">this</link>
|
|
earlier question). If your machine is heavily loaded, you
|
|
probably want to increase <literal>MAXUSERS</literal>.
|
|
This will increase these other system limits in addition
|
|
to the maximum number of processes.</para>
|
|
|
|
<para>After FreeBSD 4.4, <literal>MAXUSERS</literal> became
|
|
a tunable value that could be set with
|
|
<varname>kern.maxusers</varname> in
|
|
<filename>/boot/loader.conf</filename>. In earlier
|
|
versions of FreeBSD, you need to adjust
|
|
<literal>MAXUSERS</literal> in your kernel
|
|
configuration.</para>
|
|
|
|
<para>If your machine is lightly loaded, and you are simply
|
|
running a very large number of processes, you can adjust
|
|
this with the <varname>kern.maxproc</varname> sysctl. If
|
|
these processes are being run by a single user, you will
|
|
also need to adjust <varname>kern.maxprocperuid</varname>
|
|
to be one less than your new
|
|
<varname>kern.maxproc</varname> value. (It must be at
|
|
least one less because one system program, &man.init.8;,
|
|
must always be running.)</para>
|
|
|
|
<para>To make a sysctl permanent across reboots, set this in
|
|
<filename>/etc/sysctl.conf</filename> in recent versions
|
|
of FreeBSD, or <filename>/etc/rc.local</filename> in older
|
|
versions.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cmap-busy-panic">
|
|
<para>Why do I get an error reading <errorname>CMAP
|
|
busy</errorname> 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>
|
|
|
|
<screen>&prompt.root; <userinput>rm /var/db/kvm_*.db</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="brkadrint-illegal-host-access">
|
|
<para>What does the message <errorname>ahc0: brkadrint,
|
|
Illegal Host Access at seqaddr 0x0</errorname>
|
|
mean?</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
|
|
<devicename>uha0</devicename>,
|
|
which is causing the problem.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="aci0-illegal-cable">
|
|
<para>When I boot my system, I get the error
|
|
<errorname>ahc0: illegal cable configuration</errorname>.
|
|
My cabling is correct. What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your motherboard lacks the external logic to support
|
|
automatic termination. Switch your SCSI BIOS to specify
|
|
the correct termination for your configuration rather
|
|
than automatic termination. The AIC7XXX driver cannot
|
|
determine if the external logic for cable detection (and
|
|
thus auto-termination) is available. The driver simply
|
|
assumes that this support must exist if the configuration
|
|
contained in the serial EEPROM is set to "automatic
|
|
termination". Without the external cable detection logic
|
|
the driver will often configure termination incorrectly,
|
|
which can compromise the reliability of the SCSI
|
|
bus.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mail-loopback">
|
|
<para>Why does Sendmail give me an error reading
|
|
<quote><errorname>mail loops back to
|
|
myself</errorname></quote>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is answered in the sendmail FAQ as follows:-</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 does not recognize
|
|
itself as domain.net. Add domain.net to /etc/mail/local-host-names
|
|
(if you are using FEATURE(use_cw_file)) or add "Cw domain.net"
|
|
to /etc/mail/sendmail.cf.
|
|
</literallayout>
|
|
|
|
<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
|
|
<email>mail-server@rtfm.mit.edu</email> with the command
|
|
<literal>send usenet/news.answers/mail/sendmail-faq</literal>
|
|
as the body of the message.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="remote-fullscreen">
|
|
<para>Why do 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 <literal>cons25</literal> terminal
|
|
type required by the FreeBSD console.</para>
|
|
|
|
<para>There are a number of possible work-arounds for this
|
|
problem:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>After logging on to the remote machine, set your
|
|
TERM shell variable to <literal>ansi</literal> or
|
|
<literal>sco</literal> if the remote machine knows
|
|
about these terminal types.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Use a VT100 emulator like
|
|
<application>screen</application> at the FreeBSD console.
|
|
<application>screen</application> offers you the ability
|
|
to run multiple concurrent sessions from one terminal,
|
|
and is a neat program in its own right. Each
|
|
<application>screen</application> window behaves like a
|
|
VT100 terminal, so the TERM variable at the remote end
|
|
should be set to <literal>vt100</literal>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Install the <literal>cons25</literal> 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 <command>xterm</command> or
|
|
<command>rxvt</command>. The TERM variable at the remote
|
|
host should be set to <literal>xterm</literal> or
|
|
<literal>vt100</literal>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="calcru-negative">
|
|
<para>Why does my machine print
|
|
<errorname>calcru: negative time...</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This can be caused by various hardware 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 <quote>SIGXCPU exceeded cpu time limit</quote>.</para>
|
|
|
|
<para>If the problem cannot be fixed otherwise the solution
|
|
is to set this sysctl variable:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl -w kern.timecounter.method=1</userinput></screen>
|
|
|
|
<note>
|
|
<para>The <option>-w</option> option of &man.sysctl.8; is
|
|
deprecated and silently ignored in &os; 4.4-RELEASE and all
|
|
newer versions. You can safely ommit it when setting options
|
|
with <command>sysctl</command> as shown above.</para>
|
|
</note>
|
|
|
|
<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
|
|
<literal>NTIMECOUNTER</literal> option in your kernel to
|
|
increasingly large values. If by the time you have reached
|
|
<literal>NTIMECOUNTER=20</literal> the problem is not solved,
|
|
interrupts are too hosed on your machine for reliable
|
|
time keeping.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="pcm0-not-found">
|
|
<para>I see <errorname>pcm0 not found</errorname> or my
|
|
sound card is found as <devicename>pcm1</devicename> but I
|
|
have <literal>device pcm0</literal> in my kernel config
|
|
file. What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This occurs in &os; 3.X with PCI sound cards. The
|
|
<devicename>pcm0</devicename> device is reserved
|
|
exclusively for ISA-based cards so, if you have a PCI
|
|
card, then you will see this error, and your card will
|
|
appear as <devicename>pcm1</devicename>.
|
|
|
|
<note>
|
|
<para>You cannot remove the warning by simply changing
|
|
the line in the kernel config file to <literal>device
|
|
pcm1</literal> as this will result in
|
|
<devicename>pcm1</devicename> being reserved for ISA
|
|
cards and your PCI card being found as
|
|
<devicename>pcm2</devicename> (along with the warning
|
|
<errorname>pcm1 not found</errorname>).</para>
|
|
</note>
|
|
|
|
<para>If you have a PCI sound card, you will also have to make the
|
|
<devicename>snd1</devicename> device rather than
|
|
<devicename>snd0</devicename>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev</userinput>
|
|
&prompt.root; <userinput>./MAKEDEV snd1</userinput></screen>
|
|
|
|
<para>This situation does not arise in &os; 4.X as a lot
|
|
of work has been done to make it more
|
|
<emphasis>PnP-centric</emphasis> and the
|
|
<devicename>pcm0</devicename> device is no longer reserved
|
|
exclusively for ISA cards</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="pnp-not-found">
|
|
<para>Why is my PnP card no longer found (or found as
|
|
<literal>unknown</literal>) since upgrading to FreeBSD 4.X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD 4.X is now much more <emphasis>PnP-centric</emphasis>
|
|
and this has had the side effect of some PnP devices (e.g. sound
|
|
cards and internal modems) not working even though they worked
|
|
under FreeBSD 3.X.</para>
|
|
|
|
<para>The reasons for this behavior are explained by the following
|
|
e-mail, posted to the freebsd-questions mailing list by Peter
|
|
Wemm, in answer to a question about an internal modem that was
|
|
no longer found after an upgrade to FreeBSD 4.X (the comments
|
|
in <literal>[]</literal> have been added to clarify the
|
|
context.</para>
|
|
|
|
<note>
|
|
<para>The contents of this quotation has been updated from
|
|
its original text.</para>
|
|
</note>
|
|
|
|
<blockquote>
|
|
<para>The PNP bios preconfigured it [the modem] and left it
|
|
laying around in port space, so [in 3.X] the old-style ISA
|
|
probes <quote>found</quote> it there.</para>
|
|
|
|
<para>Under 4.0, the ISA code is much more PnP-centric. It was
|
|
possible [in 3.X] for an ISA probe to find a
|
|
<quote>stray</quote> device and then for the PNP device id to
|
|
match and then fail due to resource conflicts. So, it
|
|
disables the programmable cards first so this double probing
|
|
cannot happen. It also means that it needs to know the PnP
|
|
ids for supported PnP hardware. Making this more user
|
|
tweakable is on the TODO list.</para>
|
|
</blockquote>
|
|
|
|
<para>To get the device working again requires finding its PnP id
|
|
and adding it to the list that the ISA probes use to identify
|
|
PnP devices. This is obtained using &man.pnpinfo.8; to probe the
|
|
device, for example this is the output from &man.pnpinfo.8; for
|
|
an internal modem:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pnpinfo</userinput>
|
|
Checking for Plug-n-Play devices...
|
|
|
|
Card assigned CSN #1
|
|
Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff
|
|
PnP Version 1.0, Vendor Version 0
|
|
Device Description: Pace 56 Voice Internal Plug & Play Modem
|
|
|
|
Logical Device ID: PMC2430 0x3024a341 #0
|
|
Device supports I/O Range Check
|
|
TAG Start DF
|
|
I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8
|
|
[16-bit addr]
|
|
IRQ: 4 - only one type (true/edge)</screen>
|
|
|
|
<para>[more TAG lines elided]</para>
|
|
|
|
<screen>TAG End DF
|
|
End Tag
|
|
|
|
Successfully got 31 resources, 1 logical fdevs
|
|
-- card select # 0x0001
|
|
|
|
CSN PMC2430 (0x3024a341), Serial Number 0xffffffff
|
|
|
|
Logical device #0
|
|
IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8
|
|
IRQ 5 0
|
|
DMA 4 0
|
|
IO range check 0x00 activate 0x01</screen>
|
|
|
|
<para>The information you require is in the
|
|
<quote>Vendor ID</quote> line at the start of the output. The
|
|
hexadecimal number in parentheses (0x3024a341 in this example)
|
|
is the PnP id and the string immediately before this (PMC2430)
|
|
is a unique ASCII id.</para>
|
|
|
|
<para>Alternatively, if &man.pnpinfo.8; does not list the card in
|
|
question, &man.pciconf.8; can be used instead. This is part of
|
|
the output from <command>pciconf -vl</command> for an onboard
|
|
sound chip:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pciconf -vl</userinput>
|
|
chip1@pci0:31:5: class=0x040100 card=0x00931028 chip=0x24158086 rev=0x02 hdr=0x00
|
|
vendor = 'Intel Corporation'
|
|
device = '82801AA 8xx Chipset AC'97 Audio Controller'
|
|
class = multimedia
|
|
subclass = audio</screen>
|
|
|
|
<para>Here, you would use the <varname>chip</varname> value,
|
|
<quote>0x24158086</quote>.</para>
|
|
|
|
<para>This information (Vendor ID or chip value) needs adding
|
|
to the file
|
|
<filename>/usr/src/sys/isa/sio.c</filename>.</para>
|
|
|
|
<para>You should first make a backup of <filename>sio.c</filename>
|
|
just in case things go wrong. You will also need it to make the
|
|
patch to submit with your PR (you are going to submit a PR,
|
|
are you not?) then edit <filename>sio.c</filename> and search
|
|
for the line</para>
|
|
|
|
<programlisting>static struct isa_pnp_id sio_ids[] = {</programlisting>
|
|
|
|
<para>then scroll down to find the correct place to add the entry
|
|
for your device. The entries look like this, and are sorted on
|
|
the ASCII Vendor ID string which should be included in the
|
|
comment to the right of the line of code along with all (if it
|
|
will fit) or part of the <emphasis>Device Description</emphasis>
|
|
from the output of &man.pnpinfo.8;:</para>
|
|
|
|
<programlisting>{0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */
|
|
{0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
|
|
{0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
|
|
{0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
|
|
{0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */</programlisting>
|
|
|
|
<para>Add the hexadecimal Vendor ID for your device in the
|
|
correct place, save the file, rebuild your kernel, and reboot.
|
|
Your device should now be found as an <literal>sio</literal>
|
|
device as it was under FreeBSD 3.X</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="nlist-failed">
|
|
<para>Why do I get the error <errorname>nlist failed</errorname> when
|
|
running, for example, <command>top</command> or
|
|
<command>systat</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The problem is that the application you are trying to run is
|
|
looking for a specific kernel symbol, but, for whatever reason,
|
|
cannot find it; this error stems from one of two problems:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Your kernel and userland are not synchronized (i.e., you
|
|
built a new kernel but did not do an
|
|
<maketarget>installworld</maketarget>, or vice versa), and
|
|
thus the symbol table is different from what the user
|
|
application thinks it is. If this is the case, simply
|
|
complete the upgrade process (see
|
|
<filename>/usr/src/UPDATING</filename> for the correct
|
|
sequence).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>You are not using <command>/boot/loader</command> to load
|
|
your kernel, but doing it directly from boot2 (see
|
|
&man.boot.8;). While there is nothing wrong with bypassing
|
|
<command>/boot/loader</command>, it generally does a better
|
|
job of making the kernel symbols available to user
|
|
applications.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="connection-delay">
|
|
<para>Why does it take so long to connect to my computer via
|
|
<command>ssh</command> or <command>telnet</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The symptom: there is a long delay between the time the TCP
|
|
connection is established and the time when the client software
|
|
asks for a password (or, in &man.telnet.1;'s case, when a login
|
|
prompt appears).</para>
|
|
|
|
<para>The problem: more likely than not, the delay is caused by
|
|
the server software trying to resolve the client's IP address
|
|
into a hostname. Many servers, including the Telnet and SSH
|
|
servers that come with FreeBSD, do this in order to, among
|
|
other things, store the hostname in a log file for future
|
|
reference by the administrator.</para>
|
|
|
|
<para>The remedy: if the problem occurs whenever you connect from
|
|
your computer (the client) to any server, the problem is with
|
|
the client; likewise, if the problem only occurs when someone
|
|
connects to your computer (the server) the problem is with the
|
|
server.</para>
|
|
|
|
<para>If the problem is with the client, the only remedy is to
|
|
fix the DNS so the server can resolve it. If this is on a
|
|
local network, consider it a server problem and keep reading;
|
|
conversely, if this is on the global Internet, you will most
|
|
likely need to contact your ISP and ask them to fix it for
|
|
you.</para>
|
|
|
|
<para>If the problem is with the server, and this is on a local
|
|
network, you need to configure the server to be able to resolve
|
|
address-to-hostname queries for your local address range. See
|
|
the &man.hosts.5; and &man.named.8; manual pages for more
|
|
information. If this is on the global Internet, the problem
|
|
may be that your server's resolver is not functioning
|
|
correctly. To check, try to look up another host--say,
|
|
<hostid>www.yahoo.com</hostid>. If it does not work, that is
|
|
your problem.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="stray-irq">
|
|
<para>What does <errorname>stray IRQ</errorname> mean?</para>
|
|
</question>
|
|
<answer>
|
|
<para>Stray IRQs are indications of hardware IRQ glitches,
|
|
mostly from hardware that removes its interrupt request in
|
|
the middle of the interrupt request acknowledge
|
|
cycle.</para>
|
|
<para>One has three options for dealing with this:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Live with the warnings. All except the first 5
|
|
per irq are suppressed anyway.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Break the warnings by changing 5 to 0 in
|
|
<function>isa_strayintr()</function> so that all the
|
|
warnings are suppressed.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Break the warnings by installing parallel port
|
|
hardware that uses irq 7 and the PPP driver for it (this
|
|
happens on most systems), and install an ide drive or
|
|
other hardware that uses irq 15 and a suitable driver
|
|
for it.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="file-table-full">
|
|
<para>Why does <errorname>file: table is full</errorname> show up
|
|
repeatedly in dmesg?</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
This error message indicates you have exhausted the number
|
|
of available file descriptors on your system. Please see
|
|
the <ulink
|
|
url="&url.books.handbook;/configtuning-kernel-limits.html#KERN-MAXFILES">kern.maxfiles
|
|
</ulink>section of the <ulink
|
|
url="&url.books.handbook;/configtuning-kernel-limits.html">Tuning
|
|
Kernel Limits</ulink> section of the Handbook for a
|
|
discussion and solution.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="laptop-clock-skew">
|
|
<para>Why does the clock on my laptop keep incorrect time?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your laptop has two or more clocks, and FreeBSD has chosen to
|
|
use the wrong one.</para>
|
|
|
|
<para>Run &man.dmesg.8;, and check for lines that contain
|
|
<literal>Timecounter</literal>. The last line printed is the one
|
|
that FreeBSD chose, and will almost certainly be
|
|
<literal>TSC</literal>.</para>
|
|
|
|
<screen>&prompt.root; <userinput>dmesg | grep Timecounter</userinput>
|
|
Timecounter "i8254" frequency 1193182 Hz
|
|
Timecounter "TSC" frequency 595573479 Hz</screen>
|
|
|
|
<para>You can confirm this by checking the
|
|
<varname>kern.timecounter.hardware</varname>
|
|
&man.sysctl.3;.</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.timecounter.hardware</userinput>
|
|
kern.timecounter.hardware: TSC</screen>
|
|
|
|
<para>The BIOS may modify the TSC clock—perhaps to change the
|
|
speed of the processor when running from batteries, or going into
|
|
a power saving mode, but FreeBSD is unaware of these adjustments,
|
|
and appears to gain or lose time.</para>
|
|
|
|
<para>In this example, the <literal>i8254</literal> clock is also
|
|
available, and can be selected by writing its name to the
|
|
<varname>kern.timecounter.hardware</varname>
|
|
&man.sysctl.3;.</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl -w kern.timecounter.hardware=i8254</userinput>
|
|
kern.timecounter.hardware: TSC -> i8254</screen>
|
|
|
|
<para>Your laptop should now start keeping more accurate
|
|
time.</para>
|
|
|
|
<para>To have this change automatically run at boot time, add the
|
|
following line to <filename>/etc/sysctl.conf</filename>.</para>
|
|
|
|
<programlisting>kern.timecounter.hardware=i8254</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="null-null">
|
|
<para>Why did my laptop fail to correctly probe PC cards?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This problem is common on laptops that boot more than
|
|
one operating system. Some non-BSD operating systems
|
|
leave PC card hardware in an inconsistent state.
|
|
<command>pccardd</command> will detect the card as
|
|
<errorname>"(null)""(null)"</errorname> instead of its
|
|
actual model.</para>
|
|
|
|
<para>You must remove all power from the PC card slot to
|
|
fully reset the hardware. Completely power off the
|
|
laptop. (Do not suspend it, do not let it go into standby;
|
|
the power needs to be completely off.) Wait a few
|
|
moments, and reboot. Your PC card should work now.</para>
|
|
|
|
<para>Some laptop hardware lies when it claims to be off.
|
|
If the above does not work shut down, remove the battery,
|
|
wait a moment, replace the battery, and reboot.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="boot-read-error">
|
|
<para>Why does FreeBSD's boot loader display
|
|
<errorname>Read error</errorname> and stop after the BIOS
|
|
screen?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD's boot loader is incorrectly recognizing the hard
|
|
drive's geometry. This must be manually set within fdisk when
|
|
creating or modifying FreeBSD's slice.
|
|
</para>
|
|
|
|
<para>The correct drive geometry values can be found within the
|
|
machine's BIOS. Look for the number of cylinders, heads and
|
|
sectors for the particular drive.
|
|
</para>
|
|
|
|
<para>Within &man.sysinstall.8;'s fdisk, hit
|
|
<keycap>G</keycap> to set the drive geometry.</para>
|
|
|
|
<para>A dialog will pop up requesting the number of
|
|
cylinders, heads and sectors. Type the numbers found from
|
|
the BIOS separated by forward slashes. For example, values
|
|
of 5000 cylinders, 250 heads, and 60 sectors would be entered as
|
|
<userinput>5000/250/60</userinput>.
|
|
</para>
|
|
|
|
<para>Press enter to set the values, and hit
|
|
<keycap>W</keycap> to write the new partition table to the
|
|
drive.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bootmanager-restore">
|
|
<para>Another operating system destroyed my Boot Manager. How do I
|
|
get it back?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Enter &man.sysinstall.8; and choose Configure,
|
|
then Fdisk. Select the disk the Boot Manager resided on
|
|
with the <keycap>space</keycap> key. Press
|
|
<keycap>W</keycap> to write changes to the drive. A prompt
|
|
will appear asking which boot loader to install. Select this,
|
|
and it will be restored.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="indefinite-wait-buffer">
|
|
<para>What does the error <errorname>swap_pager: indefinite
|
|
wait buffer:</errorname> mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This means that a process is trying to page memory to
|
|
disk, and the page attempt has hung trying to access the
|
|
disk for more than 20 seconds. It might be caused by bad
|
|
blocks on the disk drive, disk wiring, cables, or any
|
|
other disk I/O-related hardware. If the drive itself is
|
|
actually bad, you will also see disk errors in
|
|
<filename>/var/log/messages</filename> and in the output
|
|
of <command>dmesg</command>. Otherwise, check your cables
|
|
and connections.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="udma-icrc">
|
|
<para>What are <quote>UDMA ICRC</quote> errors, and how do I
|
|
fix them?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &man.ata.4; driver reports <quote>UDMA ICRC</quote>
|
|
errors when a DMA transfer to or from a drive is corrupted.
|
|
The driver will retry the operation a few times. Should
|
|
the retries fail, it will switch from DMA to the slower PIO
|
|
mode of communication with the device.</para>
|
|
|
|
<para>The problem can be caused by many factors, although
|
|
perhaps the most common cause is faulty or incorrect
|
|
cabling. Check that the ATA cables are undamaged and rated
|
|
for the Ultra DMA mode in use. If you are using removable
|
|
drive trays, they must also be compatible. Be sure that
|
|
all connections are making good contact. Problems have
|
|
also been noticed when an old drive is installed on the
|
|
same ATA channel as an Ultra DMA 66 (or faster) drive.
|
|
Lastly, these errors can indicate that the drive is
|
|
failing. Most drive vendors provide testing software for
|
|
their drives, so test your drive, and, if necessary, back
|
|
up your data and replace it.</para>
|
|
|
|
<para>The &man.atacontrol.8; utility can be used to show and
|
|
select the DMA or PIO modes used for each ATA device. In
|
|
particular, <command>atacontrol mode
|
|
<replaceable>channel</replaceable></command> will show the
|
|
modes in use on a particular ATA channel, where the primary
|
|
channel is numbered 0, and so on.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="lock-order-reversal">
|
|
<para>What is a <errorname>lock order reversal</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&a.rwatson; answered this question very succinctly on
|
|
the freebsd-current list in a thread entitled <quote><ulink
|
|
url="http://docs.freebsd.org/cgi/getmsg.cgi?fetch=65165+0+/usr/local/www/db/text/2003/freebsd-current/20031221.freebsd-current">lock
|
|
order reversals - what do they mean?</ulink></quote></para>
|
|
|
|
<blockquote>
|
|
<attribution>&a.rwatson; on freebsd-current, December 14,
|
|
2003</attribution>
|
|
|
|
<para>These warnings are generated by Witness, a run-time lock
|
|
diagnostic system found in FreeBSD -CURRENT kernels (but
|
|
removed in releases). You can read more about Witness in the
|
|
&man.witness.4; man page, which talks about its capabilities. Among
|
|
other things, Witness performs run-time lock order verification
|
|
using a combination of hard coded lock orders, and run-time
|
|
detected lock orders, and generates console warnings when lock
|
|
orders are violated. The intent of this is to detect the
|
|
potential for deadlocks due to lock order violations; it is worth
|
|
observing that Witness is actually slightly conservative, and so
|
|
it is possible to get false positives. In the event that Witness
|
|
is accurately reporting a lock order problem, it is basically
|
|
saying "If you were unlucky, a deadlock would have happened
|
|
here". There are a couple of "well known" false positives,
|
|
which we need to do a better job of documenting to prevent
|
|
spurious reports. The non-well-known ones typically correspond
|
|
to bugs in newly added locking, as lock order reversals usually
|
|
get fixed pretty quickly because Witness is busy generating
|
|
warnings :-).</para>
|
|
</blockquote>
|
|
|
|
<note>
|
|
<para>See <ulink
|
|
url="http://sources.zabbadoz.net/freebsd/lor.html">Bjoern
|
|
Zeeb's lock order reversal page</ulink> for the status of
|
|
known lock order reversals.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="commercial">
|
|
<title>Commercial Applications</title>
|
|
|
|
<note>
|
|
<para>This section is still very sparse, though we are 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="&url.base;/commercial/index.html">the
|
|
Vendors page</ulink> for a longer list.</para>
|
|
</note>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="officesuite">
|
|
<para>Where can I get an Office Suite for FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><ulink url="http://www.freebsdmall.com/">The
|
|
FreeBSD Mall</ulink> offers a FreeBSD native version
|
|
of <ulink
|
|
url="http://www.vistasource.com/">VistaSource</ulink>
|
|
ApplixWare 5.</para>
|
|
|
|
<para>ApplixWare is a rich full-featured, commercial
|
|
Office Suite for FreeBSD containing a word processor,
|
|
spreadsheet, presentation program, vector drawing
|
|
package, and other applications.
|
|
</para>
|
|
|
|
<para>ApplixWare is offered as part of the FreeBSD Mall's BSD
|
|
Desktop Edition.</para>
|
|
|
|
</listitem>
|
|
<listitem>
|
|
<para>The &linux; version of <ulink
|
|
url="http://www.sun.com/staroffice/">StarOffice</ulink>
|
|
works flawlessly on FreeBSD. The easiest way to
|
|
install the &linux; version of StarOffice is through the
|
|
<ulink url="&url.books.handbook;/ports.html">FreeBSD Ports
|
|
collection</ulink>. The
|
|
open-source <ulink
|
|
url="http://www.openoffice.org/">OpenOffice</ulink>
|
|
suite also works, and is also in the Ports Collection.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
<qandaentry>
|
|
<question id="motif">
|
|
<para>Where can I get &motif; for FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The Open Group has released the source code to &motif; 2.2.2.
|
|
You can install the <literal>open-motif</literal> package, or
|
|
compile it from ports. Refer to
|
|
<ulink url="&url.books.handbook;/ports.html">the ports section of the
|
|
Handbook</ulink> for more information on how to do this.
|
|
|
|
<note>
|
|
<para>The Open &motif; distribution only allows redistribution
|
|
if it is running on an <ulink url="http://www.opensource.org/">
|
|
open source</ulink> operating system.</para>
|
|
</note>
|
|
</para>
|
|
|
|
<para>In addition, there are commercial distributions of the &motif;
|
|
software available. These, however, are not for free, but their
|
|
license allows them to be used in closed-source software.
|
|
Contact <link linkend="apps2go">Apps2go</link> for the
|
|
least expensive ELF &motif; 2.1.20 distribution for FreeBSD
|
|
(either &i386; or Alpha).<anchor id="apps2go"></para>
|
|
|
|
<para>There are two distributions, the <quote>development
|
|
edition</quote> and the <quote>runtime edition</quote> (for
|
|
much less). These distributions includes:</para>
|
|
|
|
<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.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Demonstration applets.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Be sure to specify that you want the FreeBSD version of
|
|
&motif; when ordering (do not forget to mention the architecture
|
|
you want too)! Versions for NetBSD and OpenBSD are also sold by
|
|
<emphasis>Apps2go</emphasis>. This is currently a FTP only
|
|
download.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>More info</term>
|
|
<listitem>
|
|
<para><ulink url="http://www.apps2go.com/">
|
|
Apps2go WWW page</ulink></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>or</term>
|
|
<listitem>
|
|
<para>
|
|
<email>sales@apps2go.com</email> or
|
|
<email>support@apps2go.com</email>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>or</term>
|
|
<listitem>
|
|
<para>phone (817) 431 8775 or +1 817 431-8775</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<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:</para>
|
|
<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 earlier).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Demonstration applets.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Preformatted manual pages.</para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<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:</para>
|
|
<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 earlier).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Demonstration applets.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Preformatted manual pages.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<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 id="cde">
|
|
<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.
|
|
You might also like the look and feel of <ulink
|
|
url="http://www.xfce.org/">xfce</ulink>. KDE and xfce are both
|
|
in the <ulink url="&url.base;/ports/index.html">ports
|
|
system</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="commercial-xserver">
|
|
<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>
|
|
sell 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 convenient 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>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>More info</term>
|
|
<listitem>
|
|
<para><ulink url="http://www.metrolink.com/">
|
|
Metro Link WWW page</ulink></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>or</term>
|
|
<listitem>
|
|
<para><email>sales@metrolink.com</email>
|
|
or <email>tech@metrolink.com</email>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>or</term>
|
|
<listitem>
|
|
<para>phone (954) 938-0283 or +1 954 938-0283</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<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 tailored for
|
|
laptop support.<anchor id="xig"></para>
|
|
|
|
<para>There is a free <quote>compatibility demo</quote> of
|
|
version 5.0 available.</para>
|
|
|
|
<para>Xi Graphics also sells &motif; and CDE for FreeBSD (see
|
|
above).</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>More info</term>
|
|
<listitem>
|
|
<para><ulink url="http://www.xig.com/">
|
|
Xi Graphics WWW page</ulink></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>or</term>
|
|
<listitem>
|
|
<para><email>sales@xig.com</email>
|
|
or <email>support@xig.com</email>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>or</term>
|
|
<listitem>
|
|
<para>phone (800) 946 7433 or +1 303 298-7478.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="database-systems">
|
|
<para>Are there any Database systems for FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes! See the <ulink
|
|
url="&url.base;/commercial/software_bycat.html#CATEGORY_DATABASE">
|
|
Commercial Vendors</ulink> section of FreeBSD's Web site.</para>
|
|
|
|
<para>Also see the <ulink
|
|
url="&url.base;/ports/databases.html">
|
|
Databases</ulink> section of the Ports collection.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="oracle-support">
|
|
<para>Can I run &oracle; on FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. The following pages tell you exactly how to set up
|
|
&linux;-&oracle; on FreeBSD:</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>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="commercial-webbrowsers">
|
|
<para>Are there any commercial web browsers available for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Opera is a multi-platform web browser and is available for &os;.
|
|
See <ulink url="http://www.opera.com/">www.opera.com</ulink> for details.
|
|
A version of Opera, paid for by banner ads, is also available in ports.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="applications">
|
|
<title>User Applications</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="user-apps">
|
|
<para>So, where are all the user applications?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please take a look at <ulink
|
|
url="&url.base;/ports/index.html">the ports page</ulink>
|
|
for info on software packages ported to FreeBSD. The list
|
|
currently tops &os.numports; and is growing daily, so come
|
|
back to check often or subscribe to the
|
|
<literal>freebsd-announce</literal> <link
|
|
linkend="mailing">mailing list</link> for periodic updates
|
|
on new entries.</para>
|
|
|
|
<para>Most ports should work on the 4.X, 5.X, and 6.X branches.
|
|
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
|
|
<quote>package</quote>, essentially no more than a compressed
|
|
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
|
|
&man.pkg.add.1; command on the specific package files you
|
|
are interested in installing. Package files can usually be
|
|
identified by their <filename>.tgz</filename> or <filename>.tbz</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>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>for 4.X-RELEASE/4-STABLE</term>
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/">
|
|
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/</ulink></para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>for 5.X-RELEASE/5-STABLE</term>
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/">
|
|
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current</ulink></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>for 6-CURRENT</term>
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-6-current/">
|
|
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-6-current</ulink></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<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 id="emul">
|
|
<para>Why does ghostscript give lots of errors with my
|
|
386/486SX?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You do not 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>
|
|
|
|
<programlisting>options GPL_MATH_EMULATE</programlisting>
|
|
|
|
<note>
|
|
<para>You will need to remove the
|
|
<literal>MATH_EMULATE</literal> option when you do
|
|
this.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="configure-inn">
|
|
<para>How do I configure INN (Internet News) for my machine?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>After installing the <filename
|
|
role="package">news/inn</filename> package or port, an
|
|
excellent place to start is <ulink
|
|
url="http://www.visi.com/~barr/INN.html">Dave
|
|
Barr's INN Page</ulink> where you will find the INN
|
|
FAQ.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="java">
|
|
<para>Does FreeBSD support &java;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Please see <ulink
|
|
url="&url.base;/java/index.html">
|
|
http://www.FreeBSD.org/java/</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ports-4x">
|
|
<para>Why can I not build this port on my 4.X-STABLE machine?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are running a FreeBSD version that lags
|
|
significantly behind -CURRENT or -STABLE, you may need to
|
|
update your ports collection; see the <ulink
|
|
url="&url.books.porters-handbook;/keeping-up.html">
|
|
Keeping Up</ulink> section of the Porter's Handbook for further
|
|
information on how to do this.
|
|
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
|
|
&man.send-pr.1; command, since the ports
|
|
collection is supposed to work for both the -CURRENT and
|
|
-STABLE branches.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="make-index">
|
|
<para>I just tried to build <filename>INDEX</filename>
|
|
using <command>make index</command>, and it failed.
|
|
Why?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>First, always make sure that you have a completely
|
|
up-to-date Ports Collection. Errors that affect building
|
|
<filename>INDEX</filename> from an up-to-date copy of the
|
|
Ports Collection are high-visibility and are thus almost
|
|
always fixed immediately.</para>
|
|
|
|
<para>However, if you are up-to-date, perhaps you are seeing
|
|
another problem. <command>make index</command> has a
|
|
known bug in dealing with incomplete copies of the Ports
|
|
Collection. It assumes that you have a local copy of every
|
|
single port that every other port that you have a local copy
|
|
of depends on. To explain, if you have a copy of
|
|
<filename>foo/bar</filename> on your disk, and
|
|
<filename>foo/bar</filename> depends on
|
|
<filename>baz/quux</filename>, then you must also have
|
|
a copy of <filename>baz/quux</filename> on your disk, and
|
|
the ports <filename>baz/quux</filename> depends on, and
|
|
so on. Otherwise, <command>make index</command> has
|
|
insufficient information to create its dependency tree.</para>
|
|
|
|
<para>This is particularly a problem for &os; users who
|
|
utilize &man.cvsup.1; to track the Ports Collection but
|
|
choose not to install certain categories by specifying
|
|
them in <filename>refuse</filename>. In theory, one
|
|
should be able to refuse categories, but in practice
|
|
there are too many ports that depend on ports in other
|
|
categories. Until someone comes up with a solution for
|
|
this problem, the general rule is is that if you want to
|
|
build <filename>INDEX</filename>, you must have a complete
|
|
copy of the Ports Collection.</para>
|
|
|
|
<para>There are rare cases where <filename>INDEX</filename>
|
|
will not build due to odd cases involving
|
|
<makevar>WITH_<replaceable>*</replaceable></makevar> or
|
|
<makevar>WITHOUT_<replaceable>*</replaceable></makevar>
|
|
variables being set in <filename>make.conf</filename>. If
|
|
you suspect that this is the case, please try to make
|
|
<filename>INDEX</filename> with those Makevars turned off
|
|
before reporting it to &a.ports;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cvsup-in-base">
|
|
<para>Why is CVSup not integrated in the main FreeBSD tree?
|
|
</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The FreeBSD base system is designed as self-hosting - it
|
|
should be possible to build the whole operating system starting
|
|
with a very limited set of tools. Thus, the actual build tools
|
|
needed to compile the FreeBSD sources are bundled with the
|
|
sources themselves. This includes a C compiler (&man.gcc.1;),
|
|
&man.make.1;, &man.awk.1;, and similar tools.</para>
|
|
|
|
<para>Since CVSup is written in Modula-3, adding it to the FreeBSD
|
|
base system would also require adding and maintaining a Modula-3
|
|
compiler. This would lead to both an increase in the disk space
|
|
consumed by the FreeBSD sources and additional maintenance work.
|
|
Thus, it is much easier for both the developers and users to
|
|
keep CVSup as a separate port, which can be easily installed as
|
|
a package bundled on the FreeBSD installation CDs.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ports-update">
|
|
<para>I updated the sources, now how do I update my installed
|
|
ports?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD does not include a port upgrading tool, but it
|
|
does have some tools to make the upgrade process somewhat
|
|
easier. You can also install additional tools to simplify
|
|
port handling.</para>
|
|
|
|
<para>The &man.pkg.version.1; command can generate a script
|
|
that will update installed ports to the latest version in
|
|
the ports tree.</para>
|
|
|
|
<screen>&prompt.root; <userinput>pkg_version -c > <replaceable>/tmp/myscript</replaceable></userinput></screen>
|
|
|
|
<para>The output script <emphasis>must</emphasis> be edited by
|
|
hand before you use it. Recent versions of
|
|
&man.pkg.version.1; force this by inserting an
|
|
&man.exit.1; at the beginning of the script.</para>
|
|
|
|
<para>You should save the output of the script, as it will note
|
|
packages that depend on the one that has been updated. These
|
|
may or may not need to be updated as well. The usual case where
|
|
they need to be updated is that a shared library has changed
|
|
version numbers, so the ports that used that library need to be
|
|
rebuilt to use the new version.</para>
|
|
|
|
<note>
|
|
<para>Beginning with FreeBSD 5.0 (and higher revisions),
|
|
&man.pkg.version.1; no longer supports the
|
|
<option>-c</option> option.</para>
|
|
</note>
|
|
|
|
<para>If you have the disk space, you can use the
|
|
<command>portupgrade</command> tool to automate all of
|
|
this. <command>portupgrade</command> includes various
|
|
tools to simplify package handling. It is available under
|
|
<filename role="package">sysutils/portupgrade</filename>.
|
|
Since it is written in Ruby,
|
|
<command>portupgrade</command> is an unlikely candidate for
|
|
integration with the main FreeBSD tree. That should not
|
|
stop anyone from using it, however.</para>
|
|
|
|
<para>If your system is up full time, the &man.periodic.8; system
|
|
can be used to generate a weekly list of ports that might need
|
|
updating by setting
|
|
<literal>weekly_status_pkg_enable="YES"</literal> in
|
|
<filename>/etc/periodic.conf</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="minimal-sh">
|
|
<para>Why is <command>/bin/sh</command> so minimal? Why does
|
|
FreeBSD not use <command>bash</command> or another shell?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Because &posix; says that there shall be such a shell.</para>
|
|
|
|
<para>The more complicated answer: many people need to write shell
|
|
scripts which will be portable across many systems. That is why
|
|
&posix; specifies the shell and utility commands in great detail.
|
|
Most scripts are written in Bourne shell, and because several
|
|
important programming interfaces (&man.make.1;, &man.system.3;,
|
|
&man.popen.3;, and analogues in higher-level scripting
|
|
languages like Perl and Tcl) are specified to use the Bourne
|
|
shell to interpret commands. Because the Bourne shell is so
|
|
often and widely used, it is important for it to be quick to
|
|
start, be deterministic in its behavior, and have a small
|
|
memory footprint.</para>
|
|
|
|
<para>The existing implementation is our best effort at meeting as
|
|
many of these requirements simultaneously as we can. In order to
|
|
keep <command>/bin/sh</command> small, we have not provided many
|
|
of the convenience features that other shells have. That is why the
|
|
Ports Collection includes more featureful shells like bash, scsh,
|
|
tcsh, and zsh. (You can compare for yourself the memory
|
|
utilization of all these shells by looking at the
|
|
<quote>VSZ</quote> and <quote>RSS</quote> columns in a <command>ps
|
|
-u</command> listing.)</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="netscape-slow-startup">
|
|
<para>Why do &netscape; and Opera take so long to
|
|
start?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The usual answer is that DNS on your system is
|
|
misconfigured. Both &netscape; and Opera perform DNS checks
|
|
when starting up. The browser will not appear on your
|
|
desktop until the program either gets a response or
|
|
determines that the system has no network
|
|
connection.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ports-base-update">
|
|
<para>I updated parts of the Ports Collection using CVSup, and
|
|
now many ports fail to build with mysterious error messages!
|
|
What happened? Is the Ports Collection broken in some major
|
|
way?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you only update parts of the Ports Collection, using
|
|
one of its CVSup subcollections and not the
|
|
<literal>ports-all</literal> CVSup collection, you should
|
|
<emphasis>always</emphasis> update the
|
|
<literal>ports-base</literal> subcollection too! The reasons
|
|
are described <ulink
|
|
url="&url.books.handbook;/cvsup.html#CVSUP-COLLEC-PBASE-WARN">in the
|
|
Handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="midi-sound-files">
|
|
<para>How do I create audio CDs from my MIDI files?</para>
|
|
</question>
|
|
|
|
<answer><para>To create audio CDs from MIDI files, first
|
|
install <filename role="package">audio/timidity++</filename>
|
|
from ports then install manually the GUS patches set by Eric
|
|
A. Welsh, available at <ulink
|
|
url="http://www.stardate.bc.ca/eawpatches/html/default.htm"></ulink>.
|
|
After timidity++ has been installed properly, midi files may
|
|
be converted to wav files with the following command
|
|
line:</para>
|
|
|
|
<screen>&prompt.user; <userinput>timidity -Ow -s 44100 -o /tmp/juke/01.wav 01.mid</userinput></screen>
|
|
|
|
<para>The wav files can then be converted to other formats
|
|
or burned onto audio CDs, as described in the FreeBSD
|
|
Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="kernelconfig">
|
|
<title>Kernel Configuration</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="make-kernel">
|
|
<para>I would like to customize my kernel. Is it difficult?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Not at all! Check out the <ulink
|
|
url="&url.books.handbook;/kernelconfig.html">
|
|
kernel config section of the Handbook</ulink>.</para>
|
|
|
|
<note>
|
|
<para>We recommend that you make a dated snapshot of
|
|
your new <filename>/kernel</filename> called
|
|
<filename>/kernel.YYMMDD</filename> after you get it
|
|
working properly. Also back up your new
|
|
<filename>/modules</filename> directory to
|
|
<filename>/modules.YYMMDD</filename>. That way, if
|
|
you make a mistake the next time you play with your
|
|
configuration you can boot the backup kernel instead
|
|
of having to fall back to
|
|
<filename>kernel.GENERIC</filename>. This is
|
|
particularly important if you are now booting from a
|
|
controller that GENERIC does not support.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="missing-hw-float">
|
|
<para>My kernel compiles fail because
|
|
<literal>_hw_float</literal> is missing. How do I solve
|
|
this problem?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You probably removed <devicename>npx0</devicename>
|
|
(see &man.npx.4;) from your kernel configuration file
|
|
because you do not have a math co-processor. The
|
|
<devicename>npx0</devicename> device is
|
|
<emphasis>MANDATORY</emphasis>. Somewhere inside your
|
|
hardware lies a device that provides hardware
|
|
floating-point support, even if it's no longer a separate
|
|
device as used in the good old 386 days. You
|
|
<emphasis>must</emphasis> include the
|
|
<devicename>npx0</devicename> device. Even if you manage
|
|
to build a kernel without <devicename>npx0</devicename>
|
|
support, it won't boot anyway. </para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="why-kernel-big">
|
|
<para>Why is my kernel so big (over 10MB)?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Chances are, you compiled your kernel in
|
|
<emphasis>debug mode</emphasis>. Kernels built in debug
|
|
mode contain many symbols that are used for debugging,
|
|
thus greatly increasing the size of the kernel. Note that
|
|
there will be little or no performance decrease from
|
|
running a debug kernel, and it is useful to keep one
|
|
around in case of a system panic.</para>
|
|
|
|
<para>However, if you are running low on disk space, or
|
|
you simply do not want to run a debug kernel, make sure
|
|
that both of the following are true:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>You do not have a line in your kernel
|
|
configuration file that reads:</para>
|
|
|
|
<programlisting>makeoptions DEBUG=-g</programlisting>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>You are not running &man.config.8; with
|
|
the <option>-g</option> option.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Either of the above settings will cause your kernel to
|
|
be built in debug mode. As long as you make sure you
|
|
follow the steps above, you can build your kernel
|
|
normally, and you should notice a fairly large size
|
|
decrease; most kernels tend to be around 1.5MB to
|
|
2MB.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="multiport-serial-interrupts">
|
|
<para>Why do I get interrupt conflicts with multi-port serial
|
|
code?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>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>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 an example:</para>
|
|
|
|
<programlisting>#
|
|
# 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</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="generic-kernel-build-failure">
|
|
<para>Why does every kernel I try to build fail to compile, even
|
|
GENERIC?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are a number of possible causes for this problem.
|
|
They are, in no particular order:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>You are not using the new <command>make
|
|
buildkernel</command> and <command>make
|
|
installkernel</command> targets, and your source tree is
|
|
different from the one used to build the currently running
|
|
system (e.g., you are compiling 4.3-RELEASE on a 4.0-RELEASE
|
|
system). If you are attempting an upgrade, please read the
|
|
<filename>/usr/src/UPDATING</filename> file, paying
|
|
particular attention to the <quote>COMMON ITEMS</quote>
|
|
section at the end.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>You are using the new <command>make
|
|
buildkernel</command> and <command>make
|
|
installkernel</command> targets, but you failed to assert
|
|
the completion of the <command>make buildworld</command>
|
|
target. The <command>make buildkernel</command> target
|
|
relies on files generated by the <command>make
|
|
buildworld</command> target to complete its job
|
|
correctly.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Even if you are trying to build <link
|
|
linkend="stable">FreeBSD-STABLE</link>, it is possible that
|
|
you fetched the source tree at a time when it was either
|
|
being modified, or broken for other reasons; only releases
|
|
are absolutely guaranteed to be buildable, although <link
|
|
linkend="stable">FreeBSD-STABLE</link> builds fine the
|
|
majority of the time. If you have not already done so, try
|
|
re-fetching the source tree and see if the problem goes
|
|
away. Try using a different server in case the one you are
|
|
using is having problems.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="scheduler-in-use">
|
|
<para>How can I verify which scheduler is in use on a
|
|
running system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are running &os; version 5.2.1 or earlier, check for
|
|
the existence of the <literal>kern.quantum</literal> sysctl.
|
|
If you have it, you should see something like this:</para>
|
|
|
|
<screen>&prompt.user; sysctl <replaceable>kern.quantum</replaceable>
|
|
kern.sched.quantum: 99960</screen>
|
|
|
|
<para>If the <literal>kern.quantum</literal> sysctl exists, you are
|
|
using the 4BSD scheduler. If not, you will get an error printed
|
|
by &man.sysctl.8; (which you can safely ignore):</para>
|
|
|
|
<screen>&prompt.user; sysctl <replaceable>kern.sched.quantum</replaceable>
|
|
sysctl: unknown oid 'kern.sched.quantum'</screen>
|
|
|
|
<para>In &os; version 5.3-RELEASE and later, the name of the
|
|
scheduler currently being used is directly available as the value
|
|
of the <literal>kern.sched.name</literal> sysctl:</para>
|
|
|
|
<screen>&prompt.user; sysctl <replaceable>kern.sched.name</replaceable>
|
|
kern.sched.name: 4BSD</screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="scheduler-kern-quantum">
|
|
<para>What is <literal>kern.quantum</literal>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><literal>kern.quantum</literal> is the maximum number of
|
|
ticks a process can run without being preempted. It is
|
|
specific to the 4BSD scheduler, so you can use its
|
|
presence or absence to determine which scheduler is in
|
|
use. In &os; 5.X or later <literal>kern.quantum</literal> has
|
|
been renamed to <literal>kern.sched.quantum</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="scheduler-kern-sched-quantum">
|
|
<para>What is <literal>kern.sched.quantum</literal>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <xref linkend="scheduler-kern-quantum"></para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="disks">
|
|
<title>Disks, Filesystems, and Boot Loaders</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="adding-disks">
|
|
<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="&url.articles.formatting-media;/index.html">
|
|
www.FreeBSD.org</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="new-huge-disk">
|
|
<para>How do I move my system over to my huge new disk?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The best way is to reinstall the OS on the new
|
|
disk, then move the user data over. This is highly
|
|
recommended if you have been tracking -STABLE for more
|
|
than one release, or have updated a release instead of
|
|
installing a new one. You can install booteasy on both
|
|
disks with &man.boot0cfg.8;, and dual boot them until
|
|
you are happy with the new configuration. Skip the
|
|
next paragraph to find out how to move the data after
|
|
doing this.</para>
|
|
|
|
<para>Should you decide not to do a fresh install, you
|
|
need to partition and label the new disk with either
|
|
<filename>/stand/sysinstall</filename>, or &man.fdisk.8;
|
|
and &man.disklabel.8;. You should also install booteasy
|
|
on both disks with &man.boot0cfg.8;, so that you can
|
|
dual boot to the old or new system after the copying
|
|
is done. See the <ulink
|
|
url="&url.articles.formatting-media;/index.html">
|
|
formatting-media article</ulink> for details on this
|
|
process.</para>
|
|
|
|
<para>Now you have the new disk set up, and are ready
|
|
to move the data. Unfortunately, you cannot just blindly
|
|
copy the data. Things like device files (in
|
|
<filename>/dev</filename>), flags, and links tend to
|
|
screw that up. You need to use tools that understand
|
|
these things, which means &man.dump.8;.
|
|
Although it is suggested that you move the data in single user
|
|
mode, it is not required.</para>
|
|
|
|
<para>You should never use anything but &man.dump.8; and
|
|
&man.restore.8; to move the root filesystem. The
|
|
&man.tar.1; command may work - then again, it may not.
|
|
You should also use &man.dump.8; and &man.restore.8;
|
|
if you are moving a single partition to another empty
|
|
partition. The sequence of steps to use dump to move
|
|
a partitions data to a new partition is:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>newfs the new partition.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>mount it on a temporary mount point.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>cd to that directory.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>dump the old partition, piping output to the
|
|
new one.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>For example, if you are going to move root to
|
|
<devicename>/dev/ad1s1a</devicename>, with
|
|
<filename>/mnt</filename> as the temporary mount point,
|
|
it is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/ad1s1a</userinput>
|
|
&prompt.root; <userinput>mount /dev/ad1s1a /mnt</userinput>
|
|
&prompt.root; <userinput>cd /mnt</userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore xf -</userinput></screen>
|
|
|
|
<para>Rearranging your partitions with dump takes a bit more
|
|
work. To merge a partition like <filename>/var</filename>
|
|
into its parent, create the new partition large enough
|
|
for both, move the parent partition as described above,
|
|
then move the child partition into the empty directory
|
|
that the first move created:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/ad1s1a</userinput>
|
|
&prompt.root; <userinput>mount /dev/ad1s1a /mnt</userinput>
|
|
&prompt.root; <userinput>cd /mnt</userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore xf -</userinput>
|
|
&prompt.root; <userinput>cd var</userinput>
|
|
&prompt.root; <userinput>dump 0af - /var | restore xf -</userinput></screen>
|
|
|
|
<para>To split a directory from its parent, say putting
|
|
<filename>/var</filename> on its own partition when it was not
|
|
before, create both partitions, then mount the child partition
|
|
on the appropriate directory in the temporary mount point, then
|
|
move the old single partition:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/ad1s1a</userinput>
|
|
&prompt.root; <userinput>newfs /dev/ad1s1d</userinput>
|
|
&prompt.root; <userinput>mount /dev/ad1s1a /mnt</userinput>
|
|
&prompt.root; <userinput>mkdir /mnt/var</userinput>
|
|
&prompt.root; <userinput>mount /dev/ad1s1d /mnt/var</userinput>
|
|
&prompt.root; <userinput>cd /mnt</userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore xf -</userinput></screen>
|
|
|
|
<para>You might prefer &man.cpio.1;, &man.pax.1;,
|
|
&man.tar.1; to &man.dump.8; for user data. At the time of
|
|
this writing, these are known to lose file flag information,
|
|
so use them with caution.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dangerously-dedicated">
|
|
<para>Will a <quote>dangerously dedicated</quote> disk endanger
|
|
my health?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para><anchor id="dedicate">The installation procedure allows
|
|
you to chose two different methods in partitioning your
|
|
hard disk(s). The default way makes it compatible with other
|
|
operating systems on the same machine, by using fdisk table
|
|
entries (called <quote>slices</quote> 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 <quote>dangerous</quote>? A disk
|
|
in this mode does not 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
|
|
<quote>dangerously dedicated</quote> disk's layout is
|
|
known to confuse many BIOSes, including those from AWARD
|
|
(e.g. 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 is not a complete
|
|
list, there are more. Symptoms of this confusion include
|
|
the <errorname>read error</errorname> message printed by
|
|
the FreeBSD bootstrap when it cannot 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. <quote>Dangerously dedicated</quote> mode's
|
|
origins lie in a desire to avoid one of the most common
|
|
problems plaguing new FreeBSD installers - matching the BIOS
|
|
<quote>geometry</quote> numbers for a disk to the disk
|
|
itself.</para>
|
|
|
|
<para><quote>Geometry</quote> 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 will not be able to boot.</para>
|
|
|
|
<para><quote>Dangerously dedicated</quote> mode tries to work
|
|
around this by making the problem simpler. In some cases, it
|
|
gets it right. But it is 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 <quote>DD</quote> mode
|
|
when you are 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
|
|
<option>-v</option> at the <literal>boot:</literal> prompt, or
|
|
using <command>boot -v</command> in the loader. Just before the
|
|
installer starts, the kernel will print a list of BIOS
|
|
geometries. Do not 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 are slicing up your disk, check that the disk
|
|
geometry displayed in the FDISK screen is correct (ie. it
|
|
matches the BIOS numbers); if it is wrong, use the
|
|
<keycap>g</keycap> key to fix it. You may have to do this if
|
|
there is 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 are going to boot from; FreeBSD will sort
|
|
itself out just fine with any other disks you may have.</para>
|
|
|
|
<para>Once you have 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 <quote>DD</quote> mode at all. If,
|
|
however, you are still greeted with the dreaded <errorname>read
|
|
error</errorname> message when you try to boot, it is time to cross
|
|
your fingers and go for it - there is nothing left to
|
|
lose.</para>
|
|
|
|
<para>To return a <quote>dangerously dedicated</quote> 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>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda0 count=15</userinput></screen>
|
|
|
|
<para>Alternatively, the undocumented DOS
|
|
<quote>feature</quote></para>
|
|
|
|
<screen><prompt>C:\></prompt> <userinput>fdisk /mbr</userinput></screen>
|
|
|
|
<para>will to install a new master boot record as well, thus
|
|
clobbering the BSD bootstrap.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="safe-softupdates">
|
|
<para>Which partitions can safely use Soft Updates? I have
|
|
heard that Soft Updates on <filename>/</filename> can cause
|
|
problems.</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: you can usually use Soft Updates safely
|
|
on all partitions.</para>
|
|
|
|
<para>Long answer: There used to be some concern over using
|
|
Soft Updates on the root partition. Soft Updates has two
|
|
characteristics that caused this. First, a Soft Updates
|
|
partition has a small chance of losing data during a
|
|
system crash. (The partition will not be corrupted; the
|
|
data will simply be lost.) Also, Soft Updates can cause
|
|
temporary space shortages.</para>
|
|
|
|
<para>When using Soft Updates, the kernel can take up to
|
|
thirty seconds to actually write changes to the physical
|
|
disk. If you delete a large file, the file still resides
|
|
on disk until the kernel actually performs the deletion.
|
|
This can cause a very simple race condition. Suppose you
|
|
delete one large file and immediately create another large
|
|
file. The first large file is not yet actually removed
|
|
from the physical disk, so the disk might not have enough
|
|
room for the second large file. You get an error that the
|
|
partition does not have enough space, although you know
|
|
perfectly well that you just released a large chunk of
|
|
space! When you try again mere seconds later, the file
|
|
creation works as you expect. This has left more than one
|
|
user scratching his head and doubting his sanity, the
|
|
FreeBSD filesystem, or both.</para>
|
|
|
|
<para>If a system should crash after the kernel accepts a
|
|
chunk of data for writing to disk, but before that data is
|
|
actually written out, data could be lost or corrupted.
|
|
This risk is extremely small, but generally manageable.
|
|
Use of IDE write caching greatly increases this risk; it
|
|
is strongly recommended that you disable IDE write caching
|
|
when using Soft Updates.</para>
|
|
|
|
<para>These issues affect all partitions using Soft Updates.
|
|
So, what does this mean for the root partition?</para>
|
|
|
|
<para>Vital information on the root partition changes very
|
|
rarely. Files such as <filename>/kernel</filename> and
|
|
the contents of <filename>/etc</filename> only change
|
|
during system maintenance, or when users change their
|
|
passwords. If the system crashed during the
|
|
thirty-second window after such a change is made, it is
|
|
possible that data could be lost. This risk is negligible
|
|
for most applications, but you should be aware that it
|
|
exists. If your system cannot tolerate this much risk,
|
|
do not use Soft Updates on the root filesystem!</para>
|
|
|
|
<para><filename>/</filename> is traditionally one of the
|
|
smallest partitions. By default, FreeBSD puts the
|
|
<filename>/tmp</filename> directory on
|
|
<filename>/</filename>. If you have a busy
|
|
<filename>/tmp</filename>, you might see intermittent
|
|
space problems. Symlinking <filename>/tmp</filename> to
|
|
<filename>/var/tmp</filename> will solve this
|
|
problem.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="inappropriate-ccd">
|
|
<para>What is inappropriate about my ccd?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The symptom of this is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ccdconfig -C</userinput>
|
|
ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format</screen>
|
|
|
|
<para>This usually happens when you are trying to concatenate
|
|
the <literal>c</literal> partitions, which default to type
|
|
<literal>unused</literal>. 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 <literal>4.2BSD</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ccd-disklabel">
|
|
<para>Why can I not edit the disklabel on my ccd?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The symptom of this is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>disklabel ccd0</userinput>
|
|
(it prints something sensible here, so let us try to edit it)
|
|
&prompt.root; <userinput>disklabel -e ccd0</userinput>
|
|
(edit, save, quit)
|
|
disklabel: ioctl DIOCWDINFO: No disk label on disk;
|
|
use "disklabel -r" to install initial label</screen>
|
|
|
|
<para>This is because the disklabel returned by ccd is actually
|
|
a <quote>fake</quote> one that is not really on the disk.
|
|
You can solve this problem by writing it back explicitly,
|
|
as in:</para>
|
|
|
|
<screen>&prompt.root; <userinput>disklabel ccd0 > /tmp/disklabel.tmp</userinput>
|
|
&prompt.root; <userinput>disklabel -Rr ccd0 /tmp/disklabel.tmp</userinput>
|
|
&prompt.root; <userinput>disklabel -e ccd0</userinput>
|
|
(this will work now)</screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-foreign-fs">
|
|
<para>Can I mount other foreign filesystems under FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>Digital UNIX</term>
|
|
|
|
<listitem>
|
|
<para>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>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>&linux;</term>
|
|
|
|
<listitem>
|
|
<para>FreeBSD supports <literal>ext2fs</literal>
|
|
partitions. See &man.mount.ext2fs.8; for more
|
|
information.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>&windowsnt;</term>
|
|
|
|
<listitem>
|
|
<para>FreeBSD includes a read-only NTFS driver. For
|
|
more information, see &man.mount.ntfs.8;.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Any other information on this subject would be
|
|
appreciated.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-dos">
|
|
<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
|
|
<quote>E</quote> partition as the second DOS partition on
|
|
the second SCSI drive, you need to create the special files
|
|
for <quote>slice 5</quote> in <filename>/dev</filename>,
|
|
then mount <devicename>/dev/da1s5</devicename>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev</userinput>
|
|
&prompt.root; <userinput>sh MAKEDEV da1s5</userinput>
|
|
&prompt.root; <userinput>mount -t msdos /dev/da1s5 /dos/e</userinput></screen>
|
|
|
|
<note>
|
|
<para>You can omit this step if you are running FreeBSD
|
|
5.0-RELEASE or newer with &man.devfs.5;
|
|
enabled.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="crypto-filesystem">
|
|
<para>Is there a cryptographic filesystem for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>Yes. If you are running FreeBSD 5.0 or later, see
|
|
&man.gbde.8;. For earlier releases, see the <filename
|
|
role="package">security/cfs</filename> port.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="nt-bootloader">
|
|
<para>How can I use the &windowsnt; 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/&windowsnt;
|
|
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>
|
|
|
|
<programlisting>[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"</programlisting>
|
|
|
|
<para>If FreeBSD is installed on the same disk as the &windowsnt; boot
|
|
partition simply copy <filename>/boot/boot1</filename> to
|
|
<filename>C:\BOOTSECT.BSD</filename>. However, if FreeBSD is
|
|
installed on a different disk <filename>/boot/boot1</filename>
|
|
will not work, <filename>/boot/boot0</filename> is needed.</para>
|
|
|
|
<para><filename>/boot/boot0</filename> needs to be installed
|
|
using sysinstall by selecting the FreeBSD boot manager on
|
|
the screen which asks if you wish to use a boot
|
|
manager. This is because <filename>/boot/boot0</filename>
|
|
has the partition table area filled with NULL characters
|
|
but sysinstall copies the partition table before copying
|
|
<filename>/boot/boot0</filename> to the MBR.</para>
|
|
|
|
<warning>
|
|
<para><emphasis>Do not simply copy <filename>/boot/boot0</filename>
|
|
instead of <filename>/boot/boot1</filename>; you will
|
|
overwrite your partition table and render your computer
|
|
un-bootable!</emphasis></para>
|
|
</warning>
|
|
|
|
<para>When the FreeBSD boot manager runs it records the last
|
|
OS booted by setting the active flag on the partition table
|
|
entry for that OS and then writes the whole 512-bytes of itself
|
|
back to the MBR so if you just copy
|
|
<filename>/boot/boot0</filename> to
|
|
<filename>C:\BOOTSECT.BSD</filename> then it writes an empty
|
|
partition table, with the active flag set on one entry, to the
|
|
MBR.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="lilo-bootloader">
|
|
<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>:</para>
|
|
|
|
<programlisting>other=/dev/hda2
|
|
table=/dev/hda
|
|
label=FreeBSD</programlisting>
|
|
|
|
<para>(the above assumes that your FreeBSD slice is known to
|
|
&linux; as <devicename>/dev/hda2</devicename>; tailor to
|
|
suit your setup). Then, run <command>lilo</command> as
|
|
<username>root</username> 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:</para>
|
|
|
|
<programlisting>other=/dev/dab4
|
|
table=/dev/dab
|
|
loader=/boot/chain.b
|
|
label=FreeBSD</programlisting>
|
|
|
|
<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:</para>
|
|
|
|
<screen>Boot: <userinput>1:da(0,a)/kernel</userinput></screen>
|
|
|
|
<para>On FreeBSD 2.2.5 and later, you can configure
|
|
&man.boot.8;
|
|
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 id="booteasy-loader">
|
|
<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 are running &windows; 95 and &linux; this is recommended
|
|
anyway, to make it simpler to get &linux; booting again if you
|
|
should need to reinstall &windows; 95 (which is a Jealous
|
|
Operating System, and will bear no other Operating Systems in
|
|
the Master Boot Record).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="changing-bootprompt">
|
|
<para>How do I change the boot prompt from <literal>???</literal> to
|
|
something more meaningful?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can not do that with the standard boot manager without
|
|
rewriting it. There are a number of other boot managers
|
|
in the <filename>sysutils</filename> ports category that
|
|
provide this functionality.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="removable-drives">
|
|
<para>I have a new removable drive, how do I use it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>Whether it is a removable drive like a &iomegazip; or an EZ drive
|
|
(or even a floppy, if you want to use it that way), or a new
|
|
hard disk, once it is 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 is a ZIP drive or a floppy, you have already got a DOS
|
|
filesystem on it, you can use a command like this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t msdos /dev/fd0c /floppy</userinput></screen>
|
|
|
|
<para>if it is a floppy, or this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t msdos /dev/da2s4 /zip</userinput></screen>
|
|
|
|
<para>for a ZIP disk with the factory configuration.</para>
|
|
|
|
<para>For other disks, see how they are laid out using
|
|
&man.fdisk.8; or
|
|
&man.sysinstall.8;.</para>
|
|
|
|
<para>The rest of the examples will be for a ZIP drive on da2,
|
|
the third SCSI disk.</para>
|
|
|
|
<para>Unless it is a floppy, or a removable you plan on sharing
|
|
with other people, it is probably a better idea to stick a BSD
|
|
filesystem on it. You will 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 &man.fdisk.8; or
|
|
<filename>/stand/sysinstall</filename>, or for a small drive
|
|
that you do not 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>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda2 count=2</userinput>
|
|
&prompt.root; <userinput>disklabel -Brw da2 auto</userinput></screen>
|
|
|
|
<para>You can use disklabel or
|
|
<filename>/stand/sysinstall</filename> to create multiple BSD
|
|
partitions. You will certainly want to do this if you are adding
|
|
swap space on a fixed disk, but it is probably irrelevant on a
|
|
removable drive like a ZIP.</para>
|
|
|
|
<para>Finally, create a new filesystem, this one is on our ZIP
|
|
drive using the whole disk:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/rda2c</userinput></screen>
|
|
|
|
<para>and mount it:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount /dev/da2c /zip</userinput></screen>
|
|
|
|
<para>and it is probably a good idea to add a line like this
|
|
to <filename>/etc/fstab</filename> (see &man.fstab.5;) so
|
|
you can just type <command>mount /zip</command> in the
|
|
future:</para>
|
|
|
|
<programlisting>/dev/da2c /zip ffs rw,noauto 0 0</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-cd-superblock">
|
|
<para>Why do I get <errorname>Incorrect super block</errorname> when
|
|
mounting a CDROM?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You have to tell &man.mount.8; the type of the device
|
|
that you want to mount. This is described in the <ulink
|
|
url="&url.books.handbook;/creating-cds.html"> Handbook section on
|
|
optical media</ulink>, specifically the section <ulink
|
|
url="&url.books.handbook;/creating-cds.html#MOUNTING-CD">Using Data
|
|
CDs</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cdrom-not-configured">
|
|
<para>Why do I get <errorname>Device not
|
|
configured</errorname> when mounting a CDROM?</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. Please see the <ulink
|
|
url="&url.books.handbook;/creating-cds.html#MOUNTING-CD">Using Data
|
|
CDs</ulink> section of the Handbook for a detailed
|
|
discussion of this issue.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cdrom-unicode-filenames">
|
|
<para>Why do all non-English characters in filenames show up as
|
|
<quote>?</quote> on my CDs when mounted in FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your CDROM probably uses the <quote>Joliet</quote>
|
|
extension for storing information about files and
|
|
directories. This is discussed in the Handbook chapter on
|
|
<ulink url="&url.books.handbook;/creating-cds.html">creating and
|
|
using CDROMs</ulink>, specifically the section on <ulink
|
|
url="&url.books.handbook;/creating-cds.html#MOUNTING-CD">Using Data
|
|
CDROMs</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="burncd-isofs">
|
|
<para>I burned a CD under FreeBSD and now I can not read it
|
|
under any other operating system. Why?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You most likely burned a raw file to your CD, rather
|
|
than creating an ISO 9660 filesystem. Take a look at the
|
|
<ulink url="&url.books.handbook;/creating-cds.html">Handbook
|
|
chapter on creating CDROMs</ulink>, particularly the
|
|
section on <ulink
|
|
url="&url.books.handbook;/creating-cds.html#RAWDATA-CD">burning raw
|
|
data CDs</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="copy-cd">
|
|
<para>How can I create an image of a data CD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is discussed in the Handbook section on <ulink
|
|
url="&url.books.handbook;/creating-cds.html#IMAGING-CD">duplicating
|
|
data CDs</ulink>. For more on working with CDROMs, see the
|
|
<ulink url="&url.books.handbook;/creating-cds.html">Creating CDs
|
|
Section</ulink> in the Storage chapter in the
|
|
Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-audio-CD">
|
|
<para>Why can I not <command>mount</command> an audio
|
|
CD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you try to mount an audio CD, you will get an error
|
|
like <errorname>cd9660: /dev/acd0c: Invalid
|
|
argument</errorname>. This is because
|
|
<command>mount</command> only works on filesystems. Audio
|
|
CDs do not have filesystems; they just have data. You
|
|
need a program that reads audio CDs, such as the
|
|
<filename role="package">audio/xmcd</filename> port.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="multi-session-CD">
|
|
<para>How do I <command>mount</command> a multi-session CD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>By default, &man.mount.8; will attempt to mount the
|
|
last data track (session) of a CD. If you would like to
|
|
load an earlier session, you must use the
|
|
<option>-s</option> command line argument. Please see
|
|
&man.mount.cd9660.8; for specific examples.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="user-floppymount">
|
|
<para>How do I let ordinary users mount floppies, CDROMs 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> 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>
|
|
|
|
<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 666 /dev/fd0</userinput></screen>
|
|
|
|
<para>To allow users in the group
|
|
<groupname>operator</groupname> to mount the CDROM drive,
|
|
use:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chgrp operator /dev/acd0c</userinput>
|
|
&prompt.root; <userinput>chmod 640 /dev/acd0c</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>If you are running &os; 5.X or later, you will need to alter
|
|
<filename>/etc/devfs.conf</filename> to make these changes
|
|
permanent across reboots.</para>
|
|
|
|
<para>As <username>root</username>, add the necessary lines to
|
|
<filename>/etc/devfs.conf</filename>. For example, to allow
|
|
users to mount the first floppy drive add:</para>
|
|
|
|
<programlisting># Allow all users to mount the floppy disk.
|
|
own /dev/fd0 root:operator
|
|
perm /dev/fd0 0666</programlisting>
|
|
|
|
<para>To allow users in the group <groupname>operator</groupname>
|
|
to mount the CD-ROM drive add:</para>
|
|
|
|
<programlisting># Allow members of the group operator to mount CD-ROMs.
|
|
own /dev/acd0 root:operator
|
|
perm /dev/acd0 0660</programlisting>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Finally, add the line
|
|
<literal><varname>vfs.usermount</varname>=1</literal>
|
|
to the file <filename>/etc/sysctl.conf</filename> so
|
|
that it is reset at system boot time.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>All users can now mount the floppy
|
|
<devicename>/dev/fd0</devicename> 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>Users in group <groupname>operator</groupname> can now
|
|
mount the CDROM <devicename>/dev/acd0c</devicename> onto a
|
|
directory that they own:</para>
|
|
|
|
<screen>&prompt.user; <userinput>mkdir ~/my-mount-point</userinput>
|
|
&prompt.user; <userinput>mount -t cd9660 /dev/acd0c ~/my-mount-point</userinput></screen>
|
|
|
|
<para>Unmounting the device is simple:</para>
|
|
|
|
<screen>&prompt.user; <userinput>umount ~/my-mount-point</userinput></screen>
|
|
|
|
<para>Enabling <varname>vfs.usermount</varname>, however,
|
|
has negative security implications. A better way to
|
|
access &ms-dos; formatted media is to use the
|
|
<filename role="package">emulators/mtools</filename>
|
|
package in the ports collection.</para>
|
|
|
|
<note>
|
|
<para>The device name used in the previous examples must be
|
|
changed according to your configuration.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="du-vs-df">
|
|
<para>The <command>du</command> and <command>df</command>
|
|
commands show different amounts of disk space available.
|
|
What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You need to understand what <command>du</command> and
|
|
<command>df</command> really do. <command>du</command>
|
|
goes through the directory tree, measures how large each
|
|
file is, and presents the totals. <command>df</command>
|
|
just asks the filesystem how much space it has left. They
|
|
seem to be the same thing, but a file without a directory
|
|
entry will affect <command>df</command> but not
|
|
<command>du</command>.</para>
|
|
|
|
<para>When a program is using a file, and you delete the
|
|
file, the file is not really removed from the filesystem
|
|
until the program stops using it. The file is immediately
|
|
deleted from the directory listing, however. You can see
|
|
this easily enough with a program such as
|
|
<command>more</command>. Assume you have a file large
|
|
enough that its presence affects the output of
|
|
<command>du</command> and <command>df</command>. (Since
|
|
disks can be so large today, this might be a
|
|
<emphasis>very</emphasis> large file!) If you delete this
|
|
file while using <command>more</command> on it,
|
|
<command>more</command> does not immediately choke and
|
|
complain that it cannot view the file. The entry is
|
|
simply removed from the directory so no other program or
|
|
user can access it. <command>du</command> shows that it
|
|
is gone — it has walked the directory tree and the file
|
|
is not listed. <command>df</command> shows that it is
|
|
still there, as the filesystem knows that
|
|
<command>more</command> is still using that space. Once
|
|
you end the <command>more</command> session,
|
|
<command>du</command> and <command>df</command> will
|
|
agree.</para>
|
|
|
|
<para>Note that Soft Updates can delay the freeing of disk
|
|
space; you might need to wait up to 30 seconds for the
|
|
change to be visible!</para>
|
|
|
|
<para>This situation is common on web servers. Many people
|
|
set up a FreeBSD web server and forget to rotate the log
|
|
files. The access log fills up <filename>/var</filename>.
|
|
The new administrator deletes the file, but the system
|
|
still complains that the partition is full. Stopping and
|
|
restarting the web server program would free the file,
|
|
allowing the system to release the disk space. To prevent
|
|
this from happening, set up &man.newsyslog.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="add-swap-space">
|
|
<para>How can I add more swap space?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>In the <ulink
|
|
url="&url.books.handbook;/config-tuning.html">Configuration and
|
|
Tuning</ulink> section of the Handbook, you will find a
|
|
<ulink
|
|
url="&url.books.handbook;/adding-swap-space.html">section</ulink>
|
|
describing how to do this.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="manufacturer-disk-size">
|
|
<para>Why does &os; see my disk as smaller than the
|
|
manufacturer says it is?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Disk manufacturers calculate gigabytes as a billion bytes
|
|
each, whereas &os; calculates them as 1,073,741,824 bytes
|
|
each. This explains why, for example, &os;'s boot messages
|
|
will report a disk that supposedly has 80GB as holding
|
|
76319MB.</para>
|
|
<para>Also note that &os; will (by default)
|
|
<link linkend="disk-more-than-full">reserve</link> 8% of the disk
|
|
space.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="disk-more-than-full">
|
|
<para>How is it possible for a partition to be more than 100%
|
|
full?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>A portion of each UFS partition (8%, by default) is
|
|
reserved for use by the operating system and the
|
|
<username>root</username> user.
|
|
&man.df.1; does not count that space when
|
|
calculating the <literal>Capacity</literal> column, so it can
|
|
exceed 100%. Also, you will notice that the
|
|
<literal>Blocks</literal> column is always greater than the
|
|
sum of the <literal>Used</literal> and
|
|
<literal>Avail</literal> columns, usually by a factor of
|
|
8%.</para>
|
|
|
|
<para>For more details, look up the <option>-m</option> option
|
|
in &man.tunefs.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="admin">
|
|
<title>System Administration</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="startup-config-files">
|
|
<para>Where are the system start-up configuration files?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The primary configuration file is
|
|
<filename>/etc/defaults/rc.conf</filename> (see
|
|
&man.rc.conf.5;) System startup scripts such as
|
|
<filename>/etc/rc</filename> and
|
|
<filename>/etc/rc.d</filename> (see &man.rc.8;) just
|
|
include this file. <emphasis>Do not edit this
|
|
file!</emphasis> Instead, if there is any entry in
|
|
<filename>/etc/defaults/rc.conf</filename> that you want
|
|
to change, you should copy the line into
|
|
<filename>/etc/rc.conf</filename> and change it
|
|
there.</para>
|
|
|
|
<para>For example, if you wish to start named, the included
|
|
DNS server, all you need to do is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>echo named_enable="YES" >> /etc/rc.conf</userinput></screen>
|
|
|
|
<para>To start up local services, place shell scripts in the
|
|
<filename>/usr/local/etc/rc.d</filename> directory. These
|
|
shell scripts should be set executable, and end with a
|
|
.sh.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="adding-users">
|
|
<para>How do I add a user easily?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use the &man.adduser.8; command, or the &man.pw.8;
|
|
command for more complicated situations.</para>
|
|
|
|
<para>To remove the user, use the &man.rmuser.8; command or,
|
|
if necessary, &man.pw.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="root-not-found-cron-errors">
|
|
<para>Why do I keep getting messages like <errorname>root: not
|
|
found</errorname> after editing my crontab file?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is normally caused by editing the system crontab
|
|
(<filename>/etc/crontab</filename>) and then using
|
|
&man.crontab.1; to install it:</para>
|
|
|
|
<screen>&prompt.root; <userinput>crontab /etc/crontab</userinput></screen>
|
|
|
|
<para>This is not the correct way to do things. The system
|
|
crontab has a different format to the per-user crontabs
|
|
which &man.crontab.1; updates (the &man.crontab.5; manual
|
|
page explains the differences in more detail).</para>
|
|
|
|
<para>If this is what you did, the extra crontab is simply a
|
|
copy of <filename>/etc/crontab</filename> in the wrong
|
|
format it. Delete it with the command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>crontab -r</userinput></screen>
|
|
|
|
<para>Next time, when you edit
|
|
<filename>/etc/crontab</filename>, you should not do
|
|
anything to inform &man.cron.8; of the changes, since it
|
|
will notice them automatically.</para>
|
|
|
|
<para>If you want something to be run once per day, week, or
|
|
month, it is probably better to add shell scripts
|
|
<filename>/usr/local/etc/periodic</filename>, and let the
|
|
&man.periodic.8; command run from the system cron schedule
|
|
it with the other periodic system tasks.</para>
|
|
|
|
<para>The actual reason for the error is that the system
|
|
crontab has an extra field, specifying which user to run the
|
|
command as. In the default system crontab provided with
|
|
FreeBSD, this is <username>root</username> for all entries.
|
|
When this crontab is used as the <username>root</username>
|
|
user's crontab (which is <emphasis>not</emphasis> the
|
|
same as the system crontab), &man.cron.8; assumes the string
|
|
<literal>root</literal> is the first word of the command to
|
|
execute, but no such command exists.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="su-wheel-group">
|
|
<para>Why do I get the error, <errorname>you are not in the correct
|
|
group to su root</errorname> when I try to su to
|
|
<username>root</username>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is a security feature. In order to su to
|
|
<username>root</username> (or any other account with superuser
|
|
privileges), you must be in the <groupname>wheel</groupname>
|
|
group. If this feature were not there, anybody with an account
|
|
on a system who also found out <username>root</username>'s
|
|
password would be able to gain superuser level access to the
|
|
system. With this feature, this is not strictly true;
|
|
&man.su.1; will prevent them from even trying to enter the
|
|
password if they are not in <groupname>wheel</groupname>.</para>
|
|
|
|
<para>To allow someone to su to <username>root</username>, simply
|
|
put them in the <groupname>wheel</groupname> group.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="rcconf-readonly">
|
|
<para>I made a mistake in <filename>rc.conf</filename>,
|
|
or another startup file, and
|
|
now I cannot edit it because the filesystem is read-only.
|
|
What should I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>When you get the prompt to enter the shell
|
|
pathname, simply press <literal>ENTER</literal>, and run
|
|
<command>mount /</command> to re-mount the root filesystem in
|
|
read/write mode. You may also need to run <command>mount -a -t
|
|
ufs</command> to mount the filesystem where your favorite
|
|
editor is defined. If your favorite editor is on a network
|
|
filesystem, you will need to either configure the network
|
|
manually before you can mount network filesystems, or use an
|
|
editor which resides on a local filesystem, such as
|
|
&man.ed.1;.</para>
|
|
|
|
<para>If you intend to use a full screen editor such
|
|
as &man.vi.1; or &man.emacs.1;, you may also need to
|
|
run <command>export TERM=cons25</command> so that these
|
|
editors can load the correct data from the &man.termcap.5;
|
|
database.</para>
|
|
|
|
<para>Once you have performed these steps, you can edit
|
|
<filename>/etc/rc.conf</filename> as you usually would
|
|
to fix the syntax error. The error message displayed
|
|
immediately after the kernel boot messages should tell you
|
|
the number of the line in the file which is at fault.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="printer-setup">
|
|
<para>Why am I having trouble 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="&url.books.handbook;/printing.html">
|
|
Handbook entry on printing</ulink>.</para>
|
|
|
|
<para>Some printers require a host-based driver to do any
|
|
kind of printing. These so-called
|
|
<quote>WinPrinters</quote> are not natively supported by
|
|
FreeBSD. If your printer does not work in DOS or &windowsnt;
|
|
4.0, it is probably a WinPrinter. Your only hope of
|
|
getting one of these to work is to check if the <filename
|
|
role="package">print/pnm2ppa</filename> port supports
|
|
it.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="keyboard-mappings">
|
|
<para>How can I correct the keyboard mappings for my system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the Handbook section on <ulink
|
|
url="&url.books.handbook;/using-localization.html">using
|
|
localization</ulink>, specifically the section on <ulink
|
|
url="&url.books.handbook;/using-localization.html#SETTING-CONSOLE">console
|
|
setup</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="pnp-resources">
|
|
<para>Why do I get messages like: <errorname>unknown: <PNP0303>
|
|
can't assign resources</errorname> on boot?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The following is an excerpt from a post to the
|
|
freebsd-current mailing list.</para>
|
|
|
|
<blockquote>
|
|
<attribution>&a.wollman;, 24 April 2001</attribution>
|
|
|
|
<para>The <quote>can't assign resources</quote> messages
|
|
indicate that the devices are legacy ISA devices for which a
|
|
non-PnP-aware driver is compiled into the kernel. These
|
|
include devices such as keyboard controllers, the
|
|
programmable interrupt controller chip, and several other
|
|
bits of standard infrastructure. The resources cannot be
|
|
assigned because there is already a driver using those
|
|
addresses.</para>
|
|
</blockquote>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="user-quotas">
|
|
<para>Why can I not get user quotas to work properly?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<!-- XXX
|
|
This may be the worst answer in the entire document.
|
|
-->
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Do not turn on quotas on <filename>/</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Put the quota file on the filesystem that the quotas
|
|
are to be enforced on, i.e.:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Filesystem</entry>
|
|
<entry>Quota file</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><filename>/usr</filename></entry>
|
|
<entry><filename>/usr/admin/quotas</filename></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>/home</filename></entry>
|
|
<entry><filename>/home/admin/quotas</filename></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>…</entry>
|
|
<entry>…</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</listitem>
|
|
</orderedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="sysv-ipc">
|
|
<para>Does FreeBSD support System V IPC primitives?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, FreeBSD supports System V-style IPC, including
|
|
shared memory, messages and semaphores, in the GENERIC
|
|
kernel. In a custom kernel, enable this support by adding
|
|
the following lines to your kernel config.</para>
|
|
|
|
<programlisting>options SYSVSHM # enable shared memory
|
|
options SYSVSEM # enable for semaphores
|
|
options SYSVMSG # enable for messaging</programlisting>
|
|
|
|
<para>Recompile and install your kernel.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="sendmail-alternative">
|
|
<para>What other mail-server software can I use instead of
|
|
Sendmail?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><ulink url="http://www.sendmail.org/">Sendmail</ulink> is
|
|
the default mail-server software for FreeBSD, but you can
|
|
easily replace it with one of the other MTA (for instance,
|
|
an MTA installed from the ports).</para>
|
|
|
|
<para>There are various alternative MTAs in the ports tree
|
|
already, with <filename
|
|
role="package">mail/exim</filename>, <filename
|
|
role="package">mail/postfix</filename>, <filename
|
|
role="package">mail/qmail</filename>, and <filename
|
|
role="package">mail/zmailer</filename> being some of the
|
|
most popular choices.</para>
|
|
|
|
<para>Diversity is nice, and the fact that you have many
|
|
different mail-servers to chose from is considered a
|
|
good thing; therefore try to avoid
|
|
asking questions like <quote>Is Sendmail better than
|
|
Qmail?</quote> in the mailing lists. If you do feel like
|
|
asking, first check the mailing list archives. The
|
|
advantages and disadvantages of each and every one of the
|
|
available MTAs have already been discussed a few
|
|
times.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="forgot-root-pw">
|
|
<para>I have forgotten the <username>root</username> password! What
|
|
do I do?</para>
|
|
</question><answer>
|
|
|
|
<para>Do not panic! Restart the system, type
|
|
<userinput>boot -s</userinput> at the Boot: prompt to
|
|
enter Single User mode. At the question about the shell to
|
|
use, hit ENTER. You will be dropped to a &prompt.root;
|
|
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
|
|
<command>passwd root</command> to change the
|
|
<username>root</username> password then run &man.exit.1;
|
|
to continue booting.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="CAD-reboot">
|
|
<para>How do I keep <keycombo
|
|
action="simul"><keycap>Control</keycap><keycap>Alt</keycap><keycap>Delete</keycap></keycombo>
|
|
from rebooting the system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are using syscons (the default console driver)
|
|
build and install a new kernel with the
|
|
line</para>
|
|
|
|
<programlisting>options SC_DISABLE_REBOOT</programlisting>
|
|
|
|
<para>in the configuration file. If you use the PCVT console
|
|
driver, use the following kernel configuration line
|
|
instead.</para>
|
|
|
|
<programlisting>options PCVT_CTRL_ALT_DEL</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dos-to-unix-txt">
|
|
<para>How do I reformat DOS text files to &unix; ones?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>Use this perl command:</para>
|
|
|
|
<screen>&prompt.user; <userinput>perl -i.bak -npe 's/\r\n/\n/g' file ...</userinput></screen>
|
|
|
|
<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
|
|
&man.tr.1;
|
|
command:</para>
|
|
|
|
<screen>&prompt.user; <userinput>tr -d '\r' < <replaceable>dos-text-file</replaceable> > <replaceable>unix-file</replaceable></userinput></screen>
|
|
|
|
<para><replaceable>dos-text-file</replaceable> is the file
|
|
containing DOS text while <replaceable>unix-file</replaceable>
|
|
will contain the converted output. This can be quite a bit
|
|
faster than using perl.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kill-by-name">
|
|
<para>How do I kill processes by name?</para>
|
|
</question><answer>
|
|
|
|
<para>Use &man.killall.1;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="root-acl">
|
|
<para>Why is su bugging me about not being in
|
|
<username>root</username>'s ACL?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>The error comes from the Kerberos distributed
|
|
authentication system. The problem is not 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 id="uninstall-kerberos">
|
|
<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 will assume on /cdrom)
|
|
and run</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /cdrom/bin</userinput>
|
|
&prompt.root; <userinput>./install.sh</userinput></screen>
|
|
|
|
<para>Alternately, you can remove all
|
|
<makevar>MAKE_KERBEROS</makevar> options from
|
|
<filename>/etc/make.conf</filename> and rebuild
|
|
world.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="where-is-makedev">
|
|
<para>What happened to
|
|
<filename>/dev/MAKEDEV</filename>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD 5.X and beyond use the &man.devfs.8; device-on-demand
|
|
system. Device drivers automatically create new device
|
|
nodes as they are needed, obsoleting
|
|
<filename>/dev/MAKEDEV</filename>.</para>
|
|
|
|
<para>If you are running FreeBSD 4.X or earlier and
|
|
<filename>/dev/MAKEDEV</filename> is missing, then you
|
|
really do have a problem. Grab a copy from the system
|
|
source code, probably in
|
|
<filename>/usr/src/etc/MAKEDEV</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="add-pty">
|
|
<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 will probably run out of pseudoterminals. Here is how to
|
|
add more:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Build and install a new kernel with the line</para>
|
|
|
|
<programlisting>pseudo-device pty 256</programlisting>
|
|
|
|
<para>in the configuration file.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Run the commands</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev</userinput>
|
|
&prompt.root; <userinput>sh MAKEDEV pty{1,2,3,4,5,6,7}</userinput></screen>
|
|
|
|
<para>to make 256 device nodes for the new terminals.</para>
|
|
|
|
</step>
|
|
|
|
<step>
|
|
<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</para>
|
|
|
|
<programlisting>ttyqc none network</programlisting>
|
|
|
|
<para>The order of the letter designations is
|
|
<literal>tty[pqrsPQRS][0-9a-v]</literal>, using a
|
|
regular expression. </para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Reboot the system with the new kernel and you are
|
|
ready to go.</para>
|
|
</step>
|
|
</procedure>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="create-snd0">
|
|
<para>Why can I not create the snd0 device?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is no <devicename>snd</devicename> device. The name
|
|
is used as a shorthand for the various devices that make up the
|
|
FreeBSD sound driver, such as <devicename>mixer</devicename>,
|
|
<devicename>sequencer</devicename>, and
|
|
<devicename>dsp</devicename>.</para>
|
|
|
|
<para>To create these devices you should</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev</userinput>
|
|
&prompt.root; <userinput>sh MAKEDEV snd0</userinput></screen>
|
|
|
|
<note>
|
|
<para>You can omit this step if you are running FreeBSD
|
|
5.0-RELEASE or newer with &man.devfs.5;
|
|
enabled.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="reread-rc">
|
|
<para>How do I re-read <filename>/etc/rc.conf</filename> and
|
|
re-start <filename>/etc/rc</filename> without a
|
|
reboot?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>Go into single user mode and then back to multi user
|
|
mode.</para>
|
|
|
|
<para>On the console do:</para>
|
|
|
|
<screen>&prompt.root; <userinput>shutdown now</userinput>
|
|
(Note: without -r or -h)
|
|
|
|
&prompt.root; <userinput>return</userinput>
|
|
&prompt.root; <userinput>exit</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
|
|
<qandaentry>
|
|
<question id="release-candidate">
|
|
<para>I tried to update my system to the latest -STABLE, but
|
|
got -BETAx, -RC or -PRERELEASE! What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: it is just a name. RC stands for
|
|
<quote>Release Candidate</quote>. It signifies that a
|
|
release is imminent. In FreeBSD, -PRERELEASE is typically
|
|
synonymous with the code freeze before a release. (For
|
|
some releases, the -BETA label was used in the same way as
|
|
-PRERELEASE.)</para>
|
|
|
|
<para>Long answer: FreeBSD derives its releases from one of
|
|
two places. Major, dot-zero, releases, such as
|
|
4.0-RELEASE and 5.0-RELEASE, are branched from the head of
|
|
the development stream, commonly referred to as <link
|
|
linkend="current">-CURRENT</link>. Minor releases, such
|
|
as 4.1-RELEASE or 5.2-RELEASE, have been snapshots of the
|
|
active <link linkend="stable">-STABLE</link> branch.
|
|
Starting with 4.3-RELEASE, each release also now has its
|
|
own branch which can be tracked by people requiring an
|
|
extremely conservative rate of development (typically only
|
|
security advisories).</para>
|
|
|
|
<para>When a release is about to be made, the branch from
|
|
which it will be derived from has to undergo a certain
|
|
process. Part of this process is a code freeze. When a
|
|
code freeze is initiated, the name of the branch is
|
|
changed to reflect that it is about to become a release.
|
|
For example, if the branch used to be called 4.5-STABLE,
|
|
its name will be changed to 4.6-PRERELEASE to signify the
|
|
code freeze and signify that extra pre-release testing
|
|
should be happening. Bug fixes can still be committed to
|
|
be part of the release. When the source code is in shape
|
|
for the release the name will be changed to 4.6-RC to
|
|
signify that a release is about to be made from it. Once
|
|
in the RC stage, only the most critical bugs found can be
|
|
fixed. Once the release (4.6-RELEASE in this example) and
|
|
release branch have been made, the branch will be renamed
|
|
to 4.6-STABLE.</para>
|
|
|
|
<para>For more information on version numbers and the
|
|
various CVS branches, refer to the
|
|
<ulink url="&url.articles.releng;/article.html">Release
|
|
Engineering</ulink> article.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kernel-chflag-failure">
|
|
<para>I tried to install a new kernel, and the chflags
|
|
failed. How do I get around this?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: You are probably at security level
|
|
greater than 0. Reboot directly to single user mode to
|
|
install the kernel.</para>
|
|
|
|
<para>Long answer: FreeBSD disallows changing system flags
|
|
at security levels greater than 0. You can check your
|
|
security level with the command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
|
|
|
|
<para>You cannot lower the security level; you have to boot to
|
|
single mode to install the kernel, or change the security
|
|
level in <filename>/etc/rc.conf</filename> then reboot. See
|
|
the &man.init.8; manual page for details on securelevel, and see
|
|
<filename>/etc/defaults/rc.conf</filename> and the
|
|
&man.rc.conf.5; manual page for more information on
|
|
rc.conf.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kernel-securelevel-time">
|
|
<para>I cannot change the time on my system by more than one second!
|
|
How do I get around this?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: You are probably at security level
|
|
greater than 1. Reboot directly to single user mode to
|
|
change the date.</para>
|
|
|
|
<para>Long answer: FreeBSD disallows changing the time by
|
|
more that one second at security levels greater than 1. You
|
|
can check your security level with the command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
|
|
|
|
<para>You cannot lower the security level; you have to boot
|
|
to single mode to change the date, or change the security
|
|
level in <filename>/etc/rc.conf</filename> then
|
|
reboot. See the &man.init.8; manual page for details on
|
|
securelevel, and see
|
|
<filename>/etc/defaults/rc.conf</filename> and the
|
|
&man.rc.conf.5; manual page for more information on
|
|
rc.conf.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="statd-mem-leak">
|
|
<para>Why is <command>rpc.statd</command> using 256 megabytes of
|
|
memory?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>No, there is no memory leak, and it is not using 256 Mbytes
|
|
of memory. For convenience, <command>rpc.statd</command> maps an
|
|
obscene amount of memory into its address space.
|
|
There is nothing terribly wrong with this from a technical
|
|
standpoint; it just throws off things like &man.top.1; and
|
|
&man.ps.1;.</para>
|
|
|
|
<para>&man.rpc.statd.8; maps its status file (resident on
|
|
<filename>/var</filename>) into its address space; to save
|
|
worrying about remapping it later when it needs to grow, it maps
|
|
it with a generous size. This is very evident from the source
|
|
code, where one can see that the length argument to &man.mmap.2;
|
|
is <literal>0x10000000</literal>, or one sixteenth of the
|
|
address space on an IA32, or exactly 256MB.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="unsetting-schg">
|
|
<para>Why can I not unset the <literal>schg</literal> file
|
|
flag?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You are running at an elevated (i.e., greater than 0)
|
|
securelevel. Lower the securelevel and try again. For more
|
|
information, see <link linkend="securelevel">the FAQ entry on
|
|
securelevel</link> and the &man.init.8; manual page.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ssh-shosts">
|
|
<para>Why does SSH authentication through
|
|
<filename>.shosts</filename> not work by default in recent
|
|
versions of FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The reason why <filename>.shosts</filename>
|
|
authentication does not work by default in more recent
|
|
versions of FreeBSD is because &man.ssh.1;
|
|
is not installed suid <username>root</username> by default. To
|
|
<quote>fix</quote> this, you can do one of the
|
|
following:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>As a permanent fix, set
|
|
<makevar>ENABLE_SUID_SSH</makevar> to <literal>true</literal>
|
|
in <filename>/etc/make.conf</filename> and rebuild ssh
|
|
(or run <command>make world</command>).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>As a temporary fix, change the mode on
|
|
<filename>/usr/bin/ssh</filename> to <literal>4555</literal>
|
|
by running <command>chmod 4555 /usr/bin/ssh</command> as
|
|
<username>root</username>. Then add
|
|
<makevar>ENABLE_SUID_SSH= true</makevar> to
|
|
<filename>/etc/make.conf</filename> so the change takes
|
|
effect the next time <command>make world</command> is
|
|
run.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="vnlru">
|
|
<para>What is <literal>vnlru</literal>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><literal>vnlru</literal> flushes and frees vnodes when
|
|
the system hits the <varname>kern.maxvnodes</varname>
|
|
limit. This kernel thread sits mostly idle, and only
|
|
activates if you have a huge amount of RAM and are
|
|
accessing tens of thousands of tiny files.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="top-memory-states">
|
|
<para>What do the various memory states displayed by
|
|
<command>top</command> mean?</para>
|
|
</question>
|
|
<!-- Provided by John Dyson via Usenet -->
|
|
<answer>
|
|
<itemizedlist>
|
|
<listitem><para><literal>Active</literal>: pages recently
|
|
statistically used.</para></listitem>
|
|
|
|
<listitem><para><literal>Inactive</literal>: pages
|
|
recently statistically unused.</para></listitem>
|
|
|
|
<listitem><para><literal>Cache</literal>: (most often)
|
|
pages that have percolated from inactive to a status
|
|
where they maintain their data, but can often be
|
|
immediately reused (either with their old association,
|
|
or reused with a new association.) There can be certain
|
|
immediate transitions from <literal>active</literal> to <literal>cache</literal> state if the
|
|
page is known to be clean (unmodified), but that
|
|
transition is a matter of policy, depending upon the
|
|
algorithm choice of the VM system
|
|
maintainer.</para></listitem>
|
|
|
|
<listitem><para><literal>Free</literal>: pages without
|
|
data content, and can be immediately used in certain
|
|
circumstances where cache pages might be ineligible.
|
|
Free pages can be reused at interrupt or process
|
|
state.</para></listitem>
|
|
|
|
<listitem><para><literal>Wired</literal>: pages that are
|
|
fixed into memory, usually for kernel purposes, but also
|
|
sometimes for special use in
|
|
processes.</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Pages are most often written to disk (sort of a VM
|
|
sync) when they are in the inactive state, but active
|
|
pages can also be synced (but requires the
|
|
availability of certain CPU features.) This depends upon
|
|
the CPU tracking of the modified bit being available,
|
|
and in certain situations there can be an advantage for a
|
|
block of VM pages to be synced, whether they are active or
|
|
inactive. In most common cases, it is best to think of
|
|
the inactive queue to be a queue of relatively unused
|
|
pages that might or might not be in the process of being
|
|
written to disk. Cached pages are already synced, not
|
|
mapped, but available for immediate process use with their
|
|
old association or with a new association. Free pages are
|
|
available at interrupt level, but cached or free pages can
|
|
be used at process state for reuse. Cache pages are not
|
|
adequately locked to be available at interrupt
|
|
level.</para>
|
|
|
|
<para>There are some other flags (e.g., busy flag or busy
|
|
count) that might modify some of the rules that I
|
|
described.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="free-memory-amount">
|
|
<para>How much free memory is available?</para>
|
|
</question>
|
|
<!-- Provided by John Dyson via Usenet -->
|
|
<answer>
|
|
<para>There are a couple of kinds of <quote>free
|
|
memory</quote>. One kind is the amount of memory
|
|
immediately available without paging anything else out.
|
|
That is approximately the size of cache queue + size of
|
|
free queue (with a derating factor, depending upon system
|
|
tuning.) Another kind of <quote>free memory</quote> is
|
|
the total amount of <acronym>VM</acronym> space. That can
|
|
be complex, but is dependent upon the amount of swap space
|
|
and memory. Other kinds of <quote>free memory</quote>
|
|
descriptions are also possible, but it is relatively
|
|
useless to define these, but rather it is important to
|
|
make sure that the paging rate is kept low, and to avoid
|
|
running out of swap space.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="var-empty">
|
|
<para>What is <filename>/var/empty</filename>? I can not
|
|
delete it!</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><filename>/var/empty</filename> is a directory that the
|
|
&man.sshd.8; program uses when performing privilege separation.
|
|
The <filename>/var/empty</filename> directory is empty, owned by
|
|
<username>root</username> and has the <literal>schg</literal>
|
|
flag set.</para>
|
|
|
|
<para>Although it is not recommended to delete this directory, to
|
|
do so you will need to unset the <literal>schg</literal> flag
|
|
first. See the &man.chflags.1; manual page for more information
|
|
(and bear in mind the answer to <link linkend="unsetting-schg">
|
|
the question on unsetting the schg flag</link>).
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="x">
|
|
<title>The X Window System and Virtual Consoles</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="whatis-X">
|
|
<para>What is the X Window System?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>The X Window System is the most widely available windowing system
|
|
capable of running on &unix; or &unix; like systems, including
|
|
&os;. <ulink url= "http://www.x.org">The X.Org
|
|
Foundation</ulink> administers the <ulink
|
|
url="http://www.x.org/X11_protocol.html">X protocol
|
|
standards</ulink>. The current release of the specification
|
|
is 11.6, so you will often see references shortened to
|
|
<literal>X11R6</literal> or even just <literal>X11</literal>.
|
|
</para>
|
|
|
|
<para>Many implementations are available for different
|
|
architectures and operating systems. An
|
|
implementation of the server-side code is properly known
|
|
as an <literal>X server</literal>.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="which-X">
|
|
<para>Which X implementations are available for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>Historically, the default implementation of X on
|
|
&os; has been
|
|
&xfree86; which is maintained by
|
|
<ulink url="http://www.xfree86.org">The XFree86 Project,
|
|
Inc.</ulink> This software was installed by default on
|
|
&os; versions up until 4.10 and 5.2. Although &xorg;
|
|
itself maintained an implementation during that time
|
|
period, it was basically only provided as a reference
|
|
platform, as it had suffered greatly from bitrot over
|
|
the years.</para>
|
|
|
|
<para>However, early in 2004, some XFree86 developers left
|
|
that project
|
|
over issues including the pace of code changes, future
|
|
directions, and interpersonal conflicts, and are now contributing
|
|
code directly to &xorg; instead. At that time, &xorg; updated its
|
|
source tree to the last &xfree86; release before its subsequent
|
|
licensing change (<application>XFree86 version 4.3.99.903</application>), incorporated
|
|
many changes that had previously been maintained separately,
|
|
and has released that software as <application>X11R6.7.0</application>. A separate but
|
|
related project, <ulink url="http://www.freedesktop.org">
|
|
freedesktop.org</ulink> (or <literal>fd.o</literal> for short),
|
|
is working on rearchitecting the original &xfree86; code to
|
|
offload more work onto the graphics cards (with the goal of
|
|
increased performance) and make it more modular
|
|
(with the goal of increased maintainability, and thus faster
|
|
releases as well as easier configuration). &xorg; intends to
|
|
incorporate the freedesktop.org changes in its future releases.</para>
|
|
|
|
<para>As of July 2004, in &os.current;,
|
|
&xfree86; has been replaced with &xorg; as the default
|
|
implementation. The &xfree86; ports
|
|
(<filename role="package">x11/XFree86-4</filename> and
|
|
subports) remain in the ports collection and are still
|
|
the default for &os.stable;.</para>
|
|
|
|
<note>
|
|
<para>The above describes the default X implementation installed.
|
|
It is still possible to install either implementation by
|
|
following the instructions in the entry for 20040723 in
|
|
<filename>/usr/ports/UPDATING</filename>.</para>
|
|
</note>
|
|
|
|
<warning>
|
|
<para>It is not currently
|
|
possible to mix-and-match pieces of each implementation;
|
|
one must choose one or the other.</para>
|
|
</warning>
|
|
|
|
<note>
|
|
<para>The following paragraphs refer to the
|
|
&xfree86; implementation, but most should also be applicable
|
|
to the &xorg; implementation as well. While the default
|
|
configuration filename for the &xorg; implementation is
|
|
<filename>xorg.conf</filename>, it will search for
|
|
<filename>XF86Config</filename> if it cannot find it.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="xorg-compatibility">
|
|
<para>Will my existing applications run with the &xorg; suite?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &xorg; software is written to the same X11R6 specification
|
|
that &xfree86; is, so basic applications should work
|
|
unchanged. A few lesser-used protocols have been deprecated
|
|
(<literal>XIE</literal>, <literal>PEX</literal>, and
|
|
<literal>lbxproxy</literal>), but in the first two cases, the
|
|
&os; port of &xfree86; did not support them either.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="xfree86-split">
|
|
<para>Why did the X projects split, anyway?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The answer to this question is outside the scope of
|
|
this FAQ. Note that there are voluminous postings in various
|
|
mailing list archives on the Internet; please use your favorite
|
|
search engine to investigate the history instead of asking this
|
|
question on the &os; mailing lists. It may even be the case
|
|
that only the participants will ever know for certain.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="why-choose-xorg">
|
|
<para>Why did &os; choose to go with the &xorg; ports by default?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &xorg; developers claim that their goal is to release
|
|
more often and incorporate new features more quickly. If they
|
|
are able to do so, this will be very attractive. Also, their
|
|
software still uses the traditional X license, while &xfree86;
|
|
is now using their modified one.</para>
|
|
|
|
<note>
|
|
<para>This decision is still controversial. Only time will
|
|
tell which implementation proves technically superior. Each
|
|
&os; user should decide which they prefer.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="running-X">
|
|
<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>If you would like to add X to an existing installation, you
|
|
should use the <filename role="package">x11/xorg</filename>
|
|
meta-port, which will build and install all the necessary
|
|
components.</para>
|
|
|
|
<para>Then read and follow the documentation on the
|
|
&man.xorgconfig.1; tool, which assists you in
|
|
configuring &xfree86; for your particular graphics
|
|
card/mouse/etc. You may also wish to examine the
|
|
&man.xorgcfg.1; tool, which provides a graphical interface
|
|
to the X configuration process.</para>
|
|
|
|
<para>For further information, read the <ulink
|
|
url="&url.books.handbook;/x11.html">X11</ulink> section of the
|
|
FreeBSD Handbook.</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="running-X-securelevels">
|
|
<para>I <emphasis>tried</emphasis> to run X, but I get an
|
|
<errorname>KDENABIO failed (Operation not permitted)</errorname>
|
|
error when I type <command>startx</command>. What do I do
|
|
now?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your system is probably running at a raised securelevel.
|
|
It is not possible to start X at a raised securelevel because
|
|
X requires write access to <devicename>/dev/io</devicename>.
|
|
For more information, see at the &man.init.8; manual
|
|
page.</para>
|
|
|
|
<para>So the question is what else you should do instead,
|
|
and you basically have two choices: set your securelevel
|
|
back down to zero (usually from <filename>/etc/rc.conf</filename>),
|
|
or run &man.xdm.1; at boot time (before the securelevel is
|
|
raised).</para>
|
|
|
|
<para>See <xref linkend="xdm-boot"> for more information about
|
|
running &man.xdm.1; at boot time.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="x-and-moused">
|
|
<para>Why does my mouse not 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
|
|
<devicename>/dev/sysmouse</devicename>. All mouse events received
|
|
from the real mouse device are written to the sysmouse device
|
|
via moused. If you wish to use your mouse on one or more
|
|
virtual consoles, <emphasis>and</emphasis> use X, see
|
|
<xref linkend="moused" remap="another section"> and set up
|
|
moused.</para>
|
|
|
|
<para>Then edit <filename>/etc/XF86Config</filename> and make
|
|
sure you have the following lines.</para>
|
|
|
|
<programlisting>Section Pointer
|
|
Protocol "SysMouse"
|
|
Device "/dev/sysmouse"
|
|
.....</programlisting>
|
|
|
|
<para>The above example is for &xfree86; 3.3.2 or later, and
|
|
for &xorg; 6.7.0. For earlier versions, the
|
|
<emphasis>Protocol</emphasis> should be
|
|
<emphasis>MouseSystems</emphasis>.</para>
|
|
|
|
<para>Some people prefer to use
|
|
<devicename>/dev/mouse</devicename> under X. To make this
|
|
work, <devicename>/dev/mouse</devicename> should be linked
|
|
to <devicename>/dev/sysmouse</devicename> (see
|
|
&man.sysmouse.4;):</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev</userinput>
|
|
&prompt.root; <userinput>rm -f mouse</userinput>
|
|
&prompt.root; <userinput>ln -s sysmouse mouse</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="x-and-wheel">
|
|
<para>My mouse has a fancy wheel. Can I use it in X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes.</para>
|
|
|
|
<para>You need to tell X that you have a 5 button mouse.
|
|
To do this, simply add the lines
|
|
<literal>Buttons 5</literal> and
|
|
<literal>ZAxisMapping 4 5</literal> to the
|
|
<quote>InputDevice</quote> section of
|
|
<filename>/etc/XF86Config</filename>. For example, you
|
|
might have the following <quote>InputDevice</quote> section
|
|
in <filename>/etc/XF86Config</filename>.</para>
|
|
|
|
<example>
|
|
<title><quote>InputDevice</quote> Section for Wheeled Mouse
|
|
in &xfree86; and &xorg; configuration file</title>
|
|
|
|
<programlisting>Section "InputDevice"
|
|
Identifier "Mouse1"
|
|
Driver "mouse"
|
|
Option "Protocol" "auto"
|
|
Option "Device" "/dev/sysmouse"
|
|
Option "Buttons" "5"
|
|
Option "ZAxisMapping" "4 5"
|
|
EndSection</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title><quote>.emacs</quote> example for naive page
|
|
scrolling with Wheeled Mouse (optional)</title>
|
|
<programlisting>;; wheel mouse
|
|
(global-set-key [mouse-4] 'scroll-down)
|
|
(global-set-key [mouse-5] 'scroll-up)</programlisting>
|
|
</example>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="no-remote-x11">
|
|
<para>How do I use remote X displays?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For security reasons, the default setting is to not allow a
|
|
machine to remotely open a window.</para>
|
|
|
|
<para>To enable this feature, simply start
|
|
<application>X</application> with the optional
|
|
<option>-listen_tcp</option> argument:</para>
|
|
<screen>&prompt.user; <userinput>startx
|
|
-listen_tcp</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="window-menu-weird">
|
|
<para>Why do X Window menus and dialog boxes not work
|
|
right?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Try turning off the <keycap>Num Lock</keycap> key.</para>
|
|
|
|
<para>If your <keycap>Num Lock</keycap> key is on by default
|
|
at boot-time, you may add the following line in the
|
|
<literal>Keyboard</literal> section of the
|
|
<filename>XF86Config</filename> file.</para>
|
|
|
|
<programlisting># Let the server do the NumLock processing. This should only be
|
|
# required when using pre-R6 clients
|
|
ServerNumLock</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="virtual-console">
|
|
<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 <keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>
|
|
(hold down the <keycap>Alt</keycap> key and press the
|
|
<keycap>F2</keycap> key), and you will find a login prompt
|
|
waiting for you on the second <quote>virtual
|
|
console</quote>! When you want to go back to the original
|
|
session, do <keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F1</keycap></keycombo>.</para>
|
|
|
|
<para>The default FreeBSD installation has eight virtual
|
|
consoles enabled. <keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F1</keycap></keycombo>,
|
|
<keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>,
|
|
<keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F3</keycap></keycombo>,
|
|
and so on will switch between these virtual
|
|
consoles.</para>
|
|
|
|
<para>To enable more of them, edit
|
|
<filename>/etc/ttys</filename> (see &man.ttys.5;)
|
|
and add entries for <devicename>ttyv4</devicename>
|
|
to <devicename>ttyvc</devicename> after the comment on
|
|
<quote>Virtual terminals</quote>:</para>
|
|
|
|
<programlisting># 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</programlisting>
|
|
|
|
<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 <literal>secure</literal>
|
|
to <literal>insecure</literal>.</para>
|
|
|
|
<important>
|
|
<para>If you want to run an X server you
|
|
<emphasis>must</emphasis> 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 are 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>
|
|
</important>
|
|
|
|
<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>
|
|
|
|
<programlisting>ttyvb "/usr/libexec/getty Pc" cons25 on secure</programlisting>
|
|
|
|
<para>to:</para>
|
|
|
|
<programlisting>ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting>
|
|
|
|
<para>If your keyboard has only ten function keys, you would
|
|
end up with:</para>
|
|
|
|
<programlisting>ttyv9 "/usr/libexec/getty Pc" cons25 off secure
|
|
ttyva "/usr/libexec/getty Pc" cons25 off secure
|
|
ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting>
|
|
|
|
<para>(You could also just delete these lines.)</para>
|
|
|
|
<para>Once you have edited <filename>/etc/ttys</filename>,
|
|
the next step is to make sure that you have enough virtual
|
|
terminal devices. The easiest way to do this is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev</userinput>
|
|
&prompt.root; <userinput>sh MAKEDEV vty12</userinput></screen>
|
|
|
|
<note>
|
|
<para>On FreeBSD 5.X and beyond you do not have to create devices
|
|
manually if you are using <literal>DEVFS</literal>,
|
|
since the proper device nodes will be automatically
|
|
created under <filename
|
|
class="directory">/dev</filename>.</para>
|
|
</note>
|
|
|
|
<para>Next, the easiest (and cleanest) way to activate the
|
|
virtual consoles is to reboot. However, if you really do not
|
|
want to reboot, you can just shut down the X Window system
|
|
and execute (as <username>root</username>):</para>
|
|
|
|
<screen>&prompt.root; <userinput>kill -HUP 1</userinput></screen>
|
|
|
|
<para>It is imperative that you completely shut down X Window if
|
|
it is running, before running this command. If you do not,
|
|
your system will probably appear to hang/lock up after
|
|
executing the kill command.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="vty-from-x">
|
|
<para>How do I access the virtual consoles from X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use <keycombo action="simul">
|
|
<keycap>Ctrl</keycap>
|
|
<keycap>Alt</keycap>
|
|
<keycap>F<replaceable>n</replaceable></keycap>
|
|
</keycombo> to switch back to a virtual console.
|
|
<keycombo action="simul">
|
|
<keycap>Ctrl</keycap>
|
|
<keycap>Alt</keycap>
|
|
<keycap>F1</keycap>
|
|
</keycombo> would return you to the first virtual console.</para>
|
|
|
|
<para>Once you are back to a text console, you can then use
|
|
<keycombo action="simul">
|
|
<keycap>Alt</keycap>
|
|
<keycap>F<replaceable>n</replaceable></keycap>
|
|
</keycombo> as normal to move between them.</para>
|
|
|
|
<para>To return to the X session, you must switch to the
|
|
virtual console running X. If you invoked X from the
|
|
command line, (e.g., using <command>startx</command>) then
|
|
the X session will attach to the next unused virtual
|
|
console, not the text console from which it was invoked.
|
|
If you have eight active virtual terminals then X will be
|
|
running on the ninth, and you would use
|
|
<keycombo action="simul">
|
|
<keycap>Alt</keycap>
|
|
<keycap>F9</keycap>
|
|
</keycombo> to return.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="xdm-boot">
|
|
<para>How do I start XDM on boot?</para>
|
|
</question><answer>
|
|
|
|
<para>There are two schools of thought on how to start
|
|
&man.xdm.1;. One school starts xdm from
|
|
<filename>/etc/ttys</filename> (see &man.ttys.5;) using
|
|
the supplied example, while the other simply runs xdm from
|
|
<filename>rc.local</filename> (see &man.rc.8;) 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 does
|
|
not. In both cases the result is the same: X will pop up
|
|
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, <command>xdm</command> 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>If you are to start <command>xdm</command> from
|
|
<filename>/etc/ttys</filename>, there still is a chance of
|
|
conflict between <command>xdm</command> and
|
|
&man.getty.8;. One way to avoid this is to add the
|
|
<literal>vt</literal> number in the
|
|
<filename>/usr/X11R6/lib/X11/xdm/Xservers</filename>
|
|
file.</para>
|
|
|
|
<programlisting>:0 local /usr/X11R6/bin/X vt4</programlisting>
|
|
|
|
<para>The above example will direct the X server to run in
|
|
<devicename>/dev/ttyv3</devicename>. Note the number is offset by
|
|
one. The X server counts the vty from one, whereas the FreeBSD
|
|
kernel numbers the vty from zero.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="xconsole-failure">
|
|
<para>Why do I get <errorname>Couldn't open console</errorname>
|
|
when I run xconsole?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you start <application>X</application>
|
|
with
|
|
<command>startx</command>, the permissions on
|
|
<devicename>/dev/console</devicename> will
|
|
<emphasis>not</emphasis> get changed, resulting in
|
|
things like
|
|
<command>xterm -C</command> and
|
|
<command>xconsole</command> not working.</para>
|
|
|
|
<para>This is because of the way console permissions are set
|
|
by default. On a multi-user system, one does not 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 &man.fbtab.5;
|
|
file exists to solve such problems.</para>
|
|
|
|
<para>In a nutshell, make sure an uncommented line of the
|
|
form</para>
|
|
|
|
<programlisting>/dev/ttyv0 0600 /dev/console</programlisting>
|
|
|
|
<para>is in <filename>/etc/fbtab</filename> (see
|
|
&man.fbtab.5;) and it will ensure that whomever logs in on
|
|
<devicename>/dev/ttyv0</devicename> will own the
|
|
console.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="xfree86-root">
|
|
<para>Before, I was able to run &xfree86; as a regular user. Why does
|
|
it now say that I must be <username>root</username>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>All X servers need to be run as
|
|
<username>root</username> in order to get direct access to
|
|
your video hardware. Older versions of &xfree86; (<=
|
|
3.3.6) installed all bundled servers to be automatically
|
|
run as <username>root</username> (setuid to
|
|
<username>root</username>). This is obviously a security
|
|
hazard because X servers are large, complicated programs.
|
|
Newer versions of &xfree86; do not install the servers
|
|
setuid to <username>root</username> for just this
|
|
reason.</para>
|
|
|
|
<para>Obviously, running an X server as the
|
|
<username>root</username> user is not acceptable, nor a
|
|
good idea security-wise. There are two ways to be able to
|
|
use X as a regular user. The first is to use
|
|
<command>xdm</command> or another display manager (e.g.,
|
|
<command>kdm</command>); the second is to use the
|
|
<command>Xwrapper</command>.</para>
|
|
|
|
<para><command>xdm</command> is a daemon that handles graphical
|
|
logins. It is usually started at boot time, and is responsible
|
|
for authenticating users and starting their sessions; it is
|
|
essentially the graphical counterpart of
|
|
&man.getty.8; and &man.login.1;. For
|
|
more information on <command>xdm</command> see
|
|
<ulink url="http://www.xfree86.org/support.html">the &xfree86;
|
|
documentation</ulink>, and the <link linkend="xdm-boot">the FAQ
|
|
entry</link> on it.</para>
|
|
|
|
<para><command>Xwrapper</command> is the X server wrapper; it is
|
|
a small utility to enable one to manually run an X server while
|
|
maintaining reasonable safety. It performs some sanity checks
|
|
on the command line arguments given, and if they pass, runs the
|
|
appropriate X server. If you do not want to run a display
|
|
manger for whatever reason, this is for you. If you have
|
|
installed the complete ports collection, you can find the port in
|
|
<filename>/usr/ports/x11/wrapper</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ps2-x">
|
|
<para>Why does my PS/2 mouse misbehave under X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your mouse and the mouse driver may have somewhat become
|
|
out of synchronization.</para>
|
|
|
|
<para>
|
|
In rare cases the driver may erroneously report
|
|
synchronization problem and you may see the kernel
|
|
message:</para>
|
|
|
|
<programlisting>psmintr: out of sync (xxxx != yyyy)</programlisting>
|
|
|
|
<para>and notice that your mouse does not 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>
|
|
|
|
<screen>boot: <userinput>-c</userinput></screen>
|
|
|
|
<para>Then, in the <emphasis>UserConfig</emphasis> command
|
|
line, type:</para>
|
|
|
|
<screen>UserConfig> <userinput>flags psm0 0x100</userinput>
|
|
UserConfig> <userinput>quit</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ps2-mousesystems">
|
|
<para>Why does my PS/2 mouse from MouseSystems not
|
|
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
|
|
<quote>high resolution</quote> mode. Otherwise, the mouse
|
|
cursor may jump to the upper-left corner of the screen every
|
|
so often.</para>
|
|
|
|
<para>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>
|
|
|
|
<screen>boot: <userinput>-c</userinput></screen>
|
|
|
|
<para>Then, in the <emphasis>UserConfig</emphasis> command line,
|
|
type:</para>
|
|
|
|
<screen>UserConfig> <userinput>flags psm0 0x04</userinput>
|
|
UserConfig> <userinput>quit</userinput></screen>
|
|
|
|
<para>See the previous section for another possible cause of mouse
|
|
problems.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="imake-tmpl">
|
|
<para>When building an X app, <command>imake</command> cannot
|
|
find <filename>Imake.tmpl</filename>. Where is it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para><filename>Imake.tmpl</filename> is part of the Imake
|
|
package, a standard X application building tool.
|
|
<filename>Imake.tmpl</filename>, 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 id="xfree86-version">
|
|
<para>I want to install different X server.</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; versions prior 5.3 will use the default
|
|
<application>&xfree86; 4.X</application>,
|
|
while latter versions will default to
|
|
<application>&xorg;</application>.
|
|
If you want to run a different X11 implementation
|
|
than the default one, add the following line to
|
|
<filename>/etc/make.conf</filename>, (if you
|
|
do not have this file, create it):</para>
|
|
|
|
<programlisting>X_WINDOW_SYSTEM= xorg</programlisting>
|
|
|
|
<para>This variable may be set to <literal>xorg</literal>,
|
|
<literal>xfree86-4</literal>, or
|
|
<literal>xfree86-3</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mouse-button-reverse">
|
|
<para>How do I reverse the mouse buttons?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Run the command
|
|
<command>xmodmap -e "pointer = 3 2 1"</command> from your
|
|
<filename>.xinitrc</filename> or <filename>.xsession</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="install-splash">
|
|
<para>How do I install a splash screen and where do I find
|
|
them?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>&os; have a feature to allow the display of
|
|
<quote>splash</quote> 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.
|
|
The actual VESA support can either be compiled directly
|
|
into the kernel with the <literal>VESA</literal> 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 &os;.</para>
|
|
|
|
<para>You need to create
|
|
a <filename>/boot/loader.rc</filename> file that contains
|
|
the following lines:</para>
|
|
|
|
<programlisting>include /boot/loader.4th
|
|
start</programlisting>
|
|
|
|
<para>and a <filename>/boot/loader.conf</filename> that
|
|
contains the following:</para>
|
|
|
|
<programlisting>splash_bmp_load="YES"
|
|
bitmap_load="YES"</programlisting>
|
|
|
|
<para>This assumes you are using
|
|
<filename>/boot/splash.bmp</filename> for your splash
|
|
screen. If you would 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>
|
|
|
|
<programlisting>splash_pcx_load="YES"
|
|
bitmap_load="YES"
|
|
bitmap_name="/boot/splash.pcx"</programlisting>
|
|
|
|
<para>Now all you need is a splash screen. For that you can
|
|
surf on over to the gallery at
|
|
<ulink url="http://www.baldwin.cx/splash/"></ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="windows-keys">
|
|
<para>Can I use the &windows;
|
|
keys on my keyboard in X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. All you need to do is use &man.xmodmap.1; to define
|
|
what function you wish them to perform.</para>
|
|
|
|
<para>Assuming all <quote>&windows;</quote> keyboards
|
|
are standard then the keycodes for the 3 keys are</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>115 - &windows; key, between
|
|
the left-hand Ctrl and Alt keys</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>116 - &windows; key, to the
|
|
right of the <keycap>AltGr</keycap> key</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>117 - <keycap>Menu</keycap> key, to the left of
|
|
the right-hand <keycap>Ctrl</keycap> key</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>To have the left &windows; key print a comma,
|
|
try this.</para>
|
|
|
|
<screen>&prompt.root; <userinput>xmodmap -e "keycode 115 = comma"</userinput></screen>
|
|
|
|
<para>You will probably have to re-start your window manager
|
|
to see the result.</para>
|
|
|
|
<para>To have the &windows;
|
|
key-mappings enabled automatically every time you start X either
|
|
put the <command>xmodmap</command> commands in your
|
|
<filename>~/.xinitrc</filename> file or, preferably, create a file
|
|
<filename>~/.xmodmaprc</filename> and include the
|
|
<command>xmodmap</command> options, one per line, then add the
|
|
line</para>
|
|
|
|
<programlisting>xmodmap $HOME/.xmodmaprc</programlisting>
|
|
|
|
<para>to your <filename>~/.xinitrc</filename>.</para>
|
|
|
|
<para>For example, you could map the 3 keys to be
|
|
<keycap>F13</keycap>, <keycap>F14</keycap>, and
|
|
<keycap>F15</keycap>, respectively. This would make it
|
|
easy to map them to useful functions within applications
|
|
or your window manager, as demonstrated further
|
|
down.</para>
|
|
|
|
<para>To do this put the following in
|
|
<filename>~/.xmodmaprc</filename>.</para>
|
|
|
|
<programlisting>keycode 115 = F13
|
|
keycode 116 = F14
|
|
keycode 117 = F15</programlisting>
|
|
|
|
<para>If you use <command>fvwm2</command>, for example, you
|
|
could map the keys so that <keycap>F13</keycap> iconifies
|
|
(or de-iconifies) the window the cursor is in,
|
|
<keycap>F14</keycap> brings the window the cursor is in to
|
|
the front or, if it is already at the front, pushes it to
|
|
the back, and <keycap>F15</keycap> pops up the main
|
|
Workplace (application) menu even if the cursor is not on
|
|
the desktop, which is useful if you do not have any part
|
|
of the desktop visible (and the logo on the key matches
|
|
its functionality).</para>
|
|
|
|
<para>The following entries in
|
|
<filename>~/.fvwmrc</filename> implement the
|
|
aforementioned setup:</para>
|
|
|
|
<programlisting>Key F13 FTIWS A Iconify
|
|
Key F14 FTIWS A RaiseLower
|
|
Key F15 A A Menu Workplace Nop</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="x-3d-acceleration">
|
|
<para>How can I get 3D hardware acceleration for
|
|
&opengl;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The availability of 3D acceleration depends on the
|
|
version of &xfree86; or &xorg; that you are using and the type of video chip
|
|
you have. If you have an NVIDIA chip, you can use the binary
|
|
drivers provided for FreeBSD on the
|
|
<ulink url="http://www.nvidia.com/content/drivers/drivers.asp">
|
|
Drivers</ulink> section of their website. For other cards
|
|
with &xfree86;-4 or &xorg;, including the Matrox G200/G400, ATI Rage
|
|
128/Radeon, and 3dfx Voodoo 3, 4, 5, and Banshee,
|
|
information on hardware acceleration is available on the
|
|
<ulink
|
|
url="http://people.FreeBSD.org/~anholt/dri/">XFree86-4
|
|
Direct Rendering on FreeBSD</ulink> page. Users of
|
|
&xfree86; version 3.3 can use the Utah-GLX port found in
|
|
<filename role="package">graphics/utah-glx</filename> to
|
|
get limited accelerated &opengl; on the Matrox Gx00, ATI
|
|
Rage Pro, SiS 6326, i810, Savage, and older NVIDIA
|
|
chips.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="networking">
|
|
<title>Networking</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="diskless-booting">
|
|
<para>Where can I get information on
|
|
<quote>diskless booting</quote>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><quote>Diskless booting</quote> 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="&url.books.handbook;/diskless.html">the
|
|
Handbook entry on diskless booting</ulink></para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="router">
|
|
<para>Can a FreeBSD box be used as a dedicated network
|
|
router?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Please see the Handbook entry on <ulink
|
|
url="&url.books.handbook;/advanced-networking.html"> advanced
|
|
networking</ulink>, specifically the section on <ulink
|
|
url="&url.books.handbook;/network-routing.html">routing
|
|
and gateways</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="win95-connection">
|
|
<para>Can I connect my &windows; box to the Internet via
|
|
FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Typically, people who ask this question have two PCs
|
|
at home, one with FreeBSD and one with some version of
|
|
&windows; the idea is to use the FreeBSD box to connect to
|
|
the Internet and then be able to access the Internet from
|
|
the &windows; box through the FreeBSD box. This is really
|
|
just a special case of the previous question and works
|
|
perfectly well.</para>
|
|
|
|
<para>If you are using dialup to connect to the Internet
|
|
user-mode &man.ppp.8; contains a <option>-nat</option>
|
|
option. If you run &man.ppp.8; with the
|
|
<option>-nat</option> option, set
|
|
<literal>gateway_enable</literal> to
|
|
<emphasis>YES</emphasis> in
|
|
<filename>/etc/rc.conf</filename>, and configure your
|
|
&windows; machine correctly, this should work fine. For more
|
|
information, please see the &man.ppp.8; manual page or the
|
|
<ulink url="&url.books.handbook;/userppp.html">Handbook entry on
|
|
user PPP</ulink>.</para>
|
|
|
|
<para>If you are using kernel-mode PPP or have an Ethernet
|
|
connection to the Internet, you need to use
|
|
&man.natd.8;. Please look at the <ulink
|
|
url="&url.books.handbook;/network-natd.html">natd</ulink> section
|
|
of the Handbook for a tutorial.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="slip-ppp-support">
|
|
<para>Does FreeBSD support SLIP and PPP?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. See the manual pages for &man.slattach.8;,
|
|
&man.sliplogin.8;, &man.ppp.8;, and &man.pppd.8;. &man.ppp.8;
|
|
and &man.pppd.8; provide support for both incoming and outgoing
|
|
connections, while &man.sliplogin.8; deals exclusively with
|
|
incoming connections, and &man.slattach.8; deals exclusively
|
|
with outgoing connections.</para>
|
|
|
|
<para>For more information on how to use these, please see the
|
|
<ulink url="&url.books.handbook;/ppp-and-slip.html">Handbook chapter on
|
|
PPP and SLIP</ulink>.</para>
|
|
|
|
<para>If you only have access to the Internet through a
|
|
<quote>shell account</quote>, you may want to have a look
|
|
at the <filename role="package">net/slirp</filename>
|
|
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>Yes. If you want to use NAT over a user PPP
|
|
connection, please see the <ulink
|
|
url="&url.books.handbook;/userppp.html">Handbook entry on user
|
|
PPP</ulink>. If you want to use NAT over some other sort
|
|
of network connection, please look at the <ulink
|
|
url="&url.books.handbook;/network-natd.html">natd</ulink> section
|
|
of the Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="parallel-connect">
|
|
<para>How do I connect two FreeBSD systems over a parallel line
|
|
using PLIP?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the <ulink url="&url.books.handbook;/plip.html">PLIP
|
|
section</ulink> of the Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="create-dev-net">
|
|
<para>Why can I not create a <devicename>/dev/ed0</devicename>
|
|
device?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Because they are not necessary. 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 id="ethernet-aliases">
|
|
<para>How can I set up Ethernet aliases?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If the alias is on the same subnet as an address
|
|
already configured on the interface, then add
|
|
<literal>netmask 0xffffffff</literal> to your
|
|
&man.ifconfig.8; command-line, as in the following:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig ed0 alias 192.0.2.2 netmask 0xffffffff</userinput></screen>
|
|
|
|
<para>Otherwise, just specify the network address and
|
|
netmask as usual:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig ed0 alias 172.16.141.5 netmask 0xffffff00</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="port-3c503">
|
|
<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 will have to specify
|
|
an additional parameter on the
|
|
&man.ifconfig.8; command line. The default port is
|
|
<literal>link0</literal>. To use the AUI port instead of the
|
|
BNC one, use <literal>link2</literal>. These flags should be
|
|
specified using the ifconfig_* variables in
|
|
<filename>/etc/rc.conf</filename> (see &man.rc.conf.5;).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="nfs">
|
|
<para>Why am I having trouble with NFS and 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="&url.books.handbook;/nfs.html">
|
|
the Handbook entry on NFS</ulink> for more information on
|
|
this topic.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="nfs-linux">
|
|
<para>Why can I not 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>
|
|
|
|
<screen>&prompt.root; <userinput>mount -o -P linuxbox:/blah /mnt</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="nfs-sun">
|
|
<para>Why can I not 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>
|
|
|
|
<screen>&prompt.root; <userinput>mount -o -P sunbox:/blah /mnt</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="exports-errors">
|
|
<para>Why does <command>mountd</command> keep telling me it
|
|
<errorname>can't change attributes</errorname> and that I have a
|
|
<errorname>bad exports list</errorname> on my FreeBSD NFS
|
|
server?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The most frequent problem is not understanding the
|
|
correct format of <filename>/etc/exports</filename>.
|
|
Please review &man.exports.5; and the <ulink
|
|
url="&url.books.handbook;/nfs.html">NFS</ulink> entry in the
|
|
Handbook, especially the section on <ulink
|
|
url="&url.books.handbook;/nfs.html#CONFIGURING-NFS">configuring
|
|
NFS</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-nextstep">
|
|
<para>Why am I having problems talking PPP to NeXTStep
|
|
machines?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>Try disabling the TCP extensions in
|
|
<filename>/etc/rc.conf</filename> (see &man.rc.conf.5;) by
|
|
changing the following variable to NO:</para>
|
|
|
|
<programlisting>tcp_extensions=NO</programlisting>
|
|
|
|
<para>Xylogic's Annex boxes are also broken in this regard
|
|
and you must use the above change to connect through
|
|
them.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ip-multicast">
|
|
<para>How do I enable IP multicast support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FreeBSD supports multicast host operations by
|
|
default. If you want your box to run as a multicast
|
|
router, you need to recompile your kernel with the
|
|
<literal>MROUTING</literal> option and run
|
|
&man.mrouted.8;. FreeBSD will start &man.mrouted.8; at
|
|
boot time if the flag <literal>mrouted_enable</literal> is
|
|
set to <literal>"YES"</literal> in
|
|
<filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>MBONE tools are available in their own ports category,
|
|
<ulink
|
|
url="http://www.FreeBSD.org/ports/mbone.html">mbone</ulink>.
|
|
If you are looking for the conference tools
|
|
<command>vic</command> and <command>vat</command>, look
|
|
there!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dec-pci-chipset">
|
|
<para>Which network cards are based on the DEC PCI
|
|
chipset?</para>
|
|
</question><answer>
|
|
|
|
<para>Here is a list compiled by Glen Foster
|
|
<email>gfoster@driver.nsta.org</email>,
|
|
with some more modern additions:</para>
|
|
|
|
<table>
|
|
<title>Network cards based on the DEC PCI chipset</title>
|
|
|
|
<tgroup cols=2>
|
|
<thead>
|
|
<row>
|
|
<entry>Vendor</entry>
|
|
<entry>Model</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>ASUS</entry>
|
|
<entry>PCI-L101-TB</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Accton</entry>
|
|
<entry>ENI1203</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Cogent</entry>
|
|
<entry>EM960PCI</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Compex</entry>
|
|
<entry>ENET32-PCI</entry>
|
|
</row>
|
|
<row>
|
|
<entry>D-Link</entry>
|
|
<entry>DE-530</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Dayna</entry>
|
|
<entry>DP1203, DP2100</entry>
|
|
</row>
|
|
<row>
|
|
<entry>DEC</entry>
|
|
<entry>DE435, DE450</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Danpex</entry>
|
|
<entry>EN-9400P3</entry>
|
|
</row>
|
|
<row>
|
|
<entry>JCIS</entry>
|
|
<entry>Condor JC1260</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Linksys</entry>
|
|
<entry>EtherPCI</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Mylex</entry>
|
|
<entry>LNP101</entry>
|
|
</row>
|
|
<row>
|
|
<entry>SMC</entry>
|
|
<entry>EtherPower 10/100 (Model 9332)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>SMC</entry>
|
|
<entry>EtherPower (Model 8432)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>TopWare</entry>
|
|
<entry>TE-3500P</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Znyx (2.2.x)</entry>
|
|
<entry>ZX312, ZX314, ZX342, ZX345, ZX346, ZX348</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Znyx (3.x)</entry>
|
|
<entry>ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442, ZX444,
|
|
ZX474, ZX478, ZX212, ZX214 (10mbps/hd)</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="fqdn-hosts">
|
|
<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.example.org and
|
|
you wish to reach a host called <hostid>mumble</hostid> in the
|
|
<hostid role="domainname">example.org</hostid> domain, you will
|
|
have to refer to it by the fully-qualified domain name, <hostid
|
|
role="fqdn">mumble.example.org</hostid>, instead of just
|
|
<hostid>mumble</hostid>.</para>
|
|
|
|
<para>Traditionally, this was allowed by BSD BIND resolvers.
|
|
However the current version of
|
|
<application>bind</application> (see &man.named.8;)
|
|
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
|
|
<hostid>mumble</hostid> must either be found as <hostid
|
|
role="fqdn">mumble.foo.example.org</hostid>, or it will be searched
|
|
for in the root domain.</para>
|
|
|
|
<para>This is different from the previous behavior, where the
|
|
search continued across
|
|
<hostid role="domainname">mumble.example.org</hostid>, and
|
|
<hostid role="domainname">mumble.edu</hostid>. 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>
|
|
|
|
<programlisting>search foo.example.org example.org</programlisting>
|
|
|
|
<para>instead of the previous</para>
|
|
|
|
<programlisting>domain foo.example.org</programlisting>
|
|
|
|
<para>into your <filename>/etc/resolv.conf</filename> file
|
|
(see &man.resolv.conf.5;). However, make sure that the
|
|
search order does not go beyond the <quote>boundary
|
|
between local and public administration</quote>, as RFC
|
|
1535 calls it.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="network-permission-denied">
|
|
<para>Why do I get an error, <errorname>Permission
|
|
denied</errorname>, for all networking operations?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you have compiled your kernel with the
|
|
<literal>IPFIREWALL</literal> option, you need to be aware
|
|
that the default policy 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
|
|
<username>root</username>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ipfw add 65534 allow all from any to any</userinput></screen>
|
|
|
|
<para>You can also set
|
|
<literal>firewall_type="open"</literal> in
|
|
<filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>For further information on configuring a FreeBSD
|
|
firewall, see the <ulink url="&url.books.handbook;/firewalls.html">
|
|
Handbook section</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ipfw-overhead">
|
|
<para>How much overhead does IPFW incur?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the Handbook's <ulink
|
|
url="&url.books.handbook;/firewalls.html">Firewalls</ulink>
|
|
section, specifically the section on <ulink
|
|
url="&url.books.handbook;/firewalls.html#IPFW-OVERHEAD">IPFW
|
|
Overhead & Optimization</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ipfw-fwd">
|
|
<para>Why is my <command>ipfw</command> <quote>fwd</quote> rule
|
|
to redirect a service to another machine not working?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Possibly because you want to do network address translation
|
|
(NAT) and not just forward packets. A <quote>fwd</quote> rule
|
|
does exactly what it says; it forwards packets. It does not
|
|
actually change the data inside the packet. Say we have a rule
|
|
like:</para>
|
|
|
|
<screen>01000 fwd <replaceable>10.0.0.1</replaceable> from any to <replaceable>foo 21</replaceable></screen>
|
|
|
|
<para>When a packet with a destination address of
|
|
<replaceable>foo</replaceable> arrives at the machine with this
|
|
rule, the packet is forwarded to
|
|
<replaceable>10.0.0.1</replaceable>, but it still has the
|
|
destination address of <replaceable>foo</replaceable>! The
|
|
destination address of the packet is <emphasis>not</emphasis>
|
|
changed to <replaceable>10.0.0.1</replaceable>. Most machines
|
|
would probably drop a packet that they receive with a
|
|
destination address that is not their own. Therefore, using a
|
|
<quote>fwd</quote> rule does not often work the way the user
|
|
expects. This behavior is a feature and not a bug.</para>
|
|
|
|
<para>See the <link linkend="service-redirect">FAQ about
|
|
redirecting services</link>, the &man.natd.8; manual, or one of
|
|
the several port redirecting utilities in the <ulink
|
|
url="&url.base;/ports/index.html">ports collection</ulink> for a correct way to do
|
|
this.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="service-redirect">
|
|
<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 <literal>socket</literal> package, available in the ports
|
|
tree in category <quote>sysutils</quote>. Simply replace the
|
|
service's command line to call socket instead, like so:</para>
|
|
|
|
<programlisting>ftp stream tcp nowait nobody /usr/local/bin/socket socket <replaceable>ftp.example.com</replaceable> <replaceable>ftp</replaceable></programlisting>
|
|
|
|
<para>where <replaceable>ftp.example.com</replaceable> and
|
|
<replaceable>ftp</replaceable> are the host and port to
|
|
redirect to, respectively.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bandwidth-mgr-tool">
|
|
<para>Where can I get a bandwidth management tool?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are three bandwidth management tools available
|
|
for FreeBSD. &man.dummynet.4; is integrated into FreeBSD
|
|
as part of &man.ipfw.4;. <ulink
|
|
url="http://www.csl.sony.co.jp/person/kjc/programs.html">ALTQ</ulink>
|
|
is available for free on FreeBSD 4.X and has been
|
|
integrated into FreeBSD 5.X as part of &man.pf.4;.
|
|
Bandwidth Manager from <ulink
|
|
url="http://www.etinc.com/">Emerging Technologies</ulink>
|
|
is a commercial product.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bpf-not-configured">
|
|
<para>Why do I get <errorname>/dev/bpf0: device not
|
|
configured</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You are running a program that requires the Berkeley
|
|
Packet Filter (&man.bpf.4;), but it is not in your kernel.
|
|
Add this to your kernel config file and build a new
|
|
kernel:</para>
|
|
|
|
<programlisting>pseudo-device bpf # Berkeley Packet Filter</programlisting>
|
|
|
|
<para>On FreeBSD 4.X and earlier, you must also create the
|
|
device node. After rebooting, go to the
|
|
<filename>/dev</filename> directory and run:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sh MAKEDEV bpf0</userinput></screen>
|
|
|
|
<para>Please see the <ulink
|
|
url="&url.books.handbook;/kernelconfig-nodes.html"> Handbook entry
|
|
on device nodes</ulink> for more information on managing
|
|
devices.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-smb-share">
|
|
<para>How do I mount a disk from a &windows; machine that is on my
|
|
network, like smbmount in &linux;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use the <application>SMBFS</application> toolset. It
|
|
includes a set of kernel modifications and a set of
|
|
userland programs. The programs and information are
|
|
available as <filename role="package">net/smbfs</filename>
|
|
in the ports collection, or in the base system as of
|
|
4.5-RELEASE and later.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="icmp-response-bw-limit">
|
|
<para>What are these messages about <quote>icmp-response
|
|
bandwidth limit 300/200 pps</quote> in my log
|
|
files?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is the kernel telling you that some activity is
|
|
provoking it to send more ICMP or TCP reset (RST)
|
|
responses than it thinks it should. ICMP responses are
|
|
often generated as a result of attempted connections to
|
|
unused UDP ports. TCP resets are generated as a result of
|
|
attempted connections to unopened TCP ports. Among
|
|
others, these are the kinds of activities which may cause
|
|
these messages:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Brute-force denial of service (DoS) attacks (as
|
|
opposed to single-packet attacks which exploit a
|
|
specific vulnerability).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Port scans which attempt to connect to a large
|
|
number of ports (as opposed to only trying a few
|
|
well-known ports).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>The first number in the message tells you how many
|
|
packets the kernel would have sent if the limit was not in
|
|
place, and the second number tells you the limit. You can
|
|
control the limit using the
|
|
<varname>net.inet.icmp.icmplim</varname> sysctl variable
|
|
like this, where <literal>300</literal> is the limit in
|
|
packets per second:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl -w net.inet.icmp.icmplim=300</userinput></screen>
|
|
|
|
<para>If you do not want to see messages about this in your
|
|
log files, but you still want the kernel to do response
|
|
limiting, you can use the
|
|
<varname>net.inet.icmp.icmplim_output</varname> sysctl
|
|
variable to disable the output like this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl -w net.inet.icmp.icmplim_output=0</userinput></screen>
|
|
|
|
<para>Finally, if you want to disable response limiting, you
|
|
can set the <varname>net.inet.icmp.icmplim</varname>
|
|
sysctl variable (see above for an example) to
|
|
<literal>0</literal>. Disabling response limiting is
|
|
discouraged for the reasons listed above.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="unknown-hw-addr-format">
|
|
<para>What are these <errorname>arp: unknown hardware
|
|
address format</errorname> error messages?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This means that some device on your local Ethernet is
|
|
using a MAC address in a format that FreeBSD does not
|
|
recognize. This is probably caused by someone
|
|
experimenting with an Ethernet card somewhere else on the
|
|
network. You will see this most commonly on cable modem
|
|
networks. It is harmless, and should not affect the
|
|
performance of your FreeBSD machine.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cvsup-missing-libs">
|
|
<para>I have just installed CVSup but trying to execute it
|
|
produces errors. What is wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>First, see if the error message you are receiving is
|
|
like the one shown below.</para>
|
|
|
|
<programlisting>/usr/libexec/ld-elf.so.1: Shared object "libXaw.so.6" not found</programlisting>
|
|
|
|
<para>Errors like these are caused by installing the
|
|
<filename role="package">net/cvsup</filename> port on a
|
|
machine which does not have the
|
|
<application>&xfree86;</application> suite. If you want to
|
|
use the <acronym>GUI</acronym> included with
|
|
<application>CVSup</application> you will need to install
|
|
<application>&xfree86;</application> now. Alternatively if
|
|
you just wish to use <application>CVSup</application> from
|
|
a command line you should delete the package previously
|
|
installed. Then install the <filename
|
|
role="package">net/cvsup-without-gui</filename> port. This
|
|
is covered in more detail in the <ulink
|
|
url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html">CVSup
|
|
section</ulink> of the Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="security">
|
|
<title>Security</title>
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="sandbox">
|
|
<para>What is a sandbox?</para>
|
|
</question><answer>
|
|
|
|
<para><quote>Sandbox</quote> is a security term. It can
|
|
mean two things:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
|
|
<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>The process is said to be able to
|
|
<quote>play</quote> 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>The walls might be a userid, for example. This is
|
|
the definition used in the &man.security.7; and &man.named.8; man
|
|
pages.</para>
|
|
|
|
<para>Take the <literal>ntalk</literal> service, for
|
|
example (see /etc/inetd.conf). This service used to run
|
|
as userid <username>root</username>. Now it runs as userid
|
|
<username>tty</username>. The <username>tty</username> 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>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>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.
|
|
<filename>/</filename> for that process is this
|
|
directory, not the real <filename>/</filename> of the
|
|
system).</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>&unix; implements two core sandboxes. 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 cannot 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 particular userid. If
|
|
the userid is not the <username>root</username> 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 id="securelevel">
|
|
<para>What is securelevel?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The securelevel is a security mechanism implemented in the
|
|
kernel. Basically, when the securelevel is positive, the
|
|
kernel restricts certain tasks; not even the superuser (i.e.,
|
|
<username>root</username>) is allowed to do them. At the time
|
|
of this writing, the securelevel mechanism is capable of, among
|
|
other things, limiting the ability to,</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>unset certain file flags, such as
|
|
<literal>schg</literal> (the system immutable flag),</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>write to kernel memory via
|
|
<devicename>/dev/mem</devicename> and
|
|
<devicename>/dev/kmem</devicename>,</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>load kernel modules, and</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>alter firewall rules.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>To check the status of the securelevel on a running system,
|
|
simply execute the following command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
|
|
|
|
<para>The output will contain the name of the &man.sysctl.8;
|
|
variable (in this case, <varname>kern.securelevel</varname>)
|
|
and a number. The latter is the current value of the
|
|
securelevel. If it is positive (i.e., greater than 0), at
|
|
least some of the securelevel's protections are enabled.</para>
|
|
|
|
<para>You cannot lower the securelevel of a running system; being
|
|
able to do that would defeat its purpose. If you need to do a
|
|
task that requires that the securelevel be non-positive (e.g.,
|
|
an <maketarget>installworld</maketarget> or changing the date),
|
|
you will have to change the securelevel setting in
|
|
<filename>/etc/rc.conf</filename> (you want to look for the
|
|
<varname>kern_securelevel</varname> and
|
|
<varname>kern_securelevel_enable</varname> variables) and
|
|
reboot.</para>
|
|
|
|
<para>For more information on securelevel and the specific things
|
|
all the levels do, please consult the &man.init.8; manual
|
|
page.</para>
|
|
|
|
<warning>
|
|
<para>Securelevel is not a silver bullet; it has many known
|
|
deficiencies. More often than not, it provides a false
|
|
sense of security.</para>
|
|
|
|
<para>One of its biggest problems is that in order for it to
|
|
be at all effective, all files used in the boot process up
|
|
until the securelevel is set must be protected. If an
|
|
attacker can get the system to execute their code prior to
|
|
the securelevel being set (which happens quite late in the
|
|
boot process since some things the system must do at
|
|
start-up cannot be done at an elevated securelevel), its
|
|
protections are invalidated. While this task of protecting
|
|
all files used in the boot process is not technically
|
|
impossible, if it is achieved, system maintenance will
|
|
become a nightmare since one would have to take the system
|
|
down, at least to single-user mode, to modify a
|
|
configuration file.</para>
|
|
|
|
<para>This point and others are often discussed on the
|
|
mailing lists, particularly the &a.security;. Please search
|
|
the archives <ulink
|
|
url="&url.base;/search/index.html">here</ulink> for an
|
|
extensive discussion. Some people are hopeful that
|
|
securelevel will soon go away in favor of a more
|
|
fine-grained mechanism, but things are still hazy in this
|
|
respect.</para>
|
|
|
|
<para>Consider yourself warned.</para>
|
|
</warning>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="extra-named-port">
|
|
<para>BIND (<command>named</command>) is listening on port 53 and
|
|
some other high-numbered port. What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>BIND uses a random high-numbered port for outgoing
|
|
queries. If you want to use port 53 for outgoing queries,
|
|
either to get past a firewall or to make yourself feel
|
|
better, you can try the following in
|
|
<filename>/etc/namedb/named.conf</filename>:</para>
|
|
|
|
<programlisting>options {
|
|
query-source address * port 53;
|
|
};</programlisting>
|
|
|
|
<para>You can replace the <literal>*</literal> with a single IP
|
|
address if you want to tighten things further.</para>
|
|
|
|
<para>Congratulations, by the way. It is good practice to read
|
|
your &man.sockstat.1; output and notice odd
|
|
things!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="sendmail-port-587">
|
|
<para>Sendmail is listening on port 587 as well as the
|
|
standard port 25! What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Recent versions of Sendmail support a
|
|
mail submission feature that runs over port 587. This is
|
|
not yet widely supported, but is growing in
|
|
popularity.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="toor-account">
|
|
<para>What is this UID 0 <username>toor</username> account? Have I
|
|
been compromised?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Do not worry. <username>toor</username> is an
|
|
<quote>alternative</quote> superuser account (toor is root
|
|
spelt backwards). Previously it was created when the
|
|
&man.bash.1; shell was installed but now it is created by
|
|
default. It is intended to be used with a non-standard shell so
|
|
you do not have to change <username>root</username>'s default
|
|
shell. This is important as shells which are not part of the
|
|
base distribution (for example a shell installed from ports or
|
|
packages) are likely to be installed in
|
|
<filename>/usr/local/bin</filename> which, by default, resides
|
|
on a different filesystem. If <username>root</username>'s shell
|
|
is located in <filename>/usr/local/bin</filename> and
|
|
<filename>/usr</filename> (or whatever filesystem contains
|
|
<filename>/usr/local/bin</filename>) is not mounted for some
|
|
reason, <username>root</username> will not be able to log in to
|
|
fix a problem (although if you reboot into single user mode
|
|
you will be prompted for the path to a shell).</para>
|
|
|
|
<para>Some people use <username>toor</username> for
|
|
day-to-day <username>root</username> tasks with a
|
|
non-standard shell, leaving <username>root</username>,
|
|
with a standard shell, for single user mode or
|
|
emergencies. By default you cannot log in using
|
|
<username>toor</username> as it does not have a password,
|
|
so log in as <username>root</username> and set a password
|
|
for <username>toor</username> if you want to use
|
|
it.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="suidperl">
|
|
<para>Why is <command>suidperl</command> not working
|
|
properly?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For security reasons, <command>suidperl</command> is
|
|
installed without the suid bit by default. The system
|
|
administrator can enable suid behavior with the following
|
|
command.</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod u+s /usr/bin/suidperl</userinput></screen>
|
|
|
|
<para>If you want <command>suidperl</command> to be built
|
|
suid during upgrades from source, edit
|
|
<filename>/etc/make.conf</filename> and add
|
|
<varname>ENABLE_SUIDPERL=true</varname> before you run
|
|
<command>make buildworld</command>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="ppp">
|
|
<title>PPP</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="userppp">
|
|
<para>I cannot make &man.ppp.8; work. What am I doing wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You should first read the &man.ppp.8; manual page and
|
|
the <ulink url="&url.books.handbook;/ppp-and-slip.html#USERPPP">
|
|
PPP section of the handbook</ulink>. Enable logging with
|
|
the command</para>
|
|
|
|
<programlisting>set log Phase Chat Connect Carrier lcp ipcp ccp command</programlisting>
|
|
|
|
<para>This command may be typed at the &man.ppp.8; command
|
|
prompt or it may be entered in the
|
|
<filename>/etc/ppp/ppp.conf</filename> configuration file
|
|
(the start of the <literal>default</literal> section is
|
|
the best place to put it). Make sure that
|
|
<filename>/etc/syslog.conf</filename> (see
|
|
&man.syslog.conf.5;) contains the lines</para>
|
|
|
|
<programlisting>!ppp
|
|
*.* /var/log/ppp.log</programlisting>
|
|
|
|
<para>and that the file <filename>/var/log/ppp.log</filename>
|
|
exists. You can now find out a lot about what is going on
|
|
from the log file. Do not worry if it does not all make sense.
|
|
If you need to get help from someone, it may make sense to
|
|
them.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-hangs">
|
|
<para>Why does &man.ppp.8; hang when I run it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is usually because your hostname will not resolve.
|
|
The best way to fix this is to make sure that
|
|
<filename>/etc/hosts</filename> is consulted by your
|
|
resolver first by editing <filename>/etc/host.conf</filename>
|
|
and putting the <literal>hosts</literal> line first. Then,
|
|
simply put an entry in <filename>/etc/hosts</filename> for
|
|
your local machine. If you have no local network, change your
|
|
<hostid>localhost</hostid> line:</para>
|
|
|
|
<programlisting>127.0.0.1 foo.example.com foo localhost</programlisting>
|
|
|
|
<para>Otherwise, simply add another entry for your host.
|
|
Consult the relevant manual pages for more details.</para>
|
|
|
|
<para>You should be able to successfully <command>ping -c1
|
|
`hostname`</command> when you are done.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-nodial-auto">
|
|
<para>Why will &man.ppp.8; not dial in <literal>-auto</literal>
|
|
mode?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>First, check that you have got a default route. By
|
|
running <command>netstat -rn</command> (see
|
|
&man.netstat.1;), you should see two entries like
|
|
this:</para>
|
|
|
|
<programlisting>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</programlisting>
|
|
|
|
<para>This is assuming that you have used the addresses from the
|
|
handbook, the manual page or from the ppp.conf.sample file.
|
|
If you do not have a default route, it may be because you are
|
|
running an old version of &man.ppp.8;
|
|
that does not understand the word <literal>HISADDR</literal>
|
|
in the ppp.conf file.</para>
|
|
|
|
<para>Another reason for the default route line being
|
|
missing is that you have mistakenly set up a default
|
|
router in your <filename>/etc/rc.conf</filename> (see
|
|
&man.rc.conf.5;) file
|
|
and you have omitted the line saying</para>
|
|
|
|
<programlisting>delete ALL</programlisting>
|
|
|
|
<para>from <filename>ppp.conf</filename>. If this is the
|
|
case, go back to the <ulink
|
|
url="&url.books.handbook;/ppp-and-slip.html#USERPPP-FINAL"> Final
|
|
system configuration</ulink> section of the
|
|
handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="no-route-to-host">
|
|
<para>What does <errorname>No route to host</errorname> mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This error is usually due to a missing</para>
|
|
|
|
<programlisting>MYADDR:
|
|
delete ALL
|
|
add 0 0 HISADDR</programlisting>
|
|
|
|
<para>section in your <filename>/etc/ppp/ppp.linkup</filename>
|
|
file. This is only necessary if you have a dynamic IP address
|
|
or do not know the address of your gateway. If you are using
|
|
interactive mode, you can type the following after entering
|
|
<literal>packet mode</literal> (packet mode is
|
|
indicated by the capitalized <acronym>PPP</acronym> in the
|
|
prompt):</para>
|
|
|
|
<programlisting>delete ALL
|
|
add 0 0 HISADDR</programlisting>
|
|
|
|
<para>Refer to the <ulink
|
|
url="&url.books.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 id="connection-threeminutedrop">
|
|
<para>Why does my connection drop after about 3 minutes?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The default PPP timeout is 3 minutes. This can be
|
|
adjusted with the line</para>
|
|
|
|
<programlisting>set timeout <replaceable>NNN</replaceable></programlisting>
|
|
|
|
<para>where <replaceable>NNN</replaceable> is the number of
|
|
seconds of inactivity before the connection is closed. If
|
|
<replaceable>NNN</replaceable> 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
|
|
<application>ppp</application>'s server socket using
|
|
&man.telnet.1; or &man.pppctl.8;.
|
|
Refer to the
|
|
&man.ppp.8; man
|
|
page for further details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-drop-heavy-load">
|
|
<para>Why does my connection drop 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>
|
|
|
|
<programlisting>disable lqr</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-drop-random">
|
|
<para>Why does my connection drop 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 is 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>
|
|
|
|
<programlisting>set dial "...... ATS10=10 OK ......"</programlisting>
|
|
|
|
<para>Refer to your modem manual for details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-hangs-random">
|
|
<para>Why does my connection hang after a random amount of
|
|
time?</para>
|
|
</question><answer>
|
|
|
|
<para>Many people experience hung connections with no apparent
|
|
explanation. 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 &man.ping.8; to see if the <acronym>TD</acronym>
|
|
light is flashing when you transmit data. If it flashes
|
|
(and the <acronym>RD</acronym> light does not), the
|
|
problem is with the remote end. If <acronym>TD</acronym>
|
|
does not flash, the problem is local. With an internal
|
|
modem, you will need to use the <literal>set
|
|
server</literal> command in your
|
|
<filename>ppp.conf</filename> file. When the hang occurs,
|
|
connect to &man.ppp.8; using &man.pppctl.8;. If your
|
|
network connection suddenly revives (PPP was revived due
|
|
to the activity on the diagnostic socket) or if you cannot
|
|
connect (assuming the <literal>set socket</literal>
|
|
command succeeded at startup time), the problem is
|
|
local. If you can connect and things are still hung,
|
|
enable local async logging with <literal>set log local
|
|
async</literal> and use &man.ping.8; 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>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>If the problem is remote, read on entry <xref
|
|
linkend="ppp-remote-not-responding">.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If the problem is local, read on entry <xref
|
|
linkend="ppp-hung">.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-remote-not-responding">
|
|
<para>The remote end is not responding. What can I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is very little you can do about this. Most ISPs
|
|
will refuse to help if you are not running a Microsoft OS.
|
|
You can <literal>enable lqr</literal> in your
|
|
<filename>ppp.conf</filename> file, allowing &man.ppp.8; 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 are running user-PPP...</para>
|
|
|
|
<para>First, try disabling all local compression by adding the
|
|
following to your configuration:</para>
|
|
|
|
<programlisting>disable pred1 deflate deflate24 protocomp acfcomp shortseq vj
|
|
deny pred1 deflate deflate24 protocomp acfcomp shortseq vj</programlisting>
|
|
|
|
<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 ammunition when you contact
|
|
your ISP (although it may make it apparent that you are 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 (<quote>Memory
|
|
fault, core dumped</quote>?).</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 &a.brian;, or
|
|
even to ask your ISP to contact me directly.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-hung">
|
|
<para>&man.ppp.8; has hung. What can I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your best bet here is to rebuild &man.ppp.8; by adding
|
|
<literal>CFLAGS+=-g</literal> and
|
|
<literal>STRIP=</literal> to the end of the Makefile, then
|
|
doing a <command>make clean && make &&
|
|
make install</command>. When &man.ppp.8; hangs, find the
|
|
&man.ppp.8; process id with <command>ps ajxww | fgrep
|
|
ppp</command> and run <command>gdb ppp
|
|
<replaceable>PID</replaceable></command>. From the gdb
|
|
prompt, you can then use <command>bt</command> to get a
|
|
stack trace.</para>
|
|
|
|
<para>Send the results to &a.brian;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-loginok-thennothing">
|
|
<para>Why does nothing happen after the <quote>Login OK!</quote>
|
|
message?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Prior to FreeBSD version 2.2.5, once the link was
|
|
established, &man.ppp.8; 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 &man.ppp.8; to initiate the LCP, use the
|
|
following line:</para>
|
|
|
|
<programlisting>set openmode active</programlisting>
|
|
|
|
<note>
|
|
<para>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>does</emphasis> do some harm.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-same-magic">
|
|
<para>I keep seeing errors about magic being the same. What does
|
|
it mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Occasionally, just after connecting, you may see messages
|
|
in the log that say <quote>magic is the same</quote>.
|
|
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 will see
|
|
repeated configure requests and configure acknowledgments in
|
|
the log file until &man.ppp.8; 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
|
|
&man.ppp.8; from a login script or program after login. I
|
|
have also heard reports of it happening consistently when
|
|
using slirp. The reason is that in the time taken between
|
|
&man.getty.8; exiting and &man.ppp.8; starting, the
|
|
client-side &man.ppp.8; starts sending Line Control
|
|
Protocol (LCP) packets. Because ECHO is still switched on
|
|
for the port on the server, the client &man.ppp.8; sees
|
|
these packets <quote>reflect</quote> back.</para>
|
|
|
|
<para>One part of the LCP negotiation is to establish a
|
|
magic number for each side of the link so that
|
|
<quote>reflections</quote> 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 &man.ppp.8; sends LCP packets,
|
|
sees the same magic in the reflected packet and NAKs
|
|
it. It also sees the NAK reflect (which also means
|
|
&man.ppp.8; 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 &man.ppp.8; starts on the server, it is
|
|
flooded with magic number changes and almost immediately
|
|
decides it has 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>
|
|
|
|
<programlisting>set openmode passive</programlisting>
|
|
|
|
<para>This tells &man.ppp.8; 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>
|
|
|
|
<programlisting>set openmode active 3</programlisting>
|
|
|
|
<para>This tells &man.ppp.8; to be passive for 3 seconds, and then to
|
|
start sending LCP requests. If the peer starts sending
|
|
requests during this period, &man.ppp.8; will immediately respond
|
|
rather than waiting for the full 3 second period.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-lcp-constant">
|
|
<para>LCP negotiations continue until the connection is
|
|
closed. What is wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is currently an implementation mis-feature in
|
|
&man.ppp.8; where it does not associate
|
|
LCP, CCP & IPCP responses with their original requests. As
|
|
a result, if one PPP
|
|
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,
|
|
<hostid>A</hostid> and
|
|
<hostid>B</hostid>. <hostid>A</hostid> starts
|
|
sending LCP requests immediately after connecting and
|
|
<hostid>B</hostid> takes 7 seconds to start. When
|
|
<hostid>B</hostid> starts, <hostid>A</hostid>
|
|
has sent 3 LCP REQs. We are assuming the line has ECHO switched
|
|
off, otherwise we would see magic number problems as described in
|
|
the previous section. <hostid>B</hostid> sends a
|
|
REQ, then an ACK to the first of
|
|
<hostid>A</hostid>'s REQs. This results in
|
|
<hostid>A</hostid> entering the <acronym>OPENED</acronym>
|
|
state and sending and ACK (the first) back to
|
|
<hostid>B</hostid>. In the meantime,
|
|
<hostid>B</hostid> sends back two more ACKs in response to
|
|
the two additional REQs sent by <hostid>A</hostid>
|
|
before <hostid>B</hostid> started up.
|
|
<hostid>B</hostid> then receives the first ACK from
|
|
<hostid>A</hostid> and enters the
|
|
<acronym>OPENED</acronym> state.
|
|
<hostid>A</hostid> receives the second ACK from
|
|
<hostid>B</hostid> and goes back to the
|
|
<acronym>REQ-SENT</acronym> 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,
|
|
<hostid>B</hostid> receives the forth REQ from
|
|
<hostid>A</hostid>, resulting in it reverting to the
|
|
<acronym>ACK-SENT</acronym> state and sending
|
|
another (second) REQ and (forth) ACK as per the RFC.
|
|
<hostid>A</hostid> gets the REQ, goes into
|
|
<acronym>REQ-SENT</acronym> and sends another REQ. It
|
|
immediately receives the following ACK and enters
|
|
<acronym>OPENED</acronym>.</para>
|
|
|
|
<para>This goes on until one side figures out that they are
|
|
getting nowhere and gives up.</para>
|
|
|
|
<para>The best way to avoid this is to configure one side to be
|
|
<literal>passive</literal> - that is, make one side
|
|
wait for the other to start negotiating. This can be done
|
|
with the</para>
|
|
|
|
<programlisting>set openmode passive</programlisting>
|
|
|
|
<para>command. Care should be taken with this option. You
|
|
should also use the</para>
|
|
|
|
<programlisting>set stopped N</programlisting>
|
|
|
|
<para>command to limit the amount of time that
|
|
&man.ppp.8; waits for the peer to begin
|
|
negotiations. Alternatively, the</para>
|
|
|
|
<programlisting>set openmode active N</programlisting>
|
|
|
|
<para>command (where <replaceable>N</replaceable> is the
|
|
number of seconds to wait before starting negotiations) can be
|
|
used. Check the manual page for details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-shell-test-lockup">
|
|
<para>Why does &man.ppp.8; lock up when I shell out to test
|
|
it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>When you execute the <command>shell</command> or
|
|
<command>!</command> command, &man.ppp.8; executes a
|
|
shell (or if you have passed any arguments,
|
|
&man.ppp.8; will execute those arguments). 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
|
|
&man.ppp.8; is waiting for the command to
|
|
complete.</para>
|
|
|
|
<para>If you wish to execute commands like this, use the
|
|
<command>!bg</command> command instead. This will execute
|
|
the given command in the background, and &man.ppp.8; can
|
|
continue to service the link.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-nullmodem">
|
|
<para>Why does &man.ppp.8; over a null-modem cable never exit?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is no way for &man.ppp.8; 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>
|
|
|
|
<programlisting>enable lqr</programlisting>
|
|
|
|
<para>LQR is accepted by default if negotiated by the peer.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-auto-noreasondial">
|
|
<para>Why does &man.ppp.8; dial for no reason in -auto mode?</para>
|
|
</question><answer>
|
|
|
|
<para>If &man.ppp.8; 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>
|
|
|
|
<programlisting>set log +tcp/ip</programlisting>
|
|
|
|
<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>not</emphasis> prevent &man.ppp.8;
|
|
from passing the packets through an established
|
|
connection), use the following:</para>
|
|
|
|
<programlisting>set dfilter 1 deny udp src eq 53
|
|
set dfilter 2 deny udp dst eq 53
|
|
set dfilter 3 permit 0/0 0/0</programlisting>
|
|
|
|
<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, &man.sendmail.8; 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 <ulink
|
|
url="&url.books.handbook;/smtp-dialup.html">using email with a
|
|
dialup connection</ulink> in the FreeBSD Handbook 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>
|
|
|
|
<programlisting>define(`confDELIVERY_MODE', `d')dnl</programlisting>
|
|
|
|
<para>This will make sendmail queue everything until the
|
|
queue is run (usually, sendmail is invoked with
|
|
<option>-bd -q30m</option>, telling it to run the queue
|
|
every 30 minutes) or until a <command>sendmail
|
|
-q</command> is done (perhaps from your ppp.linkup
|
|
file).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ccp-errors">
|
|
<para>What do these CCP errors mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>I keep seeing the following errors in my log file:</para>
|
|
|
|
<programlisting>CCP: CcpSendConfigReq
|
|
CCP: Received Terminate Ack (1) state = Req-Sent (6)</programlisting>
|
|
|
|
<para>This is because &man.ppp.8; 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>
|
|
|
|
<programlisting>disable pred1</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-connectionspeed">
|
|
<para>Why does &man.ppp.8; not log my connection speed?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>In order to log all lines of your modem
|
|
<quote>conversation</quote>, you must enable the
|
|
following:</para>
|
|
|
|
<programlisting>set log +connect</programlisting>
|
|
|
|
<para>This will make &man.ppp.8; log
|
|
everything up until the last requested <quote>expect</quote>
|
|
string.</para>
|
|
|
|
<para>If you wish to see your connect speed and are using PAP
|
|
or CHAP (and therefore do not have anything to
|
|
<quote>chat</quote> after the CONNECT in the dial script - no
|
|
<literal>set login</literal> script), you must make sure that
|
|
you instruct &man.ppp.8; to <quote>expect</quote> the whole CONNECT
|
|
line, something like this:</para>
|
|
|
|
<programlisting>set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \
|
|
\"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"</programlisting>
|
|
|
|
<para>Here, we get our CONNECT, send nothing, then expect a
|
|
line-feed, forcing &man.ppp.8; to read
|
|
the whole CONNECT response.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-ignores-backslash">
|
|
<para>Why does &man.ppp.8; ignore the <literal>\</literal> 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
|
|
<literal>set phone "123 456 789"</literal> correctly and
|
|
realize that the number is actually only
|
|
<emphasis>one</emphasis> argument. In order to specify a
|
|
<literal>"</literal> character, you must escape it
|
|
using a backslash (<literal>\</literal>).</para>
|
|
|
|
<para>When the chat interpreter parses each argument, it
|
|
re-interprets the argument in order to find any special
|
|
escape sequences such as <literal>\P</literal> or
|
|
<literal>\T</literal> (see the manual 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 <literal>\</literal>
|
|
character to (say) your modem, you would need something
|
|
like:</para>
|
|
|
|
<programlisting>set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK"</programlisting>
|
|
|
|
<para>resulting in the following sequence:</para>
|
|
|
|
<programlisting>ATZ
|
|
OK
|
|
AT\X
|
|
OK</programlisting>
|
|
|
|
<para>or</para>
|
|
|
|
<programlisting>set phone 1234567
|
|
set dial "\"\" ATZ OK ATDT\\T"</programlisting>
|
|
|
|
<para>resulting in the following sequence:</para>
|
|
|
|
<programlisting>ATZ
|
|
OK
|
|
ATDT1234567</programlisting>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-segfault-nocore">
|
|
<para>Why does &man.ppp.8; get 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 &man.ppp.8; runs with an
|
|
effective user id of 0, the operating system will not
|
|
write &man.ppp.8;'s core image to disk before terminating
|
|
it. If, however &man.ppp.8; is actually terminating due
|
|
to a segmentation violation or some other signal that
|
|
normally causes core to be dumped,
|
|
<emphasis>and</emphasis> you are sure you are using the
|
|
latest version (see the start of this section), then you
|
|
should do the following:</para>
|
|
|
|
<screen>&prompt.user; <userinput>tar xfz ppp-*.src.tar.gz</userinput>
|
|
&prompt.user; <userinput>cd ppp*/ppp</userinput>
|
|
&prompt.user; <userinput>echo STRIP= >>Makefile</userinput>
|
|
&prompt.user; <userinput>echo CFLAGS+=-g >>Makefile</userinput>
|
|
&prompt.user; <userinput>make clean all</userinput>
|
|
&prompt.user; <userinput>su</userinput>
|
|
&prompt.root; <userinput>make install</userinput>
|
|
&prompt.root; <userinput>chmod 555 /usr/sbin/ppp</userinput></screen>
|
|
|
|
<para>You will now have a debuggable version of &man.ppp.8;
|
|
installed. You will have to be <username>root</username>
|
|
to run &man.ppp.8; as all of its privileges have been
|
|
revoked. When you start &man.ppp.8;, take a careful note
|
|
of what your current directory was at the time.</para>
|
|
|
|
<para>Now, if and when &man.ppp.8; receives the segmentation
|
|
violation, it will dump a core file called
|
|
<filename>ppp.core</filename>. You should then do the
|
|
following:</para>
|
|
|
|
<screen>&prompt.user; <userinput>su</userinput>
|
|
&prompt.root; <userinput>gdb /usr/sbin/ppp ppp.core</userinput>
|
|
<prompt>(gdb)</prompt> <userinput>bt</userinput>
|
|
.....
|
|
<prompt>(gdb)</prompt> <userinput>f 0</userinput>
|
|
....
|
|
<prompt>(gdb)</prompt> <userinput>i args</userinput>
|
|
....
|
|
<prompt>(gdb)</prompt> <userinput>l</userinput>
|
|
.....</screen>
|
|
|
|
<para>All of this information should be given alongside your
|
|
question, making it possible to diagnose the problem.</para>
|
|
|
|
<para>If you are 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 id="ppp-autodialprocess-noconnect">
|
|
<para>Why does the process that forces a dial in auto mode never
|
|
connect?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This was a known problem with
|
|
&man.ppp.8; set up to negotiate a
|
|
dynamic local IP number with the peer in auto mode. It is
|
|
fixed in the latest version - search the manual page for
|
|
<literal>iface</literal>.</para>
|
|
|
|
<para>The problem was that when that initial program calls
|
|
&man.connect.2;, 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.
|
|
&man.ppp.8; then reads the packet and
|
|
establishes a connection. If, as a result of
|
|
&man.ppp.8;'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 are not, 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 <literal>:-)</literal>
|
|
The current version of &man.ppp.8; does
|
|
this, but most other implementations do not.</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
|
|
<literal>iface-alias</literal> option in the latest
|
|
version of &man.ppp.8; is doing (with the help of
|
|
&man.libalias.3; and &man.ppp.8;'s <option>-nat</option>
|
|
switch) - it is maintaining all previous interface
|
|
addresses and NATing 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. &man.ppp.8; 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 &man.ppp.8;
|
|
to change the source IP number, but only if it is 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 id="ppp-nat-games">
|
|
<para>Why do most games not work with the -nat switch?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The reason games and the like do not 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 NAT software does not 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 are having problems with, then
|
|
either run tcpdump on the tun interface of the gateway or
|
|
enable &man.ppp.8; tcp/ip logging (<literal>set log +tcp/ip</literal>)
|
|
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 will be dropped
|
|
(that is 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 <filename>/etc/ppp/ppp.conf</filename> will make the
|
|
software functional:</para>
|
|
|
|
<programlisting>nat port <replaceable>proto</replaceable> <replaceable>internalmachine</replaceable>:<replaceable>port</replaceable> <replaceable>port</replaceable></programlisting>
|
|
|
|
<para>where <replaceable>proto</replaceable> is either
|
|
<literal>tcp</literal> or <literal>udp</literal>,
|
|
<replaceable>internalmachine</replaceable> is the machine that
|
|
you want the packets to be sent to and
|
|
<replaceable>port</replaceable> is the destination port number
|
|
of the packets.</para>
|
|
|
|
<para>You will not 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 are not consistent, there are three
|
|
more options:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Submit support in libalias. Examples of
|
|
<quote>special cases</quote> can be found in
|
|
<filename>/usr/src/lib/libalias/alias_*.c</filename>
|
|
(<filename>alias_ftp.c</filename> 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
|
|
<quote>route</quote> 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>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Use a proxy. The application may support socks5
|
|
for example, or (as in the <quote>cvsup</quote> case)
|
|
may have a <quote>passive</quote> option that avoids
|
|
ever requesting that the peer open connections back to
|
|
the local machine.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Redirect everything to the internal machine using
|
|
<literal>nat addr</literal>. This is the
|
|
sledge-hammer approach.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="useful-port-numbers">
|
|
<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,
|
|
<replaceable>internal</replaceable> should be replaced with
|
|
the IP number of the machine playing the game.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><application>Asheron's Call</application></para>
|
|
|
|
<para><literal>nat port udp
|
|
<replaceable>internal</replaceable>
|
|
:65000 65000</literal></para>
|
|
|
|
<para>Manually change the port number within the game to
|
|
65000. If you have got a number of machines that you wish
|
|
to play on assign a unique port number for each (i.e.
|
|
65001, 65002, etc) and add a <literal>nat port</literal>
|
|
line for each one.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><application>Half Life</application></para>
|
|
|
|
<para><literal>nat port udp
|
|
<replaceable>internal</replaceable>:27005
|
|
27015</literal></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><application>PCAnywhere 8.0</application></para>
|
|
|
|
<para><literal>nat port udp
|
|
<replaceable>internal</replaceable>:5632
|
|
5632</literal></para>
|
|
|
|
<para><literal>nat port tcp
|
|
<replaceable>internal</replaceable>:5631
|
|
5631</literal></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><application>Quake</application></para>
|
|
|
|
<para><literal>nat port udp
|
|
<replaceable>internal</replaceable>:6112
|
|
6112</literal></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>
|
|
|
|
<listitem>
|
|
<para><application>Quake 2</application></para>
|
|
|
|
<para><literal>nat port udp
|
|
<replaceable>internal</replaceable>:27901
|
|
27910</literal></para>
|
|
<para><literal>nat port udp
|
|
<replaceable>internal</replaceable>:60021
|
|
60021</literal></para>
|
|
<para><literal>nat port udp
|
|
<replaceable>internal</replaceable>:60040
|
|
60040</literal></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><application>Red Alert</application></para>
|
|
|
|
<para><literal>nat port udp
|
|
<replaceable>internal</replaceable>:8675
|
|
8675</literal></para>
|
|
|
|
<para><literal>nat port udp
|
|
<replaceable>internal</replaceable>:5009
|
|
5009</literal></para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="fcs-errors">
|
|
<para>What are FCS errors?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FCS stands for <literal>F</literal>rame
|
|
<literal>C</literal>heck <literal>S</literal>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 <literal>show hdlc</literal>
|
|
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 have 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>must</emphasis> use software flow control, use the
|
|
command <literal>set accmap 0x000a0000</literal> to tell
|
|
&man.ppp.8; to escape the <literal>^Q</literal> and
|
|
<literal>^S</literal> 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
|
|
<literal>async</literal> 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 is possible to terminate &man.ppp.8; without
|
|
dropping the line by using the <literal>close
|
|
lcp</literal> command (a following <literal>term</literal>
|
|
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 id=PPPoEwithNAT>
|
|
<question id="macos-win98-pppoe-freeze">
|
|
<para>Why do &macos; and &windows; 98 connections freeze when
|
|
running PPPoE on the gateway?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Thanks to Michael Wozniak
|
|
<email>mwozniak@netcom.ca</email> for figuring this out and
|
|
Dan Flemming <email>danflemming@mac.com</email> for the Mac
|
|
solution:</para>
|
|
|
|
<para>This is due to what is called a <quote>Black Hole</quote>
|
|
router. &macos; and &windows; 98 (and maybe other Microsoft OSs)
|
|
send TCP packets with a requested segment size too big to fit
|
|
into a PPPoE frame (MTU is 1500 by default for Ethernet)
|
|
<emphasis>and</emphasis> have the <quote>do not
|
|
fragment</quote> bit set (default of TCP) and the Telco router
|
|
is not sending ICMP <quote>must fragment</quote> back to the
|
|
www site you are trying to load. (Alternatively, the router is
|
|
sending the ICMP packet correctly, but the firewall at the www
|
|
site is dropping it.) When the www server is sending
|
|
you frames that do not fit into the PPPoE pipe the Telco router
|
|
drops them on the floor and your page does not load (some
|
|
pages/graphics do as they are smaller than a MSS.) This seems
|
|
to be the default of most Telco PPPoE configurations (if only
|
|
they knew how to program a router... sigh...)</para>
|
|
|
|
<para>One fix is to use regedit on your 95/98 boxes to add the
|
|
following registry entry...</para>
|
|
|
|
<programlisting>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTU</programlisting>
|
|
|
|
<para>It should be a string with a value
|
|
<quote>1436</quote>, as some ADSL routers are reported to
|
|
be unable to deal with packets larger than this. This
|
|
registry key has been changed to
|
|
<literal>Tcpip\Parameters\Interfaces\<replaceable>ID for
|
|
adapter</replaceable>\MTU</literal> in &windows; 2000 and
|
|
becomes a DWORD.</para>
|
|
|
|
<para>Refer to the Microsoft Knowledge Base documents <ulink
|
|
url="http://support.microsoft.com/support/kb/articles/Q158/4/74.asp">Q158474
|
|
- Windows TCPIP Registry Entries</ulink> and <ulink
|
|
url="http://support.microsoft.com/support/kb/articles/Q120/6/42.asp">Q120642
|
|
- TCPIP & NBT Configuration Parameters for &windowsnt;
|
|
</ulink> for more information on changing &windows; MTU to
|
|
work with a NAT router.</para>
|
|
|
|
<para>Another regedit possibility under &windows; 2000 is to
|
|
set the
|
|
<literal>Tcpip\Parameters\Interfaces\<replaceable>ID for
|
|
adapter</replaceable>\EnablePMTUBHDetect</literal> DWORD
|
|
to 1 as mentioned in the Microsoft document 120642
|
|
mentioned above.</para>
|
|
|
|
<para>Unfortunately, &macos; does not provide an interface for
|
|
changing TCP/IP settings. However, there is commercial software
|
|
available, such as OTAdvancedTuner (OT for OpenTransport, the
|
|
&macos; TCP/IP stack) by <ulink
|
|
url="http://www.softworks.com/">Sustainable Softworks</ulink>,
|
|
that will allow users to customize TCP/IP settings. &macos; NAT
|
|
users should select <literal>ip_interface_MTU</literal> from
|
|
the drop-down menu, enter <literal>1450</literal> instead of
|
|
<literal>1500</literal> in the box, click the box next to
|
|
<literal>Save as Auto Configure</literal>, and click
|
|
<literal>Make Active</literal>.</para>
|
|
|
|
<para>The latest version of &man.ppp.8;
|
|
(2.3 or greater) has an <command>enable tcpmssfixup</command>
|
|
command that will automatically adjust the MSS to an appropriate
|
|
value. This facility is enabled by default. If you are stuck
|
|
with an older version of &man.ppp.8;, you
|
|
may want to look at the <application>tcpmssd</application>
|
|
port.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="desperation">
|
|
<para>None of this helps - I am desperate! What can I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If all else fails, send as much information as you can,
|
|
including your config files, how you are starting
|
|
&man.ppp.8;, the relevant parts of your
|
|
log file and the output of the <command>netstat -rn</command>
|
|
command (before and after connecting) to the &a.questions; 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
|
|
<link linkend="networking">Networking</link> section.</para>
|
|
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="found-serial">
|
|
<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>
|
|
|
|
<screen>&prompt.user; <userinput>dmesg | grep sio</userinput></screen>
|
|
|
|
<para>after your system is up and running.</para>
|
|
|
|
<para>Here is some example output from the above command:</para>
|
|
|
|
<programlisting>sio0 at 0x3f8-0x3ff irq 4 on isa
|
|
sio0: type 16550A
|
|
sio1 at 0x2f8-0x2ff irq 3 on isa
|
|
sio1: type 16550A</programlisting>
|
|
|
|
<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 <quote>attached</quote> to the
|
|
port.</para>
|
|
|
|
<para>The <filename>GENERIC</filename> kernel includes support
|
|
for two serial ports using the same irq and port address
|
|
settings in the above example. If these settings are not
|
|
right for your system, or if you have added modem cards or have
|
|
more serial ports than your kernel is configured for, just
|
|
reconfigure your kernel. See section
|
|
<link linkend="make-kernel">about building a kernel</link> for
|
|
more details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="found-modem">
|
|
<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 id="access-serial-ports">
|
|
<para>How do I access the serial ports on FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The third serial port, <devicename>sio2</devicename>
|
|
(see &man.sio.4;, known as <devicename>COM3</devicename> in DOS), is on
|
|
<devicename>/dev/cuaa2</devicename> for dial-out devices,
|
|
and on <devicename>/dev/ttyd2</devicename> for dial-in
|
|
devices. What is the difference between these two classes
|
|
of devices?</para>
|
|
|
|
<para>You use
|
|
<devicename>ttyd<replaceable>X</replaceable></devicename>
|
|
for dial-ins. When opening
|
|
<devicename>/dev/ttyd<replaceable>X</replaceable></devicename>
|
|
in blocking mode, a process will wait for the
|
|
corresponding
|
|
<devicename>cuaa<replaceable>X</replaceable></devicename>
|
|
device to become inactive, and then wait for the carrier
|
|
detect line to go active. When you open the
|
|
<devicename>cuaa<replaceable>X</replaceable></devicename>
|
|
device, it makes sure the serial port is not already in
|
|
use by the
|
|
<devicename>ttyd<replaceable>X</replaceable></devicename>
|
|
device. If the port is available, it <quote>steals</quote>
|
|
it from the
|
|
<devicename>ttyd<replaceable>X</replaceable></devicename>
|
|
device. Also, the
|
|
<devicename>cuaa<replaceable>X</replaceable></devicename>
|
|
device does not care about carrier detect. With this
|
|
scheme and an auto-answer modem, you can have remote users
|
|
log in and you can still dial out with the same modem and
|
|
the system will take care of all the conflicts.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="enable-multiport-serial">
|
|
<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 &man.sio.4; 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
|
|
<literal>COM_MULTIPORT</literal> option.</para>
|
|
|
|
<para>The following example is for an AST 4-port serial card on
|
|
irq 7:</para>
|
|
|
|
<programlisting>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</programlisting>
|
|
|
|
<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 id="multiport-serial-share-irq">
|
|
<para>Can FreeBSD handle multiport serial cards sharing
|
|
irqs?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Not yet. You will have to use a different irq for each
|
|
card.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="default-serial-params">
|
|
<para>Can I set the default serial parameters for a
|
|
port?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The
|
|
<devicename>ttyd<replaceable>X</replaceable></devicename>
|
|
(or
|
|
<devicename>cuaa<replaceable>X</replaceable></devicename>)
|
|
device is the regular device you will want to open for
|
|
your applications. When a process opens the device, it
|
|
will have a default set of terminal I/O settings. You can
|
|
see these settings with the command</para>
|
|
|
|
<screen>&prompt.root; <userinput>stty -a -f /dev/ttyd1</userinput></screen>
|
|
|
|
<para>When you change the settings to this device, the settings
|
|
are in effect until the device is closed. When it is reopened,
|
|
it goes back to the default set. To make changes to the
|
|
default set, you can open and adjust the settings of the
|
|
<quote>initial state</quote> device. For example, to turn on
|
|
<acronym>CLOCAL</acronym> mode, 8 bits, and
|
|
<acronym>XON/XOFF</acronym> flow control by default for
|
|
ttyd5, do:</para>
|
|
|
|
<screen>&prompt.root; <userinput>stty -f /dev/ttyid5 clocal cs8 ixon ixoff</userinput></screen>
|
|
|
|
<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
|
|
<filename>ttyd5</filename>. 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
|
|
<quote>lock state</quote> device. For example, to lock
|
|
the speed of <devicename>ttyd5</devicename> to 57600 bps,
|
|
do</para>
|
|
|
|
<screen>&prompt.root; <userinput>stty -f /dev/ttyld5 57600</userinput></screen>
|
|
|
|
<para>Now, an application that opens
|
|
<devicename>ttyd5</devicename> 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
|
|
<username>root</username>. The &man.MAKEDEV.8; script does
|
|
<emphasis>NOT</emphasis> do this when it creates the
|
|
device entries.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="enable-dialup">
|
|
<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 will 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>
|
|
|
|
<programlisting>AT &C1 &D3 &K3 &Q6 S0=1 &W</programlisting>
|
|
|
|
<para>See the section <link linkend="direct-at">on sending AT
|
|
commands</link> below for information on how to make these
|
|
settings without resorting to an &ms-dos; terminal program.</para>
|
|
|
|
<para>Next, make an entry in <filename>/etc/ttys</filename>
|
|
(see &man.ttys.5;) 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>
|
|
|
|
<programlisting>ttyd1 "/usr/libexec/getty std.57600" dialup on insecure</programlisting>
|
|
|
|
<para>This line indicates that the second serial port
|
|
(<devicename>/dev/ttyd1</devicename>) has a modem
|
|
connected running at 57600 bps and no parity
|
|
(<literal>std.57600</literal>, which comes from the file
|
|
<filename>/etc/gettytab</filename>, see &man.gettytab.5;).
|
|
The terminal type for this port is
|
|
<literal>dialup</literal>. The port is
|
|
<literal>on</literal> and is
|
|
<literal>insecure</literal>---meaning
|
|
<username>root</username> logins on the port are not
|
|
allowed. For dialin ports like this one, use the
|
|
<devicename>ttyd<replaceable>X</replaceable></devicename>
|
|
entry.</para>
|
|
|
|
<para>It is common practice to use <literal>dialup</literal>
|
|
as the terminal type. Many users set up in their
|
|
<filename>.profile</filename> or
|
|
<filename>.login</filename> files a prompt for the actual
|
|
terminal type if the starting type is dialup. The example
|
|
shows the port as insecure. To become
|
|
<username>root</username> on this port, you have to login
|
|
as a regular user, then &man.su.1; to become
|
|
<username>root</username>. If you use
|
|
<literal>secure</literal> then <username>root</username>
|
|
can login in directly.</para>
|
|
|
|
<para>After making modifications to
|
|
<filename>/etc/ttys</filename>, you need to send a hangup
|
|
or <acronym>HUP</acronym> signal to the &man.init.8;
|
|
process:</para>
|
|
|
|
<screen>&prompt.root; <userinput>kill -HUP 1</userinput></screen>
|
|
|
|
<para>This forces the &man.init.8; process to reread
|
|
<filename>/etc/ttys</filename>. The init process will
|
|
then start getty processes on all <literal>on</literal>
|
|
ports. You can find out if logins are available for your
|
|
port by typing</para>
|
|
|
|
<screen>&prompt.user; <userinput>ps -ax | grep '[t]tyd1'</userinput></screen>
|
|
|
|
<para>You should see something like:</para>
|
|
|
|
<programlisting>747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dumb-terminal">
|
|
<para>How can I connect a dumb terminal to my FreeBSD
|
|
box?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are using another computer as a terminal into your
|
|
FreeBSD system, get a null modem cable to go between the two
|
|
serial ports. If you are using an actual terminal, see its
|
|
accompanying instructions.</para>
|
|
|
|
<para>Then, modify <filename>/etc/ttys</filename> (see
|
|
&man.ttys.5;), like above. For example, if you are
|
|
hooking up a WYSE-50 terminal to the fifth serial port,
|
|
use an entry like this:</para>
|
|
|
|
<programlisting>ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure</programlisting>
|
|
|
|
<para>This example shows that the port on
|
|
<devicename>/dev/ttyd4</devicename> has a wyse50 terminal
|
|
connected at 38400 bps with no parity
|
|
(<literal>std.38400</literal> from
|
|
<filename>/etc/gettytab</filename>, see &man.gettytab.5;)
|
|
and <username>root</username> logins are allowed
|
|
(<literal>secure</literal>).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cannot-tip">
|
|
<para>Why can I not run <command>tip</command> or
|
|
<command>cu</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>On your system, the programs &man.tip.1; and
|
|
&man.cu.1; are probably executable only by
|
|
<username>uucp</username> and group
|
|
<groupname>dialer</groupname>. You can use the group
|
|
<groupname>dialer</groupname> 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
|
|
&man.tip.1; and &man.cu.1; by typing:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod 4511 /usr/bin/cu</userinput>
|
|
&prompt.root; <userinput>chmod 4511 /usr/bin/tip</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="hayes-unsupported">
|
|
<para>My stock Hayes modem is not supported---what
|
|
can I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Actually, the manual page for &man.tip.1; is out of
|
|
date. There is a generic Hayes dialer already built in.
|
|
Just use <literal>at=hayes</literal> in your
|
|
<filename>/etc/remote</filename> (see &man.remote.5;)
|
|
file.</para>
|
|
|
|
<para>The Hayes driver is not smart enough to recognize some of
|
|
the advanced features of newer modems---messages like
|
|
<literal>BUSY</literal>, <literal>NO DIALTONE</literal>, or
|
|
<literal>CONNECT 115200</literal> will just confuse it. You
|
|
should turn those messages off when you use &man.tip.1;
|
|
(using <literal>ATX0&W</literal>).</para>
|
|
|
|
<para>Also, the dial timeout for &man.tip.1; is 60
|
|
seconds. Your modem should use something less, or else tip
|
|
will think there is a communication problem. Try
|
|
<literal>ATS7=45&W</literal>.</para>
|
|
|
|
<para>Actually, as shipped &man.tip.1; does not 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 <literal>#define HAYES 0</literal>
|
|
to <literal>#define HAYES 1</literal>. Then
|
|
<command>make</command> and <command>make install</command>.
|
|
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 is called a <quote>direct</quote> entry in
|
|
your <filename>/etc/remote</filename> file (see
|
|
&man.remote.5;). For example, if your modem is hooked up
|
|
to the first serial port,
|
|
<devicename>/dev/cuaa0</devicename>, then put in the
|
|
following line:</para>
|
|
|
|
<programlisting>cuaa0:dv=/dev/cuaa0:br#19200:pa=none</programlisting>
|
|
|
|
<para>Use the highest bps rate your modem supports in the br
|
|
capability. Then, type <command>tip
|
|
<devicename>cuaa0</devicename></command> (see &man.tip.1;)
|
|
and you will be connected to your modem.</para>
|
|
|
|
<para>If there is no <devicename>/dev/cuaa0</devicename> on your
|
|
system, do this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /dev</userinput>
|
|
&prompt.root; <userinput>sh MAKEDEV cuaa0</userinput></screen>
|
|
|
|
<para>Or use cu as <username>root</username> with the
|
|
following command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cu -l<replaceable>line</replaceable> -s<replaceable>speed</replaceable></userinput></screen>
|
|
|
|
<para>with <replaceable>line</replaceable> being the serial
|
|
port (e.g. <devicename>/dev/cuaa0</devicename>) and
|
|
<replaceable>speed</replaceable> being the speed
|
|
(e.g.<literal>57600</literal>). When you are done
|
|
entering the AT commands hit <literal>~.</literal> to
|
|
exit.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="gt-failure">
|
|
<para>Why does the <literal><@></literal> sign for the pn
|
|
capability not work?</para></question><answer>
|
|
|
|
<para>The <literal><@></literal> sign in the phone
|
|
number capability tells tip to look in
|
|
<filename>/etc/phones</filename> for a phone number. But
|
|
the <literal><@></literal> sign is also a special
|
|
character in capability files like
|
|
<filename>/etc/remote</filename>. Escape it with a
|
|
backslash:</para>
|
|
|
|
<programlisting>pn=\@</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dial-command-line">
|
|
<para>How can I dial a phone number on the command
|
|
line?</para>
|
|
</question><answer>
|
|
|
|
<para>Put what is called a <quote>generic</quote> entry in
|
|
your <filename>/etc/remote</filename> file (see
|
|
&man.remote.5;). For example:</para>
|
|
|
|
<programlisting>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:</programlisting>
|
|
|
|
<para>Then you can do something like <command>tip -115200
|
|
5551234</command>. If you prefer &man.cu.1; over
|
|
&man.tip.1;, use a generic cu entry:</para>
|
|
|
|
<programlisting>cu115200|Use cu to dial any number at 115200bps:\
|
|
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:</programlisting>
|
|
|
|
<para>and type <command>cu 5551234 -s 115200</command>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="set-bps">
|
|
<para>Do I have to type in the bps rate every time I do
|
|
that?</para>
|
|
</question><answer>
|
|
|
|
<para>Put in an entry for <literal>tip1200</literal> or
|
|
<literal>cu1200</literal>, but go ahead and use whatever
|
|
bps rate is appropriate with the br capability.
|
|
&man.tip.1; thinks a good default is 1200 bps which is why
|
|
it looks for a <literal>tip1200</literal> entry. You do
|
|
not have to use 1200 bps, though.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="terminal-server">
|
|
<para>How can I more easily access a number of hosts through a
|
|
terminal server?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Rather than waiting until you are connected and typing
|
|
<literal>CONNECT <replaceable>host</replaceable></literal>
|
|
each time, use tip's <literal>cm</literal> capability. For
|
|
example, these entries in
|
|
<filename>/etc/remote</filename> (see &man.remote.5;):</para>
|
|
|
|
<programlisting>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/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:</programlisting>
|
|
|
|
<para>will let you type <command>tip pain</command> or
|
|
<command>tip muffin</command> to connect to the hosts
|
|
<hostid>pain</hostid> or <hostid>muffin</hostid>; and
|
|
<command>tip deep13</command> to get to the terminal
|
|
server.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="tip-multiline">
|
|
<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
|
|
<filename>/etc/remote</filename> (see &man.remote.5;) and
|
|
use <literal><\@></literal> for the
|
|
<literal>pn</literal> capability:</para>
|
|
|
|
<programlisting>big-university:\
|
|
:pn=\@:tc=dialout
|
|
dialout:\
|
|
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:</programlisting>
|
|
|
|
<para>Then, list the phone numbers for the university in
|
|
<filename>/etc/phones</filename> (see &man.phones.5;):</para>
|
|
|
|
<programlisting>big-university 5551111
|
|
big-university 5551112
|
|
big-university 5551113
|
|
big-university 5551114</programlisting>
|
|
|
|
<para>&man.tip.1;
|
|
will try each one in the listed order, then give
|
|
up. If you want to keep retrying, run &man.tip.1;
|
|
in a while loop.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="multi-controlp">
|
|
<para>Why do I have to hit <keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>P</keycap></keycombo>
|
|
twice to send <keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>P</keycap></keycombo>
|
|
once?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>P</keycap></keycombo>
|
|
is the default <quote>force</quote> character, used to
|
|
tell &man.tip.1; that the next character is literal data.
|
|
You can set the force character to any other character
|
|
with the <literal>~s</literal> escape, which means
|
|
<quote>set a variable</quote>.</para>
|
|
|
|
<para>Type <literal>~sforce=<replaceable>single-char
|
|
</replaceable></literal> followed by a newline.
|
|
<replaceable>single-char</replaceable> is any single
|
|
character. If you leave out
|
|
<replaceable>single-char</replaceable>, then the force
|
|
character is the nul character, which you can get by
|
|
typing <keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>2</keycap></keycombo>
|
|
or <keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>SPACE</keycap></keycombo>.
|
|
A pretty good value for
|
|
<replaceable>single-char</replaceable> is <keycombo
|
|
action="simul"><keycap>SHIFT</keycap><keycap>CTRL</keycap><keycap>6</keycap></keycombo>,
|
|
which I have 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>
|
|
|
|
<programlisting>force=<replaceable>single-char</replaceable></programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="uppercase">
|
|
<para>Why is everything I type suddenly in UPPER CASE?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You must have pressed <keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>A</keycap></keycombo>,
|
|
&man.tip.1; <quote>raise character</quote>, specially
|
|
designed for people with broken <keycap>Caps Lock</keycap>
|
|
keys. Use <literal>~s</literal> as above and set the
|
|
variable <quote>raisechar</quote> 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 is a sample .tiprc file perfect for Emacs users
|
|
who need to type <keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>2</keycap></keycombo>
|
|
and <keycombo
|
|
action="simul"><keycap>CTRL</keycap><keycap>A</keycap></keycombo>
|
|
a lot:</para>
|
|
|
|
<programlisting>force=^^
|
|
raisechar=^^</programlisting>
|
|
|
|
<para>The ^^ is <keycombo action="simul"><keycap>SHIFT</keycap><keycap>CTRL</keycap><keycap>6</keycap></keycombo>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="tip-filetransfer">
|
|
<para>How can I do file transfers with
|
|
<command>tip</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are talking to another &unix; system, you can
|
|
send and receive files with <literal>~p</literal> (put)
|
|
and <literal>~t</literal> (take). These commands run
|
|
&man.cat.1; and &man.echo.1; on the remote system to
|
|
accept and send files. The syntax is:</para>
|
|
|
|
<programlisting>~p <local-file> [<remote-file>]
|
|
~t <remote-file> [<local-file>]</programlisting>
|
|
|
|
<para>There is no error checking, so you probably should use
|
|
another protocol, like zmodem.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="zmodem-tip">
|
|
<para>How can I run zmodem with
|
|
<application>tip</application>?</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, <application>lrzsz</application> or
|
|
<application>rzsz</application>.</para>
|
|
|
|
<para>To receive files, start the sending program on the
|
|
remote end. Then, press enter and type <literal>~C
|
|
rz</literal> (or <literal>~C lrz</literal> if you
|
|
installed <application>lrzsz</application>) to begin
|
|
receiving them locally.</para>
|
|
|
|
<para>To send files, start the receiving program on the
|
|
remote end. Then, press enter and type <literal>~C sz
|
|
<replaceable>files</replaceable></literal> (or <literal>~C
|
|
lsz <replaceable>files</replaceable></literal>) to send
|
|
them to the remote system.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="misc">
|
|
<title>Miscellaneous Questions</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="more-swap">
|
|
<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
|
|
truly 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 id="top-freemem">
|
|
<para>Why does <command>top</command> show very little free
|
|
memory even when I have very few programs running?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The simple answer is that free memory is wasted
|
|
memory. Any memory that your programs do not actively
|
|
allocate is used within the FreeBSD kernel as disk
|
|
cache. The values shown by &man.top.1; labeled as
|
|
<literal>Inact</literal>, <literal>Cache</literal>, and
|
|
<literal>Buf</literal> are all cached data at different
|
|
aging levels. This cached data means the system does
|
|
not have to access a slow disk again for data it has
|
|
accessed recently, thus increasing overall performance.
|
|
In general, a low value shown for <literal>Free</literal>
|
|
memory in &man.top.1; is good, provided it is not
|
|
<emphasis>very</emphasis> low.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="chmod-symlinks">
|
|
<para>Why will <command>chmod</command> not change the
|
|
permissions on symlinks?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Symlinks do not have permissions, and by default,
|
|
&man.chmod.1; will not follow symlinks to change the
|
|
permissions on the target file. So if you have a file,
|
|
<filename>foo</filename>, and a symlink to that file,
|
|
<filename>bar</filename>, then this command will always
|
|
succeed.</para>
|
|
|
|
<screen>&prompt.user; <userinput>chmod g-w bar</userinput></screen>
|
|
|
|
<para>However, the permissions on <filename>foo</filename> will
|
|
not have changed.</para>
|
|
|
|
<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 &man.chmod.1; and
|
|
&man.symlink.7; manual pages for more info.</para>
|
|
|
|
<warning>
|
|
<para>The <option>-R</option> option does a
|
|
<emphasis>RECURSIVE</emphasis> &man.chmod.1;. Be
|
|
careful about specifying directories or symlinks to
|
|
directories to &man.chmod.1;. If you want to change
|
|
the permissions of a directory referenced by a
|
|
symlink, use &man.chmod.1; without any options and
|
|
follow the symlink with a trailing slash
|
|
(<filename>/</filename>). For example, if
|
|
<filename>foo</filename> is a symlink to directory
|
|
<filename>bar</filename>, and you want to change the
|
|
permissions of <filename>foo</filename> (actually
|
|
<filename>bar</filename>), you would do something
|
|
like:</para>
|
|
|
|
<screen>&prompt.user; <userinput>chmod 555 foo/</userinput></screen>
|
|
|
|
<para>With the trailing slash, &man.chmod.1; will follow
|
|
the symlink, <filename>foo</filename>, to change the
|
|
permissions of the directory,
|
|
<filename>bar</filename>.</para>
|
|
</warning>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dos-binaries">
|
|
<para>Can I run DOS binaries under FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, you can use <filename
|
|
role="package">emulators/doscmd</filename>, a DOS emulation
|
|
program, available in the &os; Ports Collection.</para>
|
|
|
|
<note>
|
|
<para>The <application>doscmd</application> program used to be an
|
|
integrated part of &os;, but was removed before the release of
|
|
&os; 5.3.</para>
|
|
</note>
|
|
|
|
<para>If <application>doscmd</application> will not suffice,
|
|
the add-on utility <filename
|
|
role="package">emulators/pcemu</filename> emulates an 8088 and
|
|
enough BIOS services to run many DOS text mode
|
|
applications. It requires the X Window System.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="translation">
|
|
<para>What do I need to do to translate a FreeBSD document into
|
|
my native language?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <ulink url="&url.books.fdp-primer;/translations.html">
|
|
Translation FAQ</ulink> in the FreeBSD Documentation Project
|
|
Primer.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="freebsd-mail-bounces">
|
|
<para>Why does my email to any address at FreeBSD.org bounce?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The FreeBSD.org mail system implements some of the
|
|
stricter Postfix checks on incoming mail and rejects mail that is
|
|
either misconfigured or is potential spam. Your mail
|
|
might bounce for one of the following reasons:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The email is being sent from a known spam
|
|
domain or IP block.</para>
|
|
|
|
<para>The FreeBSD mail servers reject email from known
|
|
spam sources. If you have service through a company
|
|
or domain who generates or relays spam, please switch
|
|
to a service provider who does not.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The body of the email only contains HTML.</para>
|
|
|
|
<para>Mail should be sent in plain text only. Please
|
|
configure your mail user agent to send plain
|
|
text.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The mailer at FreeBSD.org cannot resolve the IP
|
|
address of the connecting host back to a symbolic
|
|
name.</para>
|
|
|
|
<para>Working reverse DNS is a standard requirement for
|
|
accepting mail from a host. Set up reverse DNS for
|
|
your mail server's IP address. Many home services
|
|
(DSL, cable, dialup, etc.) will not give you this
|
|
option. In this case, relay your email through your
|
|
service provider's mail server.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The hostname given in the EHLO/HELO part of the SMTP
|
|
exchange cannot be resolved to an IP address.</para>
|
|
|
|
<para>A fully qualified, resolvable host name is necessary
|
|
in this part of the SMTP dialogue before mail will be
|
|
accepted. If you do not have a host name that is registered
|
|
in the DNS, then you should use your service provider's mail
|
|
server to relay your mail.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Your message had a message ID ending with the string
|
|
<quote>localhost</quote>.</para>
|
|
|
|
<para>Some mail user agents generate bad message IDs which will
|
|
not be accepted. You will need to persuade your mail user
|
|
agent to generate a valid message ID or else configure your
|
|
mail transfer agent to rewrite them.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="free-account">
|
|
<para>Where can I find a free FreeBSD account?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>While FreeBSD does not provide open access to any of their
|
|
servers, others do provide open access &unix; systems. The
|
|
charge varies and limited services may be available.</para>
|
|
|
|
<para><ulink url="http://www.arbornet.org/">Arbornet,
|
|
Inc</ulink>, also known as M-Net, has been providing open
|
|
access to &unix; systems since 1983. Starting on an Altos
|
|
running System III, the site switched to BSD/OS in 1991. In
|
|
June of 2000, the site switched again to FreeBSD. M-Net can be
|
|
accessed via telnet and SSH and provides basic access to the
|
|
entire FreeBSD software suite. However, network access is
|
|
limited to members and patrons who donate to the system, which
|
|
is run as a non-profit organization. M-Net also provides an
|
|
bulletin board system and interactive chat.</para>
|
|
|
|
<para><ulink url="http://www.grex.org/">Grex</ulink> provides a
|
|
site very similar to M-Net including the same bulletin board
|
|
and interactive chat software. However, the machine is a &sun;
|
|
4M and is running &sunos;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="sup-define">
|
|
<para>What is <command>sup</command>, 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="&url.books.handbook;/synching.html#CVSUP">
|
|
CVSup</ulink></para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="daemon-name">
|
|
<para>What is the cute little red guy's name?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>He does not have one, and is just called <quote>the BSD
|
|
daemon</quote>. If you insist upon using a name, call him
|
|
<quote>beastie</quote>. Note that <quote>beastie</quote>
|
|
is pronounced <quote>BSD</quote>.</para>
|
|
|
|
<para>You can learn more about the BSD daemon on his <ulink
|
|
url="http://www.mckusick.com/beastie/index.html">home
|
|
page</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="use-beastie">
|
|
<para>Can I use the BSD daemon image?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Perhaps. The BSD daemon is copyrighted by Marshall
|
|
Kirk McKusick. You will want to check his <ulink
|
|
url="http://www.mckusick.com/beastie/mainpage/copyright.html">Statement
|
|
on the Use of the BSD Daemon Figure</ulink> for detailed
|
|
usage terms.</para>
|
|
|
|
<para>In summary, you are free to use the image in a tasteful
|
|
manner, for personal use, so long as appropriate credit is
|
|
given. If you want to use him commercially, you must
|
|
contact Kirk McKusick. More details are available on the
|
|
<ulink
|
|
url="http://www.mckusick.com/beastie/index.html">BSD
|
|
Daemon's home page</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="daemon-images">
|
|
<para>Do you have any BSD daemon images I could use?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You will find eps and Xfig drawings under
|
|
<filename>/usr/share/examples/BSD_daemon/</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="define-MFC">
|
|
<para>What does <acronym>MFC</acronym> mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>MFC is an acronym for <quote>Merged From -CURRENT</quote>.
|
|
It is used in the CVS logs to denote when a change was
|
|
migrated from the CURRENT to the STABLE branches.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="define-BSD">
|
|
<para>What does <acronym>BSD</acronym> mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>It stands for something in a secret language that only
|
|
members can know. It does not translate literally but it is ok
|
|
to tell you that BSD's translation is something between,
|
|
<quote>Formula-1 Racing Team</quote>, <quote>Penguins are
|
|
tasty snacks</quote>, and <quote>We have a better sense of
|
|
humor than &linux;</quote>. :-)</para>
|
|
|
|
<para>Seriously, BSD is an acronym for <quote>Berkeley
|
|
Software Distribution</quote>, which is the name the
|
|
Berkeley <acronym>CSRG</acronym> (Computer Systems Research
|
|
Group) chose for their &unix; distribution way back when.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="define-pola">
|
|
<para>What does <acronym>POLA</acronym> mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Principle of Least Astonishment. It means that as
|
|
FreeBSD evolves, changes visible to the user should be
|
|
kept as unsurprising as possible. For example,
|
|
arbitrarily rearranging system startup variables in
|
|
<filename>/etc/defaults/rc.conf</filename> violates POLA.
|
|
Developers consider POLA when contemplating user-visible
|
|
system changes.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="define-repocopy">
|
|
<para>What is a repo-copy?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>A repo-copy (which is a short form of <quote>repository
|
|
copy</quote>) refers to the direct copying of files within
|
|
the CVS repository.</para>
|
|
|
|
<para>Without a repo-copy, if a file needed to be copied or
|
|
moved to another place in the repository, the committer would
|
|
run <command>cvs add</command> to put the file in its new
|
|
location, and then <command>cvs rm</command> on the old file
|
|
if the old copy was being removed.</para>
|
|
|
|
<para>The disadvantage of this method is that the history
|
|
(i.e. the entries in the CVS logs) of the file would not be
|
|
copied to the new location. As the FreeBSD Project considers
|
|
this history very useful, a repository copy is often used
|
|
instead. This is a process where one of the repository meisters
|
|
will copy the files directly within the repository, rather than
|
|
using the &man.cvs.1; program.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bikeshed-painting">
|
|
<para>Why should I care what color the bikeshed is?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The really, really short answer is that you should not.
|
|
The somewhat longer answer is that just because you are
|
|
capable of building a bikeshed does not mean you should stop
|
|
others from building one just because you do not like the
|
|
color they plan to paint it. This is a metaphor indicating
|
|
that you need not argue about every little feature just
|
|
because you know enough to do so. Some people have
|
|
commented that the amount of noise generated by a change is
|
|
inversely proportional to the complexity of the
|
|
change.</para>
|
|
|
|
<para>The longer and more complete answer is that after a very
|
|
long argument about whether &man.sleep.1; should take
|
|
fractional second arguments, &a.phk; posted a long
|
|
message entitled <quote><ulink
|
|
url="http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=506636+517178+/usr/local/www/db/text/1999/freebsd-hackers/19991003.freebsd-hackers">A bike
|
|
shed (any color will do) on greener grass...</ulink></quote>.
|
|
The appropriate portions of that message are quoted
|
|
below.</para>
|
|
|
|
<blockquote>
|
|
<attribution>&a.phk; on freebsd-hackers, October
|
|
2, 1999</attribution>
|
|
|
|
<para>
|
|
<quote>What is it about this bike shed?</quote> Some
|
|
of you have asked me.</para>
|
|
|
|
<para>It is a long story, or rather it is an old story, but
|
|
it is quite short actually. C. Northcote Parkinson wrote
|
|
a book in the early 1960s, called <quote>Parkinson's
|
|
Law</quote>, which contains a lot of insight into the
|
|
dynamics of management.</para>
|
|
|
|
<para>[snip a bit of commentary on the book]</para>
|
|
|
|
<para>In the specific example involving the bike shed, the
|
|
other vital component is an atomic power-plant, I guess
|
|
that illustrates the age of the book.</para>
|
|
|
|
<para>Parkinson shows how you can go into the board of
|
|
directors and get approval for building a multi-million or
|
|
even billion dollar atomic power plant, but if you want to
|
|
build a bike shed you will be tangled up in endless
|
|
discussions.</para>
|
|
|
|
<para>Parkinson explains that this is because an atomic
|
|
plant is so vast, so expensive and so complicated that
|
|
people cannot grasp it, and rather than try, they fall
|
|
back on the assumption that somebody else checked all the
|
|
details before it got this far. Richard P. Feynmann
|
|
gives a couple of interesting, and very much to the point,
|
|
examples relating to Los Alamos in his books.</para>
|
|
|
|
<para>A bike shed on the other hand. Anyone can build one
|
|
of those over a weekend, and still have time to watch the
|
|
game on TV. So no matter how well prepared, no matter how
|
|
reasonable you are with your proposal, somebody will seize
|
|
the chance to show that he is doing his job, that he is
|
|
paying attention, that he is
|
|
<emphasis>here</emphasis>.</para>
|
|
|
|
<para>In Denmark we call it <quote>setting your
|
|
fingerprint</quote>. It is about personal pride and
|
|
prestige, it is about being able to point somewhere and
|
|
say <quote>There! <emphasis>I</emphasis> did that.</quote>
|
|
It is a strong trait in politicians, but present in most
|
|
people given the chance. Just think about footsteps in
|
|
wet cement.</para>
|
|
</blockquote>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="funnies">
|
|
<title>The FreeBSD Funnies</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="very-very-cool">
|
|
<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 significant variances in
|
|
temperature. 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. We think most of the volunteers
|
|
are at Apple now, working on their new <quote>scratch and
|
|
sniff</quote> GUI. It is a funny old business we are 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 (advanced power
|
|
management) configured, then FreeBSD can also put the CPU into
|
|
a low power mode.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="letmeoutofhere">
|
|
<para>Who is scratching in my memory banks??</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Q. Is there anything <quote>odd</quote> 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 will see frequent references to
|
|
<quote>daemons</quote> in the BSD documentation, and what most
|
|
people do not 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 do not 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 do not 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.
|
|
Now that you know, given a choice you would probably prefer to get
|
|
used to the scratchy noises, no?</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="changing-lightbulbs">
|
|
<para>How many FreeBSD hackers does it take to change a
|
|
lightbulb?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>One thousand, one hundred and sixty-nine:</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 <quote>it's dark</quote>;</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 &man.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 <quote>unsubscribe</quote>,
|
|
<quote>How do I unsubscribe?</quote>, or <quote>Please
|
|
remove me from the list</quote>, 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 GCC;</para>
|
|
|
|
<para>One to complain that the new lightbulb lacks
|
|
fairings;</para>
|
|
|
|
<para>Nine (including the PR originators) to ask
|
|
<quote>what is MFC?</quote>;</para>
|
|
|
|
<para>Fifty-seven to complain about the lights being out two
|
|
weeks after the bulb has been changed.</para>
|
|
|
|
<para><emphasis>&a.nik; adds:</emphasis></para>
|
|
|
|
<para><emphasis>I was laughing quite hard at
|
|
this.</emphasis></para>
|
|
|
|
<para><emphasis>And then I thought, <quote>Hang on,
|
|
shouldn't there be '1 to document it.' in that list
|
|
somewhere?</quote></emphasis></para>
|
|
|
|
<para><emphasis>And then I was enlightened :-)</emphasis></para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dev-null">
|
|
<para>Where does data written to <filename>/dev/null</filename>
|
|
go?</para>
|
|
</question>
|
|
<answer>
|
|
<para>It goes into a special data sink in the CPU where it
|
|
is converted to heat which is vented through the heatsink
|
|
/ fan assembly. This is why CPU cooling is increasingly
|
|
important; as people get used to faster processors, they
|
|
become careless with their data and more and more of it
|
|
ends up in <filename>/dev/null</filename>, overheating
|
|
their CPUs. If you delete <filename>/dev/null</filename>
|
|
(which effectively disables the CPU data sink) your CPU
|
|
may run cooler but your system will quickly become
|
|
constipated with all that excess data and start to behave
|
|
erratically. If you have a fast network connection you
|
|
can cool down your CPU by reading data out of
|
|
<filename>/dev/random</filename> and sending it off
|
|
somewhere; however you run the risk of overheating your
|
|
network connection and <filename>/</filename> or angering
|
|
your ISP, as most of the data will end up getting
|
|
converted to heat by their equipment, but they generally
|
|
have good cooling, so if you do not overdo it you should be
|
|
OK.</para>
|
|
|
|
<para><emphasis>Paul Robinson adds:</emphasis></para>
|
|
|
|
<para>There are other methods. As every good sysadmin knows,
|
|
it is part of standard practice to send data to the screen
|
|
of interesting variety to keep all the pixies that make up
|
|
your picture happy. Screen pixies (commonly mis-typed or
|
|
re-named as <quote>pixels</quote> are categorized by the type of hat
|
|
they wear (red, green or blue) and will hide or appear
|
|
(thereby showing the color of their hat) whenever they
|
|
receive a little piece of food. Video cards turn data into
|
|
pixie-food, and then send them to the pixies - the more
|
|
expensive the card, the better the food, so the better
|
|
behaved the pixies are. They also need constant stimulation
|
|
- this is why screen savers exist.</para>
|
|
|
|
<para>To take your suggestions further, you could just throw
|
|
the random data to console, thereby letting the pixies
|
|
consume it. This causes no heat to be produced at all,
|
|
keeps the pixies happy and gets rid of your data quite
|
|
quickly, even if it does make things look a bit messy on
|
|
your screen.</para>
|
|
|
|
<para>Incidentally, as an ex-admin of a large ISP who
|
|
experienced many problems attempting to maintain a stable
|
|
temperature in a server room, I would strongly discourage
|
|
people sending the data they do not want out to the
|
|
network. The fairies who do the packet switching and
|
|
routing get annoyed by it as well.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="advanced">
|
|
<title>Advanced Topics</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="learn-advanced">
|
|
<para>How can I learn more about FreeBSD's internals?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>At this time, there is only one book on FreeBSD-specific OS
|
|
internals, namely <quote>The Design and Implementation of the
|
|
FreeBSD Operating System</quote> by Marshall Kirk McKusick and
|
|
George V. Neville-Neil, ISBN 0-201-70245-2, which
|
|
focuses on version 5.X of FreeBSD.</para>
|
|
|
|
<para>Additionally, much general &unix; knowledge is directly
|
|
applicable to FreeBSD.</para>
|
|
|
|
<para>For a list of relevant books, please check the Handbook's <ulink
|
|
url="&url.books.handbook;/bibliography-osinternals.html">Operating
|
|
System Internals Bibliography</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="how-to-contribute">
|
|
<para>How can I contribute to FreeBSD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the article on <ulink
|
|
url="&url.articles.contributing;/article.html">Contributing
|
|
to FreeBSD</ulink> for specific advice on how to do this.
|
|
Assistance is more than welcome!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="define-snap-release">
|
|
<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>. (Earlier branches are only changed
|
|
very rarely, which is why there are only three active
|
|
branches of development):</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><literal>RELENG_4</literal> AKA
|
|
<emphasis>4-STABLE</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>RELENG_5</literal> AKA
|
|
<emphasis>5-STABLE</emphasis></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>HEAD</literal> AKA
|
|
<emphasis>-CURRENT</emphasis> AKA
|
|
<emphasis>6.X-CURRENT</emphasis></para>
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
<para><literal>HEAD</literal> is not an actual branch tag,
|
|
like the other two; it is simply a symbolic constant for
|
|
<quote><emphasis>the current, non-branched development
|
|
stream</emphasis></quote> which we simply refer to as
|
|
<quote>-CURRENT</quote>.</para>
|
|
|
|
<para>Right now, <quote>-CURRENT</quote> is the 6.X development
|
|
stream; the <literal>4-STABLE</literal> branch,
|
|
<symbol>RELENG_4</symbol>, forked off from
|
|
<quote>-CURRENT</quote> in March 2000, and
|
|
the <literal>5-STABLE</literal> branch,
|
|
<symbol>RELENG_5</symbol>, forked off from
|
|
<quote>-CURRENT</quote> in October 2004.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="custrel">
|
|
<para>How do I make my own custom release?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the <ulink
|
|
url="&url.articles.releng;/article.html">
|
|
Release Engineering</ulink> article.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="makeworld-clobbers">
|
|
<para>Why does <command>make world</command> clobber my existing
|
|
installed binaries?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, this is the general idea; as its name might suggest,
|
|
<command>make world</command> 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 <literal>DESTDIR</literal>
|
|
is defined while running <command>make world</command> or
|
|
<command>make install</command>, the newly-created binaries
|
|
will be deposited in a directory tree identical to the
|
|
installed one, rooted at <literal>${DESTDIR}</literal>.
|
|
Some random combination of shared libraries modifications and
|
|
program rebuilds can cause this to fail in <command>make
|
|
world</command> however.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cvsup-round-robin">
|
|
<para>Why isn't cvsup.FreeBSD.org a round robin DNS entry to
|
|
share the load amongst the various CVSup servers?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>While CVSup mirrors update from the master CVSup
|
|
server hourly, this update might happen at any time during
|
|
the hour. This means that some servers have newer code
|
|
than others, even though all servers have code that is
|
|
less than an hour old. If <hostid role="fqdn">cvsup.FreeBSD.org</hostid> was a round
|
|
robin DNS entry that simply redirected users to a random
|
|
CVSup server, running CVSup twice in a row could download
|
|
code older than the code already on the system.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bus-speed-defaulted">
|
|
<para>Why does my system say <quote>(bus speed
|
|
defaulted)</quote> when it boots?</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 does not, 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>without</emphasis>
|
|
downloading the whole source tree by using the <ulink
|
|
url="&url.books.handbook;/synching.html#CTM">CTM facility</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="split-240k">
|
|
<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 &man.split.1; that allows them to split files on arbitrary
|
|
byte boundaries.</para>
|
|
|
|
<para>Here is an example from
|
|
<filename>/usr/src/Makefile</filename>.</para>
|
|
|
|
<programlisting>bin-tarball:
|
|
(cd ${DISTDIR}; \
|
|
tar cf - . \
|
|
gzip --no-name -9 -c | \
|
|
split -b 240640 - \
|
|
${RELEASEDIR}/tarballs/bindist/bin_tgz.)</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="submitting-kernel-extensions">
|
|
<para>I have written a kernel extension, who do I send it
|
|
to?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please take a look at the article on <ulink
|
|
url="&url.articles.contributing;/article.html">Contributing
|
|
to FreeBSD</ulink> to learn how to submit code.</para>
|
|
|
|
<para>And thanks for the thought!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="pnp-initialize">
|
|
<para>How are Plug N Play ISA cards detected and
|
|
initialized?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>By: Frank Durda IV
|
|
<email>uhclem@nemesis.lonestar.org</email></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, it 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 <quote>yes</quote> 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 <quote>off-line</quote>. It
|
|
then looks to see if any boards are still responding to the
|
|
query. If the answer was <literal>0</literal>, then there are
|
|
no boards with IDs above X. Now probe asks if there are any
|
|
boards below <literal>X</literal>. 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 do not 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
|
|
cannot 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
|
|
<quote>tough</quote>. 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 id="major-numbers">
|
|
<para>Can you assign a major number for a device driver I have
|
|
written?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
|
|
<para>&os.current; after February 2003 has a facility for
|
|
dynamically and automatically allocating major numbers for
|
|
device drivers at runtime. This mechanism is highly
|
|
preferred to the older procedure of statically allocating
|
|
device numbers. Some comments on this subject can be
|
|
found in <filename>src/sys/conf/majors</filename>.</para>
|
|
|
|
<para>If you are forced for some reason to use a static
|
|
major number, the procedure for obtaining one 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
|
|
<filename>files.i386</filename>, a sample configuration
|
|
file entry, and the appropriate &man.MAKEDEV.8; 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 would appreciate hearing about your
|
|
driver on the &a.hackers;.</para>
|
|
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="alternate-directory-layout">
|
|
<para>What about 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 scenario 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 id="kernel-panic-troubleshooting">
|
|
<para>How can I make the most of the data I see when my kernel
|
|
panics?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><emphasis>[This section was extracted from a mail
|
|
written by &a.wpaul; on the freebsd-current
|
|
<link linkend="mailing">mailing list</link> by &a.des;, who
|
|
fixed a few typos and added the bracketed comments]
|
|
</emphasis></para>
|
|
|
|
<programlisting>From: Bill Paul <wpaul@skynet.ctr.columbia.edu>
|
|
Subject: Re: the fs fun never stops
|
|
To: Ben Rosengart
|
|
Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT)
|
|
Cc: current@FreeBSD.org</programlisting>
|
|
|
|
<para><emphasis>Ben Rosengart posted the following
|
|
panic message]</emphasis></para>
|
|
|
|
<programlisting>> 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</programlisting>
|
|
|
|
<para>[When] you see a message like this, it is not enough to just
|
|
reproduce it and send it in. The instruction pointer value that
|
|
I highlighted up there is important; unfortunately, it is also
|
|
configuration dependent. In other words, the value varies
|
|
depending on the exact kernel image that you are using. If
|
|
you are using a GENERIC kernel image from one of the snapshots,
|
|
then it is possible for somebody else to track down the
|
|
offending function, but if you are running a custom kernel then
|
|
only <emphasis>you</emphasis> can tell us where the fault
|
|
occurred.</para>
|
|
|
|
<para>What you should do is this:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Write down the instruction pointer value. Note that
|
|
the <literal>0x8:</literal> part at the beginning is not
|
|
significant in this case: it is the
|
|
<literal>0xf0xxxxxx</literal> part that we want.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>When the system reboots, do the following:
|
|
|
|
<screen>&prompt.user; <userinput>nm -n /kernel.that.caused.the.panic | grep f0xxxxxx</userinput></screen>
|
|
|
|
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 do not get an exact match, omit the
|
|
last digit from the instruction pointer value and try
|
|
again, i.e.:
|
|
|
|
<screen>&prompt.user; <userinput>nm -n /kernel.that.caused.the.panic | grep f0xxxxx</userinput></screen>
|
|
|
|
If that does not 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 is better than
|
|
nothing.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<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 &man.gdb.1; to generate
|
|
a stack trace on the crash dump.</para>
|
|
|
|
<para>In any case, the method I normally use is this:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Set up a kernel config file, optionally adding
|
|
<literal>options DDB</literal> if you think you need
|
|
the kernel debugger for something. (I use this mainly
|
|
for setting breakpoints if I suspect an infinite loop
|
|
condition of some kind.)</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Use <command>config -g
|
|
<replaceable>KERNELCONFIG</replaceable></command> to set
|
|
up the build directory.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><command>cd /sys/compile/
|
|
<replaceable>KERNELCONFIG</replaceable>; make
|
|
</command></para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Wait for kernel to finish compiling.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><command>make install</command></para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>reboot</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>The &man.make.1; process will have built two kernels.
|
|
<filename>kernel</filename> and
|
|
<filename>kernel.debug</filename>.
|
|
<filename>kernel</filename> was installed as
|
|
<filename>/kernel</filename>, while
|
|
<filename>kernel.debug</filename> can be used as the
|
|
source of debugging symbols for &man.gdb.1;.</para>
|
|
|
|
<para>To make sure you capture a crash dump, you need edit
|
|
<filename>/etc/rc.conf</filename> and set
|
|
<literal>dumpdev</literal> to point to your swap
|
|
partition. This will cause the &man.rc.8; scripts to use
|
|
the &man.dumpon.8; command to enable crash dumps. You can
|
|
also run &man.dumpon.8; manually. After a panic, the
|
|
crash dump can be recovered using &man.savecore.8;; if
|
|
<literal>dumpdev</literal> is set in
|
|
<filename>/etc/rc.conf</filename>, the &man.rc.8; scripts
|
|
will run &man.savecore.8; automatically and put the crash
|
|
dump in <filename>/var/crash</filename>.</para>
|
|
|
|
<note>
|
|
<para>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 is enough space in
|
|
<filename>/var/crash</filename> to hold the dump.
|
|
Alternatively, you run &man.savecore.8;
|
|
manually and have it recover the crash dump to another
|
|
directory where you have more room. It is 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>
|
|
</note>
|
|
|
|
<para>Once you have recovered the crash dump, you can get a
|
|
stack trace with &man.gdb.1; as follows:</para>
|
|
|
|
<screen>&prompt.user; <userinput>gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0</userinput>
|
|
<prompt>(gdb)</prompt> <userinput>where</userinput></screen>
|
|
|
|
<para>Note that there may be several screens worth of
|
|
information; ideally you should use
|
|
&man.script.1; 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 occurred.
|
|
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 &man.gdb.1; 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 are really insane and have a second computer,
|
|
you can also configure &man.gdb.1; to do remote
|
|
debugging such that you can use &man.gdb.1; 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 have not
|
|
played with this yet as I do not 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 id="dlsym-failure">
|
|
<para>Why has 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 <function>dlopen(NULL,
|
|
flags)</function> 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 ELF linker (&man.ld.1;).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="change-kernel-address-space">
|
|
<para>How can I increase or reduce 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 does not bump its head against
|
|
the ceiling.</para>
|
|
|
|
<para>The first goal is achieved by increasing the value of
|
|
<literal>NKPDE</literal> in
|
|
<filename>src/sys/i386/include/pmap.h</filename>. Here is what
|
|
it looks like for a 1 GB address space:</para>
|
|
|
|
<programlisting>#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</programlisting>
|
|
|
|
<para>To find the correct value of <literal>NKPDE</literal>,
|
|
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>
|
|
|
|
<programlisting>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) }</programlisting>
|
|
|
|
<para>Then reconfig and rebuild your kernel. You will
|
|
probably have problems with &man.ps.1; &man.top.1; and the
|
|
like; <command>make world</command> should take care of it
|
|
(or a manual rebuild of <filename>libkvm</filename>,
|
|
&man.ps.1; and &man.top.1; 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>[&a.dg; adds: <emphasis>I think the kernel address space
|
|
needs to be a power of two, but I am 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>
|
|
|
|
<blockquote>
|
|
<attribution>FreeBSD Core Team</attribution>
|
|
|
|
<para>If you see a problem with this FAQ, or wish to submit an
|
|
entry, please mail the &a.doc;. We appreciate your feedback,
|
|
and cannot make this a better FAQ without your help!</para>
|
|
</blockquote>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>&a.jkh;</term>
|
|
<listitem>
|
|
<para>Occasional fits of FAQ-reshuffling and updating.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>&a.dwhite;</term>
|
|
|
|
<listitem>
|
|
<para>Services above and beyond the call of duty on
|
|
freebsd-questions</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>&a.joerg;</term>
|
|
|
|
<listitem>
|
|
<para>Services above and beyond the call of duty on
|
|
Usenet</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>&a.wollman;</term>
|
|
|
|
<listitem>
|
|
<para>Networking and formatting</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>Jim Lowe</term>
|
|
|
|
<listitem>
|
|
<para>Multicast information</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>&a.pds;</term>
|
|
|
|
<listitem>
|
|
<para>FreeBSD FAQ typing machine slavey</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>The FreeBSD Team</term>
|
|
|
|
<listitem>
|
|
<para>Kvetching, moaning, submitting data</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>And to any others we have forgotten, apologies and heartfelt
|
|
thanks!</para>
|
|
</chapter>
|
|
|
|
&bibliography;
|
|
</book>
|