7470 lines
259 KiB
XML
7470 lines
259 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
|
|
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [
|
|
<!ENTITY bibliography SYSTEM "../../../share/xml/bibliography.xml">
|
|
<!ENTITY rel.numbranch "3"> <!-- number of branches that follow in this list -->
|
|
<!ENTITY rel.head "<emphasis xmlns='http://docbook.org/ns/docbook'>12-CURRENT</emphasis>">
|
|
<!ENTITY rel.head.relx "12.<replaceable xmlns='http://docbook.org/ns/docbook'>X</replaceable>">
|
|
<!ENTITY rel.head.releng "<symbol xmlns='http://docbook.org/ns/docbook'>head/</symbol>">
|
|
<!ENTITY rel.relx "11.<replaceable xmlns='http://docbook.org/ns/docbook'>X</replaceable>">
|
|
<!ENTITY rel.stable "<emphasis xmlns='http://docbook.org/ns/docbook'>11-STABLE</emphasis>">
|
|
<!ENTITY rel.releng "<symbol xmlns='http://docbook.org/ns/docbook'>stable/11/</symbol>">
|
|
<!ENTITY rel.relengdate "April 2016">
|
|
<!ENTITY rel2.relx "10.<replaceable xmlns='http://docbook.org/ns/docbook'>X</replaceable>">
|
|
<!ENTITY rel2.stable "<emphasis xmlns='http://docbook.org/ns/docbook'>10-STABLE</emphasis>">
|
|
<!ENTITY rel2.releng "<symbol xmlns='http://docbook.org/ns/docbook'>stable/10/</symbol>">
|
|
<!ENTITY rel2.relengdate "August 2015">
|
|
]>
|
|
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
|
|
<info>
|
|
<title>Frequently Asked Questions for &os;
|
|
&rel2.relx; and &rel.relx;</title>
|
|
|
|
<author><orgname>The &os; Documentation Project</orgname></author>
|
|
|
|
<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>
|
|
<year>2013</year>
|
|
<year>2014</year>
|
|
<year>2015</year>
|
|
<year>2016</year>
|
|
<year>2017</year>
|
|
|
|
<holder>The &os; Documentation Project</holder>
|
|
</copyright>
|
|
|
|
&legalnotice;
|
|
|
|
<legalnotice xml:id="trademarks" role="trademarks">
|
|
&tm-attrib.freebsd;
|
|
&tm-attrib.adobe;
|
|
&tm-attrib.ibm;
|
|
&tm-attrib.ieee;
|
|
&tm-attrib.intel;
|
|
&tm-attrib.linux;
|
|
&tm-attrib.microsoft;
|
|
&tm-attrib.netbsd;
|
|
&tm-attrib.opengroup;
|
|
&tm-attrib.sgi;
|
|
&tm-attrib.sun;
|
|
&tm-attrib.general;
|
|
</legalnotice>
|
|
|
|
<releaseinfo>$FreeBSD$</releaseinfo>
|
|
|
|
<abstract>
|
|
<para>This is the Frequently Asked Questions
|
|
<acronym>(FAQ)</acronym> for &os; versions
|
|
&rel2.relx; and &rel.relx;. Every effort has been made to
|
|
make this <acronym>FAQ</acronym> as informative as possible;
|
|
if you have any suggestions as to how it may be improved, send
|
|
them to the &a.doc;.</para>
|
|
|
|
<para>The latest version of this document is always available
|
|
from the <link
|
|
xlink:href="https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/faq/index.html">&os;
|
|
website</link>. It may also be downloaded as one large
|
|
<link xlink:href="book.html">HTML</link> file with HTTP or as
|
|
a variety of other formats from the <link
|
|
xlink:href="https://download.freebsd.org/ftp/doc/">&os; FTP
|
|
server</link>.</para>
|
|
</abstract>
|
|
</info>
|
|
|
|
<chapter xml:id="introduction">
|
|
<title>Introduction</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="what-is-FreeBSD">
|
|
<para>What is &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; is a modern operating system for desktops,
|
|
laptops, servers, and embedded systems with support for a
|
|
large number of <link
|
|
xlink:href="https://www.FreeBSD.org/platforms/">platforms</link>.</para>
|
|
|
|
<para>It is 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.</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;, refer to the
|
|
<link xlink:href="&url.books.handbook;/index.html">&os;
|
|
Handbook</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 a stable
|
|
and fast general purpose operating system that may be used
|
|
for any purpose without strings attached.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="bsd-license-restrictions">
|
|
<para>Does the &os; license have any restrictions?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Those restrictions do not control how the code
|
|
is used, but how to treat the &os; Project itself.
|
|
The license itself is available at
|
|
<link
|
|
xlink:href="https://www.FreeBSD.org/copyright/freebsd-license.html">license</link>
|
|
and 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>
|
|
|
|
<listitem>
|
|
<para>Do not remove or modify the license.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Many of us have a significant investment in the
|
|
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, we believe, is one of the most fundamental
|
|
goals of Free Software and one that we enthusiastically
|
|
support.</para>
|
|
|
|
<para>Code in our source tree which falls under the <link
|
|
xlink:href="https://www.FreeBSD.org/copyright/COPYING">GNU
|
|
General Public License (GPL)</link> or <link
|
|
xlink:href="https://www.FreeBSD.org/copyright/COPYING.LIB">GNU
|
|
Library General Public License (LGPL)</link> 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 <link
|
|
xlink:href="https://www.FreeBSD.org/copyright/freebsd-license.html">&os;
|
|
license</link> whenever possible.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 much more.
|
|
Most of these applications can be
|
|
managed through the <link
|
|
xlink:href="https://www.FreeBSD.org/ports/">Ports
|
|
Collection</link>.</para>
|
|
|
|
<para>If an application is only available on one operating
|
|
system, that operating system cannot just be replaced.
|
|
Chances are, there is a very similar application on &os;,
|
|
however. As a solid office or Internet server or a
|
|
reliable workstation, &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>Users migrating to &os; from another &unix;-like
|
|
environment will find &os; to be similar.
|
|
&windows; and &macos; users may be interested in instead
|
|
using <link
|
|
xlink:href="https://www.trueos.org">TrueOS</link>, a
|
|
&os;-based desktop distribution. Non-&unix; users should
|
|
expect to invest some additional time learning the
|
|
&unix; way of doing things. This <acronym>FAQ</acronym>
|
|
and the <link
|
|
xlink:href="&url.books.handbook;/index.html">&os;
|
|
Handbook</link> are excellent places to start.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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> and the other meaning
|
|
<quote>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 xml: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 <link
|
|
xlink:href="https://jameshoward.us/archive/the-bsd-family-tree/">The
|
|
BSD Family Tree</link> which goes a fair way to
|
|
answering this question. Some of the information is out
|
|
of date, but the history portion in particular remains
|
|
accurate.</para>
|
|
|
|
<para>Most of the BSDs share patches and code, even today.
|
|
All of the BSDs have common ancestry.</para>
|
|
|
|
<para>The design goals of &os; are described in <xref
|
|
linkend="FreeBSD-goals"/>, above. The design goals of
|
|
the other most popular BSDs may be summarized as
|
|
follows:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>OpenBSD aims for operating system security above
|
|
all else. The OpenBSD team wrote &man.ssh.1; and
|
|
&man.pf.4;, which have both been ported to
|
|
&os;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>NetBSD aims to be easily ported to other hardware
|
|
platforms.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>DragonFly BSD is a fork of &os; 4.8 that
|
|
has since developed many interesting features of its
|
|
own, including the HAMMER file system and support for
|
|
user-mode <quote>vkernels</quote>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="latest-version">
|
|
<para>What is the latest version of &os;?</para>
|
|
</question>
|
|
|
|
<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 9.0, the &rel2.relx; series
|
|
was the one known as <emphasis>-STABLE</emphasis>.
|
|
However, as of &rel.head.relx;, the &rel2.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
|
|
&rel2.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 <link
|
|
xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE/">&rel.current;</link>
|
|
is the latest release from the &rel.stable; branch; it was
|
|
released in &rel.current.date;. Version <link
|
|
xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">&rel2.current;</link>
|
|
is the latest release from the &rel2.stable; branch; it
|
|
was released in &rel2.current.date;.</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
|
|
<link
|
|
xlink:href="https://www.FreeBSD.org/releng/index.html#release-build">Release
|
|
Engineering page</link> and in &man.release.7;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="current">
|
|
<para>What is <emphasis>&os;-CURRENT</emphasis>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><link
|
|
xlink:href="&url.books.handbook;/current-stable.html#current">&os.current;</link>
|
|
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 <link
|
|
xlink:href="&url.books.handbook;/current-stable.html#current">relevant
|
|
section</link> in the <link
|
|
xlink:href="&url.books.handbook;/index.html">Handbook</link>
|
|
for details on running
|
|
<emphasis>-CURRENT</emphasis>.</para>
|
|
|
|
<para>Users not familiar with &os; should not use
|
|
&os.current;. This branch sometimes evolves quite quickly
|
|
and due to mistake can be un-buildable at times. People
|
|
that use &os.current; are expected to be able to analyze,
|
|
debug, and report problems.</para>
|
|
|
|
<para>&os; <link
|
|
xlink:href="&url.base;/snapshots/">snapshot</link>
|
|
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 Subversion 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 a stable and fully tested system is needed,
|
|
stick to full releases.</para>
|
|
|
|
<para>Snapshot releases are directly available from <link
|
|
xlink:href="&url.base;/snapshots/">snapshot</link>.</para>
|
|
|
|
<para>Official snapshots are generated on a regular
|
|
basis for all actively developed branches.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <link
|
|
xlink:href="&url.books.handbook;/current-stable.html#stable">-STABLE</link>,
|
|
one <link
|
|
xlink:href="&url.books.handbook;/current-stable.html#current">-CURRENT</link>.
|
|
<emphasis>&os;-STABLE</emphasis> is the development branch
|
|
from which major releases are made. Changes go into this
|
|
branch at a slower pace and with the general assumption
|
|
that they have first been tested in &os;-CURRENT.
|
|
However, at any given time, the sources for &os;-STABLE
|
|
may or may not be suitable for general use, as it may
|
|
uncover bugs and corner cases that were not yet found in
|
|
&os;-CURRENT. Users who do not have the resources to
|
|
perform testing should instead run the most recent release
|
|
of &os;.
|
|
<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><link
|
|
xlink:href="&url.articles.releng;/release-proc.html#rel-branch">&os;
|
|
Release Engineering: Creating the Release
|
|
Branch</link></quote>, the status of the branches and
|
|
the upcoming release schedule can be found on the <link
|
|
xlink:href="https://www.FreeBSD.org/releng">Release
|
|
Engineering Information</link> page.</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 xml: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, 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 <link
|
|
xlink:href="https://www.FreeBSD.org/releng/index.html">release
|
|
engineering</link> pages on the &os; Web site.</para>
|
|
|
|
<para>For people who need or want a little more excitement,
|
|
binary snapshots are made weekly as discussed
|
|
above.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <link
|
|
xlink:href="&url.base;/administration.html#t-core">core
|
|
team</link> of 9 people. There is a much larger team of
|
|
more than 350 <link
|
|
xlink:href="&url.articles.contributors;/article.html#staff-committers">committers</link>
|
|
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 xml: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 <link
|
|
xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/"> &os;
|
|
FTP site</link>:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The latest &rel.stable; release,
|
|
&rel.current;-RELEASE can be found in the <link
|
|
xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE/">&rel.current;-RELEASE
|
|
directory</link>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><link
|
|
xlink:href="&url.base;/snapshots/">Snapshot</link>
|
|
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 <link
|
|
xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">&rel2.current;-RELEASE
|
|
directory</link>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Information about obtaining &os; on CD, DVD, and other
|
|
media can be found in <link
|
|
xlink:href="&url.books.handbook;/mirrors.html">the
|
|
Handbook</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <link
|
|
xlink:href="https://bugs.FreeBSD.org/search/">query</link>
|
|
interface.</para>
|
|
|
|
<para>The <link
|
|
xlink:href="&url.base;/support/bugreports.html">web-based
|
|
problem report submission interface</link> can be used
|
|
to submit problem reports through a web browser.</para>
|
|
|
|
<para>Before submitting a problem report, read <link
|
|
xlink:href="&url.articles.problem-reports;/article.html">Writing
|
|
&os; Problem Reports</link>, an article on how to write
|
|
good problem reports.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="support">
|
|
<title>Documentation and Support</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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: <uri
|
|
xlink:href="https://www.FreeBSD.org/docs.html">https://www.FreeBSD.org/docs.html</uri>.
|
|
In addition, <link
|
|
linkend="bibliography">the Bibliography</link> at the
|
|
end of this <acronym>FAQ</acronym>, and <link
|
|
xlink:href="&url.books.handbook;/bibliography.html">the
|
|
one in the Handbook</link> reference other recommended
|
|
books.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <link
|
|
xlink:href="https://download.freebsd.org/ftp/doc/">/pub/FreeBSD/doc/</link>
|
|
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 found under
|
|
<filename>/usr/share/locale</filename> on a &os;
|
|
system. The current languages and encodings
|
|
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.UTF-8</literal></entry>
|
|
|
|
<entry>Simplified Chinese (China, UTF-8
|
|
encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>zh_TW.UTF-8</literal></entry>
|
|
|
|
<entry>Traditional Chinese (Taiwan, UTF-8
|
|
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>µsoft;'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.</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. For
|
|
example,
|
|
<filename>article.pdf</filename>,
|
|
<filename>book.html</filename>, and so on.</para>
|
|
|
|
<para>These files are then compressed using either
|
|
the <literal>zip</literal> or
|
|
<literal>bz2</literal> compression schemes.
|
|
&man.tar.1; can be used to uncompress these
|
|
files.</para>
|
|
|
|
<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>handbook/</filename> directory.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>After choosing the format and compression mechanism,
|
|
download the
|
|
compressed files, uncompress them, and then copy
|
|
the appropriate documents into place.</para>
|
|
|
|
<para>For example, the split HTML version of the
|
|
<acronym>FAQ</acronym>, compressed using &man.bzip2.1;,
|
|
can be found in
|
|
<filename>doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2</filename>
|
|
To download and uncompress that file, type:</para>
|
|
|
|
<screen>&prompt.root; <userinput>fetch https://download.freebsd.org/ftp/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2</userinput>
|
|
&prompt.root; <userinput>tar xvf book.html-split.tar.bz2</userinput></screen>
|
|
|
|
<para>If the file is compressed,
|
|
<application>tar</application> will automatically
|
|
detect the appropriate format and decompress it correctly,
|
|
resulting in 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.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="mailing">
|
|
<para>Where do I find info on the &os; mailing lists? What
|
|
&os; news groups are available?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Refer to the <link
|
|
xlink:href="&url.books.handbook;/eresources.html#eresources-mail">Handbook
|
|
entry on mailing-lists</link> and the <link
|
|
xlink:href="&url.books.handbook;/eresources-news.html">Handbook
|
|
entry on newsgroups</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>#FreeBSDhelp</literal> on <link
|
|
xlink:href="http://www.efnet.org/index.php">EFNet</link>
|
|
is a channel dedicated to helping &os; users.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on <link
|
|
xlink:href="http://freenode.net/">Freenode</link> 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. Other users can help with
|
|
the basics, referring to the Handbook whenever
|
|
possible and providing links for learning more about
|
|
a particular topic. This is primarily an English
|
|
speaking channel, though it does have users from all
|
|
over the world. Non-native English speakers should
|
|
try to ask the question in English first and then
|
|
relocate to <literal>##freebsd-lang</literal> as
|
|
appropriate.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on <link
|
|
xlink:href="http://www.dal.net/">DALNET</link> is
|
|
available at <systemitem>irc.dal.net</systemitem> in
|
|
the US and <systemitem>irc.eu.dal.net</systemitem> in
|
|
Europe.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on <link
|
|
xlink:href="http://www.undernet.org/">UNDERNET</link>
|
|
is available at
|
|
<systemitem>us.undernet.org</systemitem> in the US and
|
|
<systemitem>eu.undernet.org</systemitem> 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 <link
|
|
xlink:href="http://www.rusnet.org.ru/">RUSNET</link>
|
|
is a Russian language channel dedicated to
|
|
helping &os; users. This is also good place for
|
|
non-technical discussions.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#bsdchat</literal> on <link
|
|
xlink:href="http://freenode.net/">Freenode</link> is
|
|
a Traditional Chinese (UTF-8 encoding) language
|
|
channel dedicated to helping &os; users.
|
|
This is also good place for non-technical
|
|
discussions.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>The &os; wiki has a <link
|
|
xlink:href="https://wiki.freebsd.org/IrcChannels">good
|
|
list</link> of IRC channels.</para>
|
|
|
|
<para>Each of these channels are distinct and are not
|
|
connected to each other. Since their chat styles differ,
|
|
try each to find one suited to your
|
|
chat style.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="forums">
|
|
<para>Are there any web based forums to discuss &os;?</para>
|
|
</question>
|
|
<answer>
|
|
<para>The official &os; forums are located at <link
|
|
xlink:href="https://forums.FreeBSD.org/">https://forums.FreeBSD.org/</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="training">
|
|
<para>Where can I get commercial &os; training and
|
|
support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><link xlink:href="http://www.ixsystems.com">iXsystems,
|
|
Inc.</link>, parent company of the <link
|
|
xlink:href="http://www.freebsdmall.com/">&os;
|
|
Mall</link>, provides commercial &os; and TrueOS
|
|
software <link
|
|
xlink:href="http://www.ixsystems.com/support">support</link>,
|
|
in addition to &os; development and tuning
|
|
solutions.</para>
|
|
|
|
<para>BSD Certification Group, Inc. provides system
|
|
administration certifications for DragonFly BSD,
|
|
&os;, NetBSD, and OpenBSD. Refer to <link
|
|
xlink:href="http://www.BSDCertification.org">their
|
|
site</link> for more information.</para>
|
|
|
|
<para>Any other organizations providing training and support
|
|
should contact the Project to be listed here.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="install">
|
|
<info>
|
|
<title>Installation</title>
|
|
|
|
<author>
|
|
<personname>
|
|
<firstname>Nik</firstname>
|
|
<surname>Clayton</surname>
|
|
</personname>
|
|
<affiliation>
|
|
<address>
|
|
<email>nik@FreeBSD.org</email>
|
|
</address>
|
|
</affiliation>
|
|
</author>
|
|
</info>
|
|
|
|
<qandaset>
|
|
|
|
<qandaentry>
|
|
<question xml:id="which-architecture">
|
|
<para>Which platform should I download? I have a 64
|
|
bit capable &intel; CPU,
|
|
but I only see <literal>amd64</literal>.</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&arch.amd64; is the term &os; uses for 64-bit
|
|
compatible x86 architectures (also known as "x86-64" or
|
|
"x64"). Most modern computers should use &arch.amd64;.
|
|
Older hardware should use &arch.i386;. When installing
|
|
on a non-x86-compatible architecture, select the
|
|
platform which best matches the hardware.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="floppy-download">
|
|
<para>Which file do I download to get &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>On the <link
|
|
xlink:href="https://www.freebsd.org/where.html">Getting
|
|
&os;</link> page, select <literal>[iso]</literal> next
|
|
to the architecture that matches the hardware.</para>
|
|
|
|
<para>Any of the following can be used:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>file</entry>
|
|
<entry>description</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><filename>disc1.iso</filename></entry>
|
|
<entry>Contains enough to install &os; and
|
|
a minimal set of packages.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>dvd1.iso</filename></entry>
|
|
<entry>Similar to <filename>disc1.iso</filename>
|
|
but with additional packages.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>memstick.img</filename></entry>
|
|
<entry>A bootable image sufficient for writing to a
|
|
USB stick.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>bootonly.iso</filename></entry>
|
|
<entry>A minimal image that requires network access
|
|
during installation to completely install
|
|
&os;.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Full instructions on this procedure and a little bit
|
|
more about installation issues in general can be found in
|
|
the <link
|
|
xlink:href="&url.books.handbook;/bsdinstall.html">Handbook
|
|
entry on installing &os;</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="floppy-image-too-large">
|
|
<para>What do I do if the install image does not
|
|
boot?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This can be caused by not downloading the 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
|
|
SHA-256 checksum of the downloaded boot image: if it
|
|
is not <emphasis>exactly</emphasis> that on the
|
|
server, then the download process is suspect.</para>
|
|
|
|
<para>When using a command line FTP client, type
|
|
<emphasis>binary</emphasis> at the FTP command prompt
|
|
after getting connected to the server and before
|
|
starting the download of the image.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="install-instructions-location">
|
|
<para>Where are the instructions for installing &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Installation instructions
|
|
can be found at <link
|
|
xlink:href="&url.books.handbook;/bsdinstall.html">Handbook
|
|
entry on installing &os;</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="need-to-run">
|
|
<para>What are the minimum requirements to run &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; requires a 486 or better PC,
|
|
64 MB or more of RAM, and at least 1.1 GB of hard
|
|
disk space.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="custom-boot-floppy">
|
|
<para>How can I make my own custom release or install
|
|
disk?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Customized &os; installation media can be created by
|
|
building a custom release. Follow the instructions in the
|
|
<link
|
|
xlink:href="&url.articles.releng;/article.html">Release
|
|
Engineering</link> article.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="windows-coexist">
|
|
<para>Can &windows; co-exist with &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If &windows; is installed first, then yes. &os;'s
|
|
boot manager will then manage to boot &windows; and &os;.
|
|
If &windows; is installed afterwards, it will
|
|
overwrite the boot manager. If that
|
|
happens, see the next section.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="bootmanager-restore">
|
|
<para>Another operating system destroyed my Boot Manager.
|
|
How do I get it back?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This depends upon the boot manager.
|
|
The &os; boot selection menu can be reinstalled using
|
|
&man.boot0cfg.8;. For example, to restore the boot menu
|
|
onto the disk <replaceable>ada0</replaceable>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>boot0cfg -B ada0</userinput></screen>
|
|
|
|
<para>The non-interactive MBR bootloader can be installed
|
|
using &man.gpart.8;:</para>
|
|
|
|
<screen>&prompt.root; <userinput>gpart bootcode -b /boot/mbr ada0</userinput></screen>
|
|
|
|
<para>For more complex situations, including GPT disks, see
|
|
&man.gpart.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <package>sysutils/lsof</package>, 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 xml: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 <literal>GENERIC</literal> 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 xml: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; uses
|
|
<emphasis>SHA512</emphasis> by
|
|
default. DES
|
|
passwords are still available for backwards compatibility
|
|
with operating systems that still
|
|
use the less secure password format. &os; also supports
|
|
the Blowfish and MD5 password formats. 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 xml:id="ffs-limits">
|
|
<para>What are the limits for FFS file systems?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For FFS file systems, the largest file system is
|
|
practically limited by the amount of memory required to
|
|
&man.fsck.8; the file system. &man.fsck.8; requires one
|
|
bit per fragment, which with the default fragment size of
|
|
4 KB equates to 32 MB of memory per TB of disk.
|
|
This does mean that on architectures which limit userland
|
|
processes to 2 GB (e.g., &i386;), the maximum
|
|
&man.fsck.8;'able filesystem is ~60 TB.</para>
|
|
|
|
<para>If there was not a &man.fsck.8; memory limit the
|
|
maximum filesystem size would be 2 ^ 64 (blocks)
|
|
* 32 KB => 16 Exa * 32 KB => 512
|
|
ZettaBytes.</para>
|
|
|
|
<para>The maximum size of a single FFS file is approximately
|
|
2 PB with the default block size of 32 KB. Each
|
|
32 KB block can point to 4096 blocks. With triple
|
|
indirect blocks, the calculation is 32 KB * 12 +
|
|
32 KB * 4096 + 32 KB * 4096^2 + 32 KB *
|
|
4096^3. Increasing the block size to 64 KB will
|
|
increase the max file size by a factor of 16.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="archsw-readin-failed-error">
|
|
<para>Why do I get an error message, <errorname>readin
|
|
failed</errorname> after compiling and booting a new
|
|
kernel?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The world and kernel are out of sync. This
|
|
is not supported. Be sure to use <command>make
|
|
buildworld</command> and <command>make
|
|
buildkernel</command> to update the kernel.</para>
|
|
|
|
<para>Boot the system 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 xml:id="general-configuration-tool">
|
|
<para>Is there a tool to perform post-installation
|
|
configuration tasks?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. <application>bsdconfig</application> provides a
|
|
nice interface to configure &os; post-installation.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="hardware">
|
|
<title>Hardware Compatibility</title>
|
|
|
|
<sect1 xml:id="compatibility-general">
|
|
<title>General</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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 but is to be expected since hardware changes so
|
|
quickly. Read through the Hardware Notes
|
|
for &os; <link
|
|
xlink:href="&rel.current.hardware;">&rel.current;</link>
|
|
or <link
|
|
xlink:href="&rel2.current.hardware;">&rel2.current;</link>
|
|
and search the mailing list <link
|
|
xlink:href="https://www.FreeBSD.org/search/#mailinglists">archives</link>
|
|
before asking about the latest and greatest hardware.
|
|
Chances are a discussion about that type of hardware
|
|
took place just last week.</para>
|
|
|
|
<para>Before purchasing a laptop, check the archives for
|
|
&a.mobile; and &a.questions;, or possibly a specific
|
|
mailing list for a particular hardware type.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="memory-upper-limitation">
|
|
<para>What are the limits for memory? Does &os; support
|
|
more than 4 GB of memory
|
|
(RAM)? More than 16 GB? More than
|
|
48 GB?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&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. As of &os; 10, AMD64
|
|
platforms support up to 4 TB of physical
|
|
memory.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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.
|
|
When creating a custom kernel configuration
|
|
file, PAE can be enabled by adding the following
|
|
line:</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 xml:id="compatibility-processors">
|
|
<title>Architectures and Processors</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="architectures">
|
|
<para>Does &os; support architectures other than the
|
|
x86?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. &os; divides support into multiple tiers.
|
|
Tier 1 architectures, such as i386 or amd64; are fully
|
|
supported. Tiers 2 and 3 are supported on a
|
|
best-effort basis. A full explanation of the tier
|
|
system is available in the <link
|
|
xlink:href="&url.articles.committers-guide;/archs.html">Committer's
|
|
Guide.</link></para>
|
|
|
|
<para>A complete list of supported architectures can be
|
|
found on the <link
|
|
xlink:href="https://www.FreeBSD.org/platforms/">platforms
|
|
page.</link></para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="smp-support">
|
|
<para>Does &os; support Symmetric Multiprocessing
|
|
(SMP)?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports symmetric multi-processor (SMP) on all
|
|
non-embedded platforms (e.g, &arch.i386;, &arch.amd64;,
|
|
etc.). SMP is also supported in arm and MIPS kernels,
|
|
although some CPUs may not support this. &os;'s SMP
|
|
implementation uses fine-grained locking, and
|
|
performance scales nearly linearly with number of
|
|
CPUs.</para>
|
|
|
|
<para>&man.smp.4; has more details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="microcode">
|
|
<para>What is microcode?
|
|
How do I install &intel; CPU microcode updates?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Microcode is a method of programmatically
|
|
implementing hardware level instructions. This allows
|
|
for CPU bugs to be fixed without replacing the on board
|
|
chip.</para>
|
|
|
|
<para>Install <package>sysutils/devcpu-data</package>,
|
|
then add:</para>
|
|
|
|
<programlisting>microcode_update_enable="YES"</programlisting>
|
|
|
|
<para>to <filename>/etc/rc.conf</filename></para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="compatibility-drives">
|
|
<title>Hard Drives, Tape Drives, and CD and DVD Drives</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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 xml: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;
|
|
<link
|
|
xlink:href="&rel.current.hardware;">&rel.current;</link>
|
|
or <link
|
|
xlink:href="&rel2.current.hardware;">&rel2.current;</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="tape-support">
|
|
<para>What types of tape drives are supported?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports all standard SCSI tape
|
|
interfaces.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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
|
|
to control the changer can be found in
|
|
&man.chio.1;.</para>
|
|
|
|
<para>While
|
|
<application>AMANDA</application> and some other
|
|
products already understands changers, other
|
|
applications only know how to move a tape from one point
|
|
to another. In this case, 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 xml:id="supported-cdrom-drives">
|
|
<para>Which CD-ROM and CD-RW 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>
|
|
|
|
<para>&os; supports any ATAPI-compatible IDE CD-R or CD-RW
|
|
drive.</para>
|
|
|
|
<para>&os; also supports any SCSI CD-R or CD-RW drives.
|
|
Install the <package>sysutils/cdrtools</package> port or
|
|
package, then use <command>cdrecord</command>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="compatibility-kbd-mice">
|
|
<title>Keyboards and Mice</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="moused">
|
|
<para>Is it possible to use a mouse outside the
|
|
X Window system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The default console driver,
|
|
&man.syscons.4;, provides the ability to 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/xxxx -t yyyy</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>For a PS/2 mouse, add
|
|
<literal>moused_enable="YES"</literal> to
|
|
<filename>/etc/rc.conf</filename> to start the mouse
|
|
daemon at boot time. Additionally, 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
|
|
<acronym>FAQ</acronym>
|
|
<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 xml:id="text-mode-cut-paste">
|
|
<para>How do I cut and paste text with a mouse in the text
|
|
console?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>It is not possible to remove data using the mouse.
|
|
However, it is possible to copy and paste. Once the
|
|
mouse daemon is running as described in the <link
|
|
linkend="moused">previous question</link>, hold down
|
|
button 1 (left button) and move the mouse to select a
|
|
region of text. Then, press 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 the mouse does not have a middle button, it is
|
|
possible to emulate one or remap buttons using mouse
|
|
daemon options. See the &man.moused.8; manual page for
|
|
details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 xml: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 <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 <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 <link
|
|
xlink:href="http://www.ibb.net/~anne/keyboard.html">this
|
|
page</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="compatibility-other">
|
|
<title>Other Hardware</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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>
|
|
|
|
<qandaentry>
|
|
<question xml:id="power-management-support">
|
|
<para>Does &os; support power management on my
|
|
laptop?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports the <acronym>ACPI</acronym> features
|
|
found in modern hardware. Further information can be
|
|
found in &man.acpi.4;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
</chapter>
|
|
|
|
<chapter xml:id="troubleshoot">
|
|
<title>Troubleshooting</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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 cannot be accessed by that address space.</para>
|
|
|
|
<para>What happens to the memory that should appear in that
|
|
location is hardware dependent. 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 when watching 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 the entry on memory
|
|
limits 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 xml: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 a 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,
|
|
start investigating the cause.</para>
|
|
|
|
<para>These problems can usually be attributed to
|
|
either:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>If the problem is occurring only in a specific
|
|
custom application, it is
|
|
probably a bug in the 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 <acronym>FAQ</acronym> readers get to use
|
|
these bits of code (that is what -CURRENT is
|
|
for).</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>It is probably
|
|
not a &os; bug if the
|
|
problem occurs compiling a program, but the activity
|
|
that the compiler is carrying out changes each
|
|
time.</para>
|
|
|
|
<para>For example, if <command>make
|
|
buildworld</command> fails while trying
|
|
to compile <filename>ls.c</filename> into
|
|
<filename>ls.o</filename> and, when run again, it fails
|
|
in the same place, this is a broken build. Try
|
|
updating source and try again. If the compile fails
|
|
elsewhere, it is almost certainly due to hardware.</para>
|
|
|
|
<para>In the first case, use a debugger such as
|
|
&man.gdb.1; to find the point in the program which is
|
|
attempting to access a bogus address and fix
|
|
it.</para>
|
|
|
|
<para>In the second case, verify which piece of
|
|
hardware is at fault.</para>
|
|
|
|
<para>Common causes of this include:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>The hard disks might be overheating: Check that
|
|
the fans are still working, as the disk and
|
|
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,
|
|
ensure that the hardware is running at
|
|
what it is specified to run at, at least while trying
|
|
to solve this problem. If it is not, clock it back
|
|
to the default settings.)</para>
|
|
|
|
<para>Regarding overclocking, it is far
|
|
cheaper to have a slow system than a fried system that
|
|
needs replacing! Also the community is not
|
|
sympathetic to problems on overclocked systems.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Dodgy memory: if multiple memory
|
|
SIMMS/DIMMS are installed, pull them all out and try
|
|
running the machine with each SIMM or DIMM
|
|
individually to narrow the problem down to either the
|
|
problematic DIMM/SIMM or perhaps even a
|
|
combination.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Over-optimistic motherboard settings: the BIOS
|
|
settings, and some motherboard jumpers, provide
|
|
options to set various timings. The defaults
|
|
are often sufficient, but sometimes setting the wait
|
|
states on RAM too low, or setting the <quote>RAM
|
|
Speed: Turbo</quote> option
|
|
will cause strange behavior. A possible idea is to
|
|
set to BIOS defaults, after noting
|
|
the current settings first.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Unclean or insufficient power to the motherboard.
|
|
Remove any unused I/O boards, hard disks, or
|
|
CD-ROMs,
|
|
or disconnect the power cable from them, to see if
|
|
the power supply can manage a smaller load. Or try
|
|
another power supply, preferably one with a little
|
|
more power. For instance, if the current power supply
|
|
is rated at 250 Watts, try one rated at
|
|
300 Watts.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>Read the section on
|
|
<link linkend="signal11">Signal 11</link> for a further
|
|
explanation and a discussion on how memory testing
|
|
software or hardware can still pass faulty memory. There
|
|
is an extensive <acronym>FAQ</acronym> on this at <link
|
|
xlink:href="http://www.bitwizard.nl/sig11/">the SIG11
|
|
problem <acronym>FAQ</acronym></link>.</para>
|
|
|
|
<para>Finally, if none of this has helped, it is possibly
|
|
a bug in &os;.
|
|
Follow <link linkend="access-pr">these instructions</link>
|
|
to send a problem report.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 interested in these
|
|
errors, but need more information than just the error
|
|
message. Copy the full crash message. Then consult the
|
|
<acronym>FAQ</acronym> section on <link
|
|
linkend="kernel-panic-troubleshooting">kernel
|
|
panics</link>, build a debugging kernel, and get a
|
|
backtrace. This might sound difficult, but does not
|
|
require any programming skills. Just follow the
|
|
instructions.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="proc-table-full">
|
|
<para>What is the meaning of the error <errorname>maxproc
|
|
limit exceeded by uid %i, please see tuning(7) and
|
|
login.conf(5)</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.
|
|
If the machine is heavily loaded,
|
|
increase <varname>kern.maxusers</varname>. This will
|
|
increase these other system limits in addition to the
|
|
maximum number of processes.</para>
|
|
|
|
<para>To adjust the <varname>kern.maxusers</varname> value,
|
|
see the <link
|
|
xlink:href="&url.books.handbook;/configtuning-kernel-limits.html#kern-maxfiles">File/Process
|
|
Limits</link> section of the Handbook. While that
|
|
section refers to open files, the same limits apply to
|
|
processes.</para>
|
|
|
|
<para>If the machine is lightly loaded but running a very
|
|
large number of processes, adjust the
|
|
<varname>kern.maxproc</varname> tunable by defining it in
|
|
<filename>/boot/loader.conf</filename>. The tunable will
|
|
not get adjusted until the system is rebooted. For more
|
|
information about tuning tunables, see
|
|
&man.loader.conf.5;. If these processes are being run by
|
|
a single user, adjust
|
|
<varname>kern.maxprocperuid</varname> to be one less than
|
|
the 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>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="remote-fullscreen">
|
|
<para>Why do full screen applications on remote machines
|
|
misbehave?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The remote machine may be setting the terminal type to
|
|
something other than <literal>xterm</literal> which is
|
|
required by the &os; console. Alternatively the kernel
|
|
may have the wrong values for the width and height of the
|
|
terminal.</para>
|
|
|
|
<para>Check the value of the <envar>TERM</envar>
|
|
environment variable is <literal>xterm</literal>. If the
|
|
remote machine does not support that try
|
|
<literal>vt100</literal>.</para>
|
|
|
|
<para>Run <command>stty -a</command> to check what the
|
|
kernel thinks the terminal dimensions are. If they are
|
|
incorrect, they can be changed by running
|
|
<command>stty rows <replaceable>RR</replaceable> cols
|
|
<replaceable>CC</replaceable></command>.</para>
|
|
|
|
<para>Alternatively, if the client machine has
|
|
<package>x11/xterm</package> installed, then running
|
|
<command>resize</command> will query the terminal for the
|
|
correct dimensions and set them.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 to store the hostname in a log file for
|
|
future reference by the administrator.</para>
|
|
|
|
<para>The remedy: if the problem occurs whenever connecting
|
|
the client computer to any server, the problem
|
|
is with the client. If the problem only occurs
|
|
when someone connects to the server computer, 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. If this is on the Internet,
|
|
contact your ISP.</para>
|
|
|
|
<para>If the problem is with the server on a
|
|
local network, configure the server
|
|
to resolve address-to-hostname queries for the local
|
|
address range. See &man.hosts.5; and &man.named.8;
|
|
for more information. If this is on the
|
|
Internet, the problem may be that the local server's
|
|
resolver is not functioning correctly. To check, try to
|
|
look up another host such as
|
|
<systemitem>www.yahoo.com</systemitem>. If it does not
|
|
work, that is the 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
|
|
<filename>/etc/ssh/sshd_config</filename>. If this is
|
|
causing the problem, either 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 xml: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 that the number of
|
|
available file descriptors have been exhausted on the
|
|
system. Refer to the <link
|
|
xlink:href="&url.books.handbook;/configtuning-kernel-limits.html#kern-maxfiles">kern.maxfiles</link>
|
|
section of the <link
|
|
xlink:href="&url.books.handbook;/configtuning-kernel-limits.html">Tuning
|
|
Kernel Limits</link> section of the Handbook for a
|
|
discussion and solution.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="computer-clock-skew">
|
|
<para>Why does the clock on my computer keep incorrect
|
|
time?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The 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>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 kern.timecounter.hardware=i8254</userinput>
|
|
kern.timecounter.hardware: TSC -> i8254</screen>
|
|
|
|
<para>The 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 xml: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
|
|
from
|
|
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
|
|
bad, disk errors will appear in
|
|
<filename>/var/log/messages</filename> and in the output
|
|
of <command>dmesg</command>. Otherwise, check the cables
|
|
and connections.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="lock-order-reversal">
|
|
<para>What is a <errorname>lock order
|
|
reversal</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &os; kernel uses a number of resource locks to
|
|
arbitrate contention for certain resources. When multiple
|
|
kernel threads try to obtain multiple resource locks,
|
|
there's always the potential for a deadlock, where two
|
|
threads have each obtained one of the locks and blocks
|
|
forever waiting for the other thread to release one of the
|
|
other locks. This sort of locking problem can be avoided
|
|
if all threads obtain the locks in the same order.</para>
|
|
|
|
<para>A run-time lock diagnostic system called
|
|
&man.witness.4;, enabled in &os.current; and disabled by
|
|
default for stable branches and releases, detects the
|
|
potential for deadlocks due to locking errors, including
|
|
errors caused by obtaining multiple resource locks with a
|
|
different order from different parts of the kernel. The
|
|
&man.witness.4; framework tries to detect this problem as
|
|
it happens, and reports it by printing a message to the
|
|
system console about a <errorname>lock order
|
|
reversal</errorname> (often referred to also as
|
|
<acronym>LOR</acronym>).</para>
|
|
|
|
<para>It is possible to get false positives, as
|
|
&man.witness.4; is conservative. A true positive report
|
|
<emphasis>does not</emphasis> mean that a system is
|
|
dead-locked; instead it should be understood as a warning
|
|
that a deadlock could have happened here.</para>
|
|
|
|
<note>
|
|
<para>Problematic <acronym>LOR</acronym>s tend to get
|
|
fixed quickly, so check the &a.current; before posting
|
|
to it.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>
|
|
|
|
<para>For additional information about locking in &os; see
|
|
&man.locking.9;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="touch-not-found">
|
|
<para>Why does
|
|
<buildtarget>buildworld</buildtarget>/<buildtarget>installworld</buildtarget>
|
|
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 the CMOS clock is set to local time, run
|
|
<command>adjkerntz -i</command> to adjust
|
|
the kernel clock when booting into single-user
|
|
mode.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="applications">
|
|
<title>User Applications</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="user-apps">
|
|
<para>Where are all the user applications?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Refer to <link
|
|
xlink:href="&url.base;/ports/index.html">the ports
|
|
page</link> 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 all supported versions of
|
|
&os;. Those that do not are specifically marked as such.
|
|
Each time a &os; release is made, a snapshot of the ports
|
|
tree at the time of release in also included in the
|
|
<filename>ports/</filename> directory.</para>
|
|
|
|
<para>&os; supports compressed binary packages to easily
|
|
install and uninstall ports. Use &man.pkg.7; to control
|
|
the installation of packages.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="how-do-download-ports-tree">
|
|
<para>How do I download the Ports tree? Should I be using
|
|
SVN?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Any of the methods listed here work:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Use portsnap for most use cases. Refer to <link
|
|
xlink:href="&url.books.handbook;/ports-using.html">Using
|
|
the Ports Collection</link> for instructions on how to
|
|
use this tool.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Use SVN if custom patches to the
|
|
ports tree are needed. Refer to <link
|
|
xlink:href="&url.books.handbook;/svn.html">Using
|
|
Subversion</link> for details.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="java">
|
|
<para>Does &os; support &java;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Refer to <link
|
|
xlink:href="&url.base;/java/index.html">https://www.FreeBSD.org/java/</link>
|
|
for more information.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="ports-4x">
|
|
<para>Why can I not build this port on my
|
|
&rel2.relx; -, or
|
|
&rel.relx; -STABLE machine?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If the installed &os; version lags
|
|
significantly behind <emphasis>-CURRENT</emphasis> or
|
|
<emphasis>-STABLE</emphasis>, update the
|
|
Ports Collection using the instructions in <link
|
|
xlink:href="&url.books.handbook;/ports-using.html">Using
|
|
the Ports Collection</link>. If the system is
|
|
up-to-date, someone might have committed a change to the
|
|
port which works for <emphasis>-CURRENT</emphasis> but
|
|
which broke the port for <emphasis>-STABLE</emphasis>.
|
|
<link xlink:href="https://bugs.FreeBSD.org/submit/">Submit</link>
|
|
a bug report, since the Ports Collection is supposed to
|
|
work
|
|
for both the <emphasis>-CURRENT</emphasis> and
|
|
<emphasis>-STABLE</emphasis> branches.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="make-index">
|
|
<para>I just tried to build <filename>INDEX</filename> using
|
|
<command>make index</command>, and it failed. Why?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>First, make sure that the Ports Collection is
|
|
up-to-date. 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>There are rare cases where <filename>INDEX</filename>
|
|
will not build due to odd cases involving
|
|
<varname>OPTIONS_SET</varname>
|
|
being set in <filename>make.conf</filename>. If
|
|
you suspect that this is the case, try to make
|
|
<filename>INDEX</filename> with those variables
|
|
turned off before reporting it to &a.ports;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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. Additional tools are available to simplify
|
|
port handling and are described the <link
|
|
xlink:href="&url.books.handbook;/ports-using.html">Upgrading
|
|
Ports</link> section in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="ports-major-upgrade">
|
|
<para>Do I need to recompile every port each time I perform
|
|
a major version update?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes! While a recent system will run with
|
|
software compiled under an older release,
|
|
things will randomly crash and fail to work once
|
|
other ports are installed or updated.</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 <link
|
|
xlink:href="&url.books.handbook;/updating-upgrading-freebsdupdate.html#freebsdupdate-upgrade">the
|
|
section on upgrades</link> in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 xml: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>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 (&man.sh.1;), 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. To keep <command>/bin/sh</command> small, we have
|
|
not provided many of the convenience features that other
|
|
shells have. That is why other more featureful shells
|
|
like <command>bash</command>, <command>scsh</command>,
|
|
&man.tcsh.1;, and <command>zsh</command> are available.
|
|
Compare the memory utilization of
|
|
these shells by looking at the <quote>VSZ</quote> and
|
|
<quote>RSS</quote> columns in a <command>ps -u</command>
|
|
listing.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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
|
|
<package>audio/timidity++</package> from ports then
|
|
install manually the GUS patches set by Eric A. Welsh,
|
|
available at <uri
|
|
xlink:href="http://alleg.sourceforge.net/digmid.html">http://alleg.sourceforge.net/digmid.html</uri>.
|
|
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 /tmp/juke/01.wav 01.mid</userinput></screen>
|
|
|
|
<para>The WAV files can then be converted to other formats
|
|
or burned onto audio CDs, as described in the <link
|
|
xlink:href="&url.books.handbook;/creating-cds.html">&os;
|
|
Handbook</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="kernelconfig">
|
|
<title>Kernel Configuration</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="make-kernel">
|
|
<para>I would like to customize my kernel. Is it
|
|
difficult?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Not at all! Check out the <link
|
|
xlink:href="&url.books.handbook;/kernelconfig.html">kernel
|
|
config section of the Handbook</link>.</para>
|
|
|
|
<note>
|
|
<para>The new <filename>kernel</filename> will be
|
|
installed to the <filename>/boot/kernel</filename>
|
|
directory along with its modules, while the old kernel
|
|
and its modules will be moved to the
|
|
<filename>/boot/kernel.old</filename> directory. If
|
|
a mistake is made in the
|
|
configuration, simply boot the previous version of the
|
|
kernel.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="why-kernel-big">
|
|
<para>Why is my kernel so big?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><literal>GENERIC</literal> kernels shipped with &os;
|
|
are compiled in <emphasis>debug mode</emphasis>.
|
|
Kernels built in debug mode contain debug data in
|
|
separate files that are used for debugging.
|
|
&os; releases prior to 11.0 store these debug files in
|
|
the same directory as the kernel itself,
|
|
<filename>/boot/kernel/</filename>.
|
|
In &os; 11.0 and later the debug files are stored in
|
|
<filename>/usr/lib/debug/boot/kernel/</filename>.
|
|
Note that there will be little or no performance loss from
|
|
running a debug kernel, and it is useful to keep one
|
|
around in case of a system panic.</para>
|
|
|
|
<para>When running low on disk space, there
|
|
are different options to reduce the size of
|
|
<filename>/boot/kernel/</filename> and
|
|
<filename>/usr/lib/debug/</filename>.</para>
|
|
|
|
<para>To not install the symbol files,
|
|
make sure the following line exists in
|
|
<filename>/etc/src.conf</filename>:</para>
|
|
|
|
<programlisting>WITHOUT_KERNEL_SYMBOLS=yes</programlisting>
|
|
|
|
<para>For more information see &man.src.conf.5;.</para>
|
|
|
|
<para>If you want to avoid building debug files altogether,
|
|
make sure that both of the following are true:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>This line does not exist in the kernel
|
|
configuration file:</para>
|
|
|
|
<programlisting>makeoptions DEBUG=-g</programlisting>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Do not run &man.config.8; with
|
|
<option>-g</option>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Either of the above settings will cause the kernel to
|
|
be built in debug mode.</para>
|
|
|
|
<para>To build and install only the specified modules, list
|
|
them in
|
|
<filename>/etc/make.conf</filename>:</para>
|
|
|
|
<programlisting>MODULES_OVERRIDE= <replaceable>accf_http ipfw</replaceable></programlisting>
|
|
|
|
<para>Replace <emphasis>accf_httpd ipfw</emphasis> with a
|
|
list of needed modules. Only the listed modules will be
|
|
built. This reduces the size of the kernel
|
|
directory and decreases the amount of time needed to
|
|
build the kernel. For more information, read
|
|
<filename>/usr/share/examples/etc/make.conf</filename>.</para>
|
|
|
|
<para>Unneeded devices can be removed from the kernel
|
|
to further reduce the size. See <xref
|
|
linkend="make-kernel"/> for more information.</para>
|
|
|
|
<para>To put any of these options into effect, follow the
|
|
instructions to <link
|
|
xlink:href="&url.books.handbook;/kernelconfig-building.html">build
|
|
and install</link> the new kernel.</para>
|
|
|
|
<para>For reference, the &os; 11 &arch.amd64; kernel
|
|
(<filename>/boot/kernel/kernel</filename>) is
|
|
approximately 25 MB.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The source
|
|
tree is different from the one used to build the
|
|
currently running system. When attempting an upgrade,
|
|
read <filename>/usr/src/UPDATING</filename>, paying
|
|
particular attention to the <quote>COMMON
|
|
ITEMS</quote> section at the end.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The <command>make
|
|
buildkernel</command> command did not complete
|
|
successfully. The <command>make
|
|
buildkernel</command> target relies on files
|
|
generated by the <command>make buildworld</command>
|
|
target to complete its job correctly.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Even when building <link
|
|
linkend="stable">&os;-STABLE</link>, it is possible
|
|
that the source tree was fetched at a time when it was
|
|
either being modified or it was broken.
|
|
Only releases are guaranteed to be
|
|
buildable, although <link
|
|
linkend="stable">&os;-STABLE</link> builds fine the
|
|
majority of the time. Try re-fetching the source tree
|
|
and see if the problem goes away. Try using a
|
|
different mirror in case the previous one is having
|
|
problems.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="scheduler-in-use">
|
|
<para>Which scheduler is in use on a
|
|
running system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<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: ULE</screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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
|
|
in the 4BSD scheduler.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="disks">
|
|
<title>Disks, File Systems, and Boot Loaders</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="adding-disks">
|
|
<para>How can I add my new hard disk to my &os;
|
|
system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <link
|
|
xlink:href="&url.books.handbook;/disks-adding.html">Adding
|
|
Disks</link> section in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 operating system on
|
|
the new disk, then move the user data over. This is
|
|
highly recommended when tracking
|
|
<emphasis>-STABLE</emphasis> for more than one release or
|
|
when updating a release instead of installing a new one.
|
|
Install booteasy on both disks with &man.boot0cfg.8; and
|
|
dual boot 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>Alternatively, partition and label the new disk with
|
|
either &man.sade.8; or &man.gpart.8;. If the disks are
|
|
MBR-formatted, booteasy can be installed on both disks
|
|
with &man.boot0cfg.8; so that the computer can dual boot
|
|
to the old or new system after the copying is done.</para>
|
|
|
|
<para>Once the new disk set up,
|
|
the data cannot just be copied. Instead, use tools that
|
|
understand device files and system flags, such as
|
|
&man.dump.8;. Although it is recommended
|
|
to move the data while in single-user mode, it
|
|
is not required.</para>
|
|
|
|
<para>When the disks are formatted with
|
|
<acronym>UFS</acronym>, never use anything but
|
|
&man.dump.8; and &man.restore.8; to move the root file
|
|
system. These commands should also be used when moving a
|
|
single partition to another empty partition. The sequence
|
|
of steps to use <command>dump</command> to move the data
|
|
from one <acronym>UFS</acronym> partitions 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, to move
|
|
<filename>/dev/ada1s1a</filename> with
|
|
<filename>/mnt</filename> as the temporary mount point,
|
|
type:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/ada1s1a</userinput>
|
|
&prompt.root; <userinput>mount /dev/ada1s1a /mnt</userinput>
|
|
&prompt.root; <userinput>cd /mnt</userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore rf -</userinput></screen>
|
|
|
|
<para>Rearranging partitions with
|
|
<command>dump</command> takes a bit more work. To merge a
|
|
partition like <filename>/var</filename> into its parent,
|
|
create the new partition large enough for both, move the
|
|
parent partition as described above, then move the child
|
|
partition into the empty directory that the first move
|
|
created:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/ada1s1a</userinput>
|
|
&prompt.root; <userinput>mount /dev/ada1s1a /mnt</userinput>
|
|
&prompt.root; <userinput>cd /mnt</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>/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/ada1s1a</userinput>
|
|
&prompt.root; <userinput>newfs /dev/ada1s1d</userinput>
|
|
&prompt.root; <userinput>mount /dev/ada1s1a /mnt</userinput>
|
|
&prompt.root; <userinput>mkdir /mnt/var</userinput>
|
|
&prompt.root; <userinput>mount /dev/ada1s1d /mnt/var</userinput>
|
|
&prompt.root; <userinput>cd /mnt</userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore rf -</userinput></screen>
|
|
|
|
<para>The &man.cpio.1; and &man.pax.1; utilities are also
|
|
available for moving user data. These are known to lose
|
|
file flag information, so use them with caution.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="safe-softupdates">
|
|
<para>Which partitions can safely use Soft Updates? I have
|
|
heard that Soft Updates on <filename>/</filename> can
|
|
cause problems. What about Journaled Soft Updates?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: Soft Updates can usually be safely used
|
|
on all partitions.</para>
|
|
|
|
<para>Long answer: Soft Updates has two characteristics
|
|
that may be undesirable on certain partitions. First, a
|
|
Soft Updates partition has a small chance of losing data
|
|
during a system crash. The partition will not be
|
|
corrupted as the data will simply be lost. Second, Soft
|
|
Updates can cause temporary space shortages.</para>
|
|
|
|
<para>When using Soft Updates, the kernel can take up to
|
|
thirty seconds to write changes to the physical disk.
|
|
When a large file is deleted the file still resides on
|
|
disk until the kernel actually performs the deletion.
|
|
This can cause a very simple race condition. Suppose
|
|
one large file is deleted and another large file is
|
|
immediately created. 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. This will
|
|
produce an error that the partition does not have enough
|
|
space, even though a large chunk of space has just been
|
|
released. A few seconds later, the file creation works as
|
|
expected.</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. This risk is
|
|
extremely small, but generally manageable.</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. 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 be aware that it exists. If
|
|
the system cannot tolerate this much risk, do not use
|
|
Soft Updates on the root file system!</para>
|
|
|
|
<para><filename>/</filename> is traditionally one of the
|
|
smallest partitions. If
|
|
<filename>/tmp</filename> is on
|
|
<filename>/</filename>, there may be intermittent
|
|
space problems. Symlinking <filename>/tmp</filename> to
|
|
<filename>/var/tmp</filename> will solve this
|
|
problem.</para>
|
|
|
|
<para>Finally, &man.dump.8; does not work in live mode (-L)
|
|
on a filesystem, with Journaled Soft Updates
|
|
(<acronym>SU+J</acronym>).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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.ext2fs.5; for more information.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>NTFS</term>
|
|
|
|
<listitem>
|
|
<para>FUSE based NTFS support is available as a port
|
|
(<package>sysutils/fusefs-ntfs</package>). For more
|
|
information see <link
|
|
xlink:href="http://www.tuxera.com/community/ntfs-3g-manual/"><application>ntfs-3g</application></link>.</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; includes the Network File System
|
|
<acronym>NFS</acronym> and the &os; Ports Collection
|
|
provides several FUSE applications to support many other
|
|
file systems.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <literal>E</literal> is the
|
|
second DOS partition on the second SCSI drive, there will
|
|
be a device file for <quote>slice 5</quote> in
|
|
<filename>/dev</filename>. To mount it:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t msdosfs /dev/da1s5 /dos/e</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="crypto-file-system">
|
|
<para>Is there a cryptographic file system for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, &man.gbde.8; and &man.geli.8;.
|
|
See the <link
|
|
xlink:href="&url.books.handbook;/disks-encrypting.html">Encrypting
|
|
Disk Partitions</link> section of the &os;
|
|
Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="grub-loader">
|
|
<para>How do I boot &os; and &linux; using
|
|
<application>GRUB</application>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>To boot &os; using <application>GRUB</application>,
|
|
add the following to either
|
|
<filename>/boot/grub/menu.lst</filename> or
|
|
<filename>/boot/grub/grub.conf</filename>, depending upon
|
|
which is used by the &linux; distribution.</para>
|
|
|
|
<programlisting>title &os; 9.1
|
|
root <replaceable>(hd0,a)</replaceable>
|
|
kernel /boot/loader</programlisting>
|
|
|
|
<para>Where <replaceable>hd0,a</replaceable> points to the
|
|
root partition on the first disk. To specify
|
|
the slice number, use something like this
|
|
<replaceable>(hd0,2,a)</replaceable>. By default, if the
|
|
slice number is omitted, <application>GRUB</application>
|
|
searches the first slice
|
|
which has the <literal>a</literal> partition.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 the &linux; boot
|
|
partition instead of in the Master Boot Record. You can
|
|
then boot LILO from
|
|
<application>BootEasy</application>.</para>
|
|
|
|
<para>This is recommended when running &windows; and &linux;
|
|
as it makes it simpler to get &linux; booting again if
|
|
&windows; is reinstalled.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="changing-bootprompt">
|
|
<para>How do I change the boot prompt from
|
|
<literal>???</literal> to something more
|
|
meaningful?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This cannot be accomplished with the standard boot
|
|
manager without rewriting it. There are a number of other
|
|
boot managers in the <filename>sysutils</filename>
|
|
category of the Ports Collection.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="removable-drives">
|
|
<para>How do I use a new removable drive?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If the drive already has a file system on it,
|
|
use a command like this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t msdosfs /dev/da0s1 /mnt</userinput></screen>
|
|
|
|
<para>If the drive will only be used with &os; systems,
|
|
partition it with <acronym>UFS</acronym> or
|
|
<acronym>ZFS</acronym>. This will provide long filename
|
|
support, improvement in performance, and stability. If
|
|
the drive will be used by other operating systems, a more
|
|
portable choice, such as msdosfs, is better.</para>
|
|
|
|
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/da0 count=2</userinput>
|
|
&prompt.root; <userinput>gpart create -s GPT /dev/da0</userinput>
|
|
&prompt.root; <userinput>gpart add -t freebsd-ufs /dev/da0</userinput></screen>
|
|
|
|
<para>Finally, create a new file system:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/da0p1</userinput></screen>
|
|
|
|
<para>and mount it:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount /dev/da0s1 /mnt</userinput></screen>
|
|
|
|
<para>It is a good idea to add a line to
|
|
<filename>/etc/fstab</filename> (see &man.fstab.5;) so you
|
|
can just type <command>mount /mnt</command> in the
|
|
future:</para>
|
|
|
|
<programlisting>/dev/da0p1 /mnt ufs rw,noauto 0 0</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="mount-cd-superblock">
|
|
<para>Why do I get <errorname>Incorrect super
|
|
block</errorname> when mounting a CD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The type of device to mount must be specified. This
|
|
is described in the Handbook section on <link
|
|
xlink:href="&url.books.handbook;/creating-cds.html#mounting-cd">Using
|
|
Data CDs</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="cdrom-not-configured">
|
|
<para>Why do I get <errorname>Device not
|
|
configured</errorname> when mounting a CD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This generally means that there is no CD in the
|
|
drive, or the drive is not visible on the bus.
|
|
Refer to the <link
|
|
xlink:href="&url.books.handbook;/creating-cds.html#mounting-cd">Using
|
|
Data CDs</link> section of the Handbook for a detailed
|
|
discussion of this issue.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>The CD probably uses the <quote>Joliet</quote>
|
|
extension for storing information about files and
|
|
directories. This is discussed in the Handbook section on
|
|
<link
|
|
xlink:href="&url.books.handbook;/creating-cds.html#mounting-cd">Using
|
|
Data CD-ROMs</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="burncd-isofs">
|
|
<para>A CD burned under &os; cannot be read
|
|
under any other operating system. Why?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This means a raw file was burned to the CD, rather
|
|
than creating an ISO 9660 file system. Take a look
|
|
at the Handbook section on <link
|
|
xlink:href="&url.books.handbook;/creating-cds.html#mounting-cd">Using
|
|
Data <acronym>CD</acronym>s</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <link
|
|
xlink:href="&url.books.handbook;/creating-cds.html#mkisofs">Writing
|
|
Data to an <acronym>ISO</acronym> File System</link>.
|
|
For more on working with CD-ROMs, see the <link
|
|
xlink:href="&url.books.handbook;/creating-cds.html">Creating
|
|
CDs Section</link> in the Storage chapter in the
|
|
Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="mount-audio-CD">
|
|
<para>Why can I not <command>mount</command> an audio
|
|
CD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Trying to mount an audio CD will produce an error
|
|
like <errorname>cd9660: /dev/cd0: 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.
|
|
Instead, use a program that reads audio CDs, such as the
|
|
<package>audio/xmcd</package> package or port.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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. To
|
|
load an earlier session, use the
|
|
<option>-s</option> command line argument. Refer to
|
|
&man.mount.cd9660.8; for specific examples.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="user-floppymount">
|
|
<para>How do I let ordinary users mount CD-ROMs, DVDs,
|
|
USB drives, and other removable media?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>As <systemitem class="username">root</systemitem> set
|
|
the sysctl variable <varname>vfs.usermount</varname> to
|
|
<literal>1</literal>.</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl vfs.usermount=1</userinput></screen>
|
|
|
|
<para>To make this persist across reboots, add the line
|
|
<literal>vfs.usermount=1</literal> to
|
|
<filename>/etc/sysctl.conf</filename> so that it is reset
|
|
at system boot time.</para>
|
|
|
|
<para>Users can only mount devices they have read
|
|
permissions to. To allow users to mount a device
|
|
permissions must be set in
|
|
<filename>/etc/devfs.conf</filename>.</para>
|
|
|
|
<para>For example, to allow users to mount the first USB
|
|
drive add:</para>
|
|
|
|
<programlisting># Allow all users to mount a USB drive.
|
|
own /dev/da0 root:operator
|
|
perm /dev/da0 0666</programlisting>
|
|
|
|
<para>All users can now mount devices they could read onto a
|
|
directory that they own:</para>
|
|
|
|
<screen>&prompt.user; <userinput>mkdir ~/my-mount-point</userinput>
|
|
&prompt.user; <userinput>mount -t msdosfs /dev/da0 ~/my-mount-point</userinput></screen>
|
|
|
|
<para>Unmounting the device is simple:</para>
|
|
|
|
<screen>&prompt.user; <userinput>umount ~/my-mount-point</userinput></screen>
|
|
|
|
<para>Enabling <varname>vfs.usermount</varname>, however,
|
|
has negative security implications. A better way to
|
|
access &ms-dos; formatted media is to use the
|
|
<package>emulators/mtools</package> package in the Ports
|
|
Collection.</para>
|
|
|
|
<note>
|
|
<para>The device name used in the previous examples must
|
|
be changed according to the configuration.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>This is due to how these commands actually work.
|
|
<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 the file is
|
|
deleted, 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.
|
|
As an example, consider a file large enough
|
|
to affect the output of
|
|
<command>du</command> and <command>df</command>. A
|
|
file being viewed with <command>more</command> can be
|
|
deleted wihout causing an error.
|
|
The entry is
|
|
removed from the directory so no other program or user can
|
|
access it. However, <command>du</command> shows that it
|
|
is gone as 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
|
|
the <command>more</command> session ends,
|
|
<command>du</command> and <command>df</command> will
|
|
agree.</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>/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>
|
|
|
|
<para>Note that Soft Updates can delay the freeing of disk
|
|
space and it can take up to 30 seconds for the
|
|
change to be visible.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="add-swap-space">
|
|
<para>How can I add more swap space?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This section <link
|
|
xlink:href="&url.books.handbook;/adding-swap-space.html">of the Handbook</link>
|
|
describes how to do this.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 xml: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
|
|
<systemitem class="username">root</systemitem> user.
|
|
&man.df.1; does not count that space when calculating the
|
|
<literal>Capacity</literal> column, so it can exceed 100%.
|
|
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 <option>-m</option> in
|
|
&man.tunefs.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="all-about-zfs">
|
|
<title>ZFS</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="how-much-ram-for-zfs">
|
|
<para>What is the minimum amount of RAM one should have to
|
|
run ZFS?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>A minimum of 4GB of RAM is required for comfortable
|
|
usage, but individual workloads can vary widely.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="what-is-zil">
|
|
<para>What is the ZIL and when does it get used?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <acronym>ZIL</acronym> (<acronym>ZFS</acronym>
|
|
intent log) is a write log used to implement posix write
|
|
commitment semantics across crashes. Normally writes
|
|
are bundled up into transaction groups and written to
|
|
disk when filled (<quote>Transaction Group
|
|
Commit</quote>). However syscalls like &man.fsync.2;
|
|
require a commitment that the data is written to stable
|
|
storage before returning. The ZIL is needed for writes
|
|
that have been acknowledged as written but which are not
|
|
yet on disk as part of a transaction. The transaction
|
|
groups are timestamped. In the event of a crash the
|
|
last valid timestamp is found and missing data is merged
|
|
in from the ZIL.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="need-ssd-for-zil">
|
|
<para>Do I need a SSD for ZIL?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>By default, ZFS stores the ZIL in the pool with all
|
|
the data. If an application has a heavy write load,
|
|
storing the ZIL in a separate device that has very fast
|
|
synchronous, sequential write performance can improve
|
|
overall system. For other workloads, a SSD is unlikely
|
|
to make much of an improvement.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="what-is-l2arc">
|
|
<para>What is the L2ARC?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <acronym>L2ARC</acronym> is a read cache stored
|
|
on a fast device such as an <acronym>SSD</acronym>.
|
|
This cache is not persistent across reboots. Note that
|
|
RAM is used as the first layer of cache and the L2ARC is
|
|
only needed if there is insufficient RAM.</para>
|
|
|
|
<para>L2ARC needs space in the ARC to index it. So,
|
|
perversely, a working set that fits perfectly in the
|
|
ARC will not fit perfectly any more if a L2ARC is used
|
|
because part of the ARC is holding the L2ARC index,
|
|
pushing part of the working set into the L2ARC which is
|
|
slower than RAM.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="should-enable-dedup">
|
|
<para>Is enabling deduplication advisable?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Generally speaking, no.</para>
|
|
|
|
<para>Deduplication takes up a significant amount of RAM
|
|
and may slow down read and write disk access times.
|
|
Unless one is storing data that is very heavily
|
|
duplicated, such as virtual machine images or user
|
|
backups, it is possible that deduplication will do more
|
|
harm than good. Another consideration is the inability
|
|
to revert deduplication status. If data is written when
|
|
deduplication is enabled, disabling dedup will not cause
|
|
those blocks which were deduplicated to be replicated
|
|
until they are next modified.</para>
|
|
|
|
<para>Deduplication can also lead to some unexpected
|
|
situations. In particular, deleting files may become
|
|
much slower.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="zpool-fully-full">
|
|
<para>I cannot delete or create files on my ZFS pool.
|
|
How can I fix this?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This could happen because the pool is 100% full.
|
|
ZFS requires space on the disk to write transaction
|
|
metadata. To restore the pool to a usable state,
|
|
truncate the file to delete:</para>
|
|
|
|
<screen>&prompt.user; <userinput>truncate -s 0 unimportant-file</userinput></screen>
|
|
|
|
<para>File truncation works because a new transaction is
|
|
not started, new spare blocks are created
|
|
instead.</para>
|
|
|
|
<note>
|
|
<para>On systems with additional ZFS dataset tuning,
|
|
such as deduplication, the space may not be
|
|
immediately available</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="zfs-ssd-trim">
|
|
<para>Does ZFS support TRIM for Solid State Drives?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>ZFS TRIM support was added to &os; 10-CURRENT
|
|
with revision r<revnumber>240868</revnumber>. ZFS TRIM
|
|
support was added to all &os;-STABLE branches in
|
|
r<revnumber>252162</revnumber> and
|
|
r<revnumber>251419</revnumber>, respectively.</para>
|
|
|
|
<para>ZFS TRIM is enabled by default, and can be turned
|
|
off by adding this line to
|
|
<filename>/etc/sysctl.conf</filename>:</para>
|
|
|
|
<programlisting>vfs.zfs.trim_disable=1</programlisting>
|
|
|
|
<note>
|
|
<para>ZFS TRIM may not work with all configurations,
|
|
such as a ZFS filesystem on a GELI-backed
|
|
device.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="admin">
|
|
<title>System Administration</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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> which is
|
|
described in &man.rc.conf.5;. System startup scripts
|
|
such as <filename>/etc/rc</filename> and
|
|
<filename>/etc/rc.d</filename>, which are described in
|
|
&man.rc.8;, include this file. <emphasis>Do not edit this
|
|
file!</emphasis> Instead, to edit an entry in
|
|
<filename>/etc/defaults/rc.conf</filename>, copy the line
|
|
into <filename>/etc/rc.conf</filename> and change it
|
|
there.</para>
|
|
|
|
<para>For example, if to start &man.named.8;, the
|
|
included DNS server:</para>
|
|
|
|
<screen>&prompt.root; <userinput>echo 'named_enable="YES"' >> /etc/rc.conf</userinput></screen>
|
|
|
|
<para>To start up local services, place shell scripts in the
|
|
<filename>/usr/local/etc/rc.d</filename> directory. These
|
|
shell scripts should be set executable, the default file
|
|
mode is <literal>555</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 xml:id="root-not-found-cron-errors">
|
|
<para>Why do I keep getting messages like <errorname>root:
|
|
not found</errorname> after editing
|
|
<filename>/etc/crontab</filename>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is normally caused by editing the system crontab.
|
|
This is not the correct way to do things as the system
|
|
crontab has a different format to the per-user crontabs.
|
|
The system
|
|
crontab has an extra field, specifying which user to run
|
|
the command as. &man.cron.8; assumes this user is the
|
|
first word of the command to execute. Since no such
|
|
command exists, this error message is displayed.</para>
|
|
|
|
<para>To delete the extra, incorrect crontab:</para>
|
|
|
|
<screen>&prompt.root; <userinput>crontab -r</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <systemitem
|
|
class="username">root</systemitem>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is a security feature. In order to
|
|
<command>su</command> to
|
|
<systemitem class="username">root</systemitem>, or any
|
|
other account with superuser privileges, the user account
|
|
must be a member of the
|
|
<systemitem class="groupname">wheel</systemitem> group.
|
|
If this feature were not there, anybody with an
|
|
account on a system who also found out <systemitem
|
|
class="username">root</systemitem>'s password would be
|
|
able to gain superuser level access to the system.</para>
|
|
|
|
<para>To allow someone to <command>su</command> to
|
|
<systemitem class="username">root</systemitem>, put
|
|
them in the <systemitem
|
|
class="groupname">wheel</systemitem> group using
|
|
<command>pw</command>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>pw groupmod wheel -m lisa</userinput></screen>
|
|
|
|
<para>The above example will add user <systemitem
|
|
class="username">lisa</systemitem> to the group
|
|
<systemitem class="groupname">wheel</systemitem>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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, 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 that editor is on
|
|
a network file system, either configure
|
|
the network manually before mounting the network file
|
|
systems, or use an editor which resides on a local file
|
|
system, such as &man.ed.1;.</para>
|
|
|
|
<para>In order to use a full screen editor such as
|
|
&man.vi.1; or &man.emacs.1;, run
|
|
<command>export TERM=xterm</command>
|
|
so that these editors can load the correct data from the
|
|
&man.termcap.5; database.</para>
|
|
|
|
<para>After performing these steps, edit
|
|
<filename>/etc/rc.conf</filename> to
|
|
fix the syntax error. The error message displayed
|
|
immediately after the kernel boot messages should indicate
|
|
the number of the line in the file which is at
|
|
fault.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="printer-setup">
|
|
<para>Why am I having trouble setting up my printer?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <link
|
|
xlink:href="&url.books.handbook;/printing.html">Handbook
|
|
entry on printing</link> for troubleshooting
|
|
tips.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="keyboard-mappings">
|
|
<para>How can I correct the keyboard mappings for my
|
|
system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Refer to the Handbook section on <link
|
|
xlink:href="&url.books.handbook;/using-localization.html">using
|
|
localization</link>, specifically the section on <link
|
|
xlink:href="&url.books.handbook;/using-localization.html#setting-console">console
|
|
setup</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="user-quotas">
|
|
<para>Why can I not get user quotas to work properly?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>It is possible that the kernel is not configured
|
|
to use quotas. In this case,
|
|
add the following line to the kernel configuration
|
|
file and recompile the kernel:</para>
|
|
|
|
<programlisting>options QUOTA</programlisting>
|
|
|
|
<para>Refer to the <link
|
|
xlink:href="&url.books.handbook;/quotas.html">Handbook
|
|
entry on quotas</link> for full details.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Do not turn on quotas on
|
|
<filename>/</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Put the quota file on the file system that the
|
|
quotas are to be enforced on:</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>/usr</filename></entry>
|
|
|
|
<entry><filename>/usr/admin/quotas</filename></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename>/home</filename></entry>
|
|
|
|
<entry><filename>/home/admin/quotas</filename></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>…</entry>
|
|
|
|
<entry>…</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</listitem>
|
|
</orderedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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. With a custom
|
|
kernel, support may be loaded with the
|
|
<filename>sysvshm.ko</filename>,
|
|
<filename>sysvsem.ko</filename> and
|
|
<filename>sysvmsg.ko</filename> kernel modules, or
|
|
enabled in the custom kernel by adding the following lines
|
|
to the kernel configuration file:</para>
|
|
|
|
<programlisting>options SYSVSHM # enable shared memory
|
|
options SYSVSEM # enable for semaphores
|
|
options SYSVMSG # enable for messaging</programlisting>
|
|
|
|
<para>Recompile and install the kernel.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="sendmail-alternative">
|
|
<para>What other mail-server software can I use instead of
|
|
<application>Sendmail</application>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <link
|
|
xlink:href="http://www.sendmail.org/"><application>Sendmail</application></link>
|
|
server is the default mail-server software for &os;, but
|
|
it can be replaced with another
|
|
MTA installed from the Ports Collection. Available ports
|
|
include <package>mail/exim</package>,
|
|
<package>mail/postfix</package>, and
|
|
<package>mail/qmail</package>. Search the mailing lists
|
|
for discussions regarding the advantages and disadvantages
|
|
of the available MTAs.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="forgot-root-pw">
|
|
<para>I have forgotten the <systemitem
|
|
class="username">root</systemitem> 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> which will display a
|
|
&prompt.root; prompt. Enter <command>mount
|
|
-urw /</command> to remount the 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 <systemitem
|
|
class="username">root</systemitem> password then run
|
|
&man.exit.1; to continue booting.</para>
|
|
|
|
<note>
|
|
<para>If you are still prompted to give the <systemitem
|
|
class="username">root</systemitem> 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>Live CD</guimenuitem> or
|
|
<guimenuitem>Shell</guimenuitem> at the beginning of the
|
|
install process and issue the commands mentioned above.
|
|
Mount the specific partition in this
|
|
case and then chroot to it. For example, replace
|
|
<command>mount -urw /</command> with
|
|
<command>mount /dev/ada0p1 /mnt; chroot /mnt</command>
|
|
for a system on
|
|
<replaceable>ada0p1</replaceable>.</para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>If the root partition cannot be mounted from
|
|
single-user mode, it is possible that the partitions are
|
|
encrypted and it is impossible to mount them without the
|
|
access keys. For more information see the section
|
|
about encrypted disks in the &os; <link
|
|
xlink:href="&url.books.handbook;/disks-encrypting.html">Handbook</link>.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>When using &man.syscons.4;, the default console
|
|
driver, build and install a new kernel with this 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 the kernel is compiled
|
|
with <literal>SC_DISABLE_REBOOT</literal>.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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' file(s)</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, use &man.tr.1;:</para>
|
|
|
|
<screen>&prompt.user; <userinput>tr -d '\r' < dos-text-file > unix-file</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 <package>converters/dosunix</package> port from the
|
|
Ports Collection. Consult its documentation about the
|
|
details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>
|
|
|
|
<screen>&prompt.root; <userinput>shutdown now</userinput>
|
|
&prompt.root; <userinput>return</userinput>
|
|
&prompt.root; <userinput>exit</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 9.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 Subversion branches, refer to the <link
|
|
xlink:href="&url.articles.releng;/article.html">Release
|
|
Engineering</link> article.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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: the security level is
|
|
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. To check the current
|
|
security level:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
|
|
|
|
<para>The security level cannot be lowered in multi-user
|
|
mode, so boot to single-user 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 xml: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: the system is at a 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. To
|
|
check the security level:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
|
|
|
|
<para>The security level cannot be lowered in multi-user
|
|
mode. Either boot to single-user mode to change the date
|
|
or change the security level in
|
|
<filename>/etc/rc.conf</filename> and 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 xml: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>/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 xml:id="unsetting-schg">
|
|
<para>Why can I not unset the <literal>schg</literal> file
|
|
flag?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The system is running a securelevel greater than 0.
|
|
Lower the securelevel and try again. For
|
|
more information, see <link linkend="securelevel">the <acronym>FAQ</acronym>
|
|
entry on securelevel</link> and the &man.init.8; manual
|
|
page.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 when there is a huge amount of RAM and users are
|
|
accessing tens of thousands of tiny files.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 xml: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 xml:id="var-empty">
|
|
<para>What is <filename>/var/empty</filename>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><filename>/var/empty</filename> is a directory that
|
|
the &man.sshd.8; program uses when performing privilege
|
|
separation. The <filename>/var/empty</filename>
|
|
directory is empty, owned by <systemitem
|
|
class="username">root</systemitem> and has the
|
|
<literal>schg</literal> flag set. This directory should
|
|
not be deleted.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="newsyslog-expectations">
|
|
<para>I just changed
|
|
<filename>/etc/newsyslog.conf</filename>. How can I check
|
|
if it does what I expect?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>To see what &man.newsyslog.8; will do, use the
|
|
following:</para>
|
|
|
|
<screen>&prompt.user; <userinput>newsyslog -nrvv</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="timezone">
|
|
<para>My time is wrong, how can I change the
|
|
timezone?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use &man.tzsetup.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="x">
|
|
<title>The X Window System and Virtual Consoles</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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;. <link xlink:href="http://www.x.org/wiki/">The X.Org
|
|
Foundation</link> administers the <link
|
|
xlink:href="http://en.wikipedia.org/wiki/X_Window_System_core_protocol">X
|
|
protocol standards</link>, with the current reference
|
|
implementation, version 11 release &xorg.version;, so
|
|
references are often 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 xml:id="running-X">
|
|
<para>I want to run &xorg;, how do I go about it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>To install &xorg; do one of the following:</para>
|
|
|
|
<para>Use the <package>x11/xorg</package>
|
|
meta-port, which builds and installs every &xorg;
|
|
component.</para>
|
|
|
|
<para>Use <package>x11/xorg-minimal</package>, which builds
|
|
and installs only the necessary &xorg; components.</para>
|
|
|
|
<para>Install &xorg; from &os; packages:</para>
|
|
|
|
<screen><userinput>&prompt.root; pkg install xorg</userinput></screen>
|
|
|
|
<para>After the installation of &xorg;, follow the
|
|
instructions from the <link
|
|
xlink:href="&url.books.handbook;/x-config.html">X11
|
|
Configuration</link> section of the &os;
|
|
Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="running-X-securelevels">
|
|
<para>I <emphasis>tried</emphasis> to run X, but I get a
|
|
<errorname>No devices detected.</errorname> error when I
|
|
type <command>startx</command>. What do I do now?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The 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>There are two solutions to the problem: set the
|
|
<literal>securelevel</literal> back down to zero or run
|
|
&man.xdm.1; (or an alternative display manager) 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 xml:id="x-and-moused">
|
|
<para>Why does my mouse not work with X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>When using &man.syscons.4;, the default console
|
|
driver, &os; can be configured to support a mouse pointer
|
|
on each virtual screen. To avoid conflicting with X,
|
|
&man.syscons.4; supports a virtual device called
|
|
<filename>/dev/sysmouse</filename>. All mouse events
|
|
received from the real mouse device are written to the
|
|
&man.sysmouse.4; device via &man.moused.8;. To use the
|
|
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 the following lines exist:</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
|
|
<filename>/dev/mouse</filename> under X. To make this
|
|
work, <filename>/dev/mouse</filename> should be linked
|
|
to <filename>/dev/sysmouse</filename> (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 <systemitem
|
|
class="username">root</systemitem>):</para>
|
|
|
|
<screen>&prompt.root; <userinput>service devfs restart</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="x-and-wheel">
|
|
<para>My mouse has a fancy wheel. Can I use it in X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, if X is configured for a 5 button mouse. To
|
|
do this, 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>, as seen in this
|
|
example:</para>
|
|
|
|
<programlisting>Section "InputDevice"
|
|
Identifier "Mouse1"
|
|
Driver "mouse"
|
|
Option "Protocol" "auto"
|
|
Option "Device" "/dev/sysmouse"
|
|
Option "Buttons" "5"
|
|
Option "ZAxisMapping" "4 5"
|
|
EndSection</programlisting>
|
|
|
|
<para>To use the mouse in
|
|
<application>Emacs</application>, also add the following
|
|
lines to<filename>~/.emacs</filename>:</para>
|
|
|
|
<programlisting>;; wheel mouse
|
|
(global-set-key [mouse-4] 'scroll-down)
|
|
(global-set-key [mouse-5] 'scroll-up)</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="x-and-synaptic">
|
|
<para>My laptop has a Synaptics touchpad. Can I use it in
|
|
X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, after configuring a few things to make
|
|
it work.</para>
|
|
|
|
<para>In order to use the Xorg synaptics driver,
|
|
first remove <literal>moused_enable</literal> from
|
|
<filename>rc.conf</filename>.</para>
|
|
|
|
<para>To enable synaptics, add the following line to
|
|
<filename>/boot/loader.conf</filename>:</para>
|
|
|
|
<programlisting>hw.psm.synaptics_support="1"</programlisting>
|
|
|
|
<para>Add the following to
|
|
<filename>/etc/X11/xorg.conf</filename>:</para>
|
|
|
|
<programlisting>Section "InputDevice"
|
|
Identifier "Touchpad0"
|
|
Driver "synaptics"
|
|
Option "Protocol" "psm"
|
|
Option "Device" "/dev/psm0"
|
|
EndSection</programlisting>
|
|
|
|
<para>And be sure to add the following into the
|
|
<quote>ServerLayout</quote> section:</para>
|
|
|
|
<programlisting>InputDevice "Touchpad0" "SendCoreEvents"</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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, 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 xml:id="virtual-console">
|
|
<para>What is a virtual console and how do I make
|
|
more?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Virtual consoles provide
|
|
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.
|
|
Type in your login name and password to
|
|
start working on the first virtual
|
|
console.</para>
|
|
|
|
<para>To start another
|
|
session, perhaps to look at documentation for a program
|
|
or to read mail while waiting for an
|
|
FTP transfer to finish,
|
|
hold down <keycap>Alt</keycap> and press
|
|
<keycap>F2</keycap>. This will display the login prompt
|
|
for the second virtual
|
|
console. To go back to the
|
|
original session, press <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 virtual consoles, edit
|
|
<filename>/etc/ttys</filename> (see &man.ttys.5;) and add
|
|
entries for <filename>ttyv8</filename> to
|
|
<filename>ttyvc</filename>, 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" xterm on secure
|
|
ttyv9 "/usr/libexec/getty Pc" xterm on secure
|
|
ttyva "/usr/libexec/getty Pc" xterm on secure
|
|
ttyvb "/usr/libexec/getty Pc" xterm on secure</programlisting>
|
|
|
|
<para>The more virtual
|
|
terminals, the more resources that are used. This can be
|
|
problematic on systems with 8 MB RAM or less.
|
|
Consider changing <literal>secure</literal> to
|
|
<literal>insecure</literal>.</para>
|
|
|
|
<important>
|
|
<para>In order to run an X server, at least one virtual
|
|
terminal must be left to <literal>off</literal> for it
|
|
to use. This means that only eleven of the Alt-function
|
|
keys can be used as virtual consoles so that one is left
|
|
for the X server.</para>
|
|
</important>
|
|
|
|
<para>For example, to run X and eleven virtual consoles, the
|
|
setting for virtual terminal 12 should be:</para>
|
|
|
|
<programlisting>ttyvb "/usr/libexec/getty Pc" xterm off secure</programlisting>
|
|
|
|
<para>The easiest way to activate the
|
|
virtual consoles is to reboot.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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. Press <keycombo
|
|
action="simul"><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo>
|
|
to return to the first virtual console.</para>
|
|
|
|
<para>Once at a text console, use
|
|
<keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F<replaceable>n</replaceable></keycap></keycombo>
|
|
to move between them.</para>
|
|
|
|
<para>To return to the X session, switch to the
|
|
virtual console running X. If X was started from the
|
|
command line using <command>startx</command>,
|
|
the X session will attach to the next unused virtual
|
|
console, not the text console from which it was invoked.
|
|
For eight active virtual terminals, X will
|
|
run on the ninth, so use <keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F9</keycap></keycombo>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 runs
|
|
<command>xdm</command> from
|
|
<filename>rc.local</filename> (see &man.rc.8;) or from an
|
|
<filename>X</filename> script in
|
|
<filename>/usr/local/etc/rc.d</filename>. Both are
|
|
equally valid, and one may work in situations where the
|
|
other does not. In both cases the result is the same: X
|
|
will pop up a graphical login prompt.</para>
|
|
|
|
<para>The &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.
|
|
<command>xdm</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>When starting <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
|
|
<filename>/usr/local/lib/X11/xdm/Xservers</filename>:</para>
|
|
|
|
<programlisting>:0 local /usr/local/bin/X vt4</programlisting>
|
|
|
|
<para>The above example will direct the X server to run in
|
|
<filename>/dev/ttyv3</filename>. 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 xml:id="xconsole-failure">
|
|
<para>Why do I get <errorname>Couldn't open
|
|
console</errorname> when I run
|
|
<command>xconsole</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>When <application>X</application> is started with
|
|
<command>startx</command>, the permissions on
|
|
<filename>/dev/console</filename> 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
|
|
<filename>/dev/ttyv0</filename> will own the
|
|
console.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="ps2-x">
|
|
<para>Why does my PS/2 mouse misbehave under X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The mouse and the mouse driver may have become out of
|
|
synchronization. In rare cases, the driver may also
|
|
erroneously report synchronization errors:</para>
|
|
|
|
<programlisting>psmintr: out of sync (xxxx != yyyy)</programlisting>
|
|
|
|
<para>If this happens, disable the synchronization check
|
|
code by setting the driver flags for the PS/2 mouse driver
|
|
to <literal>0x100</literal>. This can be easiest achieved
|
|
by adding <literal>hint.psm.0.flags="0x100"</literal> to
|
|
<filename>/boot/loader.conf</filename> and
|
|
rebooting.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="mouse-button-reverse">
|
|
<para>How do I reverse the mouse buttons?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Type
|
|
<command>xmodmap -e "pointer = 3 2 1"</command>. Add this
|
|
command to <filename>~/.xinitrc</filename> or
|
|
<filename>~/.xsession</filename> to make it happen
|
|
automatically.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <link
|
|
xlink:href="&url.books.handbook;/boot-splash.html">Boot
|
|
Time Splash Screens</link> section of the &os;
|
|
Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="windows-keys">
|
|
<para>Can I use the <keycap>Windows</keycap> keys on my
|
|
keyboard in X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Use &man.xmodmap.1; to
|
|
define which functions the keys should perform.</para>
|
|
|
|
<para>Assuming all Windows keyboards are
|
|
standard, 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
|
|
<keycap>AltGr</keycap></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><keycode>117</keycode> —
|
|
<keycap>Menu</keycap>, to the left of the right-hand
|
|
<keycap>Ctrl</keycap></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>To have the <keycap>Windows</keycap> key-mappings
|
|
enabled automatically every time X is started, either put
|
|
the <command>xmodmap</command> commands in
|
|
<filename>~/.xinitrc</filename> or, preferably, create
|
|
a <filename>~/.xmodmaprc</filename> and include the
|
|
<command>xmodmap</command> options, one per line, then add
|
|
the following line to
|
|
<filename>~/.xinitrc</filename>:</para>
|
|
|
|
<programlisting>xmodmap $HOME/.xmodmaprc</programlisting>
|
|
|
|
<para>For example, to 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 the window manager.</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>For the <package>x11-wm/fvwm2</package> desktop
|
|
manager, one 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
|
|
menu even if the cursor is not on the
|
|
desktop, which is useful when no part of
|
|
the desktop is visible.</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 xml: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; and the type of video
|
|
chip. For an nVidia chip, use
|
|
the binary drivers provided for &os; by installing one of
|
|
the following ports:</para>
|
|
|
|
<para>The latest versions of nVidia cards are supported
|
|
by the <package>x11/nvidia-driver</package>
|
|
port.</para>
|
|
|
|
<para>Older drivers are available as
|
|
<package>x11/nvidia-driver-<replaceable>###</replaceable></package></para>
|
|
|
|
<para>nVidia provides detailed information on which
|
|
card is supported by which driver on their web site: <uri
|
|
xlink:href="http://www.nvidia.com/object/IO_32667.html">http://www.nvidia.com/object/IO_32667.html</uri>.</para>
|
|
|
|
<para>For Matrox G200/G400, check the
|
|
<package>x11-drivers/xf86-video-mga</package>
|
|
port.</para>
|
|
|
|
<para>For ATI Rage 128 and Radeon see
|
|
&man.ati.4x;, &man.r128.4x; and &man.radeon.4x;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="networking">
|
|
<title>Networking</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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, see <link
|
|
xlink:href="&url.books.handbook;/network-diskless.html">the
|
|
Handbook entry on diskless booting</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="router">
|
|
<para>Can a &os; box be used as a dedicated network
|
|
router?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Refer to the Handbook entry on <link
|
|
xlink:href="&url.books.handbook;/advanced-networking.html">advanced
|
|
networking</link>, specifically the section on <link
|
|
xlink:href="&url.books.handbook;/network-routing.html">routing
|
|
and gateways</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>Dialup users must use <option>-nat</option>
|
|
and set <literal>gateway_enable</literal> to
|
|
<emphasis>YES</emphasis> in
|
|
<filename>/etc/rc.conf</filename>. For more information,
|
|
refer to &man.ppp.8; or the <link
|
|
xlink:href="&url.books.handbook;/userppp.html">Handbook
|
|
entry on user PPP</link>.</para>
|
|
|
|
<para>If the connection to the Internet is over Ethernet,
|
|
use &man.natd.8;. A tutorial can be found in the <link
|
|
xlink:href="&url.books.handbook;/firewalls-ipfw.html#network-natd">natd</link>
|
|
section of the Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="slip-ppp-support">
|
|
<para>Does &os; support PPP?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. &man.ppp.8; provides support for both incoming
|
|
and outgoing connections.</para>
|
|
|
|
<para>For more information on how to use this, refer to
|
|
the <link
|
|
xlink:href="&url.books.handbook;/ppp-and-slip.html">Handbook
|
|
chapter on PPP</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="natd">
|
|
<para>Does &os; support NAT or Masquerading?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. For instructions on how to use NAT over a PPP
|
|
connection, see the <link
|
|
xlink:href="&url.books.handbook;/userppp.html">Handbook
|
|
entry on PPP</link>. To use NAT over
|
|
some other sort of network connection, look at the
|
|
<link
|
|
xlink:href="&url.books.handbook;/firewalls-ipfw.html#network-natd">natd</link>
|
|
section of the Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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, add
|
|
<literal>netmask 0xffffffff</literal> to this
|
|
command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>ed0</replaceable> alias <replaceable>192.0.2.2 </replaceable>netmask 0xffffffff</userinput></screen>
|
|
|
|
<para>Otherwise, 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>More information can be found in the &os; <link
|
|
xlink:href="&url.books.handbook;/configtuning-virtual-hosts.html">Handbook</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 linuxbox:/blah /mnt</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>.
|
|
Review &man.exports.5; and the <link
|
|
xlink:href="&url.books.handbook;/network-nfs.html">NFS</link>
|
|
entry in the Handbook, especially the section on <link
|
|
xlink:href="&url.books.handbook;/network-nfs.html#configuring-nfs">configuring
|
|
NFS</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="ip-multicast">
|
|
<para>How do I enable IP multicast support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Install the <package>net/mrouted</package> package
|
|
or port and add
|
|
<literal>mrouted_enable="YES"</literal> to
|
|
<filename>/etc/rc.conf</filename> start this service at
|
|
boot time.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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; <link
|
|
xlink:href="&url.books.handbook;/mail-trouble.html">Handbook</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="network-permission-denied">
|
|
<para>Why do I get an error, <errorname>Permission
|
|
denied</errorname>, for all networking
|
|
operations?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If the kernel is compiled with the
|
|
<literal>IPFIREWALL</literal> option, be aware
|
|
that the default policy is to deny all packets that are
|
|
not explicitly allowed.</para>
|
|
|
|
<para>If the firewall is unintentionally misconfigured,
|
|
restore network operability by
|
|
typing the following as <systemitem
|
|
class="username">root</systemitem>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ipfw add 65534 allow all from any to any</userinput></screen>
|
|
|
|
<para>Consider setting
|
|
<literal>firewall_type="open"</literal> in
|
|
<filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>For further information on configuring this
|
|
firewall, see the <link
|
|
xlink:href="&url.books.handbook;/firewalls-ipfw.html">Handbook
|
|
chapter</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 network address translation (NAT) is
|
|
needed instead of just forwarding packets. A
|
|
<quote>fwd</quote> rule only forwards packets, it does not
|
|
actually change the data inside the packet. Consider this
|
|
rule:</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
|
|
not 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"><acronym>FAQ</acronym> about
|
|
redirecting services</link>, the &man.natd.8; manual, or
|
|
one of the several port redirecting utilities in the <link
|
|
xlink:href="&url.base;/ports/index.html">Ports
|
|
Collection</link> for a correct way to do this.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="service-redirect">
|
|
<para>How can I redirect service requests from one machine
|
|
to another?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FTP and other service requests can be redirected with
|
|
the <package>sysutils/socket</package> package or port.
|
|
Replace the entry for the service in
|
|
<filename>/etc/inetd.conf</filename> to call
|
|
<command>socket</command>, as seen in this example for
|
|
<application>ftpd</application>:</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 xml: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;. <link
|
|
xlink:href="http://www.sonycsl.co.jp/person/kjc/programs.html">ALTQ</link>
|
|
has been integrated into &os; as part of &man.pf.4;.
|
|
Bandwidth Manager from <link
|
|
xlink:href="http://www.etinc.com/">Emerging
|
|
Technologies</link> is a commercial product.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="bpf-not-configured">
|
|
<para>Why do I get <errorname>/dev/bpf0: device not
|
|
configured</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The running application requires the Berkeley
|
|
Packet Filter (&man.bpf.4;), but it was removed from a
|
|
custom kernel. Add this to the kernel config file and
|
|
build a new kernel:</para>
|
|
|
|
<programlisting>device bpf # Berkeley Packet Filter</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 xml: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 kernel message indicates that some activity is
|
|
provoking it to send a large amount of ICMP or TCP reset
|
|
(RST) responses. 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 indicates how many
|
|
packets the kernel would have sent if the limit was not in
|
|
place, and the second indicates the limit. This limit
|
|
is controlled using
|
|
<varname>net.inet.icmp.icmplim</varname>. This example
|
|
sets the limit to <literal>300</literal>
|
|
packets per second:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl net.inet.icmp.icmplim=300</userinput></screen>
|
|
|
|
<para>To disable these messages
|
|
without disabling response
|
|
limiting, use
|
|
<varname>net.inet.icmp.icmplim_output</varname>
|
|
to disable the output:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl net.inet.icmp.icmplim_output=0</userinput></screen>
|
|
|
|
<para>Finally, to disable response limiting completely,
|
|
set <varname>net.inet.icmp.icmplim</varname> to
|
|
<literal>0</literal>. Disabling response limiting is
|
|
discouraged for the reasons listed above.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 the 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. This is most commonly seen on cable modem
|
|
networks. It is harmless, and should not affect the
|
|
performance of the &os; system.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 xml:id="security">
|
|
<title>Security</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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 only able to run inside the walls.
|
|
Since nothing the process does in regards to executing
|
|
code is supposed to be able to breach the walls, a
|
|
detailed audit of its code is not needed in order 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 <systemitem
|
|
class="username">root</systemitem>. Now it runs as
|
|
user ID <systemitem
|
|
class="username">tty</systemitem>. The <systemitem
|
|
class="username">tty</systemitem> 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. 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 chrooted so that
|
|
<filename>/</filename> for that process is this
|
|
directory, not the real <filename>/</filename> of the
|
|
system).</para>
|
|
|
|
<para>Another common use is to mount an underlying 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.</para>
|
|
|
|
<para>A &unix; process is owned by a particular userid. If
|
|
the user ID is not the <systemitem
|
|
class="username">root</systemitem> 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 xml:id="securelevel">
|
|
<para>What is securelevel?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><literal>securelevel</literal> is a security
|
|
mechanism implemented in the kernel. When the securelevel
|
|
is positive, the kernel restricts certain tasks; not even
|
|
the superuser (<systemitem
|
|
class="username">root</systemitem>) is allowed to do
|
|
them. The securelevel mechanism limits 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
|
|
<filename>/dev/mem</filename> and
|
|
<filename>/dev/kmem</filename>.</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:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl -n kern.securelevel</userinput></screen>
|
|
|
|
<para>The output contains the current value of the
|
|
securelevel. If it is greater than 0, at
|
|
least some of the securelevel's protections are
|
|
enabled.</para>
|
|
|
|
<para>The securelevel of a running system cannot be lowered
|
|
as this would defeat its purpose. If a task requires that
|
|
the securelevel be non-positive, change the
|
|
<varname>kern_securelevel</varname> and
|
|
<varname>kern_securelevel_enable</varname> variables in
|
|
<filename>/etc/rc.conf</filename> and reboot.</para>
|
|
|
|
<para>For more information on securelevel and the specific
|
|
things all the levels do, consult &man.init.8;.</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;.
|
|
Search the archives <link
|
|
xlink:href="&url.base;/search/index.html">here</link>
|
|
for an extensive discussion. A more fine-grained
|
|
mechanism is preferred.</para>
|
|
</warning>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="extra-named-port">
|
|
<para><application>BIND9</application>
|
|
(<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. To
|
|
get past that firewall, 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>/usr/local/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 &man.sockstat.1; output and notice odd
|
|
things!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 xml:id="toor-account">
|
|
<para>What is this UID 0 <systemitem
|
|
class="username">toor</systemitem> account? Have I been
|
|
compromised?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Do not worry. <systemitem
|
|
class="username">toor</systemitem> is an
|
|
<quote>alternative</quote> superuser account, where toor
|
|
is root spelled backwards. It is intended to be used with
|
|
a non-standard shell so the default shell for <systemitem
|
|
class="username">root</systemitem> does not need to
|
|
change. This is important as shells which are not part of
|
|
the base distribution, but are instead installed from
|
|
ports or packages, are installed in
|
|
<filename>/usr/local/bin</filename> which, by default,
|
|
resides on a different file system. If <systemitem
|
|
class="username">root</systemitem>'s shell is located in
|
|
<filename>/usr/local/bin</filename> and the
|
|
file system
|
|
containing <filename>/usr/local/bin</filename>) is not
|
|
mounted, <systemitem
|
|
class="username">root</systemitem> will not be able to
|
|
log in to fix a problem and will have to reboot into
|
|
single-user mode in order to enter the path to a
|
|
shell.</para>
|
|
|
|
<para>Some people use <systemitem
|
|
class="username">toor</systemitem> for day-to-day
|
|
<systemitem class="username">root</systemitem> tasks with
|
|
a non-standard shell, leaving <systemitem
|
|
class="username">root</systemitem>, with a standard
|
|
shell, for single-user mode or emergencies. By default, a
|
|
user cannot log in using <systemitem
|
|
class="username">toor</systemitem> as it does not have a
|
|
password, so log in as <systemitem
|
|
class="username">root</systemitem> and set a password
|
|
for <systemitem class="username">toor</systemitem> before
|
|
using it to login.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="ppp">
|
|
<title>PPP</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="userppp">
|
|
<para>I cannot make &man.ppp.8; work. What am I doing
|
|
wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>First, read &man.ppp.8; and
|
|
the <link
|
|
xlink:href="&url.books.handbook;/ppp-and-slip.html#userppp">PPP
|
|
section of the Handbook</link>. To assist in
|
|
troubleshooting, 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 at the start of the
|
|
<literal>default</literal> section
|
|
in <filename>/etc/ppp/ppp.conf</filename>. Make sure that
|
|
<filename>/etc/syslog.conf</filename> contains the lines
|
|
below and the file <filename>/var/log/ppp.log</filename>
|
|
exists:</para>
|
|
|
|
<programlisting>!ppp
|
|
*.* /var/log/ppp.log</programlisting>
|
|
|
|
<para>A lot about what is going can be learned from the log
|
|
file. Do not worry if it does not all make sense as
|
|
it may make sense to someone else.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="ppp-hangs">
|
|
<para>Why does &man.ppp.8; hang when I run it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is usually because the hostname will not
|
|
resolve. The best way to fix this is to make sure that
|
|
<filename>/etc/hosts</filename> is read first by the
|
|
by ensuring that the <literal>hosts</literal> line is
|
|
listed first in <filename>/etc/host.conf</filename>.
|
|
Then, put an entry in <filename>/etc/hosts</filename> for
|
|
the local machine. If there is no local network, change
|
|
the <systemitem>localhost</systemitem> line:</para>
|
|
|
|
<programlisting>127.0.0.1 foo.example.com foo localhost</programlisting>
|
|
|
|
<para>Otherwise, add another entry for the host.
|
|
Consult the relevant manual pages for more details.</para>
|
|
|
|
<para>When finished, verify that this command is successful:
|
|
<command>ping -c1 `hostname`</command>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="ppp-nodial-auto">
|
|
<para>Why will &man.ppp.8; not dial in
|
|
<literal>-auto</literal> mode?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>First, check that a default route exists. This
|
|
command should display two entries:</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>If
|
|
a default route is not listed, make sure that the
|
|
<literal>HISADDR</literal> line has been added to
|
|
<filename>/etc/ppp/ppp.conf</filename>.</para>
|
|
|
|
<para>Another reason for the default route line being
|
|
missing is that a default
|
|
route has been added to <filename>/etc/rc.conf</filename>
|
|
and this line is missing
|
|
from <filename>/etc/ppp/ppp.conf</filename>:</para>
|
|
|
|
<programlisting>delete ALL</programlisting>
|
|
|
|
<para>If this is the case, go back to the <link
|
|
xlink:href="&url.books.handbook;/userppp.html#userppp-final">Final
|
|
System Configuration</link> section of the
|
|
Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="no-route-to-host">
|
|
<para>What does <errorname>No route to host</errorname>
|
|
mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This error is usually because the following section
|
|
is missing in
|
|
<filename>/etc/ppp/ppp.linkup</filename>:</para>
|
|
|
|
<programlisting>MYADDR:
|
|
delete ALL
|
|
add 0 0 HISADDR</programlisting>
|
|
|
|
<para>This is only necessary for a dynamic IP address or
|
|
when the address of the default gateway is unknown. When
|
|
using interactive mode, the following can be typed in
|
|
after entering packet mode. 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 <link
|
|
xlink:href="&url.books.handbook;/userppp.html#userppp-dynamicip">PPP
|
|
and Dynamic IP addresses</link> section of the Handbook
|
|
for further details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 <filename>ppp.conf</filename>, 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 xml:id="ppp-drop-heavy-load">
|
|
<para>Why does my connection drop under heavy load?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If Link Quality Reporting (<acronym>LQR</acronym>) is
|
|
configured, it is possible that too many
|
|
<acronym>LQR</acronym> packets are lost between the &os;
|
|
system and the peer. &man.ppp.8; deduces that the line
|
|
must therefore be bad, and disconnects.
|
|
<acronym>LQR</acronym> is disabled by default and can be
|
|
enabled with the following line:</para>
|
|
|
|
<programlisting>enable lqr</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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, the modem may hang up because
|
|
it incorrectly thinks 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.
|
|
Refer to the modem manual for details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>When using an external modem, try
|
|
using &man.ping.8; to see if the <acronym>TD</acronym>
|
|
light is flashing when data is transmitted. If it flashes
|
|
but 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, use the <literal>set
|
|
server</literal> command in
|
|
<filename>ppp.conf</filename>. When the hang occurs,
|
|
connect to &man.ppp.8; using &man.pppctl.8;. If the
|
|
network connection suddenly revives due to the activity on
|
|
the diagnostic socket, or if it will not
|
|
connect but the <literal>set socket</literal>
|
|
command succeeded at startup time, the problem is local.
|
|
If it can connect but things are still hung, enable local
|
|
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 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, there are now 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 xml:id="ppp-remote-not-responding">
|
|
<para>The remote end is not responding. What can I
|
|
do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is very little that can be done about this.
|
|
Many ISPs will refuse to help users not running a
|
|
µsoft; OS. Add <literal>enable lqr</literal> to
|
|
<filename>/etc/ppp/ppp.conf</filename>, allowing
|
|
&man.ppp.8; to detect the remote failure and hang up.
|
|
This detection is relatively slow and therefore not that
|
|
useful.</para>
|
|
|
|
<para>First, try disabling all local compression by adding
|
|
the following to the 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 is good information for
|
|
the ISP, although it may make
|
|
it apparent that it is not a µsoft; system.</para>
|
|
|
|
<para>Before contacting the 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 the 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 why their side is having a
|
|
problem.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="ppp-hung">
|
|
<para>&man.ppp.8; has hung. What can I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>In this case, 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, 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, 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,
|
|
use the <command>bt</command> or <command>where</command>
|
|
commands to get a stack trace. Save the output of the
|
|
<application>gdb</application> session, and
|
|
<quote>detach</quote> from the running process by typing
|
|
<command>quit</command>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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, there may be
|
|
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, there will be 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
|
|
<filename>ppp.conf</filename>:</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. In this case, try
|
|
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 xml: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,
|
|
<systemitem>A</systemitem> and <systemitem>B</systemitem>.
|
|
<systemitem>A</systemitem> starts sending LCP requests
|
|
immediately after connecting and
|
|
<systemitem>B</systemitem> takes 7 seconds to start. When
|
|
<systemitem>B</systemitem> starts,
|
|
<systemitem>A</systemitem> 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. <systemitem>B</systemitem> sends a REQ,
|
|
then an ACK to the first of <systemitem>A</systemitem>'s
|
|
REQs. This results in <systemitem>A</systemitem> entering
|
|
the <acronym>OPENED</acronym> state and sending and ACK
|
|
(the first) back to <systemitem>B</systemitem>. In the
|
|
meantime, <systemitem>B</systemitem> sends back two more
|
|
ACKs in response to the two additional REQs sent by
|
|
<systemitem>A</systemitem> before
|
|
<systemitem>B</systemitem> started up.
|
|
<systemitem>B</systemitem> then receives the first ACK
|
|
from <systemitem>A</systemitem> and enters the
|
|
<acronym>OPENED</acronym> state.
|
|
<systemitem>A</systemitem> receives the second ACK from
|
|
<systemitem>B</systemitem> 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, <systemitem>B</systemitem> receives the forth
|
|
REQ from <systemitem>A</systemitem>, resulting in it
|
|
reverting to the <acronym>ACK-SENT</acronym> state and
|
|
sending another (second) REQ and (forth) ACK as per the
|
|
RFC. <systemitem>A</systemitem> 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. This command
|
|
can also be used 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 xml: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 using <command>shell</command> or
|
|
<command>!</command>, &man.ppp.8; executes a shell
|
|
or the passed arguments. The
|
|
<application>ppp</application> program will wait for the
|
|
command to complete before continuing. Any attempt to
|
|
use the PPP link while running the command will appear as
|
|
a frozen link. This is because &man.ppp.8; is
|
|
waiting for the command to complete.</para>
|
|
|
|
<para>To execute commands like this, use
|
|
<command>!bg</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 xml: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 xml: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,
|
|
determine the cause, and set up dial filters 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, the
|
|
reason will be logged with a convenient timestamp next to
|
|
it.</para>
|
|
|
|
<para>Next, 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 demand-dial capabilities. Most programs
|
|
will need a DNS lookup before doing any other network
|
|
related things.</para>
|
|
|
|
<para>In the DNS case, try to determine what is actually
|
|
trying to resolve a host name. A lot of the time,
|
|
<application>Sendmail</application> is the culprit. Make
|
|
sure to configure <application>Sendmail</application> not
|
|
to do any DNS lookups in its configuration file. See the
|
|
section on <link
|
|
xlink:href="&url.books.handbook;/smtp-dialup.html">using
|
|
email with a dialup connection</link> in the &os;
|
|
Handbook for details. You may
|
|
also want to add the following line to
|
|
<filename>.mc</filename>:</para>
|
|
|
|
<programlisting>define(`confDELIVERY_MODE', `d')dnl</programlisting>
|
|
|
|
<para>This will make <application>Sendmail</application>
|
|
queue everything until the queue is run, usually,
|
|
every 30 minutes, or until a <command>sendmail
|
|
-q</command> is done, perhaps from
|
|
<filename>/etc/ppp/ppp.linkup</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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, but the peer does not want to
|
|
negotiate any compression at all. The messages are
|
|
harmless, but can be silenced by disabling the
|
|
compression:</para>
|
|
|
|
<programlisting>disable pred1</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="ppp-connectionspeed">
|
|
<para>Why does &man.ppp.8; not log my connection
|
|
speed?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>To log all lines of the modem
|
|
conversation, 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>To see the connect speed when using
|
|
PAP or CHAP,
|
|
make sure to configure &man.ppp.8; to
|
|
expect the whole CONNECT line, using 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>This gets the CONNECT, sends nothing, then expects a
|
|
line-feed, forcing &man.ppp.8; to read the whole CONNECT
|
|
response.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 its configuration 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
|
|
one argument. To specify a
|
|
<literal>"</literal> character, escape it
|
|
using a backslash (<literal>\</literal>).</para>
|
|
|
|
<para>When the chat interpreter parses each argument, it
|
|
re-interprets the argument to find any special escape
|
|
sequences such as <literal>\P</literal> or
|
|
<literal>\T</literal>. As a result
|
|
of this double-parsing, remember to use the
|
|
correct number of escapes.</para>
|
|
|
|
<para>To actually send a <literal>\</literal>
|
|
character, do 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 xml:id="fcs-errors">
|
|
<para>What are FCS errors?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FCS stands for Frame Check Sequence. 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 the link is bad or if the serial driver is dropping
|
|
packets, it will produce the occasional FCS error.
|
|
This is not usually worth worrying about although it does
|
|
slow down the compression protocols substantially.</para>
|
|
|
|
<para>If the link freezes as soon as it connects and
|
|
produces a large number of FCS errors, make sure the modem
|
|
is not using software flow control (XON/XOFF). If the
|
|
link must use software flow control, use
|
|
<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 too many FCS errors may be
|
|
that the remote end has stopped talking
|
|
<acronym>PPP</acronym>. In this case, enable
|
|
<literal>async</literal> logging to
|
|
determine if the incoming data is actually a login or
|
|
shell prompt. If it is a shell prompt at the remote
|
|
end, it is possible to terminate &man.ppp.8; without
|
|
dropping the line by using <command>close lcp</command>
|
|
followed by <command>term</command>) to reconnect to
|
|
the shell on the remote machine.</para>
|
|
|
|
<para>If nothing in the log file indicates why the link
|
|
was terminated, ask the remote
|
|
administrator or ISP why the session was
|
|
terminated.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="desperation">
|
|
<para>None of this helps — I am desperate! What can I
|
|
do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If all else fails, send the details of the error, the
|
|
configuration files, how &man.ppp.8; is being started, the
|
|
relevant parts of the log file, and the
|
|
output of <command>netstat -rn</command>, before and after
|
|
connecting, to the &a.questions;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="serial">
|
|
<title>Serial Communications</title>
|
|
|
|
<para>This section answers common questions about serial
|
|
communications with &os;. PPP is covered in the <link
|
|
linkend="networking">Networking</link> section.</para>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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 <link
|
|
xlink:href="&url.books.handbook;/serial.html">Serial
|
|
Communications</link> chapter of the Handbook.</para>
|
|
|
|
<para>Most multi-port PCI cards that are based on 16550 or
|
|
clones are supported with no extra effort.</para>
|
|
|
|
<para>Some unnamed clone cards have also been known to work,
|
|
especially those that claim to be AST compatible.</para>
|
|
|
|
<para>Check &man.uart.4; and &man.sio.4; to get more
|
|
information on configuring such cards.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="serial-console-prompt">
|
|
<para>How do I get the boot: prompt to show on the serial
|
|
console?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <link
|
|
xlink:href="&url.books.handbook;/serialconsole-setup.html">this
|
|
section of the Handbook</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="found-serial">
|
|
<para>How do I tell if &os; found my serial ports or modem
|
|
cards?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>As the &os; kernel boots, it will probe for the serial
|
|
ports for which the kernel is configured.
|
|
Either watch the boot messages closely
|
|
or run this command after the system is up and
|
|
running:</para>
|
|
|
|
<screen>&prompt.user; <userinput>grep -E '^(sio|uart)[0-9]' < /var/run/dmesg.boot</userinput>
|
|
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</screen>
|
|
|
|
<para>This example shows two serial ports. The first is on
|
|
IRQ4, port address
|
|
<literal>0x3f8</literal>, and has a 16550A-type UART chip.
|
|
The second uses the same kind of chip but is on
|
|
IRQ3 and is at port address
|
|
<literal>0x2f8</literal>. Internal modem cards are
|
|
treated just like serial ports, except that they
|
|
always have a modem attached to the
|
|
port.</para>
|
|
|
|
<para>The <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 the system, or if there are more modem
|
|
cards or serial ports than the kernel is
|
|
configured for, reconfigure using the instructions in
|
|
<link linkend="make-kernel">building a kernel</link>
|
|
for more details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="access-serial-ports">
|
|
<para>How do I access the serial ports on &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The third serial port, <filename>sio2</filename>,
|
|
or <filename>COM3</filename>,
|
|
is on <filename>/dev/cuad2</filename> for dial-out
|
|
devices, and on <filename>/dev/ttyd2</filename> for
|
|
dial-in devices. What is the difference between these two
|
|
classes of devices?</para>
|
|
|
|
<para>When
|
|
opening <filename>/dev/ttydX</filename> in blocking mode,
|
|
a process will wait for the corresponding
|
|
<filename>cuadX</filename> device to become inactive, and
|
|
then wait for the carrier detect line to go active. When
|
|
the <filename>cuadX</filename> device is opened, it makes
|
|
sure the serial port is not already in use by the
|
|
<filename>ttydX</filename> device. If the port is
|
|
available, it steals it from the
|
|
<filename>ttydX</filename> device. Also, the
|
|
<filename>cuadX</filename> device does not care about
|
|
carrier detect. With this scheme and an auto-answer
|
|
modem, remote users can log in and local users can still
|
|
dial out with the same modem and the system will take care
|
|
of all the conflicts.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="enable-multiport-serial">
|
|
<para>How do I enable support for a multi-port serial
|
|
card?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The section on kernel configuration provides
|
|
information about configuring the kernel. For a
|
|
multi-port 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 xml:id="default-serial-params">
|
|
<para>Can I set the default serial parameters for a
|
|
port?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <link
|
|
xlink:href="&url.books.handbook;/serial.html#serial-hw-config">Serial
|
|
Communications</link> section in the &os;
|
|
Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="enable-dialup">
|
|
<para>How can I enable dialup logins on my modem?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Refer to the section about <link
|
|
xlink:href="&url.books.handbook;/dialup.html">Dial-in
|
|
Services</link> in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="dumb-terminal">
|
|
<para>How can I connect a dumb terminal to my &os;
|
|
box?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This information is in the <link
|
|
xlink:href="&url.books.handbook;/term.html">Terminals</link>
|
|
section of the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="cannot-tip">
|
|
<para>Why can I not run <command>tip</command> or
|
|
<command>cu</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The built-in &man.tip.1; and
|
|
&man.cu.1; utilities can only access the
|
|
<filename>/var/spool/lock</filename> directory via user
|
|
<systemitem class="username">uucp</systemitem> and group
|
|
<systemitem class="groupname">dialer</systemitem>.
|
|
Use the <systemitem
|
|
class="groupname">dialer</systemitem> group to control
|
|
who has access to the modem or remote systems by adding
|
|
user accounts to <systemitem
|
|
class="groupname">dialer</systemitem>.</para>
|
|
|
|
<para>Alternatively, everyone can be configured to 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>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="misc">
|
|
<title>Miscellaneous Questions</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="more-swap">
|
|
<para>&os; uses a lot of swap space even when the computer
|
|
has free memory left. Why?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; will proactively move entirely idle, unused pages
|
|
of main memory into swap in order to make more main memory
|
|
available for active use. This heavy use of swap is
|
|
balanced by using the extra free memory for
|
|
caching.</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, the system will not be all
|
|
paged out after leaving it
|
|
idle overnight.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 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 xml: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. For
|
|
the file, <filename>foo</filename> with a symlink named
|
|
<filename>bar</filename>, 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, use
|
|
either <option>-H</option> or <option>-L</option> together
|
|
with <option>-R</option> to make this work. See
|
|
&man.chmod.1; and &man.symlink.7; for more
|
|
information.</para>
|
|
|
|
<warning>
|
|
<para><option>-R</option> does a
|
|
<emphasis>recursive</emphasis> &man.chmod.1;. Be
|
|
careful about specifying directories or symlinks to
|
|
directories to &man.chmod.1;. To change the
|
|
permissions of a directory referenced by a symlink, use
|
|
&man.chmod.1; without any options and follow the symlink
|
|
with a trailing slash (<filename>/</filename>). For
|
|
example, if <filename>foo</filename> is a symlink to
|
|
directory <filename>bar</filename>, to
|
|
change the permissions of <filename>foo</filename>
|
|
(actually <filename>bar</filename>), do
|
|
something like:</para>
|
|
|
|
<screen>&prompt.user; <userinput>chmod 555 foo/</userinput></screen>
|
|
|
|
<para>With the trailing slash, &man.chmod.1; will follow
|
|
the symlink, <filename>foo</filename>, to change the
|
|
permissions of the directory,
|
|
<filename>bar</filename>.</para>
|
|
</warning>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="dos-binaries">
|
|
<para>Can I run DOS binaries under &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. A DOS emulation program,
|
|
<package>emulators/doscmd</package>, is available in the
|
|
&os; Ports Collection.</para>
|
|
|
|
<para>If <application>doscmd</application> will not suffice,
|
|
<package>emulators/pcemu</package>
|
|
emulates an 8088 and enough BIOS services to run many DOS
|
|
text-mode applications. It requires the X Window
|
|
System.</para>
|
|
|
|
<para>The Ports Collection also has
|
|
<package>emulators/dosbox</package>. The main focus of
|
|
this application is emulating old DOS games using the
|
|
local file system for files.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="translation">
|
|
<para>What do I need to do to translate a &os; document into
|
|
my native language?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <link
|
|
xlink:href="&url.books.fdp-primer;/translations.html">Translation
|
|
<acronym>FAQ</acronym></link> in the &os; Documentation Project
|
|
Primer.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="freebsd-mail-bounces">
|
|
<para>Why does my email to any address at <systemitem
|
|
class="fqdomainname">FreeBSD.org</systemitem>
|
|
bounce?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <systemitem
|
|
class="fqdomainname">FreeBSD.org</systemitem> mail
|
|
system implements some
|
|
<application>Postfix</application> checks on incoming mail
|
|
and rejects mail that is either from misconfigured relays
|
|
or otherwise appears likely to be spam. Some of the
|
|
specific requirements are: </para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The IP address of the SMTP client must
|
|
"reverse-resolve" to a forward confirmed
|
|
hostname.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The fully-qualified hostname given in the
|
|
SMTP conversation (either HELO or EHLO) must resolve
|
|
to the IP address of the client.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Other advice to help mail reach its destination
|
|
include:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Mail should be sent in plain text, and messages
|
|
sent to mailing lists should generally be no more than
|
|
200KB in length.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Avoid excessive cross posting. Choose
|
|
<emphasis>one</emphasis> mailing list which seems most
|
|
relevant and send it there.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>If you still have trouble with email infrastructure at
|
|
<systemitem class="fqdomainname">FreeBSD.org</systemitem>,
|
|
send a note with the details to
|
|
<email>postmaster@freebsd.org</email>; Include a
|
|
date/time interval so that logs may be reviewed —
|
|
and note that we only keep one week's worth of mail logs.
|
|
(Be sure to specify the time zone or offset from
|
|
UTC.)</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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><link xlink:href="http://www.arbornet.org/">Arbornet,
|
|
Inc</link>, 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 xml: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>More about the BSD daemon is available on his <link
|
|
xlink:href="http://www.mckusick.com/beastie/index.html">home
|
|
page</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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. Check his <link
|
|
xlink:href="http://www.mckusick.com/beastie/mainpage/copyright.html">Statement
|
|
on the Use of the BSD Daemon Figure</link> for detailed
|
|
usage terms.</para>
|
|
|
|
<para>In summary, the image can be used in a tasteful
|
|
manner, for personal use, so long as appropriate credit
|
|
is given. Before using the logo commercially, contact
|
|
&a.mckusick.email; for permission. More details are
|
|
available on the <link
|
|
xlink:href="http://www.mckusick.com/beastie/index.html">BSD
|
|
Daemon's home page</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="daemon-images">
|
|
<para>Do you have any BSD daemon images I could use?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Xfig and eps drawings are available under
|
|
<filename>/usr/share/examples/BSD_daemon/</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>Refer to the <link
|
|
xlink:href="&url.books.handbook;/freebsd-glossary.html">&os;
|
|
Glossary</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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.email; posted a long
|
|
message entitled <quote><link
|
|
xlink:href="http://www.bikeshed.com">A
|
|
bike shed (any color will do) on greener
|
|
grass...</link></quote>. The appropriate portions of
|
|
that message are quoted below.</para>
|
|
|
|
<blockquote>
|
|
<attribution>&a.phk.email; 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 xml:id="funnies">
|
|
<title>The &os; Funnies</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml: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, &os; uses 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 <acronym>ACPI</acronym> (Advanced
|
|
Configuration and Power Interface) configured, then &os;
|
|
can also put the CPU into a low power mode.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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 xml: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 updated 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.email; 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.email;</emphasis> says:
|
|
<quote>None, <emphasis>real</emphasis> &os; hackers are
|
|
not afraid of the dark!</quote></para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="dev-null">
|
|
<para>Where does data written to
|
|
<filename>/dev/null</filename> go?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>It goes into a special data sink in the CPU where it
|
|
is converted to heat which is vented through the heatsink
|
|
/ fan assembly. This is why CPU cooling is increasingly
|
|
important; as people get used to faster processors, they
|
|
become careless with their data and more and more of it
|
|
ends up in <filename>/dev/null</filename>, overheating
|
|
their CPUs. If you delete <filename>/dev/null</filename>
|
|
(which effectively disables the CPU data sink) your CPU
|
|
may run cooler but your system will quickly become
|
|
constipated with all that excess data and start to behave
|
|
erratically. If you have a fast network connection you
|
|
can cool down your CPU by reading data out of
|
|
<filename>/dev/random</filename> and sending it off
|
|
somewhere; however you run the risk of overheating your
|
|
network connection and <filename>/</filename> or angering
|
|
your ISP, as most of the data will end up getting
|
|
converted to heat by their equipment, but they generally
|
|
have good cooling, so if you do not overdo it you should
|
|
be OK.</para>
|
|
|
|
<para><emphasis>Paul Robinson adds:</emphasis></para>
|
|
|
|
<para>There are other methods. As every good sysadmin
|
|
knows, it is part of standard practice to send data to the
|
|
screen of interesting variety to keep all the pixies that
|
|
make up your picture happy. Screen pixies (commonly
|
|
mis-typed or re-named as <quote>pixels</quote>) are
|
|
categorized by the type of hat they wear (red, green or
|
|
blue) and will hide or appear (thereby showing the color
|
|
of their hat) whenever they receive a little piece of
|
|
food. Video cards turn data into pixie-food, and then
|
|
send them to the pixies — the more expensive the
|
|
card, the better the food, so the better behaved the
|
|
pixies are. They also need constant stimulation —
|
|
this is why screen savers exist.</para>
|
|
|
|
<para>To take your suggestions further, you could just throw
|
|
the random data to console, thereby letting the pixies
|
|
consume it. This causes no heat to be produced at all,
|
|
keeps the pixies happy and gets rid of your data quite
|
|
quickly, even if it does make things look a bit messy on
|
|
your screen.</para>
|
|
|
|
<para>Incidentally, as an ex-admin of a large ISP who
|
|
experienced many problems attempting to maintain a stable
|
|
temperature in a server room, I would strongly discourage
|
|
people sending the data they do not want out to the
|
|
network. The fairies who do the packet switching and
|
|
routing get annoyed by it as well.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="punk-my-friend">
|
|
<para>My colleague sits at the computer too much, how
|
|
can I prank her?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Install <package role="port">games/sl</package> and
|
|
wait for her to mistype <userinput>sl</userinput> for
|
|
<command>ls</command>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter xml:id="advanced">
|
|
<title>Advanced Topics</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question xml:id="learn-advanced">
|
|
<para>How can I learn more about &os;'s internals?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <link
|
|
xlink:href="&url.books.arch-handbook;">&os;
|
|
Architecture Handbook</link>.</para>
|
|
|
|
<para>Additionally, much general &unix; knowledge is
|
|
directly applicable to &os;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="how-to-contribute">
|
|
<para>How can I contribute to &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the article on <link
|
|
xlink:href="&url.articles.contributing;/article.html">Contributing
|
|
to &os;</link> for specific advice on how to do this.
|
|
Assistance is more than welcome!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml:id="define-snap-release">
|
|
<para>What are snapshots and releases?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are currently &rel.numbranch; active/semi-active
|
|
branches in the &os; <link
|
|
xlink:href="http://svnweb.FreeBSD.org/base/">Subversion
|
|
Repository</link>. (Earlier branches are only changed
|
|
very rarely, which is why there are only &rel.numbranch;
|
|
active branches of development):</para>
|
|
|
|
<itemizedlist>
|
|
<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.
|
|
It is a symbolic constant for
|
|
the current, non-branched development
|
|
stream known 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 xml:id="submitting-kernel-extensions">
|
|
<para>I have written a kernel extension, who do I send it
|
|
to?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Take a look at the article on <link
|
|
xlink:href="&url.articles.contributing;/article.html">Contributing
|
|
to &os;</link> to learn how to submit code.</para>
|
|
|
|
<para>And thanks for the thought!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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>This message is not enough. While the instruction
|
|
pointer value is important, it is also configuration
|
|
dependent as it varies depending on the kernel image.
|
|
If it is a <filename>GENERIC</filename> kernel
|
|
image from one of the snapshots, it is possible for
|
|
somebody else to track down the offending function, but
|
|
for a custom kernel, only you can tell us where the fault
|
|
occurred.</para>
|
|
|
|
<para>To proceed:</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>nm -n kernel.that.caused.the.panic | grep 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:</para>
|
|
|
|
<screen>&prompt.user; <userinput>nm -n kernel.that.caused.the.panic | grep f0xxxxx</userinput></screen>
|
|
|
|
<para>If that does not yield any results, chop off
|
|
another digit. Repeat until there is 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
|
|
the kernel configuration file:</para>
|
|
|
|
<programlisting>makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols</programlisting>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Change to the <filename>/usr/src</filename>
|
|
directory:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Compile the kernel:</para>
|
|
|
|
<screen>&prompt.root; <userinput>make buildkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Wait for &man.make.1; to finish compiling.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<screen>&prompt.root; <userinput>make installkernel KERNCONF=MYKERNEL</userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Reboot.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<note>
|
|
<para>If <varname>KERNCONF</varname> is not included,
|
|
the <filename>GENERIC</filename> kernel will instead
|
|
be built and installed.</para>
|
|
</note>
|
|
|
|
<para>The &man.make.1; process will have built two kernels.
|
|
<filename>/usr/obj/usr/src/sys/MYKERNEL/kernel</filename>
|
|
and
|
|
<filename>/usr/obj/usr/src/sys/MYKERNEL/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 capture a crash dump, edit
|
|
<filename>/etc/rc.conf</filename> and set
|
|
<literal>dumpdev</literal> to point to either the 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. This command can also be run
|
|
manually. After a panic, the crash dump can be recovered
|
|
using &man.savecore.8;; if <literal>dumpdev</literal> is
|
|
set in <filename>/etc/rc.conf</filename>, the &man.rc.8;
|
|
scripts will run &man.savecore.8; automatically and put
|
|
the crash dump in <filename>/var/crash</filename>.</para>
|
|
|
|
<note>
|
|
<para>&os; crash dumps are usually the same size as
|
|
physical RAM. Therefore, make sure there is enough
|
|
space in <filename>/var/crash</filename> to hold the
|
|
dump. Alternatively, run &man.savecore.8; manually
|
|
and have it recover the crash dump to another directory
|
|
with more room. It is possible to limit the
|
|
size of the crash dump by using <literal>options
|
|
MAXMEM=N</literal> where
|
|
<replaceable>N</replaceable> is the size of kernel's
|
|
memory usage in KBs. For example, for 1 GB
|
|
of RAM, limit the kernel's memory usage to
|
|
128 MB, so that the crash dump size
|
|
will be 128 MB instead of 1 GB.</para>
|
|
</note>
|
|
|
|
<para>Once the crash dump has been recovered , get a
|
|
stack trace as follows:</para>
|
|
|
|
<screen>&prompt.user; <userinput>kgdb /usr/obj/usr/src/sys/MYKERNEL/kernel.debug /var/crash/vmcore.0</userinput>
|
|
<prompt>(kgdb)</prompt> <userinput>backtrace</userinput></screen>
|
|
|
|
<para>Note that there may be several screens worth of
|
|
information. Ideally, 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. The stack
|
|
trace is usually read from the bottom up to trace
|
|
the exact sequence of events that lead to the crash.
|
|
&man.kgdb.1; can also be used to print out the contents of
|
|
various variables or structures to examine the system
|
|
state at the time of the crash.</para>
|
|
|
|
<tip>
|
|
<para>If a second computer is available, &man.kgdb.1; can
|
|
be configured to do remote debugging, including setting
|
|
breakpoints and single-stepping through the kernel
|
|
code.</para>
|
|
</tip>
|
|
|
|
<note>
|
|
<para>If <literal>DDB</literal> is enabled and the
|
|
kernel drops into the debugger, a panic
|
|
and a crash dump can be forced 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 xml: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>To search, using
|
|
<function>dlsym()</function>, for symbols present in the
|
|
main executable of a process, link the
|
|
executable using the <option>--export-dynamic</option>
|
|
option to the ELF linker (&man.ld.1;).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question xml: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. When running a
|
|
network-intensive server or using
|
|
ZFS, this will probably not be
|
|
enough.</para>
|
|
|
|
<para>Add the following line to the kernel configuration
|
|
file to increase available space and rebuild the
|
|
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 xml: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 <link
|
|
xlink:href="&url.articles.contributing;/article.html">join
|
|
them</link> in making this <acronym>FAQ</acronym> even
|
|
better.</para>
|
|
</chapter>
|
|
|
|
&bibliography;
|
|
</book>
|