10740 lines
390 KiB
XML
10740 lines
390 KiB
XML
<?xml version="1.0" encoding="ISO8859-1" standalone="no"?>
|
|
<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
|
|
"../../../share/sgml/freebsd42.dtd" [
|
|
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//EN" "../../share/sgml/entities.ent">
|
|
%entities;
|
|
<!ENTITY bibliography SYSTEM "../../../share/sgml/bibliography.sgml">
|
|
<!ENTITY rel.head "<emphasis>10-CURRENT</emphasis>">
|
|
<!ENTITY rel.head.relx "10.<replaceable>X</replaceable>">
|
|
<!ENTITY rel.head.releng "<symbol>HEAD</symbol>">
|
|
<!ENTITY rel.head.packages "packages-10-current">
|
|
<!ENTITY rel.relx "9.<replaceable>X</replaceable>">
|
|
<!ENTITY rel.stable "<emphasis>9-STABLE</emphasis>">
|
|
<!ENTITY rel.releng "<symbol>RELENG_9</symbol>">
|
|
<!ENTITY rel.relengdate "September 2011">
|
|
<!ENTITY rel.packages "packages-9-stable">
|
|
<!ENTITY rel2.relx "8.<replaceable>X</replaceable>">
|
|
<!ENTITY rel2.stable "<emphasis>8-STABLE</emphasis>">
|
|
<!ENTITY rel2.releng "<symbol>RELENG_8</symbol>">
|
|
<!ENTITY rel2.relengdate "August 2009">
|
|
<!ENTITY rel2.packages "packages-8-stable">
|
|
<!ENTITY rel3.current "7.4">
|
|
<!ENTITY rel3.relx "7.<replaceable>X</replaceable>">
|
|
<!ENTITY rel3.stable "<emphasis>7-STABLE</emphasis>">
|
|
<!ENTITY rel3.releng "<symbol>RELENG_7</symbol>">
|
|
<!ENTITY rel3.relengdate "October 2007">
|
|
<!ENTITY rel3.packages "packages-7-stable">
|
|
]>
|
|
|
|
<book lang='en'>
|
|
<bookinfo>
|
|
<title>Frequently Asked Questions for &os;
|
|
&rel3.relx;, &rel2.relx;, and &rel.relx;</title>
|
|
|
|
<corpauthor>The &os; Documentation Project</corpauthor>
|
|
|
|
<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>
|
|
<year>2006</year>
|
|
<year>2007</year>
|
|
<year>2008</year>
|
|
<year>2009</year>
|
|
<year>2010</year>
|
|
<year>2011</year>
|
|
<year>2012</year>
|
|
<holder>The &os; Documentation Project</holder>
|
|
</copyright>
|
|
|
|
&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.general;
|
|
</legalnotice>
|
|
|
|
<releaseinfo>$FreeBSD$</releaseinfo>
|
|
|
|
<abstract>
|
|
<para>This is the FAQ for &os; versions
|
|
&rel3.relx;, &rel2.relx; and &rel.relx;.
|
|
All entries are assumed to be
|
|
relevant to &os; &rel3.relx; 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">&os; 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/">&os; 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 &os;
|
|
&rel3.relx; -, &rel2.relx; - and &rel.relx; -
|
|
FAQ!</para>
|
|
|
|
<para>As is usual with Usenet FAQs, this document aims to cover the
|
|
most frequently asked questions concerning the &os; 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 &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Briefly, &os; is a &unix; like operating system for
|
|
AMD64 and &intel; EM64T, &i386; PC-98, IA-64, &arm;,
|
|
&powerpc; 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 &os; is and how it
|
|
can work for you may be found on the <ulink
|
|
url="&url.base;/index.html">&os; home page</ulink>.
|
|
</para>
|
|
|
|
<para>&os; 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 &os;, please see the
|
|
<ulink
|
|
url="&url.books.handbook;/index.html">&os; Handbook</ulink>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="FreeBSD-goals">
|
|
<para>What is the goal of the &os; Project?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The goal of the &os; 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">&os; license</ulink>
|
|
whenever possible.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bsd-license-restrictions">
|
|
<para>Does the &os; license have any restrictions?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Those restrictions do not control how you use the
|
|
code, merely how you treat the &os; 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 &os; 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. &os; 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 &os;, however. If you want a solid office or
|
|
Internet server, a reliable workstation, or just the ability
|
|
to do your job without interruptions, &os; will almost
|
|
certainly do everything you need. Many computer users
|
|
across the world, including both novices and experienced
|
|
&unix; administrators, use &os; as their only desktop
|
|
operating system.</para>
|
|
|
|
<para>If you are migrating to &os; 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">&os; Handbook</ulink>
|
|
are excellent places to start.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="why-called-FreeBSD">
|
|
<para>Why is it called &os;?</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
|
|
&os; 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 &os; 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,
|
|
called <ulink
|
|
url="http://www.freebsdworld.gr/freebsd/bsd-family-tree.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 &os;?</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 any point in the development of &os;, there can be
|
|
multiple parallel branches. &rel.relx; releases are
|
|
made from the &rel.stable; branch, and &rel2.relx;
|
|
releases are made from the &rel2.stable; branch.</para>
|
|
|
|
<para>Up until the release of 8.0, the
|
|
&rel3.relx; series was the one known as
|
|
<emphasis>-STABLE</emphasis>. However, as of 8.0, the
|
|
&rel3.relx; branch will be designated for
|
|
an <quote>extended support</quote> status and receive only
|
|
fixes for major problems, such as security-related fixes.
|
|
There will be no more releases made from the
|
|
&rel3.stable; branch, and it is considered a
|
|
<quote>legacy</quote> branch and most current work will only
|
|
become a part of &rel.stable; and &rel2.stable;.</para>
|
|
|
|
<para>Version <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE/">&rel.current;</ulink>
|
|
is the latest release from the &rel.stable;
|
|
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 &rel2.stable;
|
|
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 &os; sources (see
|
|
the questions on <link
|
|
linkend="current">&os.current;</link> and <link
|
|
linkend="stable">&os.stable;</link>) than that, doing so
|
|
is more of a commitment, as the sources are a moving
|
|
target.</para>
|
|
|
|
<para>More information on &os; releases can be found on the
|
|
<ulink
|
|
url="http://www.FreeBSD.org/releng/index.html">Release Engineering page</ulink>
|
|
on the &os; Web site.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="current">
|
|
<para>What is <emphasis>&os;-CURRENT</emphasis>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><ulink
|
|
url="&url.books.handbook;/current-stable.html#CURRENT">&os.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;/current-stable.html#CURRENT">relevant section</ulink>
|
|
in the <ulink
|
|
url="&url.books.handbook;/index.html">Handbook</ulink> for
|
|
details on running <emphasis>-CURRENT</emphasis>.</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
|
|
&os.current;. This branch sometimes evolves quite quickly
|
|
and can be un-buildable sometimes.
|
|
People that use &os.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 &a.current; may be treated with
|
|
contempt.</para>
|
|
|
|
<para>Every month, <ulink
|
|
url="&url.base;/snapshots/">snapshot</ulink>
|
|
releases are made based on the current state of the
|
|
<emphasis>-CURRENT</emphasis> and
|
|
<emphasis>-STABLE</emphasis> branches. 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
|
|
<emphasis>-CURRENT</emphasis> or
|
|
<emphasis>-STABLE</emphasis> 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
|
|
<emphasis>-CURRENT</emphasis> 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
|
|
<emphasis>-STABLE</emphasis> snapshots.</para>
|
|
|
|
<para>Snapshot releases are directly available from <ulink
|
|
url="&url.base;/snapshots/">snapshot</ulink>.
|
|
</para>
|
|
|
|
<para>Official snapshots are generated each month on a regular
|
|
basis for all actively developed branches. There are also
|
|
daily snapshot builds of the popular &arch.i386; and
|
|
&arch.amd64; branches, hosted on <ulink
|
|
url="http://snapshots.us.freebsd.org/"></ulink>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="stable">
|
|
<para>What is the <emphasis>&os;-STABLE</emphasis>
|
|
concept?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Back when &os; 2.0.5 was released, &os; 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>.
|
|
<emphasis>&os;-STABLE</emphasis> 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.
|
|
<emphasis>&os;-CURRENT</emphasis>, on the other hand, has
|
|
been one unbroken line since 2.0 was released, leading
|
|
towards &rel.current;-RELEASE and beyond. For more detailed
|
|
information on branches see <quote><ulink
|
|
url="&url.articles.releng;/release-proc.html#REL-BRANCH">&os; Release Engineering: Creating the Release Branch</ulink></quote>,
|
|
the status of the branches and the upcoming release schedule
|
|
can be found on the <ulink
|
|
url="http://www.FreeBSD.org/releng">Release Engineering Information</ulink> page.
|
|
</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.<replaceable>X</replaceable> release.
|
|
The 4-STABLE branch has ended with the release of 4.11, the
|
|
final 4.<replaceable>X</replaceable> release. The only
|
|
changes made to either of these branches will be, for the
|
|
most part, security-related bug fixes. Support for the
|
|
5-STABLE branches has ended with the release of 5.5, the
|
|
final 5.<replaceable>X</replaceable> release. Support for
|
|
the 6-STABLE branch will continue for some time but focus
|
|
primarily on security-related bug fixes and other serious
|
|
issues.</para>
|
|
|
|
<para>&rel.current;-STABLE is the actively developed
|
|
<emphasis>-STABLE</emphasis> branch. The latest release on
|
|
the &rel.current;-STABLE branch is &rel.current;-RELEASE,
|
|
which was released in &rel.current.date;.</para>
|
|
|
|
<para>The &rel.head; branch is the actively developed
|
|
<emphasis>-CURRENT</emphasis> 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 &os; releases made?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &a.re; releases a new major version of &os; about
|
|
every 18 months and a new minor version about every 8 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 &os;, even though waiting for all the latest
|
|
goodies to reach <emphasis>-STABLE</emphasis> 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 &os; 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 &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The key decisions concerning the &os; 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.base;/administration.html#t-core">core team</ulink> of
|
|
9 people. There is a much larger team of more than 350
|
|
<ulink
|
|
url="&url.articles.contributors;/article.html#STAFF-COMMITTERS">committers</ulink>
|
|
who are authorized to make changes directly to the &os;
|
|
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 &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Every significant release of &os; is available via
|
|
anonymous FTP from the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/"> &os; FTP site</ulink>:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The latest &rel.stable; release, &rel.current;-RELEASE
|
|
can be found in the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE/">&rel.current;-RELEASE directory</ulink>.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="&url.base;/snapshots/"> Snapshot</ulink>
|
|
releases are made monthly for the <link
|
|
linkend="current">-CURRENT</link> and <link
|
|
linkend="stable">-STABLE</link> branch, these being of
|
|
service purely to bleeding-edge testers and
|
|
developers.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The latest &rel2.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>The latest &rel3.stable; release, &rel3.current;-RELEASE
|
|
can be found in the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel3.current;-RELEASE/">&rel3.current;-RELEASE directory</ulink>.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Information about obtaining &os; 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="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.cgi?query">query</ulink>
|
|
interface.</para>
|
|
|
|
<para>The &man.send-pr.1; command can be used to submit
|
|
problem reports and change requests via electronic mail.
|
|
Alternatively, the <ulink
|
|
url="http://www.freebsd.org/send-pr.html">web-based problem report submission interface</ulink>
|
|
can be used to submit problem reports through a web
|
|
browser.</para>
|
|
|
|
<para>Before submitting a problem report, please read <ulink
|
|
url="&url.articles.problem-reports;/article.html">Writing &os; Problem Reports</ulink>,
|
|
an article on how to write good problem reports.</para>
|
|
</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">&os;</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 &os;?</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>. In addition, <link
|
|
linkend="bibliography">the Bibliography</link> at the end of this
|
|
FAQ, and <ulink
|
|
url="&url.books.handbook;/bibliography.html">the one in the Handbook</ulink>
|
|
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 &os; 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 class="directory">/usr/share/locale</filename> on your &os;
|
|
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>English (United States)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>bn_BD.ISO10646-1</literal></entry>
|
|
|
|
<entry>Bengali or Bangla (Bangladesh)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>da_DK.ISO8859-1</literal></entry>
|
|
|
|
<entry>Danish (Denmark)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>de_DE.ISO8859-1</literal></entry>
|
|
|
|
<entry>German (Germany)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>el_GR.ISO8859-7</literal></entry>
|
|
|
|
<entry>Greek (Greece)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>es_ES.ISO8859-1</literal></entry>
|
|
|
|
<entry>Spanish (Spain)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>fr_FR.ISO8859-1</literal></entry>
|
|
|
|
<entry>French (France)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>hu_HU.ISO8859-2</literal></entry>
|
|
|
|
<entry>Hungarian (Hungary)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>it_IT.ISO8859-15</literal></entry>
|
|
|
|
<entry>Italian (Italy)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>ja_JP.eucJP</literal></entry>
|
|
|
|
<entry>Japanese (Japan, EUC encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>mn_MN.UTF-8</literal></entry>
|
|
|
|
<entry>Mongolian (Mongolia, UTF-8 encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>nl_NL.ISO8859-1</literal></entry>
|
|
|
|
<entry>Dutch (Netherlands)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>no_NO.ISO8859-1</literal></entry>
|
|
|
|
<entry>Norwegian (Norway)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>pl_PL.ISO8859-2</literal></entry>
|
|
|
|
<entry>Polish (Poland)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>pt_BR.ISO8859-1</literal></entry>
|
|
|
|
<entry>Portuguese (Brazil)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>ru_RU.KOI8-R</literal></entry>
|
|
|
|
<entry>Russian (Russia, KOI8-R encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>sr_YU.ISO8859-2</literal></entry>
|
|
|
|
<entry>Serbian (Serbia)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>tr_TR.ISO8859-9</literal></entry>
|
|
|
|
<entry>Turkish (Turkey)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>zh_CN.GB2312</literal></entry>
|
|
|
|
<entry>Simplified Chinese (China, GB2312
|
|
encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>zh_TW.Big5</literal></entry>
|
|
|
|
<entry>Traditional Chinese (Taiwan, 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>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</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>txt</literal></entry>
|
|
|
|
<entry>Plain text</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<note>
|
|
<para>Page numbers are not automatically updated when
|
|
loading Rich Text 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>
|
|
</note>
|
|
</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><replaceable>type</replaceable>.<replaceable>format</replaceable></filename>
|
|
(i.e., <filename>article.pdf</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 <literal>zip</literal> format. If you want to
|
|
uncompress this on &os; you will need to
|
|
install the <filename
|
|
role="package">archivers/unzip</filename>
|
|
port first.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>bz2</literal></entry>
|
|
|
|
<entry>The <literal>bzip2</literal> format. Less widespread than
|
|
<literal>zip</literal>, 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 <literal>bzip2</literal> will be stored in a file
|
|
called <filename>book.ps.bz2</filename> in the
|
|
<filename class="directory">handbook/</filename> directory.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>After choosing the format and compression mechanism that
|
|
you want to download, 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 &os; 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="newsgroups">
|
|
<para>What &os; 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 &os; IRC (Internet Relay Chat)
|
|
channels?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, most major IRC networks host a &os; chat
|
|
channel:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on <ulink
|
|
url="http://www.efnet.org/index.php">EFNet</ulink> is
|
|
a &os; 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 &os;. You Have Been Warned! Available at
|
|
server <hostid>irc.efnet.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 &os; 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://freenode.net/">Freenode</ulink> is a
|
|
general help channel with many users at any time.
|
|
The conversations have been known to run off-topic for a
|
|
while, but priority is given to users with &os;
|
|
questions. We are good about helping you understand the
|
|
basics, referring to the Handbook whenever possible, and
|
|
directing you where to learn more about the topic you
|
|
need help with. We are a primarily English speaking
|
|
channel, though we have users from all over the world.
|
|
If you would like to speak in your native language, try
|
|
to ask the question in English and then relocate to
|
|
another channel
|
|
<literal>##freebsd-<replaceable>lang</replaceable></literal>
|
|
as appropriate.</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.rusnet.org.ru/">RUSNET</ulink>
|
|
is a russian-language oriented channel dedicated
|
|
to helping &os; users. This is also good place
|
|
for non-technical discussions.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#bsdchat</literal> on <ulink
|
|
url="http://freenode.net/">Freenode</ulink> is a
|
|
Traditional-Chinese (UTF-8 encoding) language oriented
|
|
channel dedicated to helping &os; users. This is also
|
|
good place for non-technical discussions.</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="forums">
|
|
<para>Are there any web based forums to discuss &os;?</para>
|
|
</question>
|
|
<answer>
|
|
<para>The official &os; forums are located at <ulink
|
|
url="http://forums.FreeBSD.org/">http://forums.FreeBSD.org/</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="training">
|
|
<para>Where can I get commercial &os; training and
|
|
support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><ulink
|
|
url="http://www.ixsystems.com">iXsystems, Inc.</ulink>,
|
|
parent company of the <ulink
|
|
url="http://www.freebsdmall.com/">&os; Mall</ulink>,
|
|
provides commercial &os; and PC-BSD software <ulink
|
|
url="http://www.ixsystems.com/bsdsupport">support</ulink>,
|
|
in addition to &os; development and tuning solutions.</para>
|
|
|
|
<para>BSD Certification Group, Inc. provides system
|
|
administration certifications for DragonFly BSD, &os;, NetBSD,
|
|
OpenBSD. If you are interested in them, visit <ulink
|
|
url="http://www.BSDCertification.org">their 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 &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You need three floppy images:
|
|
<filename>floppies/boot.flp</filename>,
|
|
<filename>floppies/kern1.flp</filename>, and
|
|
<filename>floppies/kern2.flp</filename>. These images need
|
|
to be copied onto floppies by tools like
|
|
<command>fdimage</command> or &man.dd.1;.</para>
|
|
|
|
<para>If you need to download the distributions yourself (for
|
|
a DOS file system install, for instance), below are some
|
|
recommendations for distributions to grab:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>base/</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 &os;</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.44 MB) floppy can accommodate
|
|
1,474,560 bytes of data. The boot image is exactly
|
|
1,474,560 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 &os;</ulink>.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="install-instructions-location">
|
|
<para>Where are the instructions for installing &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Installation instructions can be found in the <ulink
|
|
url="&url.books.handbook;/install.html">Handbook entry on installing &os;</ulink>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="need-to-run">
|
|
<para>What do I need in order to run &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For &os; you will need a 486 or better PC, with
|
|
64 MB or more of RAM and at least 1 GB of hard
|
|
disk space.</para>
|
|
|
|
<para>See also <xref linkend="hardware"/>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="custom-boot-floppy">
|
|
<para>How can I make my own custom install disk?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Customized &os; installation media can be created by
|
|
building 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 &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Install &windows; first, then &os;. &os;'s boot manager
|
|
will then manage to boot &windows; and &os;. 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 &os; comes with in
|
|
one of three ways:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Running DOS, go into the <filename
|
|
class="directory">tools</filename> directory of your
|
|
&os; 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 &os; boot floppy again and go to the
|
|
<guimenuitem>Custom</guimenuitem> menu item for custom
|
|
installation. Choose
|
|
<guimenuitem>Partition</guimenuitem>. 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) press <keycap>W</keycap>. This will ask for
|
|
confirmation, select &gui.yes;, and when you get the
|
|
Boot Manager selection prompt, be sure to select the
|
|
<application>&os; Boot Manager</application>. 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 &os; boot floppy (or CD-ROM) and choose the
|
|
<guimenuitem>Fixit</guimenuitem> menu item. Select
|
|
either the Fixit floppy or CD-ROM #2 (the
|
|
<quote>live</quote> file system 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 &os; 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 &os; partition as a potential FAT
|
|
suspend-to-disk partition. When the BIOS tries to parse the
|
|
&os; partition it hangs.</para>
|
|
|
|
<para>According to IBM<footnote>
|
|
<para>In an email 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 &a.nectar; to the &a.mobile; describes a procedure
|
|
which may work if your newer IBM laptop does not boot &os;
|
|
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 &os;, change the partition
|
|
ID &os; 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
|
|
&os; 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 &os;
|
|
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 &os;
|
|
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 &os; 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 &os; 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 file
|
|
system.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Use &man.disklabel.8; to write
|
|
<filename>boot1</filename> and <filename>boot2</filename>
|
|
to your &os; 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 &os;.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Reboot. At the boot prompt you will be given the
|
|
option of booting <literal>OpenBSD</literal>. This will
|
|
actually boot &os;.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>Getting this to work in the case where you want to dual
|
|
boot OpenBSD and &os; 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="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
|
|
&windows; 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 CD-ROM, but the install program
|
|
says no CD-ROM is found. Where did it go?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The usual cause of this problem is a mis-configured
|
|
CD-ROM drive. Many PCs now ship with the CD-ROM 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 CD-ROM to boot from
|
|
it, but why &os; cannot see it to complete the
|
|
install.</para>
|
|
|
|
<para>Reconfigure your system so that the CD-ROM 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 &os; 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, &os; 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 &os; 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 2 GB 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 1 GB, use
|
|
<replaceable>M</replaceable> cylinders, 63 sectors per track
|
|
(<emphasis>not</emphasis> 64), and 255 heads, where
|
|
<replaceable>M</replaceable> is the disk capacity in MB
|
|
divided by 7.844238 (!). So our example 2 GB drive
|
|
would have 261 cylinders, 63 sectors per track and 255
|
|
heads.</para>
|
|
|
|
<para>If you are not sure about this, or &os; 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 &os; called
|
|
<filename>pfdisk.exe</filename>. You can find it in the
|
|
<filename class="directory">tools</filename> subdirectory on
|
|
the &os; CD-ROM or on the various &os; 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
|
|
&os;).</para>
|
|
|
|
<para>For a SCSI drive, this will normally imply that the root
|
|
partition will be in the first 1024 MB (or in the first
|
|
4096 MB if extended translation is turned on — see
|
|
previous question). For IDE, the corresponding figure is
|
|
504 MB.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="disk-manager">
|
|
<para>Is &os; compatible with any disk managers?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; recognizes the <application>Ontrack Disk
|
|
Manager</application> and makes allowances for it. Other disk
|
|
managers are not supported.</para>
|
|
|
|
<para>If you just want to use the disk with &os; 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 &os; 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 &os; how
|
|
many cylinders to use.</para>
|
|
|
|
<para>If you want to use the disk with &os; and another
|
|
operating system, you may be able to do without a disk
|
|
manager: just make sure the &os; 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 &os; 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 &os; and DOS or some other
|
|
OS conflicting over their ideas of disk <link
|
|
linkend="geometry">geometry</link>. You will have to
|
|
reinstall &os;, 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 &os; 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
|
|
&os;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="need-complete-sources">
|
|
<para>Do I need to install the source?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>In general, no. There is nothing in the base
|
|
system which requires the presence of the source to
|
|
operate. Some ports, like <filename
|
|
role="package">sysutils/lsof</filename>, will not build
|
|
unless the source is installed. In particular, if the
|
|
port builds a kernel module or directly operates on kernel
|
|
structures, the source must be installed.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="need-kernel">
|
|
<para>Do I need to build a kernel?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Usually not. The supplied <literal>GENERIC</literal>
|
|
kernel contains the drivers an ordinary computer will
|
|
need. &man.freebsd-update.8;, the &os; binary upgrade
|
|
tool, cannot upgrade custom kernels, another reason
|
|
to stick with the GENERIC kernel when possible.
|
|
For computers with very limited RAM, such as
|
|
embedded systems, it may be worthwhile to build a
|
|
smaller custom kernel containing just the required
|
|
drivers.</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>&os; 7 and 8 use MD5 password hashing by
|
|
default. Recent versions
|
|
of &os; use <emphasis>SHA512</emphasis> by default.
|
|
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. &os; also allows you to use the Blowfish
|
|
password format, which is more secure. Which password
|
|
format to use for new passwords is controlled by the
|
|
<literal>passwd_format</literal> login capability in
|
|
<filename>/etc/login.conf</filename>, which takes values of
|
|
<literal>des</literal>, <literal>blf</literal> (if these are
|
|
available) or <literal>md5</literal>. 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 &os; installed on the
|
|
secondary IDE controller. The boot blocks think the system
|
|
is installed on <devicename>ad0</devicename> (the second
|
|
BIOS disk) while the kernel assigns the first disk on the
|
|
secondary controller device, <devicename>ad2</devicename>.
|
|
After the device probing, the kernel tries to mount what the
|
|
boot blocks think is the boot disk,
|
|
<devicename>ad0</devicename>, while it is really
|
|
<devicename>ad2</devicename>, and fails.</para>
|
|
|
|
<para>To fix the problem, do one of the following:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>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
|
|
<userinput>set root_disk_unit="<replaceable>disk_number</replaceable>"</userinput>.
|
|
<replaceable>disk_number</replaceable> will be
|
|
<literal>0</literal> if &os; 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 <userinput>boot</userinput>, and your
|
|
system should boot correctly.</para>
|
|
|
|
<para>To make this change permanent (i.e, so you do not
|
|
have to do this every time you reboot or turn on your
|
|
&os; machine), put the line
|
|
<userinput>root_disk_unit="<replaceable>disk_number</replaceable>"</userinput>
|
|
in <filename>/boot/loader.conf.local</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Move the &os; disk onto the primary IDE
|
|
controller, so the hard disks are consecutive.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="memory-limits">
|
|
<para>What are the limits for memory?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Memory limits depend on the platform used. On a
|
|
standard &i386; install, the limit is 4 GB but more
|
|
memory can be supported through &man.pae.4;. See <link
|
|
linkend="memory-i386-over-4gb">instructions for using 4 GB or more memory on &i386;</link>.
|
|
</para>
|
|
|
|
<para>&os;/pc98 has a limit of 4 GB memory, and PAE can
|
|
not be used with it. 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 file systems?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For FFS file systems, the maximum theoretical limit is
|
|
8 TB (2 G blocks), or 16 TB for the default
|
|
block size of 8 KB. In practice, there is a soft limit
|
|
of 1 TB, but with modifications file systems with
|
|
4 TB are possible (and exist).</para>
|
|
|
|
<para>The maximum size of a single FFS file is approximately
|
|
1 G blocks, or 4 TB with a block size of
|
|
4 KB.</para>
|
|
|
|
<table>
|
|
<title>Maximum File Sizes</title>
|
|
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>FS Block Size</entry>
|
|
|
|
<entry>Works</entry>
|
|
|
|
<entry>Should Work</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>4 KB</entry>
|
|
|
|
<entry>> 4 GB</entry>
|
|
|
|
<entry>4 TB - 1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>8 KB</entry>
|
|
|
|
<entry>> 32 GB</entry>
|
|
|
|
<entry>32 TB - 1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>16 KB</entry>
|
|
|
|
<entry>> 128 GB</entry>
|
|
|
|
<entry>32 TB - 1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>32 KB</entry>
|
|
|
|
<entry>> 512 GB</entry>
|
|
|
|
<entry>64 TB - 1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>64 KB</entry>
|
|
|
|
<entry>> 2048 GB</entry>
|
|
|
|
<entry>128 TB - 1</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>When the FS block size is 4 KB, triple indirect
|
|
blocks work and everything should be limited by the maximum FS
|
|
block number that can be represented using triple indirect
|
|
blocks (approx.
|
|
1024<superscript>3</superscript> + 1024<superscript>2</superscript> + 1024),
|
|
but everything is limited by a (wrong) limit of
|
|
1 G - 1 on FS block numbers. The limit on FS
|
|
block numbers should be 2 G - 1. There are
|
|
some bugs for FS block numbers near 2 G - 1,
|
|
but such block numbers are unreachable when the FS block
|
|
size is 4 KB.</para>
|
|
|
|
<para>For block sizes of 8 KB and larger, everything
|
|
should be limited by the 2 G - 1 limit on FS
|
|
block numbers, but is actually limited by the
|
|
1 G - 1 limit on FS block numbers. Using the
|
|
correct limit of 2 G - 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>Because your world and kernel are out of sync. This is
|
|
not supported. Be sure you use <command>make <maketarget>buildworld</maketarget></command>
|
|
and <command>make <maketarget>buildkernel</maketarget></command>
|
|
to update your kernel.</para>
|
|
|
|
<para>You can boot by specifying the kernel directly at the
|
|
second stage, pressing any key when the <literal>|</literal>
|
|
shows up before loader is started.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="boot-acpi">
|
|
<para>Installation crashes while booting, what can I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Try disabling ACPI support. When the bootloader loads,
|
|
press the <keycap>Space</keycap> key. The system will display
|
|
the following:</para>
|
|
|
|
<screen>OK</screen>
|
|
|
|
<para>Type:</para>
|
|
|
|
<screen><userinput>unset acpi_load</userinput></screen>
|
|
|
|
<para>And then type:</para>
|
|
|
|
<screen><userinput>boot</userinput></screen>
|
|
</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 &os; system.
|
|
Which model/brand/type is best?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is discussed continually on the &os; 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 &a.mobile;
|
|
archives. Otherwise, you probably want the archives for
|
|
the &a.questions;, or possibly a specific mailing list for
|
|
a particular hardware type.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-memory">
|
|
<title>Memory</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="memory-upper-limitation">
|
|
<para>Does &os; support more than 4 GB of memory (RAM)?
|
|
More than 16 GB? More than 48 GB?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. &os; as an operating system generally supports
|
|
as much physical memory (RAM) as the platform it is running
|
|
on does. Keep in mind that different platforms have
|
|
different limits for memory; for example &i386; without
|
|
<acronym>PAE</acronym> supports at most 4 GB of
|
|
memory (and usually less than that because of PCI address
|
|
space) and &i386; with PAE supports at most 64 GB
|
|
memory. AMD64 platforms currently deployed support up to
|
|
1 TB of physical memory.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="memory-i386-over-4gb">
|
|
<para>Why does &os; report less than 4 GB memory when
|
|
installed on an &i386; machine?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The total address space on &i386; machines is 32-bit,
|
|
meaning that at most 4 GB of memory is addressable (can
|
|
be accessed). Furthermore, some addresses in this range
|
|
are reserved by hardware for different purposes, for
|
|
example for using and controlling PCI devices, for
|
|
accessing video memory, and so on. Therefore, the total
|
|
amount of memory usable by the operating system for its
|
|
kernel and applications is limited to significantly less
|
|
than 4 GB. Usually, 3.2 GB to 3.7 GB is
|
|
the maximum usable physical memory in this
|
|
configuration.</para>
|
|
|
|
<para>To access more than 3.2 GB to 3.7 GB of
|
|
installed memory (meaning up to 4 GB but also more than
|
|
4 GB), a special tweak called <acronym>PAE</acronym>
|
|
must be used. PAE stands for Physical Address Extension
|
|
and is a way for 32-bit x86 CPUs to address more than
|
|
4 GB of memory. It remaps the memory that would
|
|
otherwise be overlaid by address reservations for
|
|
hardware devices above the 4 GB range and uses it as
|
|
additional physical memory (see &man.pae.4;). Using PAE
|
|
has some drawbacks; this mode of memory access is a little
|
|
bit slower than the normal (without PAE) mode and loadable
|
|
modules (see &man.kld.4;) are not supported. This means
|
|
all drivers must be compiled into the kernel.</para>
|
|
|
|
<para>The most common way to enable PAE is to build a new
|
|
kernel with the special ready-provided kernel configuration
|
|
file called <filename>PAE</filename>, which is already
|
|
configured to build a safe kernel. Note that some entries
|
|
in this kernel configuration file are too conservative and
|
|
some drivers marked as unready to be used with PAE are
|
|
actually usable. A rule of thumb is that if the driver is
|
|
usable on 64-bit architectures (like AMD64), it is also
|
|
usable with PAE. If you wish to create your own kernel
|
|
configuration file, you can enable PAE by adding the
|
|
following line to your configuration:</para>
|
|
|
|
<programlisting>options PAE</programlisting>
|
|
|
|
<para>PAE is not much used nowadays because most new x86
|
|
hardware also supports running in 64-bit mode, known as
|
|
AMD64 or &intel; 64. It has a much larger address
|
|
space and does not need such tweaks. &os; supports AMD64
|
|
and it is recommended that this version of &os; be used
|
|
instead of the &i386; version if 4 GB or more memory
|
|
is required.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-processors">
|
|
<title>Architectures and Processors</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="architectures">
|
|
<para>Does &os; support architectures other than the
|
|
x86?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. &os; currently runs on the Intel x86 and the
|
|
AMD64 architectures. The Intel EM64T, IA-64, &arm;,
|
|
&powerpc;, and &sparc64; architectures are also
|
|
supported. Upcoming platforms are &mips; and &s390;, join
|
|
the &a.mips; for more information about ongoing work on
|
|
the &mips; platform. 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 &os; support Symmetric Multiprocessing
|
|
(SMP)?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Symmetric multi-processor (SMP) systems are generally
|
|
supported by &os;, although in some cases, BIOS or
|
|
motherboard bugs may generate some problems.</para>
|
|
|
|
<para>&os; will take advantage of HyperThreading (HTT)
|
|
support on Intel CPUs that support this feature. A kernel
|
|
with the <literal>options SMP</literal> feature enabled
|
|
will automatically detect the additional logical
|
|
processors.</para>
|
|
|
|
<para>&man.smp.4; has more details.</para>
|
|
</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 &os; support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports EIDE, SATA, SCSI, and SAS 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 or SAS 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>&os; 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 &os;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="tape-changer-support">
|
|
<para>Does &os; support tape changers?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; 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 CD-ROM drives are supported by &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Any SCSI drive connected to a supported controller is
|
|
supported. Most ATAPI compatible IDE CD-ROMs are
|
|
supported.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="supported-cdrw-drives">
|
|
<para>Which CD-RW drives are supported by &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports any ATAPI-compatible IDE CD-R or CD-RW
|
|
drive. See &man.burncd.8; for details.</para>
|
|
|
|
<para>&os; 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>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-kbd-mice">
|
|
<title>Keyboards and Mice</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="usbkbd">
|
|
<para>Does &os; support my USB keyboard?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports USB keyboards out-of-the-box. 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/console > /dev/null</userinput></screen>
|
|
|
|
<para>Note that if the USB keyboard is the only keyboard, it
|
|
is accessed as <devicename>/dev/ukbd0</devicename>, thus,
|
|
the command should look like:</para>
|
|
|
|
<screen>&prompt.root; <userinput>kbdcontrol -k /dev/ukbd0 < /dev/console > /dev/null</userinput></screen>
|
|
|
|
<note>
|
|
<para>To make this change permanent across reboots, add
|
|
<literal>keyboard="/dev/ukbd0"</literal> to
|
|
<filename>/etc/rc.conf</filename>.</para>
|
|
</note>
|
|
|
|
<para>Once this is done, the USB keyboard should work in the
|
|
X environment as well without any special settings.</para>
|
|
|
|
<para>If you want to switch back to the default keyboard,
|
|
use this command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>kbdcontrol -k /dev/kbd0 > /dev/null</userinput></screen>
|
|
|
|
<para>To allow using both the second USB keyboard and the
|
|
first AT keyboard at the same time on a console via
|
|
&man.kbdmux.4; driver type the following commands:</para>
|
|
|
|
<screen>&prompt.root; <userinput>kbdcontrol -K < /dev/console > /dev/null</userinput>
|
|
&prompt.root; <userinput>kbdcontrol -a atkbd0 < /dev/kbdmux0 > /dev/null</userinput>
|
|
&prompt.root; <userinput>kbdcontrol -a ukbd1 < /dev/kbdmux0 > /dev/null</userinput>
|
|
&prompt.root; <userinput>kbdcontrol -k /dev/kbdmux0 < /dev/console > /dev/null</userinput></screen>
|
|
|
|
<para>See the &man.ukbd.4;, &man.kbdcontrol.1; and
|
|
&man.kbdmux.4; manual pages for more information.</para>
|
|
|
|
<note>
|
|
<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
|
|
issues.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="busmouse">
|
|
<para>I have an unusual bus mouse. How do I set it
|
|
up?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports the bus mouse and the InPort bus mouse
|
|
from such manufacturers as Microsoft, Logitech and ATI. The
|
|
<filename>GENERIC</filename> 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, a device node
|
|
<devicename>psm0</devicename> will be created
|
|
automatically.</para>
|
|
</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 &os;?</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>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="keyboard-delete-key">
|
|
<para>How do I use my delete key in <command>sh</command>
|
|
and <command>csh</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For the <application>Bourne Shell</application>, add
|
|
the following lines to your <filename>.shrc</filename>. See
|
|
&man.sh.1; and &man.editrc.5;.</para>
|
|
|
|
<programlisting>bind ^? ed-delete-next-char # for console
|
|
bind ^[[3~ ed-delete-next-char # for xterm</programlisting>
|
|
|
|
<para>For the <application>C Shell</application>, add the
|
|
following lines to your <filename>.cshrc</filename>. See
|
|
&man.csh.1;.</para>
|
|
|
|
<programlisting>bindkey ^? delete-char # for console
|
|
bindkey ^[[3~ delete-char # for xterm</programlisting>
|
|
|
|
<para>For more information, see <ulink
|
|
url="http://www.ibb.net/~anne/keyboard.html">this 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 &os; support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the Hardware Notes supplied with each release of
|
|
&os; for a more complete list.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="support-broadcom">
|
|
<para>Is there a native driver for the Broadcom 43xx
|
|
cards?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, many Broadcom 43xx cards are supported by the
|
|
&man.bwn.4; and &man.bwi.4; drivers.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="multiport-serial-support">
|
|
<para>Which multi-port serial cards are supported by
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is a list of these in the <ulink
|
|
url="&url.books.handbook;/serial.html">Serial Communications</ulink>
|
|
chapter 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>
|
|
<para>See <ulink
|
|
url="&url.books.handbook;/serialconsole-setup.html">this section of the handbook</ulink>.
|
|
</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 &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports various 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 CD-ROMs, SCSI or joysticks on these cards, except
|
|
for the &soundblaster;. The &soundblaster; SCSI
|
|
interface and some non-SCSI CD-ROMs 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 my &man.pcm.4; sound
|
|
card?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Some sound cards set their output volume to 0 at every
|
|
boot. Run the following command every time the machine
|
|
boots:</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="power-management-support">
|
|
<para>Does &os; support power management on my
|
|
laptop?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports <acronym>APM</acronym> on certain
|
|
machines. Further information can be found in
|
|
&man.apm.4;.</para>
|
|
|
|
<para>&os; also supports the <acronym>ACPI</acronym>
|
|
features found in most modern hardware. Further
|
|
information can be found in &man.acpi.4;. If a system
|
|
supports both <acronym>APM</acronym> and
|
|
<acronym>ACPI</acronym>, either can be used. We suggest
|
|
you try both and choose the one that best fits your
|
|
needs.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="disable-acpi">
|
|
<para>How do I disable ACPI?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Add following line
|
|
<screen>hint.acpi.0.disabled="1"</screen> into your
|
|
<filename>/boot/device.hints</filename> file.</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 &os; 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.</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>See <link
|
|
linkend="micron-hang-boot">the previous answer</link>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
</chapter>
|
|
|
|
<chapter id="troubleshoot">
|
|
<title>Troubleshooting</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="pae">
|
|
<para>Why is &os; finding the wrong amount of memory on &i386;
|
|
hardware?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The most likely reason is the difference between
|
|
physical memory addresses and virtual addresses.</para>
|
|
|
|
<para>The convention for most PC hardware is to use the memory
|
|
area between 3.5 GB and 4 GB for a special purpose
|
|
(usually for PCI). This address space is used to access PCI
|
|
hardware. As a result real, physical memory can not be
|
|
accessed by that address space.</para>
|
|
|
|
<para>What happens to the memory that should appear in that
|
|
location is dependent on your hardware. Unfortunately, some
|
|
hardware does nothing and the ability to use that last
|
|
500 MB of RAM is entirely lost.</para>
|
|
|
|
<para>Luckily, most hardware remaps the memory to a higher
|
|
location so that it can still be used. However, this can
|
|
cause some confusion if you watch the boot messages.</para>
|
|
|
|
<para>On a 32-bit version of &os;, the memory appears
|
|
lost, since it will be remapped above 4 GB, which a
|
|
32-bit kernel is unable to access. In this case, the
|
|
solution is to build a PAE enabled kernel. See <link
|
|
linkend="memory-limits">the entry on memory limits</link>
|
|
and <link linkend="memory-upper-limitation">about different
|
|
memory limits on different platforms</link> for more
|
|
information.</para>
|
|
|
|
<para>On a 64-bit version of &os;, or when running a
|
|
PAE-enabled kernel, &os; will correctly detect and remap the
|
|
memory so it is usable. During boot, however, it may seem
|
|
as if &os; is detecting more memory than the system really
|
|
has, due to the described remapping. This is normal and the
|
|
available memory will be corrected as the boot process
|
|
completes.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<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 ship
|
|
with this feature disabled.</para>
|
|
|
|
<para>To enable bad block remapping edit the first device page
|
|
mode, which can be done 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>Modern IDE drives also have bad block remapping features
|
|
in the controller, and they ship with this feature turned
|
|
on.</para>
|
|
|
|
<para>If you see warnings about bad blocks (on either type of
|
|
drive), it is time to consider replacing the drive. You
|
|
might be able to use the drive manufacturer's diagnostic
|
|
program to lock out those bad blocks, but at best this will
|
|
buy you some time.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="hpnetserver-scsi-failure">
|
|
<para>Why does &os; 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 &os;'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 the following command at the
|
|
prompt and install your system as usual:</para>
|
|
|
|
<programlisting>eisa 12
|
|
quit</programlisting>
|
|
|
|
<para>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). Boot with the
|
|
<option>-c</option> option and change the
|
|
<devicename>ed0</devicename>/<devicename>de0</devicename>/...
|
|
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 &os;
|
|
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 &os; 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
|
|
<command>make <maketarget>buildworld</maketarget></command>,
|
|
and the compile fails while trying to compile
|
|
<filename>ls.c</filename> into <filename>ls.o</filename>.
|
|
If you then run
|
|
<command>make <maketarget>buildworld</maketarget></command>
|
|
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.
|
|
&man.gdb.1; 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 CD-ROMs
|
|
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 &os;, 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 &os; 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 Mach64 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
|
|
<devicename>sio3</devicename> (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 &man.sio.4; 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/dev/sio/sio.c</filename> (or in
|
|
<filename>/usr/src/sys/pc98/cbus/sio.c</filename> for pc98)
|
|
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>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="reallybigram">
|
|
<para>Why does &os; 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 &os; gets the memory size
|
|
from the BIOS, it can only detect 16 bits worth of
|
|
Kbytes in size (65535 Kbytes = 64 MB) (or less...
|
|
some BIOSes peg the memory size to 16 MB). If you have
|
|
more than 64 MB, &os; 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>
|
|
|
|
<programlisting>options MAXMEM=<replaceable>n</replaceable></programlisting>
|
|
|
|
<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 <errorname>kmem_map too small</errorname>
|
|
messages. What is wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Normally, &os; 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 &os; 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 following the instructions in the <ulink
|
|
url="&url.books.handbook;/configtuning-kernel-limits.html#NMBCLUSTERS">Network Limits</ulink>
|
|
section of the Handbook.</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 &os; kernel will only allow a certain number of
|
|
processes to exist at one time. The number is based on the
|
|
<varname>kern.maxusers</varname> &man.sysctl.8; variable.
|
|
<varname>kern.maxusers</varname> 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 <varname>kern.maxusers</varname>. This
|
|
will increase these other system limits in addition to the
|
|
maximum number of processes.</para>
|
|
|
|
<para>To adjust your <varname>kern.maxusers</varname> value,
|
|
see the <ulink
|
|
url="&url.books.handbook;/configtuning-kernel-limits.html#KERN-MAXFILES">File/Process Limits</ulink>
|
|
section of the Handbook. (While that section refers to open
|
|
files, the same limits apply to processes.)</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> tunable. If
|
|
this tunable needs adjustment it needs to be defined in
|
|
<filename>/boot/loader.conf</filename>. The tunable will
|
|
not get adjusted until the system is rebooted. For more
|
|
information about tuning tunables, you should see the
|
|
&man.loader.conf.5; and &man.sysctl.conf.5; manual pages.
|
|
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 change permanent place the proper value
|
|
in <filename>/etc/sysctl.conf</filename>. More information
|
|
about system tuning with &man.sysctl.8; can be found at the
|
|
<ulink
|
|
url="&url.books.handbook;/configtuning-sysctl.html">Tuning with sysctl</ulink>
|
|
section of the Handbook.</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 &man.ahc.4; 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 <quote>automatic
|
|
termination</quote>. 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 <application>sendmail</application> give me an
|
|
error reading <errorname>mail loops back to
|
|
myself</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can find a detailed answer for this question in the
|
|
<ulink
|
|
url="&url.books.handbook;/mail-trouble.html#Q26.5.2.">Handbook</ulink>.
|
|
</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 &os; 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
|
|
<envar>TERM</envar> 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 &os; 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 <envar>TERM</envar>
|
|
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 &os; end and login to the
|
|
remote machine using an X based terminal emulator such
|
|
as <command>xterm</command> or <command>rxvt</command>.
|
|
The <envar>TERM</envar> variable at the remote host
|
|
should be set to <literal>xterm</literal> or
|
|
<literal>vt100</literal>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="pnp-not-found">
|
|
<para>Why is my PnP card not found (or found as
|
|
<literal>unknown</literal>)?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The reasons for this behavior are explained by the
|
|
following email, posted to the &a.questions; by &a.peter;, in
|
|
answer to a question about an internal modem that was no
|
|
longer found after an upgrade to
|
|
&os; 4.<replaceable>X</replaceable> (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.<replaceable>X</replaceable>] 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.<replaceable>X</replaceable>] 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 <literal>Vendor
|
|
ID</literal> line at the start of the output. The
|
|
hexadecimal number in parentheses
|
|
(<literal>0x3024a341</literal> in this example) is the PnP
|
|
ID and the string immediately before this
|
|
(<literal>PMC2430</literal>) 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,
|
|
<literal>0x24158086</literal>.</para>
|
|
|
|
<para>This information (<literal>Vendor ID</literal> or
|
|
<varname>chip</varname> value) needs adding to the file
|
|
<filename>/usr/src/sys/dev/sio/sio_isa.c</filename>.</para>
|
|
|
|
<para>You should first make a backup of
|
|
<filename>sio_isa.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_isa.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
|
|
<devicename>sio</devicename> device.</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
|
|
<filename>boot2</filename> (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
|
|
<application>Telnet</application> and
|
|
<application>SSH</application> servers that come with &os;,
|
|
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>
|
|
|
|
<para>Following a fresh install of &os;, it is also possible
|
|
that domain and name server information is missing from
|
|
<filename>/etc/resolv.conf</filename>. This will often
|
|
cause a delay in <application>SSH</application>, as the
|
|
option <literal>UseDNS</literal> is set to
|
|
<literal>yes</literal> by default in the
|
|
<filename>sshd_config</filename> file in
|
|
<filename class="directory">/etc/ssh</filename>. If this is causing the
|
|
problem, you will either need to fill in the missing
|
|
information in <filename>/etc/resolv.conf</filename> or set
|
|
<literal>UseDNS</literal> to <literal>no</literal> in
|
|
<filename>sshd_config</filename> as a temporary
|
|
workaround.</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 the value of
|
|
<varname>MAX_STRAY_LOG</varname> from
|
|
<literal>5</literal> to <literal>0</literal> in your
|
|
platform's (e.g. &i386;)
|
|
<filename>intr_machdep.c</filename> file and rebuild the
|
|
new kernel and all the warnings will be
|
|
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 &man.dmesg.8;?</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="calcru-negative-runtime">
|
|
<para>Why are <errorname>calcru: negative runtime</errorname>
|
|
or <errorname>calcru: runtime went backwards</errorname>
|
|
messages pounding the console?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is a known problem when enabling &intel; Enhanced
|
|
SpeedStep from the BIOS: it causes the kernel to start printing
|
|
<errorname>calcru</errorname> messages like this:</para>
|
|
|
|
<screen>calcru: runtime went backwards from 6 usec to 3 usec for pid 37 (pagezero)
|
|
calcru: runtime went backwards from 6 usec to 3 usec for pid 36 (vmdaemon)
|
|
calcru: runtime went backwards from 170 usec to 138 usec for pid 35 (pagedaemon)
|
|
calcru: runtime went backwards from 553 usec to 291 usec for pid 15 (swi6: task queue)
|
|
calcru: runtime went backwards from 15521 usec to 10366 usec for pid 2 (g_event)
|
|
calcru: runtime went backwards from 25 usec to 12 usec for pid 11 (swi1: net)
|
|
calcru: runtime went backwards from 4417 usec to 3960 usec for pid 1 (init)
|
|
calcru: runtime went backwards from 2084385 usec to 1793542 usec for pid 1 (init)
|
|
calcru: runtime went backwards from 408 usec to 204 usec for pid 0 (swapper)</screen>
|
|
|
|
<para>It is because &intel; SpeedStep (EIST) is incompatible
|
|
with some motherboards.</para>
|
|
|
|
<para>Workaround: Disable the EIST feature in the BIOS. You
|
|
can still achieve ACPI-based processor frequency throttling
|
|
by using &man.powerd.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="computer-clock-skew">
|
|
<para>Why does the clock on my computer keep incorrect time?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your computer has two or more clocks, and &os; has
|
|
chosen to use the wrong one.</para>
|
|
|
|
<para>Run &man.dmesg.8;, and check for lines that contain
|
|
<literal>Timecounter</literal>. The one with the highest
|
|
quality value that &os; chose.</para>
|
|
|
|
<screen>&prompt.root; <userinput>dmesg | grep Timecounter</userinput>
|
|
Timecounter "i8254" frequency 1193182 Hz quality 0
|
|
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
|
|
Timecounter "TSC" frequency 2998570050 Hz quality 800
|
|
Timecounters tick every 1.000 msec</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: ACPI-fast</screen>
|
|
|
|
<para>It may be a broken ACPI timer. The simplest solution is
|
|
to disable the ACPI timer in
|
|
<filename>/boot/loader.conf</filename>:</para>
|
|
|
|
<programlisting>debug.acpi.disabled="timer"</programlisting>
|
|
|
|
<para>Or 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 &os; 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 computer 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. &man.pccardd.8;
|
|
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 &os;'s boot loader display <errorname>Read
|
|
error</errorname> and stop after the BIOS screen?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os;'s boot loader is incorrectly recognizing the hard
|
|
drive's geometry. This must be manually set within
|
|
&man.fdisk.8; when creating or modifying &os;'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 <keycap>Enter</keycap> 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
|
|
<guimenuitem>Configure</guimenuitem>, then
|
|
<guimenuitem>Fdisk</guimenuitem>. 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 <errorname>UDMA ICRC</errorname> errors, and
|
|
how do I fix them?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &man.ata.4; driver reports <errorname>UDMA
|
|
ICRC</errorname> 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>An answer for this question can be found in the &os;
|
|
Glossary, see <ulink
|
|
url="&url.books.handbook;/freebsd-glossary.html#LOR-GLOSSARY">LOR</ulink>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="called-with-non-sleepable-locks-held">
|
|
<para>What does <errorname>Called ... with the following
|
|
non-sleepable locks held</errorname> mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This means that a function that may sleep was called
|
|
while a mutex (or other unsleepable) lock was held.</para>
|
|
|
|
<para>The reason this is an error is because mutexes are not
|
|
intended to be held for long periods of time; they are
|
|
supposed to only be held to maintain short periods of
|
|
synchronization. This programming contract allows device
|
|
drivers to use mutexes to synchronize with the rest of the
|
|
kernel during interrupts. Interrupts (under &os;) may not
|
|
sleep. Hence it is imperative that no subsystem in the
|
|
kernel block for an extended period while holding a
|
|
mutex.</para>
|
|
|
|
<para>To catch such errors, assertions may be added to the
|
|
kernel that interact with the &man.witness.4; subsystem to
|
|
emit a warning or fatal error (depending on the system
|
|
configuration) when a potentially blocking call is made
|
|
while holding a mutex.</para>
|
|
|
|
<para>In summary, such warnings are non-fatal, however with
|
|
unfortunate timing they could cause undesirable effects
|
|
ranging from a minor blip in the system's responsiveness to
|
|
a complete system lockup.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="touch-not-found">
|
|
<para>Why does
|
|
<maketarget>buildworld</maketarget>/<maketarget>installworld</maketarget>
|
|
die with the message <errorname>touch: not
|
|
found</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This error does not mean that the &man.touch.1; utility
|
|
is missing. The error is instead probably due to the dates
|
|
of the files being set sometime in the future. If your
|
|
CMOS-clock is set to local time you need to run the command
|
|
<command>adjkerntz -i</command> to adjust the kernel
|
|
clock when booting into single user mode.</para>
|
|
</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 &os; 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 &os; can have very positive effects on &os;'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 &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The open-source <application><ulink
|
|
url="http://www.openoffice.org">OpenOffice.org</ulink></application>
|
|
and <application><ulink
|
|
url="http://www.libreoffice.org">LibreOffice</ulink></application>
|
|
office suites work natively on &os;. The &linux; version of
|
|
<application><ulink
|
|
url="http://www.oracle.com/us/products/applications/open-office/index.html">Oracle Open Office</ulink></application>,
|
|
the value-added closed-source version of OpenOffice.org,
|
|
also works on &os;.</para>
|
|
|
|
<para>&os; also includes a variety of text editors,
|
|
spreadsheets, and drawing programs in the Ports
|
|
Collection.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="motif">
|
|
<para>Where can I get <application>&motif;</application> for
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The Open Group has released the source code to
|
|
<application>&motif;</application>. You can
|
|
install the <filename
|
|
role="package">x11-toolkits/open-motif</filename> 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.</para>
|
|
|
|
<note>
|
|
<para>The <application>Open &motif;</application>
|
|
distribution only allows redistribution if it is running
|
|
on an <ulink
|
|
url="http://www.opensource.org/">open source</ulink>
|
|
operating system.</para>
|
|
</note>
|
|
|
|
<para>In addition, there are commercial distributions of the
|
|
<application>&motif;</application> 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
|
|
<application>&motif; 2.1.20</application> distribution
|
|
for &os; (&i386;).<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><application>OSF/&motif; manager</application>,
|
|
<application>xmbind</application>,
|
|
<application>panner</application>,
|
|
<application>wsm</application>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Development kit with uil, mrm, xm, xmcxx, include
|
|
and <application>Imake</application> 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 &os; version of
|
|
<application>&motif;</application> 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>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cde">
|
|
<para>Where can I get <application>CDE</application> for
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><emphasis>Xi Graphics</emphasis> used to sell
|
|
<application>CDE</application> for &os;, but no longer
|
|
do.</para>
|
|
|
|
<para><ulink
|
|
url="http://www.kde.org/"><application>KDE</application></ulink>
|
|
is an open source X11 desktop which is similar to
|
|
<application>CDE</application> in many respects. You might
|
|
also like the look and feel of <ulink
|
|
url="http://www.xfce.org/"><application>xfce</application></ulink>.
|
|
<application>KDE</application> and
|
|
<application>xfce</application> are both in the <ulink
|
|
url="&url.base;/ports/index.html">ports system</ulink>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="database-systems">
|
|
<para>Are there any Database systems for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes! See the <ulink
|
|
url="&url.base;/commercial/software_bycat.html#CATEGORY_DATABASE">Commercial Vendors</ulink>
|
|
section of &os;'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 <application>&oracle;</application> on
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Instructions on how to set up &linux;
|
|
<application>&oracle;</application> on &os; can be found
|
|
under <ulink
|
|
url="http://www.shadowcom.net/freebsd-oracle9i/">http://www.shadowcom.net/freebsd-oracle9i/</ulink>.</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 &os;. The list
|
|
currently tops &os.numports; and is growing daily, so come
|
|
back to check often or subscribe to the &a.announce; for
|
|
periodic updates on new entries.</para>
|
|
|
|
<para>Most ports should work on the
|
|
&rel3.relx;, &rel2.relx;, and &rel.relx; branches.
|
|
Each time a &os;
|
|
release is made, a snapshot of the ports tree at the time of
|
|
release in also included in the <filename class="directory">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 <guimenuitem>Packages</guimenuitem> package
|
|
installation menu in &man.sysinstall.8; (under the
|
|
<guimenuitem>Configure</guimenuitem> 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>.tbz</filename> suffix and
|
|
CD-ROM distribution people will have a
|
|
<filename class="directory">packages/All</filename> directory on their CD
|
|
which contains such files. They can also be downloaded over
|
|
the net for various versions of &os; at the following
|
|
locations:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>for &rel3.relx; -RELEASE/&rel3.stable;</term>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel3.packages;/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel3.packages;</ulink>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>for &rel2.relx; -RELEASE/&rel2.stable;</term>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel2.packages;/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel2.packages;</ulink>
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>for &rel.relx; -RELEASE/&rel.stable;</term>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel.packages;/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel.packages;</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="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 are the <ulink
|
|
url="http://www.eyrie.org/~eagle/faqs/inn.html">INN
|
|
FAQ</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="java">
|
|
<para>Does &os; 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
|
|
&rel3.relx; -, &rel2.relx; -, or
|
|
&rel.relx; -STABLE machine?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are running a &os; version that lags
|
|
significantly behind <emphasis>-CURRENT</emphasis> or
|
|
<emphasis>-STABLE</emphasis>, 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
|
|
<emphasis>-CURRENT</emphasis> but which broke the port for
|
|
<emphasis>-STABLE</emphasis>. 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
|
|
<emphasis>-CURRENT</emphasis> and
|
|
<emphasis>-STABLE</emphasis> branches.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="make-index">
|
|
<para>I just tried to build <filename>INDEX</filename> using
|
|
<command>make <maketarget>index</maketarget></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 <maketarget>index</maketarget></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 <maketarget>index</maketarget></command>
|
|
has insufficient information to create its dependency
|
|
tree.</para>
|
|
|
|
<para>This is particularly a problem for &os; users who
|
|
utilize &man.csup.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 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 make variables turned
|
|
off before reporting it to &a.ports;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cvsup-in-base">
|
|
<para>Why is <application>CVSup</application> not integrated
|
|
in the main &os; tree?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &os; 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 &os; 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 <application>CVSup</application> is written in
|
|
Modula-3, adding it to the &os; 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 &os;
|
|
sources and additional maintenance work. Thus, it is much
|
|
easier for both the developers and users to keep
|
|
<application>CVSup</application> as a separate port, which
|
|
can be easily installed as a package bundled on the &os;
|
|
installation CDs.</para>
|
|
|
|
<para>However, &os; users are not without an integrated
|
|
<application>CVSup</application> compatible client anymore
|
|
since &os; 6.2-RELEASE. Thanks to &a.mux;,
|
|
<application>CVSup</application> was rewritten in C as
|
|
&man.csup.1; and it is the part of the base system by now.
|
|
Although it does not implement all the features of
|
|
<application>CVSup</application> at the moment, it is good
|
|
enough (and really fast!) to keep your sources synchronized.
|
|
For systems earlier than 6.2, it can be installed as a port
|
|
or package (see <filename
|
|
role="package">net/csup</filename>).</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>&os; 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, see the <ulink
|
|
url="&url.books.handbook;/ports-using.html">Upgrading Ports</ulink>
|
|
section in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ports-major-upgrade">
|
|
<para>Do I need to recompile every port each time I perform a
|
|
major version update?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>By all means! While a recent system will run with
|
|
software compiled under an older release, you will end up with
|
|
things randomly crashing and failing to work once you start
|
|
installing other ports or updating a portion of what you
|
|
already have.</para>
|
|
|
|
<para>When the system is upgraded, various shared libraries,
|
|
loadable modules, and other parts of the system will be
|
|
replaced with newer versions. Applications linked against
|
|
the older versions may fail to start or, in other cases,
|
|
fail to function properly.</para>
|
|
|
|
<para>For more information, see <ulink
|
|
url="&url.books.handbook;/updating-upgrading-freebsdupdate.html#FREEBSDUPDATE-UPGRADE">the section on upgrades</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ports-minor-upgrade">
|
|
<para>Do I need to recompile every port each time I perform a
|
|
minor version update?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>In general, no. &os; developers do their utmost to
|
|
guarantee binary compatibility across all releases with the
|
|
same major version number. Any exceptions will be
|
|
documented in the Release Notes, and advice given there
|
|
should be followed.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="minimal-sh">
|
|
<para>Why is <command>/bin/sh</command> so minimal? Why does
|
|
&os; 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
|
|
<command>bash</command>, <command>scsh</command>,
|
|
<command>tcsh</command>, and <command>zsh</command>. (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
|
|
<option>-u</option></command> listing.)</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="netscape-slow-startup">
|
|
<para>Why do <application>&netscape;</application> and
|
|
<application>Opera</application> take so long to start?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The usual answer is that DNS on your system is
|
|
misconfigured. Both <application>&netscape;</application>
|
|
and <application>Opera</application> 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
|
|
<application>CVSup</application>, 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 <application>CVSup</application> subcollections
|
|
and not the <literal>ports-all</literal>
|
|
<application>CVSup</application> 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://alleg.sourceforge.net/digmid.html"></ulink>.
|
|
After <application>TiMidity++</application> 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 <replaceable>/tmp/juke/01.wav</replaceable> <replaceable>01.mid</replaceable></userinput></screen>
|
|
|
|
<para>The WAV files can then be converted to other formats or
|
|
burned onto audio CDs, as described in the <ulink
|
|
url="&url.books.handbook;/creating-cds.html">&os; Handbook</ulink>.
|
|
</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>The new <filename>kernel</filename> will be installed
|
|
to the <filename class="directory">/boot/kernel</filename> directory along
|
|
with its modules, while the old kernel and its modules
|
|
will be moved to the <filename class="directory">/boot/kernel.old</filename>
|
|
directory, so if you make a mistake the next time you play
|
|
with your configuration you can boot the previous version
|
|
of your kernel.</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 is 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 will not boot
|
|
anyway.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="why-kernel-big">
|
|
<para>Why is my kernel so big (over 10 MB)?</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.5 MB to 2 MB.</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 &os; 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 <filename>GENERIC</filename>?</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
|
|
<command>make <maketarget>buildkernel</maketarget></command> and
|
|
<command>make <maketarget>installkernel</maketarget></command>
|
|
targets, and your source tree is different from the one
|
|
used to build the currently running system (e.g., you
|
|
are compiling &rel.current;-RELEASE on a
|
|
&rel2.current;-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
|
|
<command>make <maketarget>buildkernel</maketarget></command>
|
|
and
|
|
<command>make <maketarget>installkernel</maketarget></command>
|
|
targets, but you failed to assert the completion of the
|
|
<command>make <maketarget>buildworld</maketarget></command>
|
|
target. The
|
|
<command>make <maketarget>buildkernel</maketarget></command>
|
|
target relies on files generated by the
|
|
<command>make <maketarget>buildworld</maketarget></command>
|
|
target to complete its job correctly.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Even if you are trying to build <link
|
|
linkend="stable">&os;-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">&os;-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>Check for the existence of the
|
|
<varname>kern.sched.quantum</varname> sysctl. If you have
|
|
it, you should see something like this:</para>
|
|
|
|
<screen>&prompt.user; sysctl <replaceable>kern.sched.quantum</replaceable>
|
|
kern.sched.quantum: 99960</screen>
|
|
|
|
<para>If the <varname>kern.sched.quantum</varname> sysctl
|
|
exists, you are using the 4BSD scheduler (&man.sched.4bsd.4;).
|
|
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>The name of the scheduler currently being used is
|
|
directly available as the value of the
|
|
<varname>kern.sched.name</varname> 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 <varname>kern.sched.quantum</varname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><varname>kern.sched.quantum</varname> 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.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="disks">
|
|
<title>Disks, File Systems, and Boot Loaders</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="adding-disks">
|
|
<para>How can I add my new hard disk to my &os; system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <ulink
|
|
url="&url.books.handbook;/disks-adding.html">Adding Disks</ulink>
|
|
section in the &os; Handbook.</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 <emphasis>-STABLE</emphasis> 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
|
|
&man.sysinstall.8;, 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 class="directory">/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 file system. 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 <command>dump</command> to move
|
|
a partitions data to a new partition is:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para><command>newfs</command> the new partition.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><command>mount</command> it on a temporary mount
|
|
point.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><command>cd</command> to that directory.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><command>dump</command> 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/<replaceable>ad1s1a</replaceable></devicename>,
|
|
with <filename class="directory"><replaceable>/mnt</replaceable></filename> as
|
|
the temporary mount point, it is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/<replaceable>ad1s1a</replaceable></userinput>
|
|
&prompt.root; <userinput>mount /dev/<replaceable>ad1s1a</replaceable> <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>cd <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore rf -</userinput></screen>
|
|
|
|
<para>Rearranging your partitions with <command>dump</command>
|
|
takes a bit more work. To merge a partition like
|
|
<filename class="directory">/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/<replaceable>ad1s1a</replaceable></userinput>
|
|
&prompt.root; <userinput>mount /dev/<replaceable>ad1s1a</replaceable> <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>cd <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore rf -</userinput>
|
|
&prompt.root; <userinput>cd var</userinput>
|
|
&prompt.root; <userinput>dump 0af - /var | restore rf -</userinput></screen>
|
|
|
|
<para>To split a directory from its parent, say putting
|
|
<filename class="directory">/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/<replaceable>ad1s1a</replaceable></userinput>
|
|
&prompt.root; <userinput>newfs /dev/<replaceable>ad1s1d</replaceable></userinput>
|
|
&prompt.root; <userinput>mount /dev/<replaceable>ad1s1a</replaceable> <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>mkdir <replaceable>/mnt</replaceable>/var</userinput>
|
|
&prompt.root; <userinput>mount /dev/<replaceable>ad1s1d</replaceable> <replaceable>/mnt</replaceable>/var</userinput>
|
|
&prompt.root; <userinput>cd <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore rf -</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
|
|
&man.fdisk.8; table entries (called <quote>slices</quote> in
|
|
&os;), with a &os; 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 &os;, 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 &man.fdisk.8; 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 &os; 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 &os; 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 &os; 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
|
|
&os; 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; &os;
|
|
will sort itself out just fine with any other disks you may
|
|
have.</para>
|
|
|
|
<para>Once you have got the BIOS and &os; 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 the following
|
|
command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/<replaceable>rda0</replaceable> 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 class="directory">/</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 &os; file system, 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>/boot/kernel/kernel</filename> and the contents of
|
|
<filename class="directory">/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
|
|
file system!</para>
|
|
|
|
<para><filename class="directory">/</filename> is traditionally one of the
|
|
smallest partitions. If you put the
|
|
<filename class="directory">/tmp</filename> directory on
|
|
<filename class="directory">/</filename> and you have a busy
|
|
<filename class="directory">/tmp</filename>, you might see intermittent space
|
|
problems. Symlinking <filename class="directory">/tmp</filename> to
|
|
<filename class="directory">/var/tmp</filename> will solve this
|
|
problem.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="inappropriate-ccd">
|
|
<para>What is inappropriate about my &man.ccd.4;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The symptom of this is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ccdconfig -C</userinput>
|
|
ccdconfig: ioctl (CCDIOCSET): /dev/<replaceable>ccd0c</replaceable>: 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 &man.ccd.4; driver requires
|
|
the underlying partition type to be
|
|
<literal>FS_BSDFFS</literal>. Edit the disk label 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-disk-label">
|
|
<para>Why can I not edit the disk label on my
|
|
&man.ccd.4;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The symptom of this is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>disklabel <replaceable>ccd0</replaceable></userinput>
|
|
(it prints something sensible here, so let us try to edit it)
|
|
&prompt.root; <userinput>disklabel -e <replaceable>ccd0</replaceable></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 disk label returned by &man.ccd.4;
|
|
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 <replaceable>ccd0</replaceable> > <replaceable>/tmp/disklabel.tmp</replaceable></userinput>
|
|
&prompt.root; <userinput>disklabel -Rr <replaceable>ccd0</replaceable> <replaceable>/tmp/disklabel.tmp</replaceable></userinput>
|
|
&prompt.root; <userinput>disklabel -e <replaceable>ccd0</replaceable></userinput>
|
|
(this will work now)</screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-foreign-fs">
|
|
<para>Can I mount other foreign file systems under
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports a variety of other file systems.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>UFS</term>
|
|
|
|
<listitem>
|
|
<para>UFS CD-ROMs can be mounted directly on &os;.
|
|
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>ext2/ext3</term>
|
|
|
|
<listitem>
|
|
<para>&os; supports <literal>ext2fs</literal> and
|
|
<literal>ext3fs</literal> partitions. See
|
|
&man.mount.ext2fs.8; for more information.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>NTFS</term>
|
|
|
|
<listitem>
|
|
<para>&os; includes a read-only NTFS driver. For more
|
|
information, see &man.mount.ntfs.8;. A port of <ulink
|
|
url="http://www.tuxera.com/community/"><application>ntfs-3g</application></ulink>
|
|
supports write operations on NTFS (see <filename
|
|
role="package">sysutils/fusefs-ntfs</filename>).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>FAT</term>
|
|
|
|
<listitem>
|
|
<para>&os; includes a read-write FAT driver. For more
|
|
information, see &man.mount.msdosfs.8;.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>ZFS</term>
|
|
|
|
<listitem>
|
|
<para>&os; includes a port of
|
|
&sun;'s ZFS driver. The current recommendation is to
|
|
use it only on &arch.amd64; platforms with sufficient
|
|
memory. For more information, see &man.zfs.8;.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>&os; also supports network file systems such as NFS (see
|
|
&man.mount.nfs.8;), NetWare (see &man.mount.nwfs.8;), and
|
|
Microsoft-style SMB file systems (see &man.mount.smbfs.8;).
|
|
You can find ports based on FUSE (<filename
|
|
role="package">sysutils/fusefs-kmod</filename>) for many
|
|
other file systems.</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
|
|
<emphasis>all</emphasis> the primary partitions. For
|
|
example, if you have an <quote>E</quote> partition as the
|
|
second DOS partition on the second SCSI drive, there will be
|
|
a device file for <quote>slice 5</quote> in
|
|
<filename class="directory">/dev</filename>, so simply mount it:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t msdosfs /dev/da1s5 /dos/e</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="crypto-file-system">
|
|
<para>Is there a cryptographic file system for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. You can use either &man.gbde.8; or &man.geli.8;,
|
|
see the <ulink
|
|
url="&url.books.handbook;/disks-encrypting.html">Encrypting Disk Partitions</ulink>
|
|
section of the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="nt-bootloader">
|
|
<para>How can I use the &windowsnt; loader to boot
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The general idea is that you copy the first sector of
|
|
your native root &os; 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="&os;"
|
|
C:\="DOS"</programlisting>
|
|
|
|
<para>If &os; 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 &os; 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 &man.sysinstall.8; by selecting the &os; 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
|
|
&man.sysinstall.8; 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 &os; 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 &os; and &linux; from LILO?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you have &os; 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=&os;</programlisting>
|
|
|
|
<para>(the above assumes that your &os; 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 &os; 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=&os;</programlisting>
|
|
|
|
<para>In some cases you may need to specify the BIOS drive
|
|
number to the &os; boot loader to successfully boot off the
|
|
second disk. For example, if your &os; SCSI disk is probed
|
|
by BIOS as BIOS disk 1, at the &os; boot loader prompt you
|
|
need to specify:</para>
|
|
|
|
<screen>Boot: <userinput>1:da(0,a)/boot/kernel/kernel</userinput></screen>
|
|
|
|
<para>You can configure &man.boot.8; to automatically do this
|
|
for you at boot time.</para>
|
|
|
|
<para>The <ulink
|
|
url="http://tldp.org/HOWTO/Linux+FreeBSD.html">&linux;+&os; mini-HOWTO</ulink>
|
|
is a good reference for &os; and &linux; interoperability
|
|
issues.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="grub-loader">
|
|
<para>How do I boot &os; and &linux; using GRUB?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Booting &os; using GRUB is very simple. Just add the
|
|
following to your configuration file
|
|
<filename>/boot/grub/menu.lst</filename> (or
|
|
<filename>/boot/grub/grub.conf</filename> in some systems,
|
|
e.g. Red Hat Linux and its derivatives).</para>
|
|
|
|
<programlisting>title &os; 6.1
|
|
root <replaceable>(hd0,a)</replaceable>
|
|
kernel /boot/loader
|
|
</programlisting>
|
|
|
|
<para>Where <replaceable>hd0,a</replaceable> points to your
|
|
root partition on the first disk. If you need to specify
|
|
which slice number should be used, use something like this
|
|
<replaceable>(hd0,2,a)</replaceable>. By default, if the
|
|
slice number is omitted, GRUB searches the first slice which
|
|
has <literal>a</literal> partition.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="booteasy-loader">
|
|
<para>How do I boot &os; and &linux; using
|
|
<application>BootEasy?</application></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 <application>BootEasy</application>.</para>
|
|
|
|
<para>If you are running &windows; and &linux; this is
|
|
recommended anyway, to make it simpler to get &linux; booting
|
|
again if you should need to reinstall &windows; (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 class="directory">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>(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 file system on it, you can use a command like this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t msdosfs /dev/fd0c /floppy</userinput></screen>
|
|
|
|
<para>if it is a floppy, or this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t msdosfs /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
|
|
<devicename>da2</devicename>, 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 file system 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/file systems. You can either use &man.fdisk.8;
|
|
or &man.sysinstall.8;, 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 &man.disklabel.8; or &man.sysinstall.8; 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 file system, 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 CD-ROM?</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 CD-ROM?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This generally means that there is no CD-ROM in the
|
|
CD-ROM 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 &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your CD-ROM 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 CD-ROMs</ulink>,
|
|
specifically the section on <ulink
|
|
url="&url.books.handbook;/creating-cds.html#MOUNTING-CD">Using Data CD-ROMs</ulink>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="burncd-isofs">
|
|
<para>I burned a CD under &os; 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 file system. Take a look at
|
|
the <ulink
|
|
url="&url.books.handbook;/creating-cds.html">Handbook chapter on creating CD-ROMs</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 CD-ROMs, 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 file systems. Audio
|
|
CDs do not have file systems; 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, CD-ROMs 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 CD-ROM
|
|
drive, use:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chgrp operator /dev/acd0c</userinput>
|
|
&prompt.root; <userinput>chmod 640 /dev/acd0c</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>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 <replaceable>~/my-mount-point</replaceable></userinput>
|
|
&prompt.user; <userinput>mount -t msdosfs /dev/fd0 <replaceable>~/my-mount-point</replaceable></userinput></screen>
|
|
|
|
<para>Users in group <groupname>operator</groupname> can now
|
|
mount the CD-ROM <devicename>/dev/acd0c</devicename> onto a
|
|
directory that they own:</para>
|
|
|
|
<screen>&prompt.user; <userinput>mkdir <replaceable>~/my-mount-point</replaceable></userinput>
|
|
&prompt.user; <userinput>mount -t cd9660 /dev/acd0c <replaceable>~/my-mount-point</replaceable></userinput></screen>
|
|
|
|
<para>Unmounting the device is simple:</para>
|
|
|
|
<screen>&prompt.user; <userinput>umount <replaceable>~/my-mount-point</replaceable></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 file system 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 file system 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 file system 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 &os; web server and forget to rotate the log files.
|
|
The access log fills up <filename class="directory">/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 80 GB as holding 76,319 MB.</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 class="directory">/etc/rc</filename> and
|
|
<filename class="directory">/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 &man.named.8;, 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 class="directory">/usr/local/etc/rc.d</filename> directory. These
|
|
shell scripts should be set executable, the default file
|
|
mode is <literal>555</literal>.</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
|
|
<filename>crontab</filename> 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 class="directory">/usr/local/etc/periodic</filename>, and let the
|
|
&man.periodic.8; command run from the system
|
|
<command>cron</command> 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
|
|
&os;, 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
|
|
<command>su</command> to <username>root</username>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is a security feature. In order to
|
|
<command>su</command> 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 <command>su</command> 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
|
|
file system is read-only. What should I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Restart the system using <userinput>boot -s</userinput>
|
|
at the loader prompt to enter Single User mode. When
|
|
prompted for a shell pathname, simply press
|
|
<keycap>Enter</keycap>, and run
|
|
<command>mount -urw /</command> to re-mount the root file
|
|
system in read/write mode. You may also need to run
|
|
<command>mount -a -t ufs</command> to mount the file system
|
|
where your favorite editor is defined. If your favorite
|
|
editor is on a network file system, you will need to either
|
|
configure the network manually before you can mount network
|
|
file systems, or use an editor which resides on a local file
|
|
system, 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>See the <ulink
|
|
url="&url.books.handbook;/printing.html">Handbook entry on printing</ulink>.
|
|
It should cover most of your problem.</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 &os;. If your printer does not
|
|
work in DOS or &windows;, 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
|
|
&a.current;.</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>
|
|
|
|
<!-- XXX This may be the worst answer in the entire
|
|
document.
|
|
-->
|
|
|
|
<answer>
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>It is possible that your kernel is not configured
|
|
to use quotas. If this is the case, you will need to
|
|
add the following line to your kernel configuration
|
|
file and recompile:</para>
|
|
|
|
<programlisting>options QUOTA</programlisting>
|
|
|
|
<para>Please read the <ulink
|
|
url="&url.books.handbook;/quotas.html">Handbook entry on quotas</ulink>
|
|
for full details.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Do not turn on quotas on
|
|
<filename class="directory">/</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Put the quota file on the file system that the
|
|
quotas are to be enforced on, i.e.:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>File System</entry>
|
|
|
|
<entry>Quota file</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><filename class="directory">/usr</filename></entry>
|
|
|
|
<entry><filename>/usr/admin/quotas</filename></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename class="directory">/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 &os; support System V IPC primitives?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, &os; supports System V-style IPC, including shared
|
|
memory, messages and semaphores, in the
|
|
<filename>GENERIC</filename> 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
|
|
<application>sendmail</application>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <ulink
|
|
url="http://www.sendmail.org/"><application>sendmail</application></ulink>
|
|
server is the default mail-server software for &os;, 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 <application>sendmail</application> better than
|
|
<application>qmail</application>?</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
|
|
<literal>Boot:</literal> prompt to enter Single User mode.
|
|
At the question about the shell to use, hit
|
|
<keycap>Enter</keycap>. You will be dropped to a
|
|
&prompt.root; prompt. Enter <command>mount -urw /</command>
|
|
to remount your root file system read/write, then run
|
|
<command>mount -a</command> to remount all the file systems.
|
|
Run <command>passwd root</command> to change the
|
|
<username>root</username> password then run &man.exit.1; to
|
|
continue booting.</para>
|
|
|
|
<note>
|
|
<para>If you are still prompted to give the
|
|
<username>root</username> password when entering the
|
|
Single User mode, it means that the console has been
|
|
marked as <literal>insecure</literal> in
|
|
<filename>/etc/ttys</filename>. In this case it will be
|
|
required to boot from a &os; installation disk, choose
|
|
the <guimenuitem>Fixit</guimenuitem> shell from
|
|
&man.sysinstall.8; and issue the commands mentioned
|
|
above.</para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>If you cannot mount your root partition from Single
|
|
User mode, it is possible that the partitions are
|
|
encrypted and it is impossible to mount them without the
|
|
access keys. Your chances depend on the chosen
|
|
implementation. For more information see the section
|
|
about encrypted disks in the &os; <ulink
|
|
url="&url.books.handbook;/disks-encrypting.html">Handbook</ulink>.</para>
|
|
</note>
|
|
</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 &man.syscons.4; (the default console
|
|
driver) build and install a new kernel with the line in the
|
|
configuration file:</para>
|
|
|
|
<programlisting>options SC_DISABLE_REBOOT</programlisting>
|
|
|
|
<para>This can also be done by setting the following
|
|
&man.sysctl.8; which does not require a reboot or kernel
|
|
recompile:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl hw.syscons.kbd_reboot=0</userinput></screen>
|
|
|
|
<note>
|
|
<para>The above two methods are exclusive: The &man.sysctl.8;
|
|
does not exist if you compile your kernel with the
|
|
<literal>SC_DISABLE_REBOOT</literal> option.</para>
|
|
</note>
|
|
|
|
<para>If you use the &man.pcvt.4; console driver, use the
|
|
following kernel configuration line instead and rebuild the
|
|
kernel:</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 &man.perl.1; command:</para>
|
|
|
|
<screen>&prompt.user; <userinput>perl -i.bak -npe 's/\r\n/\n/g' <replaceable>file(s)</replaceable></userinput></screen>
|
|
|
|
<para>where <replaceable>file(s)</replaceable> is one or more
|
|
files to process. The modification is done in-place, with the
|
|
original file stored with a <filename>.bak</filename>
|
|
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
|
|
<command>perl</command>.</para>
|
|
|
|
<para>Yet another way to reformat DOS text files is to use the
|
|
<filename role="package">converters/dosunix</filename> port
|
|
from the Ports Collection. Consult its documentation about
|
|
the details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kill-by-name">
|
|
<para>How do I kill processes by name?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use &man.pkill.1;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="root-acl">
|
|
<para>Why is &man.su.1; bugging me about not being in
|
|
<username>root</username>'s ACL?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The error comes from the
|
|
<application>Kerberos</application> distributed authentication
|
|
system. The problem is not fatal but annoying. You can
|
|
either run su with the <option>-K</option> option, or
|
|
uninstall <application>Kerberos</application> as described
|
|
in the next question.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="uninstall-kerberos">
|
|
<para>How do I uninstall
|
|
<application>Kerberos</application>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>To remove <application>Kerberos</application> from the
|
|
system, reinstall the <literal>base</literal> distribution
|
|
for the release you are running. If you have the CD-ROM,
|
|
you can mount it (we will assume on <filename
|
|
class="directory">/cdrom</filename>) and run the commands
|
|
below:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /cdrom/base</userinput>
|
|
&prompt.root; <userinput>./install.sh</userinput></screen>
|
|
|
|
<para>Alternately, you can include the
|
|
<makevar>NO_KERBEROS</makevar> option in your
|
|
<filename>/etc/make.conf</filename> and rebuild
|
|
world.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
<qandaentry>
|
|
<question id="add-pty">
|
|
<para>How do I add pseudoterminals to the system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you have a lot of <command>telnet</command>,
|
|
<command>ssh</command>, X, or <command>screen</command>
|
|
users, you might run out of pseudoterminals. By default,
|
|
&os; 6.2 and earlier support 256 pseudoterminals, while
|
|
&os; 6.3 and later support 512 pseudoterminals.</para>
|
|
|
|
<tip>
|
|
<para>If needed, more pseudoterminals can be added.
|
|
However, this requires patching the standard C library,
|
|
the kernel, and <filename>/etc/ttys</filename>. For
|
|
example, <ulink
|
|
url="http://www.freebsd.org/~jhb/patches/pty_1152.patch"></ulink>
|
|
expands the number of pseudoterminals to 1152. Note that
|
|
the patch will only apply cleanly to &os; 6.3 or
|
|
later.</para>
|
|
</tip>
|
|
</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
|
|
<emphasis>-STABLE</emphasis>, but got
|
|
<emphasis>-BETA<replaceable>x</replaceable></emphasis>,
|
|
<emphasis>-RC</emphasis> or
|
|
<emphasis>-PRERELEASE</emphasis>! What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: it is just a name.
|
|
<emphasis>RC</emphasis> stands for <quote>Release
|
|
Candidate</quote>. It signifies that a release is imminent.
|
|
In &os;, <emphasis>-PRERELEASE</emphasis> is typically
|
|
synonymous with the code freeze before a release. (For some
|
|
releases, the <emphasis>-BETA</emphasis> label was used in
|
|
the same way as <emphasis>-PRERELEASE</emphasis>.)</para>
|
|
|
|
<para>Long answer: &os; derives its releases from one of two
|
|
places. Major, dot-zero, releases, such as 7.0-RELEASE and
|
|
8.0-RELEASE, are branched from the head of the development
|
|
stream, commonly referred to as <link
|
|
linkend="current">-CURRENT</link>. Minor releases, such as
|
|
6.3-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 6.2-STABLE, its
|
|
name will be changed to 6.3-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 6.3-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 (6.3-RELEASE in this example) and release branch
|
|
have been made, the branch will be renamed to
|
|
6.3-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 &man.chflags.1;
|
|
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: &os; 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
|
|
<literal>securelevel</literal>, and see
|
|
<filename>/etc/defaults/rc.conf</filename> and the
|
|
&man.rc.conf.5; manual page for more information on
|
|
<filename>rc.conf</filename>.</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: &os; 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 User 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
|
|
<literal>securelevel</literal>, and see
|
|
<filename>/etc/defaults/rc.conf</filename> and the
|
|
&man.rc.conf.5; manual page for more information on
|
|
<filename>rc.conf</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="statd-mem-leak">
|
|
<para>Why is <command>rpc.statd</command> using 256 MB of
|
|
memory?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>No, there is no memory leak, and it is not using
|
|
256 MB 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 class="directory">/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
|
|
256 MB.</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 <application>SSH</application> authentication
|
|
through <filename>.shosts</filename> not work by default in
|
|
recent versions of &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The reason why <filename>.shosts</filename>
|
|
authentication does not work by default in more recent
|
|
versions of &os; 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> then rebuild and
|
|
install &man.ssh.1; (or run
|
|
<command>make <maketarget>world</maketarget></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
|
|
<literal><makevar>ENABLE_SUID_SSH</makevar>= true</literal>
|
|
to <filename>/etc/make.conf</filename> so
|
|
the change takes effect the next time
|
|
<command>make <maketarget>world</maketarget></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. 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 described rules.</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 class="directory">/var/empty</filename>? I can not
|
|
delete it!</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><filename class="directory">/var/empty</filename> is a directory that the
|
|
&man.sshd.8; program uses when performing privilege separation.
|
|
The <filename class="directory">/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 (commonly <literal>X11</literal>) is
|
|
the most widely available windowing system capable of running
|
|
on &unix; or &unix; like systems, including &os;.
|
|
<ulink url= "http://www.x.org/wiki/">The X.Org Foundation</ulink>
|
|
administers the <ulink
|
|
url="http://en.wikipedia.org/wiki/X_Window_System_core_protocol">X protocol standards</ulink>,
|
|
with the current reference implementation, version 11
|
|
release &xorg.version;, so you will often see references
|
|
shortened to <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="running-X">
|
|
<para>I want to run X, how do I go about it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you would like to add X to an existing installation,
|
|
you should use either the <filename
|
|
role="package">x11/xorg</filename> meta-port, which will
|
|
build and install all the necessary components, or install
|
|
&xorg; from &os; packages:</para>
|
|
|
|
<screen><userinput>&prompt.root; pkg_add -r xorg</userinput></screen>
|
|
|
|
<para>It is also possible to install &xorg; from
|
|
&man.sysinstall.8; by choosing
|
|
<guimenuitem>Configure</guimenuitem>, then
|
|
<guimenuitem>Distributions</guimenuitem>, then
|
|
<guimenuitem>The X.Org Distribution</guimenuitem>.</para>
|
|
|
|
<para>After the installation of &xorg; was successful, follow
|
|
the instructions from the <ulink
|
|
url="&url.books.handbook;/x-config.html">X11 Configuration</ulink> section of
|
|
the &os; Handbook.</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
|
|
<literal>securelevel</literal>. It is not possible to start X
|
|
at a raised <literal>securelevel</literal> because X
|
|
requires write access to &man.io.4;. 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
|
|
<literal>securelevel</literal> back down to zero (usually
|
|
from <filename>/etc/rc.conf</filename>), or run &man.xdm.1;
|
|
at boot time (before the <literal>securelevel</literal> 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 &man.syscons.4; (the default console
|
|
driver), you can configure &os; to support a mouse pointer on
|
|
each virtual screen. In order to avoid conflicting with X,
|
|
&man.syscons.4; supports a virtual device called
|
|
<devicename>/dev/sysmouse</devicename>. All mouse events
|
|
received from the real mouse device are written to the
|
|
&man.sysmouse.4; device via &man.moused.8;. 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
|
|
&man.moused.8;.</para>
|
|
|
|
<para>Then edit <filename>/etc/X11/xorg.conf</filename> and
|
|
make sure you have the following lines:</para>
|
|
|
|
<programlisting>Section "InputDevice"
|
|
Option "Protocol" "SysMouse"
|
|
Option "Device" "/dev/sysmouse"
|
|
.....</programlisting>
|
|
|
|
<para>Starting with &xorg; version 7.4, the
|
|
<literal>InputDevice</literal> sections in
|
|
<filename>xorg.conf</filename> are ignored in favor of
|
|
autodetected devices. To restore the old behavior, add the
|
|
following line to the <literal>ServerLayout</literal> or
|
|
<literal>ServerFlags</literal> section:</para>
|
|
|
|
<programlisting>Option "AutoAddDevices" "false"</programlisting>
|
|
|
|
<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;) by adding the following line to
|
|
<filename>/etc/devfs.conf</filename> (see
|
|
&man.devfs.conf.5;):</para>
|
|
|
|
<programlisting>link sysmouse mouse</programlisting>
|
|
|
|
<para>This link can be created by restarting &man.devfs.5;
|
|
with the following command (as
|
|
<username>root</username>):</para>
|
|
|
|
<screen>&prompt.root; <userinput>/etc/rc.d/devfs restart</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/X11/xorg.conf</filename>. For example, you
|
|
might have the following <quote>InputDevice</quote> section
|
|
in <filename>/etc/X11/xorg.conf</filename>.</para>
|
|
|
|
<example>
|
|
<title><quote>InputDevice</quote> Section for Wheeled Mouse
|
|
in &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="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 &os; 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>ttyv8</devicename> to
|
|
<devicename>ttyvc</devicename> after the comment on
|
|
<quote>Virtual terminals</quote>:</para>
|
|
|
|
<programlisting># Edit the existing entry for ttyv8 in /etc/ttys and change
|
|
# "off" to "on".
|
|
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 8 MB 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>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 or lock up after
|
|
executing the <command>kill</command> 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 <application>XDM</application> on
|
|
boot?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are two schools of thought on how to start
|
|
&man.xdm.1;. One school starts <command>xdm</command> from
|
|
<filename>/etc/ttys</filename> (see &man.ttys.5;) using the
|
|
supplied example, while the other simply runs
|
|
<command>xdm</command> from from
|
|
<filename>rc.local</filename> (see &man.rc.8;) or from an
|
|
<filename>X</filename> script in
|
|
<filename class="directory">/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 &man.ttys.5; method has the advantage of documenting
|
|
which vty X will start on and passing the responsibility of
|
|
restarting the X server on logout to &man.init.8;. The
|
|
&man.rc.8; method makes it easy to <command>kill</command>
|
|
<command>xdm</command> if there is a problem starting the X
|
|
server.</para>
|
|
|
|
<para>If loaded from &man.rc.8;, <command>xdm</command> should
|
|
be started without any arguments (i.e., as a daemon). The
|
|
<command>xdm</command> command must start
|
|
<emphasis>after</emphasis> &man.getty.8; runs, or else
|
|
<command>getty</command> and <command>xdm</command> will
|
|
conflict, locking out the console. The best way around this
|
|
is to have the script sleep 10 seconds or so then launch
|
|
<command>xdm</command>.</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/local/lib/X11/xdm/Xservers</filename>
|
|
file:</para>
|
|
|
|
<programlisting>:0 local /usr/local/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 &os; 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
|
|
<command>xconsole</command>?</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
|
|
is in <filename>/etc/fbtab</filename> (see
|
|
&man.fbtab.5;):</para>
|
|
|
|
<programlisting>/dev/ttyv0 0600 /dev/console</programlisting>
|
|
|
|
<para>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 &xorg; 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.</para>
|
|
|
|
<para>There are two ways to be able to use &xorg;
|
|
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.x.org/wiki/UserDocumentation">the &xorg; 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 manager for whatever reason, this is
|
|
for you. If you have installed the complete Ports
|
|
Collection, you can find the port in <filename
|
|
role="package">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
|
|
<literal>0x100</literal>. 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 <literal>0x04</literal> 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="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>The detailed answer for this question can be found in
|
|
the <ulink
|
|
url="&url.books.handbook;/boot-blocks.html#BOOT-SPLASH">Boot Time Splash Screens</ulink>
|
|
section of the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="windows-keys">
|
|
<para>Can I use the <keycap>Windows</keycap> 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 these three keys are the
|
|
following:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><keycode>115</keycode> —
|
|
<keycap>Windows</keycap> key, between the left-hand
|
|
<keycap>Ctrl</keycap> and <keycap>Alt</keycap>
|
|
keys</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><keycode>116</keycode> —
|
|
<keycap>Windows</keycap> key, to the right of the
|
|
<keycap>AltGr</keycap> key</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><keycode>117</keycode> — <keycap>Menu</keycap>
|
|
key, to the left of the right-hand <keycap>Ctrl</keycap>
|
|
key</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>To have the left <keycap>Windows</keycap> 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 <keycap>Windows</keycap> 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 following line to your
|
|
<filename>~/.xinitrc</filename>:</para>
|
|
|
|
<programlisting>xmodmap $HOME/.xmodmaprc</programlisting>
|
|
|
|
<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 the <filename
|
|
role="package">x11-wm/fvwm2</filename> port, 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 &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 &os; by installing one of the
|
|
following ports:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The latest versions of nVidia cards are supported by
|
|
the <filename role="package">x11/nvidia-driver</filename>
|
|
port.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>nVidia cards like the GeForce2 MX/3/4 series
|
|
are supported by the 96XX series of drivers, available
|
|
in the <filename
|
|
role="package">x11/nvidia-driver-96xx</filename>
|
|
port.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Even older cards, like GeForce and RIVA TNT are
|
|
supported by the 71XX series of drivers, available in
|
|
the <filename
|
|
role="package">x11/nvidia-driver-71xx</filename>
|
|
port.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>In fact, nVidia provides detailed information on which
|
|
card is supported by which driver. This information is
|
|
available directly on their web site: <ulink
|
|
url="http://www.nvidia.com/object/IO_32667.html"></ulink>.
|
|
</para>
|
|
|
|
<para>For Matrox G200/G400, you should check the
|
|
<filename role="package">x11-servers/mga_hal</filename>
|
|
port.</para>
|
|
|
|
<para>For ATI Rage 128 and Radeon, see the
|
|
&man.ati.4x;, &man.r128.4x; and &man.radeon.4x; manual
|
|
pages.</para>
|
|
|
|
<para>For 3dfx Voodoo 3, 4, 5, and Banshee cards, there
|
|
is a <filename
|
|
role="package">x11-servers/driglide</filename>
|
|
port.</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 &os;
|
|
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;/network-diskless.html">the Handbook entry on diskless booting</ulink>
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="router">
|
|
<para>Can a &os; 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
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Typically, people who ask this question have two PCs at
|
|
home, one with &os; and one with some version of &windows;
|
|
the idea is to use the &os; box to connect to the Internet
|
|
and then be able to access the Internet from the &windows;
|
|
box through the &os; 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 &os; 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 &os; 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 &os; systems over a parallel line
|
|
using PLIP?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the <ulink
|
|
url="&url.books.handbook;/network-plip.html">PLIP section</ulink>
|
|
of the Handbook.</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 <replaceable>ed0</replaceable> alias <replaceable>192.0.2.2</replaceable> netmask 0xffffffff</userinput></screen>
|
|
|
|
<para>Otherwise, just specify the network address and netmask
|
|
as usual:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>ed0</replaceable> alias <replaceable>172.16.141.5</replaceable> netmask 0xffffff00</userinput></screen>
|
|
|
|
<para>You can read more about this in the &os; <ulink
|
|
url="&url.books.handbook;/configtuning-virtual-hosts.html">Handbook</ulink>.
|
|
</para>
|
|
</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 &os;?</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;/network-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 to issue the following
|
|
command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -o -P <replaceable>linuxbox:/blah</replaceable> <replaceable>/mnt</replaceable></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.<replaceable>X</replaceable> only accept
|
|
mount requests from a privileged port; try the following
|
|
command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -o -P <replaceable>sunbox:/blah</replaceable> <replaceable>/mnt</replaceable></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 &os;
|
|
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;/network-nfs.html">NFS</ulink>
|
|
entry in the Handbook, especially the section on <ulink
|
|
url="&url.books.handbook;/network-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
|
|
<literal>NO</literal>:</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>&os; 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;. &os; 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>
|
|
|
|
<note>
|
|
<para>In recent &os; releases, the &man.mrouted.8; multicast
|
|
routing daemon, the &man.map-mbone.8; and &man.mrinfo.8;
|
|
utilities have been removed from the base system. These
|
|
programs are now available in the &os; Ports Collection as
|
|
<filename role="package">net/mrouted</filename>.</para>
|
|
</note>
|
|
|
|
<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="fqdn-hosts">
|
|
<para>Why do I have to use the FQDN for hosts on my
|
|
site?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the answer in the &os; <ulink
|
|
url="&url.books.handbook;/mail-trouble.html">Handbook</ulink>.
|
|
</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 &os; firewall,
|
|
see the <ulink
|
|
url="&url.books.handbook;/firewalls.html">Handbook chapter</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 <filename role="package">sysutils/socket</filename>
|
|
port. Simply replace the service's command line to call
|
|
<command>socket</command> 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
|
|
&os;. &man.dummynet.4; is integrated into &os; as part of
|
|
&man.ipfw.4;. <ulink
|
|
url="http://www.sonycsl.co.jp/person/kjc/programs.html">ALTQ</ulink>
|
|
has been integrated into &os; 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>device bpf # Berkeley Packet Filter</programlisting>
|
|
</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
|
|
&man.mount.smbfs.8; in the base system.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="icmp-response-bw-limit">
|
|
<para>What are these messages about: <errorname>Limiting
|
|
icmp/open port/closed port response</errorname> 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 &os; 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 &os;
|
|
machine.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="arp-wrong-iface">
|
|
<para>Why do I keep seeing messages like: <errorname>192.168.0.10 is on
|
|
fxp1 but got reply from 00:15:17:67:cf:82 on rl0</errorname>, and how do I
|
|
disable it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Because a packet is coming from outside the network
|
|
unexpectedly. To disable them, set
|
|
<varname>net.link.ether.inet.log_arp_wrong_iface</varname>
|
|
to <literal>0</literal>.</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 user ID, 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 &man.inetd.8;). This service used to run
|
|
as user ID <username>root</username>. Now it runs
|
|
as user ID <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 <literal>ntalk</literal> 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
|
|
class="directory">/</filename> for that process is this
|
|
directory, not the real <filename
|
|
class="directory">/</filename> of the system).</para>
|
|
|
|
<para>Another common use is to mount an underlying file
|
|
system read-only and then create a file system layer on
|
|
top of it that gives a process a seemingly writeable
|
|
view into that file system. 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 user ID is not the <username>root</username> user,
|
|
it serves to firewall the process off from processes owned
|
|
by other users. The user ID 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.</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
|
|
some high-numbered ports. What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>BIND uses a random high-numbered port for outgoing
|
|
queries. Recent versions of it choose a new, random UDP
|
|
port for each query. This may cause problems for some
|
|
network configurations, especially if a firewall blocks
|
|
incoming UDP packets on particular ports. If you want to
|
|
get past that firewall, you can try the
|
|
<literal>avoid-v4-udp-ports</literal> and
|
|
<literal>avoid-v6-udp-ports</literal> options to avoid
|
|
selecting random port numbers within a blocked range.</para>
|
|
|
|
<warning>
|
|
<para>If a port number (like 53) is specified via the
|
|
<literal>query-source</literal> or
|
|
<literal>query-source-v6</literal> options in
|
|
<filename>/etc/namedb/named.conf</filename>, randomized
|
|
port selection will not be used. It is strongly
|
|
recommended that these options not be used to specify
|
|
fixed port numbers.</para>
|
|
</warning>
|
|
|
|
<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>The <application>sendmail</application> daemon is
|
|
listening on port 587 as well as the standard port 25! What
|
|
is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Recent versions of <application>sendmail</application>
|
|
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 class="directory">/usr/local/bin</filename> which, by default,
|
|
resides on a different file system. If
|
|
<username>root</username>'s shell is located in
|
|
<filename class="directory">/usr/local/bin</filename> and
|
|
<filename class="directory">/usr</filename> (or whatever file system contains
|
|
<filename class="directory">/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 not
|
|
installed by default. If you want
|
|
<command>suidperl</command> to be built during upgrades from
|
|
source, edit <filename>/etc/make.conf</filename> and add
|
|
<literal><varname>ENABLE_SUIDPERL</varname>=true</literal>
|
|
before you build <command>perl</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 following 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 below and the file
|
|
<filename>/var/log/ppp.log</filename> exists:</para>
|
|
|
|
<programlisting>!ppp
|
|
*.* /var/log/ppp.log</programlisting>
|
|
|
|
<para>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
|
|
<filename>ppp.conf.sample</filename> file. If you do not
|
|
have a default route, it may be because you forgot to add
|
|
the <literal>HISADDR</literal> line to the
|
|
<filename>ppp.conf</filename> 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 below from
|
|
<filename>ppp.conf</filename>:</para>
|
|
|
|
<programlisting>delete ALL</programlisting>
|
|
|
|
<para>If this is the case, go back to the <ulink
|
|
url="&url.books.handbook;/userppp.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 that the following section is
|
|
missing in your <filename>/etc/ppp/ppp.linkup</filename>
|
|
file:</para>
|
|
|
|
<programlisting>MYADDR:
|
|
delete ALL
|
|
add 0 0 HISADDR</programlisting>
|
|
|
|
<para>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;/userppp.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 following 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. The &man.ppp.8; program deduces that
|
|
the line must therefore be bad, and disconnects. Prior to
|
|
&os; version 2.2.5, LQR was enabled by default. It is now
|
|
disabled by default. LQR can be disabled with the following
|
|
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
|
|
&usrobotics; &sportster; for example, this is measured
|
|
by the <literal>S10</literal> 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 µsoft; 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 µsoft; 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 (<errorname>Memory fault</errorname>,
|
|
<errorname>Core dumped</errorname>).</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 him 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; with
|
|
debugging information, and then use &man.gdb.1; to grab a
|
|
stack trace from the <application>ppp</application> process
|
|
that is stuck. To rebuild the
|
|
<application>ppp</application> utility with debugging
|
|
information, you can type:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/ppp</userinput>
|
|
&prompt.root; <userinput>env DEBUG_FLAGS='-g' make clean</userinput>
|
|
&prompt.root; <userinput>env DEBUG_FLAGS='-g' make install</userinput></screen>
|
|
|
|
<para>Then you should restart <application>ppp</application>
|
|
and wait until it hangs again. When the debug build of
|
|
<application>ppp</application> hangs, start
|
|
<application>gdb</application> on the stuck process by
|
|
typing:</para>
|
|
|
|
<screen>&prompt.root; <userinput>gdb ppp `pgrep ppp`</userinput></screen>
|
|
|
|
<para>At the <application>gdb</application> prompt, you can
|
|
use the <command>bt</command> or <command>where</command>
|
|
commands to get a stack trace. Save the output of your
|
|
<application>gdb</application> session, and
|
|
<quote>detach</quote> from the running process by the
|
|
<command>quit</command> command of
|
|
<application>gdb</application>.</para>
|
|
|
|
<para>Finally, send the log of your
|
|
<application>gdb</application> session 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 &os; 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 <errorname>Magic is
|
|
same</errorname>. 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 &man.getty.8; on the port, and executing
|
|
&man.ppp.8; from a login script or program after login.
|
|
There were 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
|
|
<filename>ppp.conf</filename> 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 following command:</para>
|
|
|
|
<programlisting>set openmode passive</programlisting>
|
|
|
|
<para>Care should be taken with this option. You should also
|
|
use this command to limit the amount of time that
|
|
&man.ppp.8; waits for the peer to begin negotiations:</para>
|
|
|
|
<programlisting>set stopped <replaceable>N</replaceable></programlisting>
|
|
|
|
<para>Alternatively, the following command (where
|
|
<replaceable>N</replaceable> is the number of seconds to
|
|
wait before starting negotiations) can be used:</para>
|
|
|
|
<programlisting>set openmode active <replaceable>N</replaceable></programlisting>
|
|
|
|
<para>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). The
|
|
<application>ppp</application> program 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-null-modem">
|
|
<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 following 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
|
|
<option>-auto</option> 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 <application>sendmail</application> 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 &os; 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 <application>sendmail</application> 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
|
|
<option>-q</option></command> is done (perhaps from your
|
|
<filename>ppp.linkup</filename> 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>The <application>ppp</application> utility 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>It will result 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>It will result 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 <errorname>Segmentation
|
|
fault</errorname>, but I see no <filename>ppp.core</filename>
|
|
file?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <application>ppp</application> utility (or any other
|
|
program for that matter) should never dump core. Because
|
|
&man.ppp.8; runs with an effective user ID of
|
|
<literal>0</literal>, the operating system will not write
|
|
core image of &man.ppp.8; 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 install the system sources and do
|
|
the following:</para>
|
|
|
|
<screen>&prompt.root; <userinput><command>cd</command> <filename class="directory">/usr/src/usr.sbin/ppp</filename></userinput>
|
|
&prompt.root; <userinput><command>echo</command> <makevar>STRIP</makevar>= >> <filename>/etc/make.conf</filename></userinput>
|
|
&prompt.root; <userinput><command>echo</command> <makevar>CFLAGS</makevar>+=<option>-g</option> >> <filename>/etc/make.conf</filename></userinput>
|
|
&prompt.root; <userinput><command>make</command> <maketarget>install</maketarget> <maketarget>clean</maketarget></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 &man.gdb.1;, you may wish to
|
|
find out some other bits and pieces such as what actually
|
|
caused the dump or the addresses and values of the relevant
|
|
variables.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-autodialprocess-noconnect">
|
|
<para>Why does the process that forces a dial in
|
|
<option>-auto</option> 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
|
|
<option>-auto</option> mode. It has been fixed a long time
|
|
ago — 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 &man.tun.4; interface
|
|
is assigned to the socket endpoint. The kernel creates the
|
|
first outgoing packet and writes it to the &man.tun.4;
|
|
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. 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 &man.tun.4; 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 <acronym>DHCP</acronym> clients when they are forced
|
|
to call the <function>bind()</function> function for 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 <hostid
|
|
role="ipaddr">255.255.255.255</hostid> up until the first
|
|
<literal>SIOCAIFADDR</literal> &man.ioctl.2; 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 <hostid role="ipaddr">255.255.255.255</hostid>,
|
|
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
|
|
<option>-nat</option> switch?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The reason games and the like do not work when
|
|
&man.libalias.3; 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 &man.tcpdump.1; on the &man.tun.4; 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 &man.libalias.3;. Examples of
|
|
<quote>special cases</quote> can be found in
|
|
<filename>/usr/src/sys/netinet/libalias/alias_*.c</filename>
|
|
(<filename>alias_ftp.c</filename> is a good prototype).
|
|
This usually involves reading certain recognized
|
|
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
|
|
<literal>socks5</literal> for example, or (as in the
|
|
<command>cvsup</command> 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="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 <command>close lcp</command> command (a following
|
|
<command>term</command> command) will reconnect you to the
|
|
shell on the remote machine.</para>
|
|
|
|
<para>If nothing in your log file indicates why the link might
|
|
have been terminated, you should ask the remote
|
|
administrator (your ISP?) why the session was
|
|
terminated.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question 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 &os;. 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 &os; found my serial ports?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>As the &os; 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 this command after your system is up and
|
|
running:</para>
|
|
|
|
<screen>&prompt.user; <userinput>dmesg | grep -E "^sio[0-9]"</userinput></screen>
|
|
|
|
<para>Here is some example output from the above
|
|
command:</para>
|
|
|
|
<programlisting>sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
|
|
sio0: type 16550A
|
|
sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0
|
|
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 &os; 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 &os;?</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/cuad2</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>cuad<replaceable>X</replaceable></devicename>
|
|
device to become inactive, and then wait for the carrier
|
|
detect line to go active. When you open the
|
|
<devicename>cuad<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>cuad<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 &man.device.hints.5; file. But place the
|
|
IRQ 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
|
|
following option in the kernel configuration file:</para>
|
|
|
|
<programlisting>options COM_MULTIPORT</programlisting>
|
|
|
|
<para>The following <filename>/boot/device.hints</filename>
|
|
example is for an AST 4-port serial card on
|
|
IRQ 12:</para>
|
|
|
|
<programlisting>hint.sio.4.at="isa"
|
|
hint.sio.4.port="0x2a0"
|
|
hint.sio.4.flags="0x701"
|
|
hint.sio.5.at="isa"
|
|
hint.sio.5.port="0x2a8"
|
|
hint.sio.5.flags="0x701"
|
|
hint.sio.6.at="isa"
|
|
hint.sio.6.port="0x2b0"
|
|
hint.sio.6.flags="0x701"
|
|
hint.sio.7.at="isa"
|
|
hint.sio.7.port="0x2b8"
|
|
hint.sio.7.flags="0x701"
|
|
hint.sio.7.irq="12"</programlisting>
|
|
|
|
<para>The flags indicate that the master port has minor number
|
|
<literal>7</literal> (<literal>0x700</literal>), and all the
|
|
ports share an IRQ (<literal>0x001</literal>).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="multiport-serial-share-irq">
|
|
<para>Can &os; 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>See the <ulink
|
|
url="&url.books.handbook;/serial.html#SERIAL-HW-CONFIG">Serial Communications</ulink>
|
|
section in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="enable-dialup">
|
|
<para>How can I enable dialup logins on my modem?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please read the section about <ulink
|
|
url="&url.books.handbook;/dialup.html">Dial-in Services</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dumb-terminal">
|
|
<para>How can I connect a dumb terminal to my &os; box?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can find this information in the <ulink
|
|
url="&url.books.handbook;/term.html">Terminals</ulink>
|
|
section of the &os; Handbook.</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;
|
|
can only access the <filename class="directory">/var/spool/lock</filename>
|
|
directory via user <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
|
|
<groupname>dialer</groupname>.</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>See <ulink
|
|
url="&url.books.handbook;/dialout.html#HAYES-UNSUPPORTED">this answer</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="direct-at">
|
|
<para>How am I expected to enter these AT commands?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <ulink
|
|
url="&url.books.handbook;/dialout.html#DIRECT-AT">this answer</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="gt-failure">
|
|
<para>Why does the <literal>@</literal> sign for the
|
|
<literal>pn</literal> capability not
|
|
work?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <ulink
|
|
url="&url.books.handbook;/dialout.html#GT-FAILURE">this answer</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dial-command-line">
|
|
<para>How can I dial a phone number on the command
|
|
line?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <ulink
|
|
url="&url.books.handbook;/dialout.html#DIAL-COMMAND-LINE">this answer</ulink>
|
|
in the &os; Handbook.</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>See <ulink
|
|
url="&url.books.handbook;/dialout.html#SET-BPS">this answer</ulink>
|
|
in the &os; Handbook.</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>See <ulink
|
|
url="&url.books.handbook;/dialout.html#TERMINAL-SERVER">this answer</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="tip-multiline">
|
|
<para>Can tip try more than one line for each site?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <ulink
|
|
url="&url.books.handbook;/dialout.html#TIP-MULTILINE">this answer</ulink>
|
|
in the &os; Handbook.</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>See <ulink
|
|
url="&url.books.handbook;/dialout.html#MULTI-CONTROLP">this answer</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="uppercase">
|
|
<para>Why is everything I type suddenly in UPPER CASE?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <ulink
|
|
url="&url.books.handbook;/dialout.html#UPPERCASE">this answer</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="tip-filetransfer">
|
|
<para>How can I do file transfers with
|
|
<command>tip</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <ulink
|
|
url="&url.books.handbook;/dialout.html#TIP-FILETRANSFER">this answer</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="zmodem-tip">
|
|
<para>How can I run zmodem with
|
|
<command>tip</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <ulink
|
|
url="&url.books.handbook;/dialout.html#ZMODEM-TIP">this answer</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="misc">
|
|
<title>Miscellaneous Questions</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="more-swap">
|
|
<para>&os; uses far more swap space than &linux;. Why?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; only appears to use more swap than &linux;. In
|
|
actual fact, it does not. The main difference between &os;
|
|
and &linux; in this regard is that &os; 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 &os; 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 &os; 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 follow symlinks to change the
|
|
permissions on the source file, if possible. 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>bar</filename>
|
|
will not have changed.</para>
|
|
|
|
<para>When changing modes of the file hierarchies rooted in the
|
|
files instead of the files themselves,
|
|
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 class="directory">/</filename>). For example, if
|
|
<filename>foo</filename> is a symlink to directory
|
|
<filename class="directory">bar</filename>, and you want to change the
|
|
permissions of <filename>foo</filename> (actually
|
|
<filename class="directory">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 class="directory">bar</filename>.</para>
|
|
</warning>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dos-binaries">
|
|
<para>Can I run DOS binaries under &os;?</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>
|
|
|
|
<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>
|
|
|
|
<para>You may also try <filename
|
|
role="package">emulators/dosbox</filename> from the &os;
|
|
Ports Collection. The main focus of this application is
|
|
emulating old DOS games using the local file system for
|
|
files.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="translation">
|
|
<para>What do I need to do to translate a &os; document into
|
|
my native language?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <ulink
|
|
url="&url.books.fdp-primer;/translations.html">Translation FAQ</ulink>
|
|
in the &os; Documentation Project Primer.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="freebsd-mail-bounces">
|
|
<para>Why does my email to any address at <hostid
|
|
role="domainname">FreeBSD.org</hostid> bounce?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <hostid role="domainname">FreeBSD.org</hostid> mail
|
|
system implements some of the stricter
|
|
<application>Postfix</application> 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 &os; 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 <hostid
|
|
role="domainname">FreeBSD.org</hostid> 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 &os; account?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>While &os; 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 <emphasis>M-Net</emphasis>, 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 &os;.
|
|
<emphasis>M-Net</emphasis> can be accessed via
|
|
<application>telnet</application> and
|
|
<application>SSH</application> and provides basic access to
|
|
the entire &os; software suite. However, network access is
|
|
limited to members and patrons who donate to the system,
|
|
which is run as a non-profit organization.
|
|
<emphasis>M-Net</emphasis> also provides an bulletin board
|
|
system and interactive chat.</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. It was
|
|
used to keep remote sites in sync with the Project's 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 &a.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 class="directory">/usr/share/examples/BSD_daemon/</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="glossary">
|
|
<para>I have seen an acronym or other term on the mailing
|
|
lists and I do not understand what it means. Where should I
|
|
look?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the <ulink
|
|
url="&url.books.handbook;/freebsd-glossary.html">&os; Glossary</ulink>.
|
|
</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 &a.hackers.name;, 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><emphasis>[snip a bit of commentary on the
|
|
book]</emphasis></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 &os; Funnies</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="very-very-cool">
|
|
<para>How cool is &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Q. Has anyone done any temperature testing while
|
|
running &os;? I know &linux; runs cooler than DOS, but have
|
|
never seen a mention of &os;. 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 &os; 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 &os; 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 &os; 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 &os; 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 &os; 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 &os; 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 &os; 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 &os; 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>
|
|
|
|
<para><emphasis>&a.tabthorpe;</emphasis> says: <quote>None,
|
|
<emphasis>real</emphasis> &os; hackers are not afraid of the
|
|
dark!</quote></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 class="directory">/</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 &os;'s internals?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>At this time, there is only one book on &os;-specific OS
|
|
internals, namely <quote>The Design and Implementation of
|
|
the &os; Operating System</quote> by Marshall Kirk McKusick
|
|
and George V. Neville-Neil, ISBN 0-201-70245-2, which
|
|
focuses on version 5.<replaceable>X</replaceable> of
|
|
&os;.</para>
|
|
|
|
<para>Additionally, much general &unix; knowledge is directly
|
|
applicable to &os;.</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 &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the article on <ulink
|
|
url="&url.articles.contributing;/article.html">Contributing to &os;</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 snapshots and releases?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are currently four active/semi-active branches in
|
|
the &os; <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 four active branches of development):</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>&rel3.releng; AKA
|
|
&rel3.stable;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>&rel2.releng; AKA
|
|
&rel2.stable;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>&rel.releng; AKA
|
|
&rel.stable;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>&rel.head.releng; AKA
|
|
<emphasis>-CURRENT</emphasis> AKA
|
|
&rel.head;</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para><literal>HEAD</literal> is not an actual branch tag,
|
|
like the others; it is simply a symbolic constant for
|
|
<quote><emphasis>the current, non-branched development
|
|
stream</emphasis></quote> which we simply refer to as
|
|
<emphasis>-CURRENT</emphasis>.</para>
|
|
|
|
<para>Right now, <emphasis>-CURRENT</emphasis> is the
|
|
&rel.head.relx; development stream; the
|
|
&rel.stable; branch,
|
|
&rel.releng;, forked off from
|
|
<emphasis>-CURRENT</emphasis> in &rel.relengdate; and the
|
|
&rel2.stable; branch,
|
|
&rel2.releng;, forked off from
|
|
<emphasis>-CURRENT</emphasis> in &rel2.relengdate;.</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 <maketarget>world</maketarget></command>
|
|
clobber my existing installed binaries?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, this is the general idea; as its name might
|
|
suggest,
|
|
<command>make <maketarget>world</maketarget></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 <envar>DESTDIR</envar>
|
|
is defined while running
|
|
<command>make <maketarget>world</maketarget></command> or
|
|
<command>make <maketarget>install</maketarget></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 <maketarget>world</maketarget></command>
|
|
however.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cvsup-round-robin">
|
|
<para>Why isn't <hostid role="fqdn">cvsup.FreeBSD.org</hostid>
|
|
a round robin DNS entry to share the load amongst the various
|
|
<application>CVSup</application> servers?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>While <application>CVSup</application> mirrors update
|
|
from the master <application>CVSup</application> 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
|
|
<application>CVSup</application> server, running
|
|
<application>CVSup</application> twice in a row could
|
|
download code older than the code already on the
|
|
system.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ctm">
|
|
<para>Can I follow <emphasis>-CURRENT</emphasis> 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="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 &os;</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 µsoft;/&intel;) lower than <literal>X</literal> 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 <literal>X</literal>. Probe will then ask for boards
|
|
below <literal>X</literal>. Finally, probe requests boards
|
|
greater than
|
|
<literal>X - (limit / 4)</literal> to go
|
|
off-line. It then repeats this 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<superscript>64</superscript> would take.</para>
|
|
|
|
<para>The IDs are two 32-bit fields (hence
|
|
2<superscript>64</superscript>) + 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 #, or something else
|
|
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>µsoft; 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 µsoft;
|
|
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; releases after February 2003 has a facility for
|
|
dynamically and automatically allocating major numbers for
|
|
device drivers at runtime (see &man.devfs.5;), so there is
|
|
no need for this.</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 file system, 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 file systems 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
|
|
<literal>(total / fs_ncg)</literal> 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>&a.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>Here is typical kernel panic:</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 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
|
|
<filename>GENERIC</filename> 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:</para>
|
|
|
|
<screen>&prompt.user; <userinput><command>nm</command> <option>-n</option> <replaceable>kernel.that.caused.the.panic</replaceable> | <command>grep</command> f0xxxxxx</userinput></screen>
|
|
|
|
<para>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.:</para>
|
|
|
|
<screen>&prompt.user; <userinput><command>nm</command> <option>-n</option> <replaceable>kernel.that.caused.the.panic</replaceable> | <command>grep</command> f0xxxxx</userinput></screen>
|
|
|
|
<para>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>However, the best way to track down the cause of a panic
|
|
is by capturing a crash dump, then using &man.kgdb.1; to
|
|
generate a stack trace on the crash dump.</para>
|
|
|
|
<para>In any case, the method is this:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Make sure that the following line is included in
|
|
your kernel configuration file
|
|
(<filename>/usr/src/sys/<replaceable>arch</replaceable>/conf/<replaceable>MYKERNEL</replaceable></filename>):</para>
|
|
|
|
<programlisting>makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols</programlisting>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Change to the <filename
|
|
class="directory">/usr/src</filename>
|
|
directory:</para>
|
|
|
|
<screen>&prompt.root; <userinput><command>cd</command> <filename class="directory">/usr/src</filename></userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Compile the kernel:</para>
|
|
|
|
<screen>&prompt.root; <userinput><command>make</command> <maketarget>buildkernel</maketarget> <makevar>KERNCONF</makevar>=<replaceable>MYKERNEL</replaceable></userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Wait for &man.make.1; to finish compiling.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<screen>&prompt.root; <userinput><command>make</command> <maketarget>installkernel</maketarget> <makevar>KERNCONF</makevar>=<replaceable>MYKERNEL</replaceable></userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Reboot.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<note>
|
|
<para>If you do not use the <makevar>KERNCONF</makevar>
|
|
make variable a <filename>GENERIC</filename> kernel will
|
|
be built and installed.</para>
|
|
</note>
|
|
|
|
<para>The &man.make.1; process will have built two kernels.
|
|
<filename>/usr/obj/usr/src/sys/<replaceable>MYKERNEL</replaceable>/kernel</filename>
|
|
and
|
|
<filename>/usr/obj/usr/src/sys/<replaceable>MYKERNEL</replaceable>/kernel.debug</filename>.
|
|
<filename>kernel</filename> was installed as
|
|
<filename>/boot/kernel/kernel</filename>, while
|
|
<filename>kernel.debug</filename> can be used as the source
|
|
of debugging symbols for &man.kgdb.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
|
|
(or <literal>AUTO</literal>). 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 class="directory">/var/crash</filename>.</para>
|
|
|
|
<note>
|
|
<para>&os; crash dumps are usually the same size as the
|
|
physical RAM size of your machine. That is, if you have
|
|
512 MB of RAM, you will get a 512 MB crash dump.
|
|
Therefore you must make sure there is enough space in
|
|
<filename class="directory">/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=<replaceable>N</replaceable></literal> where
|
|
<replaceable>N</replaceable> is the size of kernel's
|
|
memory usage in KBs. For example, if you have 1 GB
|
|
of RAM, you can limit the kernel's memory usage to
|
|
128 MB by this way, so that your crash dump size will
|
|
be 128 MB instead of 1 GB.</para>
|
|
</note>
|
|
|
|
<para>Once you have recovered the crash dump, you can get a
|
|
stack trace with &man.kgdb.1; as follows:</para>
|
|
|
|
<screen>&prompt.user; <userinput><command>kgdb</command> <filename>/usr/obj/usr/src/sys/<replaceable>MYKERNEL</replaceable>/kernel.debug</filename> <filename class="directory">/var/crash/<replaceable>vmcore.0</replaceable></filename></userinput>
|
|
<prompt>(kgdb)</prompt> <userinput>backtrace</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.kgdb.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>
|
|
|
|
<tip>
|
|
<para>Now, if you are really insane and have a second
|
|
computer, you can also configure &man.kgdb.1; to do remote
|
|
debugging such that you can use &man.kgdb.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.</para>
|
|
</tip>
|
|
|
|
<note>
|
|
<para>If you have <literal>DDB</literal> enabled and the
|
|
kernel drops into the debugger, you can force a panic (and
|
|
a crash dump) just by typing <literal>panic</literal> at
|
|
the <literal>ddb</literal> prompt. It may stop in the
|
|
debugger again during the panic phase. If it does, type
|
|
<literal>continue</literal> and it will finish the crash
|
|
dump.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dlsym-failure">
|
|
<para>Why has <function>dlsym()</function> 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 on
|
|
i386?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>By default, the kernel address space is 1 GB
|
|
(2 GB for PAE) for i386. If you run a
|
|
network-intensive server (e.g. a large FTP or HTTP server),
|
|
or you want to use ZFS, you might find that is not
|
|
enough.</para>
|
|
|
|
<para>Add the following line to your kernel configuration file
|
|
to increase available space and rebuild your kernel:</para>
|
|
|
|
<programlisting>options KVA_PAGES=<replaceable>N</replaceable></programlisting>
|
|
|
|
<para>To find the correct value of
|
|
<replaceable>N</replaceable>, divide the desired address
|
|
space size (in megabytes) by four. (For example, it is
|
|
<literal>512</literal> for 2 GB.)</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="acknowledgments">
|
|
<title>Acknowledgments</title>
|
|
|
|
<para>This innocent little Frequently Asked Questions document has
|
|
been written, rewritten, edited, folded, spindled, mutilated,
|
|
eviscerated, contemplated, discombobulated, cogitated,
|
|
regurgitated, rebuilt, castigated, and reinvigorated over the last
|
|
decade, by a cast of hundreds if not thousands.
|
|
Repeatedly.</para>
|
|
|
|
<para>We wish to thank every one of the people responsible, and we
|
|
encourage you to to <ulink
|
|
url="&url.articles.contributing;/article.html">join them</ulink>
|
|
in making this FAQ even better.</para>
|
|
</chapter>
|
|
|
|
&bibliography;
|
|
</book>
|