8513 lines
308 KiB
XML
8513 lines
308 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
|
|
"../../../share/xml/freebsd45.dtd" [
|
|
<!ENTITY bibliography SYSTEM "../../../share/xml/bibliography.xml">
|
|
<!ENTITY rel.head "<emphasis>10-CURRENT</emphasis>">
|
|
<!ENTITY rel.head.relx "10.<replaceable>X</replaceable>">
|
|
<!ENTITY rel.head.releng "<symbol>HEAD</symbol>">
|
|
<!ENTITY rel.head.packages "packages-10-current">
|
|
<!ENTITY rel.relx "9.<replaceable>X</replaceable>">
|
|
<!ENTITY rel.stable "<emphasis>9-STABLE</emphasis>">
|
|
<!ENTITY rel.releng "<symbol>RELENG_9</symbol>">
|
|
<!ENTITY rel.relengdate "September 2011">
|
|
<!ENTITY rel.packages "packages-9-stable">
|
|
<!ENTITY rel2.relx "8.<replaceable>X</replaceable>">
|
|
<!ENTITY rel2.stable "<emphasis>8-STABLE</emphasis>">
|
|
<!ENTITY rel2.releng "<symbol>RELENG_8</symbol>">
|
|
<!ENTITY rel2.relengdate "August 2009">
|
|
<!ENTITY rel2.packages "packages-8-stable">
|
|
<!ENTITY rel3.current "7.4">
|
|
<!ENTITY rel3.relx "7.<replaceable>X</replaceable>">
|
|
<!ENTITY rel3.stable "<emphasis>7-STABLE</emphasis>">
|
|
<!ENTITY rel3.releng "<symbol>RELENG_7</symbol>">
|
|
<!ENTITY rel3.relengdate "October 2007">
|
|
<!ENTITY rel3.packages "packages-7-stable">
|
|
]>
|
|
|
|
<book lang='en'>
|
|
<bookinfo>
|
|
<title>Frequently Asked Questions for &os;
|
|
&rel3.relx;, &rel2.relx;, and &rel.relx;</title>
|
|
|
|
<corpauthor>The &os; Documentation Project</corpauthor>
|
|
|
|
<copyright>
|
|
<year>1995</year>
|
|
<year>1996</year>
|
|
<year>1997</year>
|
|
<year>1998</year>
|
|
<year>1999</year>
|
|
<year>2000</year>
|
|
<year>2001</year>
|
|
<year>2002</year>
|
|
<year>2003</year>
|
|
<year>2004</year>
|
|
<year>2005</year>
|
|
<year>2006</year>
|
|
<year>2007</year>
|
|
<year>2008</year>
|
|
<year>2009</year>
|
|
<year>2010</year>
|
|
<year>2011</year>
|
|
<year>2012</year>
|
|
<year>2013</year>
|
|
<holder>The &os; Documentation Project</holder>
|
|
</copyright>
|
|
|
|
&legalnotice;
|
|
|
|
<legalnotice 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.mips;
|
|
&tm-attrib.opengroup;
|
|
&tm-attrib.oracle;
|
|
&tm-attrib.sgi;
|
|
&tm-attrib.sparc;
|
|
&tm-attrib.sun;
|
|
&tm-attrib.general;
|
|
</legalnotice>
|
|
|
|
<releaseinfo>$FreeBSD$</releaseinfo>
|
|
|
|
<abstract>
|
|
<para>This is the FAQ for &os; versions
|
|
&rel3.relx;, &rel2.relx; and &rel.relx;.
|
|
All entries are assumed to be
|
|
relevant to &os; &rel3.relx; and later,
|
|
unless otherwise noted. If you are interested in helping with
|
|
this project, send email to the &a.doc;. The latest version of
|
|
this document is always available from the <ulink
|
|
url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/faq/index.html">&os; website</ulink>.
|
|
It may also be downloaded as one large <ulink
|
|
url="book.html">HTML</ulink> file with HTTP or as a variety
|
|
of other formats from the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">&os; FTP
|
|
server</ulink>. You may also want to <ulink
|
|
url="&url.base;/search/index.html">Search the FAQ</ulink>.</para>
|
|
</abstract>
|
|
</bookinfo>
|
|
|
|
<chapter id="introduction">
|
|
<title>Introduction</title>
|
|
|
|
<para>Welcome to the &os;
|
|
&rel3.relx; -, &rel2.relx; - and &rel.relx; -
|
|
FAQ!</para>
|
|
|
|
<para>As is usual with Usenet FAQs, this document aims to cover the
|
|
most frequently asked questions concerning the &os; operating
|
|
system (and of course answer them!). Although originally intended
|
|
to reduce bandwidth and avoid the same old questions being asked
|
|
over and over again, FAQs have become recognized as valuable
|
|
information resources.</para>
|
|
|
|
<para>Every effort has been made to make this FAQ as informative as
|
|
possible; if you have any suggestions as to how it may be
|
|
improved, please feel free to mail them to the &a.doc;.</para>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="what-is-FreeBSD">
|
|
<para>What is &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; is a modern operating system for desktops,
|
|
laptops, servers, and embedded systems with
|
|
support for a large number of <ulink
|
|
url="http://www.FreeBSD.org/platforms/">platforms</ulink>.</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;, please see the
|
|
<ulink
|
|
url="&url.books.handbook;/index.html">&os; Handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="FreeBSD-goals">
|
|
<para>What is the goal of the &os; Project?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The goal of the &os; Project is to provide a
|
|
stable and fast general purpose
|
|
operating system that may
|
|
be used for any purpose
|
|
without strings attached.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bsd-license-restrictions">
|
|
<para>Does the &os; license have any restrictions?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Those restrictions do not control how you use the
|
|
code, merely how you treat the &os; Project itself. If you
|
|
have serious license concerns, read the actual <ulink
|
|
url="http://www.FreeBSD.org/copyright/freebsd-license.html">license</ulink>.
|
|
For the simply curious, the license can be summarized like
|
|
this.</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Do not claim that you wrote this.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Do not sue us if it breaks.</para>
|
|
</listitem>
|
|
|
|
<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
|
|
<ulink
|
|
url="http://www.FreeBSD.org/copyright/COPYING">GNU General Public License (GPL)</ulink>
|
|
or <ulink
|
|
url="http://www.FreeBSD.org/copyright/COPYING.LIB">GNU Library General Public License (LGPL)</ulink>
|
|
comes with slightly more strings attached, though at least
|
|
on the side of enforced access rather than the usual
|
|
opposite. Due to the additional complexities that can
|
|
evolve in the commercial use of GPL software, we do,
|
|
however, endeavor to replace such software with submissions
|
|
under the more relaxed <ulink
|
|
url="http://www.FreeBSD.org/copyright/freebsd-license.html">&os; license</ulink>
|
|
whenever possible.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="replace-current-OS">
|
|
<para>Can &os; replace my current operating system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For most people, yes. But this question is not quite
|
|
that cut-and-dried.</para>
|
|
|
|
<para>Most people do not actually use an operating system.
|
|
They use applications. The applications are what really use
|
|
the operating system. &os; is designed to provide a robust
|
|
and full-featured environment for applications. It supports
|
|
a wide variety of web browsers, office suites, email
|
|
readers, graphics programs, programming environments,
|
|
network servers, and just about everything else you might
|
|
want. Most of these applications can be managed through the
|
|
<ulink
|
|
url="http://www.FreeBSD.org/ports/">Ports Collection</ulink>.</para>
|
|
|
|
<para>If you need to use an application that is only available
|
|
on one operating system, you simply cannot replace that
|
|
operating system. Chances are there is a very similar
|
|
application on &os;, however. If you want a solid office or
|
|
Internet server, a reliable workstation, or just the ability
|
|
to do your job without interruptions, &os; will almost
|
|
certainly do everything you need. Many computer users
|
|
across the world, including both novices and experienced
|
|
&unix; administrators, use &os; as their only desktop
|
|
operating system.</para>
|
|
|
|
<para>If you are migrating to &os; from some other &unix;
|
|
environment, you already know most of what you need to. If
|
|
your background is in graphic-driven operating systems such
|
|
as &windows; and &macos;, you may be interested in using
|
|
<ulink
|
|
url="http://www.pcbsd.org/">PC-BSD</ulink>, a &os; based
|
|
distribution, instead. If you have not used &unix; before
|
|
expect to invest
|
|
additional time learning the &unix; way of doing things.
|
|
This FAQ and the <ulink
|
|
url="&url.books.handbook;/index.html">&os; Handbook</ulink>
|
|
are excellent places to start.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="why-called-FreeBSD">
|
|
<para>Why is it called &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>It may be used free of charge, even by commercial
|
|
users.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Full source for the operating system is freely
|
|
available, and the minimum possible restrictions have
|
|
been placed upon its use, distribution and incorporation
|
|
into other work (commercial or non-commercial).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Anyone who has an improvement or bug fix is free to
|
|
submit their code and have it added to the source tree
|
|
(subject to one or two obvious provisions).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>It is worth pointing out that the word
|
|
<quote>free</quote> is being used in two ways here, one
|
|
meaning <quote>at no cost</quote>, the other meaning
|
|
<quote>you can do whatever you like</quote>. Apart from one
|
|
or two things you <emphasis>cannot</emphasis> do with the
|
|
&os; code, for example pretending you wrote it, you can
|
|
really do whatever you like with it.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="differences-to-other-bsds">
|
|
<para>What are the differences between &os; and NetBSD,
|
|
OpenBSD, and other open source BSD operating systems?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>James Howard wrote a good explanation of the history and
|
|
differences between the various projects,
|
|
called <ulink
|
|
url="http://www.freebsdworld.gr/freebsd/bsd-family-tree.html">The BSD Family Tree</ulink>
|
|
which goes a fair way to answering this question.
|
|
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>DragonFlyBSD 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 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 8.0, the
|
|
&rel3.relx; series was the one known as
|
|
<emphasis>-STABLE</emphasis>. However, as of 8.0, the
|
|
&rel3.relx; branch will be designated for
|
|
an <quote>extended support</quote> status and receive only
|
|
fixes for major problems, such as security-related fixes.
|
|
There will be no more releases made from the
|
|
&rel3.stable; branch, and it is considered a
|
|
<quote>legacy</quote> branch and most current work will only
|
|
become a part of &rel.stable; and &rel2.stable;.</para>
|
|
|
|
<para>Version <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE/">&rel.current;</ulink>
|
|
is the latest release from the &rel.stable;
|
|
branch; it was released in &rel.current.date;. Version
|
|
<ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">&rel2.current;</ulink>
|
|
is the latest release from the &rel2.stable;
|
|
branch; it was released in &rel2.current.date;.</para>
|
|
|
|
<para>Briefly, <emphasis>-STABLE</emphasis> is aimed at the
|
|
ISP, corporate user, or any user who wants stability and a
|
|
minimal number of changes compared to the new (and possibly
|
|
unstable) features of the latest
|
|
<emphasis>-CURRENT</emphasis> snapshot. Releases can come
|
|
from either branch, but <emphasis>-CURRENT</emphasis> should
|
|
only be used if you are prepared for its increased
|
|
volatility (relative to <emphasis>-STABLE</emphasis>, that
|
|
is).</para>
|
|
|
|
<para>Releases are made <link
|
|
linkend="release-freq">every few months</link>. While
|
|
many people stay more up-to-date with the &os; sources (see
|
|
the questions on <link
|
|
linkend="current">&os.current;</link> and <link
|
|
linkend="stable">&os.stable;</link>) than that, doing so
|
|
is more of a commitment, as the sources are a moving
|
|
target.</para>
|
|
|
|
<para>More information on &os; releases can be found on the
|
|
<ulink
|
|
url="http://www.FreeBSD.org/releng/index.html">Release Engineering page</ulink>
|
|
on the &os; Web site.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="current">
|
|
<para>What is <emphasis>&os;-CURRENT</emphasis>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><ulink
|
|
url="&url.books.handbook;/current-stable.html#current">&os.current;</ulink>
|
|
is the development version of the operating system, which
|
|
will in due course become the new &os.stable; branch. As
|
|
such, it is really only of interest to developers working on
|
|
the system and die-hard hobbyists. See the <ulink
|
|
url="&url.books.handbook;/current-stable.html#current">relevant section</ulink>
|
|
in the <ulink
|
|
url="&url.books.handbook;/index.html">Handbook</ulink> for
|
|
details on running <emphasis>-CURRENT</emphasis>.</para>
|
|
|
|
<para>If you are not familiar with &os;
|
|
you 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; <ulink
|
|
url="&url.base;/snapshots/">snapshot</ulink>
|
|
releases are made based on the current state of the
|
|
<emphasis>-CURRENT</emphasis> and
|
|
<emphasis>-STABLE</emphasis> branches. The goals behind
|
|
each snapshot release are:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>To test the latest version of the installation
|
|
software.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>To give people who would like to run
|
|
<emphasis>-CURRENT</emphasis> or
|
|
<emphasis>-STABLE</emphasis> but who do not have the
|
|
time or bandwidth to follow it on a day-to-day basis an
|
|
easy way of bootstrapping it onto their systems.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>To preserve a fixed reference point for the code in
|
|
question, just in case we break something really badly
|
|
later. (Although 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 you
|
|
want to run a stable and fully tested system, you will have
|
|
to stick to full releases, or use the
|
|
<emphasis>-STABLE</emphasis> snapshots.</para>
|
|
|
|
<para>Snapshot releases are directly available from <ulink
|
|
url="&url.base;/snapshots/">snapshot</ulink>.</para>
|
|
|
|
<para>Official snapshots are generated on a regular
|
|
basis for all actively developed branches.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="stable">
|
|
<para>What is the <emphasis>&os;-STABLE</emphasis>
|
|
concept?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Back when &os; 2.0.5 was released, &os; development
|
|
branched in two. One branch was named <ulink
|
|
url="&url.books.handbook;/current-stable.html#stable">-STABLE</ulink>,
|
|
one <ulink
|
|
url="&url.books.handbook;/current-stable.html#current">-CURRENT</ulink>.
|
|
<emphasis>&os;-STABLE</emphasis> is intended for Internet
|
|
Service Providers and other commercial enterprises for whom
|
|
sudden shifts or experimental features are quite
|
|
undesirable. It receives only well-tested bug fixes and
|
|
other small incremental enhancements.
|
|
<emphasis>&os;-CURRENT</emphasis>, on the other hand, has
|
|
been one unbroken line since 2.0 was released, leading
|
|
towards &rel.current;-RELEASE and beyond. For more detailed
|
|
information on branches see <quote><ulink
|
|
url="&url.articles.releng;/release-proc.html#rel-branch">&os; Release Engineering: Creating the Release Branch</ulink></quote>,
|
|
the status of the branches and the upcoming release schedule
|
|
can be found on the <ulink
|
|
url="http://www.FreeBSD.org/releng">Release Engineering Information</ulink> page.</para>
|
|
|
|
<para>&rel.current;-STABLE is the actively developed
|
|
<emphasis>-STABLE</emphasis> branch. The latest release on
|
|
the &rel.current;-STABLE branch is &rel.current;-RELEASE,
|
|
which was released in &rel.current.date;.</para>
|
|
|
|
<para>The &rel.head; branch is the actively developed
|
|
<emphasis>-CURRENT</emphasis> branch toward the next
|
|
generation of &os;. See <link
|
|
linkend="current">What is &os;-CURRENT?</link> for more
|
|
information on this branch.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="release-freq">
|
|
<para>When are &os; releases made?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &a.re; releases a new major version of &os; about
|
|
every 18 months and a new minor version about every 8 months,
|
|
on average. Release dates are announced well in advance, so
|
|
that the people working on the system know when their
|
|
projects need to be finished and tested. A testing period
|
|
precedes each release, to ensure that the addition
|
|
of new features does not compromise the stability of the
|
|
release. Many users regard this caution as one of the best
|
|
things about &os;, even though waiting for all the latest
|
|
goodies to reach <emphasis>-STABLE</emphasis> can be a
|
|
little frustrating.</para>
|
|
|
|
<para>More information on the release engineering process
|
|
(including a schedule of upcoming releases) can be found on
|
|
the <ulink
|
|
url="http://www.FreeBSD.org/releng/index.html">release engineering</ulink>
|
|
pages on the &os; Web site.</para>
|
|
|
|
<para>For people who need or want a little more excitement,
|
|
binary snapshots are made daily as discussed above.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="responsible">
|
|
<para>Who is responsible for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The key decisions concerning the &os; project, such as
|
|
the overall direction of the project and who is allowed to
|
|
add code to the source tree, are made by a <ulink
|
|
url="&url.base;/administration.html#t-core">core team</ulink> of
|
|
9 people. There is a much larger team of more than 350
|
|
<ulink
|
|
url="&url.articles.contributors;/article.html#staff-committers">committers</ulink>
|
|
who are authorized to make changes directly to the &os;
|
|
source tree.</para>
|
|
|
|
<para>However, most non-trivial changes are discussed in
|
|
advance in the <link linkend="mailing">mailing lists</link>,
|
|
and there are no restrictions on who may take part in the
|
|
discussion.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="where-get">
|
|
<para>Where can I get &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Every significant release of &os; is available via
|
|
anonymous FTP from the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/"> &os; FTP site</ulink>:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The latest &rel.stable; release, &rel.current;-RELEASE
|
|
can be found in the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/&rel.current;-RELEASE/">&rel.current;-RELEASE directory</ulink>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><ulink url="&url.base;/snapshots/"> Snapshot</ulink>
|
|
releases are made monthly for the <link
|
|
linkend="current">-CURRENT</link> and <link
|
|
linkend="stable">-STABLE</link> branch, these being of
|
|
service purely to bleeding-edge testers and
|
|
developers.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The latest &rel2.stable; release, &rel2.current;-RELEASE
|
|
can be found in the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">&rel2.current;-RELEASE directory</ulink>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Information about obtaining &os; on CD, DVD, and other
|
|
media can be found in <ulink
|
|
url="&url.books.handbook;/mirrors.html">the Handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="access-pr">
|
|
<para>How do I access the Problem Report database?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The Problem Report database of all user change requests
|
|
may be queried by using our web-based PR <ulink
|
|
url="http://www.FreeBSD.org/cgi/query-pr.cgi?query">query</ulink>
|
|
interface.</para>
|
|
|
|
<para>The &man.send-pr.1; command can be used to submit
|
|
problem reports and change requests via electronic mail.
|
|
Alternatively, the <ulink
|
|
url="http://www.freebsd.org/send-pr.html">web-based problem report submission interface</ulink>
|
|
can be used to submit problem reports through a web
|
|
browser.</para>
|
|
|
|
<para>Before submitting a problem report, please read <ulink
|
|
url="&url.articles.problem-reports;/article.html">Writing &os; Problem Reports</ulink>,
|
|
an article on how to write good problem reports.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="support">
|
|
<title>Documentation and Support</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="books">
|
|
<para>What good books are there about &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The project produces a wide range of documentation,
|
|
available online from this link: <ulink
|
|
url="http://www.FreeBSD.org/docs.html"></ulink>. In addition, <link
|
|
linkend="bibliography">the Bibliography</link> at the end of this
|
|
FAQ, and <ulink
|
|
url="&url.books.handbook;/bibliography.html">the one in the Handbook</ulink>
|
|
reference other recommended books.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="doc-formats">
|
|
<para>Is the documentation available in other formats, such as
|
|
plain text (ASCII), or &postscript;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. The documentation is available in a number of
|
|
different formats and compression schemes on the &os; FTP
|
|
site, in the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">/pub/FreeBSD/doc/</ulink>
|
|
directory.</para>
|
|
|
|
<para>The documentation is categorized in a number of
|
|
different ways. These include:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The document's name, such as <literal>faq</literal>,
|
|
or <literal>handbook</literal>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The document's language and encoding. These are
|
|
based on the locale names you will find under
|
|
<filename class="directory">/usr/share/locale</filename> on your &os;
|
|
system. The current languages and encodings that we
|
|
have for documentation are as follows:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Name</entry>
|
|
|
|
<entry>Meaning</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><literal>en_US.ISO8859-1</literal></entry>
|
|
|
|
<entry>English (United States)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>bn_BD.ISO10646-1</literal></entry>
|
|
|
|
<entry>Bengali or Bangla (Bangladesh)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>da_DK.ISO8859-1</literal></entry>
|
|
|
|
<entry>Danish (Denmark)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>de_DE.ISO8859-1</literal></entry>
|
|
|
|
<entry>German (Germany)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>el_GR.ISO8859-7</literal></entry>
|
|
|
|
<entry>Greek (Greece)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>es_ES.ISO8859-1</literal></entry>
|
|
|
|
<entry>Spanish (Spain)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>fr_FR.ISO8859-1</literal></entry>
|
|
|
|
<entry>French (France)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>hu_HU.ISO8859-2</literal></entry>
|
|
|
|
<entry>Hungarian (Hungary)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>it_IT.ISO8859-15</literal></entry>
|
|
|
|
<entry>Italian (Italy)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>ja_JP.eucJP</literal></entry>
|
|
|
|
<entry>Japanese (Japan, EUC encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>mn_MN.UTF-8</literal></entry>
|
|
|
|
<entry>Mongolian (Mongolia, UTF-8 encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>nl_NL.ISO8859-1</literal></entry>
|
|
|
|
<entry>Dutch (Netherlands)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>no_NO.ISO8859-1</literal></entry>
|
|
|
|
<entry>Norwegian (Norway)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>pl_PL.ISO8859-2</literal></entry>
|
|
|
|
<entry>Polish (Poland)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>pt_BR.ISO8859-1</literal></entry>
|
|
|
|
<entry>Portuguese (Brazil)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>ru_RU.KOI8-R</literal></entry>
|
|
|
|
<entry>Russian (Russia, KOI8-R encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>sr_YU.ISO8859-2</literal></entry>
|
|
|
|
<entry>Serbian (Serbia)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>tr_TR.ISO8859-9</literal></entry>
|
|
|
|
<entry>Turkish (Turkey)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>zh_CN.GB2312</literal></entry>
|
|
|
|
<entry>Simplified Chinese (China, GB2312
|
|
encoding)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>zh_TW.Big5</literal></entry>
|
|
|
|
<entry>Traditional Chinese (Taiwan, Big5 encoding)</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<note>
|
|
<para>Some documents may not be available in all
|
|
languages.</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The document's format. We produce the documentation
|
|
in a number of different output formats. Each format
|
|
has its own advantages and disadvantages. Some formats
|
|
are better suited for online reading, while others are
|
|
meant to be aesthetically pleasing when printed on
|
|
paper. Having the documentation available in any of
|
|
these formats ensures that our readers will be able to
|
|
read the parts they are interested in, either on their
|
|
monitor, or on paper after printing the documents. The
|
|
currently available formats are:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Format</entry>
|
|
|
|
<entry>Meaning</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><literal>html-split</literal></entry>
|
|
|
|
<entry>A collection of small, linked, HTML
|
|
files.</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>html</literal></entry>
|
|
|
|
<entry>One large HTML file containing the entire
|
|
document</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>pdf</literal></entry>
|
|
|
|
<entry>Adobe's Portable Document Format</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>ps</literal></entry>
|
|
|
|
<entry>&postscript;</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>rtf</literal></entry>
|
|
|
|
<entry>Microsoft's Rich Text Format</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>txt</literal></entry>
|
|
|
|
<entry>Plain text</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<note>
|
|
<para>Page numbers are not automatically updated when
|
|
loading Rich Text Format into Word. Press <keycombo
|
|
action="simul"><keycap>Ctrl</keycap><keycap>A</keycap></keycombo>,
|
|
<keycombo
|
|
action="simul"><keycap>Ctrl</keycap><keycap>End</keycap></keycombo>,
|
|
<keycap>F9</keycap> after loading the document, to
|
|
update the page numbers.</para>
|
|
</note>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The compression and packaging scheme.</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Where the format is
|
|
<literal>html-split</literal>, the files are bundled
|
|
up using &man.tar.1;. The resulting
|
|
<filename>.tar</filename> file is then compressed
|
|
using the compression schemes detailed in the next
|
|
point.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>All the other formats generate one file, called
|
|
<filename><replaceable>type</replaceable>.<replaceable>format</replaceable></filename>
|
|
(i.e., <filename>article.pdf</filename>,
|
|
<filename>book.html</filename>, and so on).</para>
|
|
|
|
<para>These files are then compressed using 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 class="directory">handbook/</filename> directory.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>After choosing the format and compression mechanism that
|
|
you want to download, you will have to download the compressed
|
|
files yourself, uncompress them, and then copy the
|
|
appropriate documents into place.</para>
|
|
|
|
<para>For example, the split HTML version of the FAQ,
|
|
compressed using &man.bzip2.1;, can be found in
|
|
<filename>doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2</filename>
|
|
To download and uncompress that file you would have
|
|
to do this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2</userinput>
|
|
&prompt.root; <userinput>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.
|
|
You will be left with a collection of
|
|
<filename>.html</filename> files. The main one is called
|
|
<filename>index.html</filename>, which will contain the
|
|
table of contents, introductory material, and links to the
|
|
other parts of the document. You can then copy or move
|
|
these to their final location as necessary.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mailing">
|
|
<para>Where do I find info on the &os; mailing lists?
|
|
What &os; news groups are available?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can find full information in the <ulink
|
|
url="&url.books.handbook;/eresources.html#eresources-mail">Handbook entry on mailing-lists</ulink>
|
|
and the <ulink
|
|
url="&url.books.handbook;/eresources-news.html">Handbook entry on newsgroups</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="irc">
|
|
<para>Are there &os; IRC (Internet Relay Chat)
|
|
channels?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, most major IRC networks host a &os; chat
|
|
channel:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on <ulink
|
|
url="http://www.efnet.org/index.php">EFNet</ulink> is
|
|
a &os; forum, but do not go there for tech support or
|
|
try to get folks there to help you avoid the pain of
|
|
reading manual pages or doing your own research. It is
|
|
a chat channel, first and foremost, and topics there are
|
|
just as likely to involve sex, sports or nuclear weapons
|
|
as they are &os;. You Have Been Warned! Available at
|
|
server <hostid>irc.efnet.org</hostid>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSDhelp</literal> on <ulink
|
|
url="http://www.efnet.org/index.php">EFNet</ulink> is
|
|
a channel dedicated to helping &os; users. They are
|
|
much more sympathetic to questions than
|
|
<literal>#FreeBSD</literal> is.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>##FreeBSD</literal> on <ulink
|
|
url="http://freenode.net/">Freenode</ulink> is a
|
|
general help channel with many users at any time.
|
|
The conversations have been known to run off-topic for a
|
|
while, but priority is given to users with &os;
|
|
questions. We are good about helping you understand the
|
|
basics, referring to the Handbook whenever possible, and
|
|
directing you where to learn more about the topic you
|
|
need help with. We are a primarily English speaking
|
|
channel, though we have users from all over the world.
|
|
If you would like to speak in your native language, try
|
|
to ask the question in English and then relocate to
|
|
another channel
|
|
<literal>##freebsd-<replaceable>lang</replaceable></literal>
|
|
as appropriate.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on <ulink
|
|
url="http://www.dal.net/">DALNET</ulink> is available at
|
|
<hostid>irc.dal.net</hostid> in the US and
|
|
<hostid>irc.eu.dal.net</hostid> in Europe.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on <ulink
|
|
url="http://www.undernet.org/">UNDERNET</ulink> is
|
|
available at <hostid>us.undernet.org</hostid> in the US
|
|
and <hostid>eu.undernet.org</hostid> in Europe. Since
|
|
it is a help channel, be prepared to read the documents
|
|
you are referred to.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#FreeBSD</literal> on
|
|
<ulink url="http://www.rusnet.org.ru/">RUSNET</ulink>
|
|
is a russian-language oriented channel dedicated
|
|
to helping &os; users. This is also good place
|
|
for non-technical discussions.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Channel <literal>#bsdchat</literal> on <ulink
|
|
url="http://freenode.net/">Freenode</ulink> is a
|
|
Traditional-Chinese (UTF-8 encoding) language oriented
|
|
channel dedicated to helping &os; users. This is also
|
|
good place for non-technical discussions.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>The &os; wiki has a <ulink
|
|
url="http://wiki.freebsd.org/IrcChannels">good list</ulink>
|
|
of IRC channels.</para>
|
|
|
|
<para>Each of these channels are distinct and are not
|
|
connected to each other. Their chat styles also differ, so
|
|
you may need to try each to find one suited to your chat
|
|
style. As with <emphasis>all</emphasis> types of IRC
|
|
traffic, if you are easily offended or cannot deal with lots
|
|
of young people (and more than a few older ones) doing the
|
|
verbal equivalent of jello wrestling, do not even bother
|
|
with it.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="forums">
|
|
<para>Are there any web based forums to discuss &os;?</para>
|
|
</question>
|
|
<answer>
|
|
<para>The official &os; forums are located at <ulink
|
|
url="http://forums.FreeBSD.org/">http://forums.FreeBSD.org/</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="training">
|
|
<para>Where can I get commercial &os; training and
|
|
support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><ulink
|
|
url="http://www.ixsystems.com">iXsystems, Inc.</ulink>,
|
|
parent company of the <ulink
|
|
url="http://www.freebsdmall.com/">&os; Mall</ulink>,
|
|
provides commercial &os; and PC-BSD software <ulink
|
|
url="http://www.ixsystems.com/bsdsupport">support</ulink>,
|
|
in addition to &os; development and tuning solutions.</para>
|
|
|
|
<para>BSD Certification Group, Inc. provides system
|
|
administration certifications for DragonFly BSD, &os;, NetBSD,
|
|
OpenBSD. If you are interested in them, visit <ulink
|
|
url="http://www.BSDCertification.org">their site</ulink>.</para>
|
|
|
|
<para>Any other organizations providing training and support
|
|
should contact the Project to be listed here.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="install">
|
|
<chapterinfo>
|
|
<author>
|
|
<firstname>Nik</firstname>
|
|
<surname>Clayton</surname>
|
|
<affiliation>
|
|
<address><email>nik@FreeBSD.org</email></address>
|
|
</affiliation>
|
|
</author>
|
|
</chapterinfo>
|
|
|
|
<title>Installation</title>
|
|
|
|
<qandaset>
|
|
|
|
<qandaentry>
|
|
<question id="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. Most modern computers
|
|
should use &arch.amd64;. Older hardware should use
|
|
&arch.i386;. If you are installing on a
|
|
non-x86-compatible architecture select the platform
|
|
which best matches the architecture you are
|
|
using.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="floppy-download">
|
|
<para>Which file do I download to get &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>On the
|
|
<ulink url="http://www.freebsd.org/where.html">Getting &os;</ulink>
|
|
page select <literal>[iso]</literal> next to the
|
|
architecture you want to use.</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 copying 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>&arch.pc98; users require these floppy images:
|
|
<filename>floppies/boot.flp</filename>,
|
|
<filename>floppies/kern1.flp</filename>,
|
|
<filename>floppies/kern2.flp</filename>, and
|
|
<filename>floppies/mfsroot1.flp</filename>. These images
|
|
need
|
|
to be copied onto floppies by tools like
|
|
&man.dd.1;.</para>
|
|
|
|
<para>Full instructions on this procedure and a little bit
|
|
more about installation issues in general can be found in
|
|
the <ulink
|
|
url="&url.books.handbook;/install.html">Handbook entry on installing &os;</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="floppy-image-too-large">
|
|
<para>What do I do if the images do not fit on a
|
|
single disk?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Common mistakes when preparing the boot media
|
|
are:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>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
|
|
of
|
|
the downloaded boot image: if it is not
|
|
<emphasis>exactly</emphasis> that on the server, then
|
|
the download process is suspect.</para>
|
|
|
|
<para>To workaround: type <emphasis>binary</emphasis> at
|
|
the FTP command prompt after getting connected to the
|
|
server and before starting the download of the
|
|
image.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Using the DOS <command>copy</command> command (or
|
|
equivalent GUI tool) to transfer the boot image to
|
|
floppy.</para>
|
|
|
|
<para>Programs like <command>copy</command> will not work
|
|
as the boot image has been created to be booted into
|
|
directly. The image has the complete content of the
|
|
floppy, track for track, and is not meant to be placed
|
|
on the floppy as a regular file. You have to transfer
|
|
it to the floppy <quote>raw</quote>, using the low-level
|
|
tools (e.g., <command>fdimage</command> or
|
|
<command>rawrite</command>) described in the <ulink
|
|
url="&url.books.handbook;/install.html">installation guide to &os;</ulink>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="install-instructions-location">
|
|
<para>Where are the instructions for installing &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Installation instructions for versions since
|
|
&os; 9.0 can be found at <ulink
|
|
url="&url.books.handbook;/bsdinstall.html">Handbook entry on installing &os;</ulink>.
|
|
Older instructions can be found in the <ulink
|
|
url="&url.books.handbook;/install.html">legacy entry on installing &os;</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="need-to-run">
|
|
<para>What do I need to run &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For &os; you will need a 486 or better PC, with
|
|
64 MB or more of RAM and at least 1 GB of hard
|
|
disk space.</para>
|
|
|
|
<para>See also <xref linkend="hardware"/>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="custom-boot-floppy">
|
|
<para>How can I make my own custom 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
|
|
<ulink
|
|
url="&url.articles.releng;/article.html">Release Engineering</ulink>
|
|
article.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question 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 you install
|
|
&windows; second, it will boorishly overwrite your boot
|
|
manager without even asking. If that happens, see the next
|
|
section.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bootmanager-restore">
|
|
<para>Another operating system destroyed my Boot Manager. How
|
|
do I get it back?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This depends on what boot manager you have installed.
|
|
The &os; boot selection menu (likely what you are using
|
|
if you end up in this situation) 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 id="no-install-cdrom">
|
|
<para>I booted from my ATAPI CD-ROM, but the install program
|
|
says no CD-ROM is found. Where did it go?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The usual cause of this problem is a mis-configured
|
|
CD-ROM drive. Many PCs now ship with the CD-ROM as the slave
|
|
device on the secondary IDE controller, with no master
|
|
device on that controller. This is illegal according to the
|
|
ATAPI specification, but &windows; plays fast and loose with
|
|
the specification, and the BIOS ignores it when booting.
|
|
This is why the BIOS was able to see the CD-ROM to boot from
|
|
it, but why &os; cannot see it to complete the
|
|
install.</para>
|
|
|
|
<para>Reconfigure your system so that the CD-ROM is either the
|
|
master device on the IDE controller it is attached to, or
|
|
make sure that it is the slave on an IDE controller that
|
|
also has a master device.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="need-complete-sources">
|
|
<para>Do I need to install the source?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>In general, no. There is nothing in the base
|
|
system which requires the presence of the source to
|
|
operate. Some ports, like <filename
|
|
role="package">sysutils/lsof</filename>, will not build
|
|
unless the source is installed. In particular, if the
|
|
port builds a kernel module or directly operates on kernel
|
|
structures, the source must be installed.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="need-kernel">
|
|
<para>Do I need to build a kernel?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Usually not. The supplied <literal>GENERIC</literal>
|
|
kernel contains the drivers an ordinary computer will
|
|
need. &man.freebsd-update.8;, the &os; binary upgrade
|
|
tool, cannot upgrade custom kernels, another reason
|
|
to stick with the <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 id="password-encryption">
|
|
<para>Should I use DES, Blowfish, or MD5 passwords and how do
|
|
I specify which form my users receive?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; 7 and 8 use MD5 password hashing by
|
|
default. Recent versions
|
|
of &os; use <emphasis>SHA512</emphasis> by default.
|
|
These are
|
|
believed to be more secure than the traditional &unix;
|
|
password format, which used a scheme based on the
|
|
<emphasis>DES</emphasis> algorithm. DES passwords are still
|
|
available if you need to share your password file with
|
|
legacy operating systems which still use the less secure
|
|
password format. &os; also allows you to use the Blowfish
|
|
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 id="panic-on-install-reboot">
|
|
<para>Why do I get a <errorname>panic: can't mount
|
|
root</errorname> error when rebooting the system after
|
|
installation?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This error comes from confusion between the boot block's
|
|
and the kernel's understanding of the disk devices. The
|
|
error usually manifests on two-disk IDE systems, with the
|
|
hard disks arranged as the master or single device on
|
|
separate IDE controllers, with &os; installed on the
|
|
secondary IDE controller. The boot blocks think the system
|
|
is installed on <devicename>ad0</devicename> (the second
|
|
BIOS disk) while the kernel assigns the first disk on the
|
|
secondary controller device, <devicename>ad2</devicename>.
|
|
After the device probing, the kernel tries to mount what the
|
|
boot blocks think is the boot disk,
|
|
<devicename>ad0</devicename>, while it is really
|
|
<devicename>ad2</devicename>, and fails.</para>
|
|
|
|
<para>To fix the problem, do one of the following:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Reboot the system and hit <keycap>Enter</keycap> at
|
|
the <literal>Booting kernel in 10 seconds; hit [Enter]
|
|
to interrupt</literal> prompt. This will drop you into
|
|
the boot loader.</para>
|
|
|
|
<para>Then type
|
|
<userinput>set root_disk_unit="<replaceable>disk_number</replaceable>"</userinput>.
|
|
<replaceable>disk_number</replaceable> will be
|
|
<literal>0</literal> if &os; is installed on the master
|
|
drive on the first IDE controller, <literal>1</literal>
|
|
if it is installed on the slave on the first IDE
|
|
controller, <literal>2</literal> if it is installed on
|
|
the master of the second IDE controller, and
|
|
<literal>3</literal> if it is installed on the slave of
|
|
the second IDE controller.</para>
|
|
|
|
<para>Then type <userinput>boot</userinput>, and your
|
|
system should boot correctly.</para>
|
|
|
|
<para>To make this change permanent (i.e, so you do not
|
|
have to do this every time you reboot or turn on your
|
|
&os; machine), put the line
|
|
<userinput>root_disk_unit="<replaceable>disk_number</replaceable>"</userinput>
|
|
in <filename>/boot/loader.conf.local</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Move the &os; disk onto the primary IDE
|
|
controller, so the hard disks are consecutive.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="memory-limits">
|
|
<para>What are the limits for memory?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Memory limits depend on the platform used. On a
|
|
standard &i386; install, the limit is 4 GB but more
|
|
memory can be supported through &man.pae.4;. See <link
|
|
linkend="memory-i386-over-4gb">instructions for using 4 GB or more memory on &i386;</link>.</para>
|
|
|
|
<para>&os;/pc98 has a limit of 4 GB memory, and PAE can
|
|
not be used with it. Other architectures supported by &os;
|
|
have much higher theoretical limits on maximum memory (many
|
|
terabytes).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ffs-limits">
|
|
<para>What are the limits for FFS file systems?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For FFS file systems, the maximum theoretical limit is
|
|
8 TB (2 G blocks), or 16 TB for the default
|
|
block size of 8 KB. In practice, there is a soft limit
|
|
of 1 TB, but with modifications file systems with
|
|
4 TB are possible (and exist).</para>
|
|
|
|
<para>The maximum size of a single FFS file is approximately
|
|
1 G blocks, or 4 TB with a block size of
|
|
4 KB.</para>
|
|
|
|
<table>
|
|
<title>Maximum File Sizes</title>
|
|
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>FS Block Size</entry>
|
|
|
|
<entry>Works</entry>
|
|
|
|
<entry>Should Work</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>4 KB</entry>
|
|
|
|
<entry>> 4 GB</entry>
|
|
|
|
<entry>4 TB - 1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>8 KB</entry>
|
|
|
|
<entry>> 32 GB</entry>
|
|
|
|
<entry>32 TB - 1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>16 KB</entry>
|
|
|
|
<entry>> 128 GB</entry>
|
|
|
|
<entry>32 TB - 1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>32 KB</entry>
|
|
|
|
<entry>> 512 GB</entry>
|
|
|
|
<entry>64 TB - 1</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>64 KB</entry>
|
|
|
|
<entry>> 2048 GB</entry>
|
|
|
|
<entry>128 TB - 1</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>When the FS block size is 4 KB, triple indirect
|
|
blocks work and everything should be limited by the maximum FS
|
|
block number that can be represented using triple indirect
|
|
blocks (approx.
|
|
1024<superscript>3</superscript> + 1024<superscript>2</superscript> + 1024),
|
|
but everything is limited by a (wrong) limit of
|
|
1 G - 1 on FS block numbers. The limit on FS
|
|
block numbers should be 2 G - 1. There are
|
|
some bugs for FS block numbers near 2 G - 1,
|
|
but such block numbers are unreachable when the FS block
|
|
size is 4 KB.</para>
|
|
|
|
<para>For block sizes of 8 KB and larger, everything
|
|
should be limited by the 2 G - 1 limit on FS
|
|
block numbers, but is actually limited by the
|
|
1 G - 1 limit on FS block numbers. Using the
|
|
correct limit of 2 G - 1 blocks does cause
|
|
problems.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="archsw-readin-failed-error">
|
|
<para>Why do I get an error message,
|
|
<errorname>archsw.readin.failed</errorname> after compiling
|
|
and booting a new kernel?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Because your world and kernel are out of sync. This is
|
|
not supported. Be sure you use <command>make <maketarget>buildworld</maketarget></command>
|
|
and <command>make <maketarget>buildkernel</maketarget></command>
|
|
to update your kernel.</para>
|
|
|
|
<para>You can boot by specifying the kernel directly at the
|
|
second stage, pressing any key when the <literal>|</literal>
|
|
shows up before loader is started.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="general-configuration-tool">
|
|
<para>Is there a tool to perform post-installation
|
|
configuration tasks?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, &rel.head.releng; users can set
|
|
<varname>WITH_BSDCONFIG</varname> in
|
|
<filename>/etc/src.conf</filename>. Users of &rel.relx;
|
|
and higher may also install
|
|
<filename role="package">sysutils/bsdconfig</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="hardware">
|
|
<title>Hardware Compatibility</title>
|
|
|
|
<sect1 id="compatibility-general">
|
|
<title>General</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="which-hardware-to-get">
|
|
<para>I want to get a piece of hardware for my &os; system.
|
|
Which model/brand/type is best?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is discussed continually on the &os; mailing
|
|
lists. Since hardware changes so quickly, however, we
|
|
expect this. We <emphasis>still</emphasis> strongly
|
|
recommend that you read through the Hardware Notes
|
|
for &os; <ulink
|
|
url="&rel.current.hardware;">&rel.current;</ulink> or
|
|
<ulink
|
|
url="&rel2.current.hardware;">&rel2.current;</ulink> and
|
|
search the mailing list <ulink
|
|
url="http://www.FreeBSD.org/search/#mailinglists">archives</ulink>
|
|
before asking about the latest and greatest hardware.
|
|
Chances are a discussion about the type of hardware you
|
|
are looking for took place just last week.</para>
|
|
|
|
<para>If you are looking for a laptop, check the &a.mobile;
|
|
archives. Otherwise, you probably want the archives for
|
|
the &a.questions;, or possibly a specific mailing list for
|
|
a particular hardware type.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="memory-upper-limitation">
|
|
<para>Does &os; support more than 4 GB of memory (RAM)?
|
|
More than 16 GB? More than 48 GB?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. &os; as an operating system generally supports
|
|
as much physical memory (RAM) as the platform it is running
|
|
on does. Keep in mind that different platforms have
|
|
different limits for memory; for example &i386; without
|
|
<acronym>PAE</acronym> supports at most 4 GB of
|
|
memory (and usually less than that because of PCI address
|
|
space) and &i386; with PAE supports at most 64 GB
|
|
memory. AMD64 platforms currently deployed support up to
|
|
1 TB of physical memory.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="memory-i386-over-4gb">
|
|
<para>Why does &os; report less than 4 GB memory when
|
|
installed on an &i386; machine?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The total address space on &i386; machines is 32-bit,
|
|
meaning that at most 4 GB of memory is addressable (can
|
|
be accessed). Furthermore, some addresses in this range
|
|
are reserved by hardware for different purposes, for
|
|
example for using and controlling PCI devices, for
|
|
accessing video memory, and so on. Therefore, the total
|
|
amount of memory usable by the operating system for its
|
|
kernel and applications is limited to significantly less
|
|
than 4 GB. Usually, 3.2 GB to 3.7 GB is
|
|
the maximum usable physical memory in this
|
|
configuration.</para>
|
|
|
|
<para>To access more than 3.2 GB to 3.7 GB of
|
|
installed memory (meaning up to 4 GB but also more than
|
|
4 GB), a special tweak called <acronym>PAE</acronym>
|
|
must be used. PAE stands for Physical Address Extension
|
|
and is a way for 32-bit x86 CPUs to address more than
|
|
4 GB of memory. It remaps the memory that would
|
|
otherwise be overlaid by address reservations for
|
|
hardware devices above the 4 GB range and uses it as
|
|
additional physical memory (see &man.pae.4;). Using PAE
|
|
has some drawbacks; this mode of memory access is a little
|
|
bit slower than the normal (without PAE) mode and loadable
|
|
modules (see &man.kld.4;) are not supported. This means
|
|
all drivers must be compiled into the kernel.</para>
|
|
|
|
<para>The most common way to enable PAE is to build a new
|
|
kernel with the special ready-provided kernel configuration
|
|
file called <filename>PAE</filename>, which is already
|
|
configured to build a safe kernel. Note that some entries
|
|
in this kernel configuration file are too conservative and
|
|
some drivers marked as unready to be used with PAE are
|
|
actually usable. A rule of thumb is that if the driver is
|
|
usable on 64-bit architectures (like AMD64), it is also
|
|
usable with PAE. If you wish to create your own kernel
|
|
configuration file, you can enable PAE by adding the
|
|
following line to your configuration:</para>
|
|
|
|
<programlisting>options PAE</programlisting>
|
|
|
|
<para>PAE is not much used nowadays because most new x86
|
|
hardware also supports running in 64-bit mode, known as
|
|
AMD64 or &intel; 64. It has a much larger address
|
|
space and does not need such tweaks. &os; supports AMD64
|
|
and it is recommended that this version of &os; be used
|
|
instead of the &i386; version if 4 GB or more memory
|
|
is required.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-processors">
|
|
<title>Architectures and Processors</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="architectures">
|
|
<para>Does &os; support architectures other than the
|
|
x86?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. &os; divides support into multiple tiers.
|
|
Tier 1 architectures, such as i386 or amd64; are
|
|
fully supported. Tiers 2 and 3 are supported on a
|
|
if-possible basis. A full explanation of the tier
|
|
system is available in the
|
|
<ulink
|
|
url="&url.articles.committers-guide;/archs.html">Committer's Guide.</ulink></para>
|
|
|
|
<para>A complete list of supported architectures can be
|
|
found on the
|
|
<ulink
|
|
url="http://www.FreeBSD.org/platforms/">platforms page.</ulink></para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="smp-support">
|
|
<para>Does &os; support Symmetric Multiprocessing
|
|
(SMP)?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Symmetric multi-processor (SMP) systems are generally
|
|
supported by &os;, although in some cases, BIOS or
|
|
motherboard bugs may generate some problems.</para>
|
|
|
|
<para>&os; will take advantage of HyperThreading (HTT)
|
|
support on &intel; CPUs that support this feature. A kernel
|
|
with the <literal>options SMP</literal> feature enabled
|
|
will automatically detect the additional logical
|
|
processors.</para>
|
|
|
|
<para>&man.smp.4; has more details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="microcode">
|
|
<para>What is microcode?
|
|
How do I install &intel; CPU microcode updates?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Microcode is a method of programmatically
|
|
implementating hardware level instructions. This allows
|
|
for CPU bugs to be fixed without replacing the on board chip.</para>
|
|
|
|
<para>Install <filename role="package">sysutils/devcpu-data</filename>,
|
|
then add:</para>
|
|
<programlisting>microcode_update_enable="YES"</programlisting>
|
|
|
|
<para>to <filename>/etc/rc.conf</filename></para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-drives">
|
|
<title>Hard Drives, Tape Drives, and CD and DVD Drives</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="supported-hard-drives">
|
|
<para>What kind of hard drives does &os; support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports EIDE, SATA, SCSI, and SAS drives (with a
|
|
compatible controller; see the next section), and all
|
|
drives using the original <quote>Western Digital</quote>
|
|
interface (MFM, RLL, ESDI, and of course IDE). A few ESDI
|
|
controllers that use proprietary interfaces may not work:
|
|
stick to WD1002/3/6/7 interfaces and clones.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="supported-scsi-controllers">
|
|
<para>Which SCSI or SAS controllers are supported?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the complete list in the Hardware Notes for &os;
|
|
<ulink url="&rel.current.hardware;">&rel.current;</ulink>
|
|
or <ulink
|
|
url="&rel2.current.hardware;">&rel2.current;</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="tape-support">
|
|
<para>What types of tape drives are supported?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports SCSI and QIC-36 (with a QIC-02
|
|
interface). This includes 8-mm (aka Exabyte) and DAT
|
|
drives.</para>
|
|
|
|
<para>Some of the early 8-mm drives are not quite compatible
|
|
with SCSI-2, and may not work well with &os;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="tape-changer-support">
|
|
<para>Does &os; support tape changers?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports SCSI changers using the &man.ch.4; device
|
|
and the &man.chio.1; command. The details of how you
|
|
actually control the changer can be found in the
|
|
&man.chio.1; manual page.</para>
|
|
|
|
<para>If you are not using <application>AMANDA</application>
|
|
or some other product that already understands changers,
|
|
remember that they only know how to move a tape from one
|
|
point to another, so you need to keep track of which slot a
|
|
tape is in, and which slot the tape currently in the drive
|
|
needs to go back to.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="supported-cdrom-drives">
|
|
<para>Which CD-ROM drives are supported by &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Any SCSI drive connected to a supported controller is
|
|
supported. Most ATAPI compatible IDE CD-ROMs are
|
|
supported.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="supported-cdrw-drives">
|
|
<para>Which CD-RW drives are supported by &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports any ATAPI-compatible IDE CD-R or CD-RW
|
|
drive. See &man.burncd.8; for details.</para>
|
|
|
|
<para>&os; also supports any SCSI CD-R or CD-RW drives.
|
|
Install and use <command>cdrecord</command>
|
|
from the ports or packages system, and make sure that you
|
|
have the <devicename>pass</devicename> device compiled in
|
|
your kernel.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-kbd-mice">
|
|
<title>Keyboards and Mice</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="moused">
|
|
<para>Is it possible to use a mouse in any way outside the X
|
|
Window system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are using the default console driver,
|
|
&man.syscons.4;, you can use a mouse pointer in text
|
|
consoles to cut & paste text. Run the mouse daemon,
|
|
&man.moused.8;, and turn on the mouse pointer in the
|
|
virtual console:</para>
|
|
|
|
<screen>&prompt.root; <userinput>moused -p /dev/<replaceable>xxxx</replaceable> -t <replaceable>yyyy</replaceable></userinput>
|
|
&prompt.root; <userinput>vidcontrol -m on</userinput></screen>
|
|
|
|
<para>Where <replaceable>xxxx</replaceable> is the mouse
|
|
device name and <replaceable>yyyy</replaceable> is a
|
|
protocol type for the mouse. The mouse daemon can
|
|
automatically determine the protocol type of most mice,
|
|
except old serial mice. Specify the
|
|
<literal>auto</literal> protocol to invoke automatic
|
|
detection. If automatic detection does not work, see the
|
|
&man.moused.8; manual page for a list of supported
|
|
protocol types.</para>
|
|
|
|
<para>If you have a PS/2 mouse, just add
|
|
<literal>moused_enable="YES"</literal> to
|
|
<filename>/etc/rc.conf</filename> to start the mouse
|
|
daemon at boot-time. Additionally, if you would like to
|
|
use the mouse daemon on all virtual terminals instead of
|
|
just the console, add
|
|
<literal>allscreens_flags="-m on"</literal> to
|
|
<filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>When the mouse daemon is running, access to the mouse
|
|
must be coordinated between the mouse daemon and other
|
|
programs such as X Windows. Refer to the FAQ <link
|
|
linkend="x-and-moused">Why does my mouse not work with X?</link>
|
|
for more details on this issue.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="text-mode-cut-paste">
|
|
<para>How do I cut and paste text with a mouse in the text
|
|
console?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>It is not possible to remove data using the mouse.
|
|
However, it is possible to <quote>copy and
|
|
paste</quote>.
|
|
Once you get the mouse daemon running (see 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 your mouse does not have a middle button, you may
|
|
wish to emulate one or remap buttons using mouse daemon
|
|
options. See the &man.moused.8; manual page for
|
|
details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mouse-wheel-buttons">
|
|
<para>My mouse has a fancy wheel and buttons. Can I use
|
|
them in &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The answer is, unfortunately, <quote>It
|
|
depends</quote>. These mice with additional features
|
|
require specialized driver in most cases. Unless the
|
|
mouse device driver or the user program has specific
|
|
support for the mouse, it will act just like a standard
|
|
two, or three button mouse.</para>
|
|
|
|
<para>For the possible usage of wheels in the X Window
|
|
environment, refer to <link
|
|
linkend="x-and-wheel">that section</link>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="keyboard-delete-key">
|
|
<para>How do I use my delete key in <command>sh</command>
|
|
and <command>csh</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For the <application>Bourne Shell</application>, add
|
|
the following lines to your <filename>.shrc</filename>. See
|
|
&man.sh.1; and &man.editrc.5;.</para>
|
|
|
|
<programlisting>bind ^? ed-delete-next-char # for console
|
|
bind ^[[3~ ed-delete-next-char # for xterm</programlisting>
|
|
|
|
<para>For the <application>C Shell</application>, add the
|
|
following lines to your <filename>.cshrc</filename>. See
|
|
&man.csh.1;.</para>
|
|
|
|
<programlisting>bindkey ^? delete-char # for console
|
|
bindkey ^[[3~ delete-char # for xterm</programlisting>
|
|
|
|
<para>For more information, see <ulink
|
|
url="http://www.ibb.net/~anne/keyboard.html">this page</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-networking">
|
|
<title>Networking</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="support-broadcom">
|
|
<para>Is there a native driver for the Broadcom 43xx
|
|
cards?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, many Broadcom 43xx cards are supported by the
|
|
&man.bwn.4; and &man.bwi.4; drivers.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-sound">
|
|
<title>Sound Devices</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="es1370-silent-pcm">
|
|
<para>Workarounds for no sound from my &man.pcm.4; sound
|
|
card?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Some sound cards set their output volume to 0 at every
|
|
boot. Run the following command every time the machine
|
|
boots:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mixer pcm 100 vol 100 cd 100</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
|
|
<sect1 id="compatibility-other">
|
|
<title>Other Hardware</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="power-management-support">
|
|
<para>Does &os; support power management on my
|
|
laptop?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports 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 id="troubleshoot">
|
|
<title>Troubleshooting</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="pae">
|
|
<para>Why is &os; finding the wrong amount of memory on &i386;
|
|
hardware?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The most likely reason is the difference between
|
|
physical memory addresses and virtual addresses.</para>
|
|
|
|
<para>The convention for most PC hardware is to use the memory
|
|
area between 3.5 GB and 4 GB for a special purpose
|
|
(usually for PCI). This address space is used to access PCI
|
|
hardware. As a result real, physical memory can not be
|
|
accessed by that address space.</para>
|
|
|
|
<para>What happens to the memory that should appear in that
|
|
location is dependent on your hardware. Unfortunately, some
|
|
hardware does nothing and the ability to use that last
|
|
500 MB of RAM is entirely lost.</para>
|
|
|
|
<para>Luckily, most hardware remaps the memory to a higher
|
|
location so that it can still be used. However, this can
|
|
cause some confusion if you watch the boot messages.</para>
|
|
|
|
<para>On a 32-bit version of &os;, the memory appears
|
|
lost, since it will be remapped above 4 GB, which a
|
|
32-bit kernel is unable to access. In this case, the
|
|
solution is to build a PAE enabled kernel. See <link
|
|
linkend="memory-limits">the entry on memory limits</link>
|
|
and <link linkend="memory-upper-limitation">about different
|
|
memory limits on different platforms</link> for more
|
|
information.</para>
|
|
|
|
<para>On a 64-bit version of &os;, or when running a
|
|
PAE-enabled kernel, &os; will correctly detect and remap the
|
|
memory so it is usable. During boot, however, it may seem
|
|
as if &os; is detecting more memory than the system really
|
|
has, due to the described remapping. This is normal and the
|
|
available memory will be corrected as the boot process
|
|
completes.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="signal11">
|
|
<para>Why do my programs occasionally die with
|
|
<errorname>Signal 11</errorname> errors?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Signal 11 errors are caused when your process has
|
|
attempted to access memory which the operating system has not
|
|
granted it access to. If something like this is happening
|
|
at seemingly random intervals then you need to start
|
|
investigating things very carefully.</para>
|
|
|
|
<para>These problems can usually be attributed to
|
|
either:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>If the problem is occurring only in a specific
|
|
application that you are developing yourself it is
|
|
probably a bug in your code.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If it is a problem with part of the base &os;
|
|
system, it may also be buggy code, but more often than not
|
|
these problems are found and fixed long before us
|
|
general FAQ readers get to use these bits of code (that
|
|
is what -current is for).</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>In particular, a dead giveaway that this is
|
|
<emphasis>not</emphasis> a &os; bug is if you see the
|
|
problem when you are compiling a program, but the activity
|
|
that the compiler is carrying out changes each time.</para>
|
|
|
|
<para>For example, suppose you are running
|
|
<command>make <maketarget>buildworld</maketarget></command>,
|
|
and the compile fails while trying to compile
|
|
<filename>ls.c</filename> into <filename>ls.o</filename>.
|
|
If you then run
|
|
<command>make <maketarget>buildworld</maketarget></command>
|
|
again, and the compile fails in the same place then this is
|
|
a broken build — try updating your sources and try
|
|
again. If the compile fails elsewhere then this is almost
|
|
certainly hardware.</para>
|
|
|
|
<para>What you should do:</para>
|
|
|
|
<para>In the first case you can use a debugger e.g.,
|
|
&man.gdb.1; to find the point in the program which is
|
|
attempting to access a bogus address and then fix it.</para>
|
|
|
|
<para>In the second case you need to verify that it is not
|
|
your hardware at fault.</para>
|
|
|
|
<para>Common causes of this include:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Your hard disks might be overheating: Check the fans
|
|
in your case are still working, as your disk (and perhaps
|
|
other hardware might be overheating).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The processor running is overheating: This might be
|
|
because the processor has been overclocked, or the fan
|
|
on the processor might have died. In either case you
|
|
need to ensure that you have hardware running at what it
|
|
is specified to run at, at least while trying to solve
|
|
this problem (in other words, clock it back to the default
|
|
settings.)</para>
|
|
|
|
<para>If you are overclocking then note that it is far
|
|
cheaper to have a slow system than a fried system that
|
|
needs replacing! Also the wider community is not often
|
|
sympathetic to problems on overclocked systems, whether
|
|
you believe it is safe or not.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Dodgy memory: If you have multiple memory
|
|
SIMMS/DIMMS installed then pull them all out and try
|
|
running the machine with each SIMM or DIMM individually
|
|
and narrow the problem down to either the problematic
|
|
DIMM/SIMM or perhaps even a combination.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Over-optimistic Motherboard settings: In your BIOS
|
|
settings, and some motherboard jumpers you have options
|
|
to set various timings, mostly the defaults will be
|
|
sufficient, but sometimes, setting the wait states on
|
|
RAM too low, or setting the <quote>RAM Speed:
|
|
Turbo</quote> option, or similar in the BIOS will cause
|
|
strange behavior. A possible idea is to set to BIOS
|
|
defaults, but it might be worth noting down your
|
|
settings first!</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Unclean or insufficient power to the motherboard.
|
|
If you have any unused I/O boards, hard disks, or CD-ROMs
|
|
in your system, try temporarily removing them or
|
|
disconnecting the power cable from them, to see if your
|
|
power supply can manage a smaller load. Or try another
|
|
power supply, preferably one with a little more power
|
|
(for instance, if your current power supply is rated at
|
|
250 Watts try one rated at 300 Watts).</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>You should also read the SIG11 FAQ (listed below) which
|
|
has excellent explanations of all these problems, albeit from
|
|
a &linux; viewpoint. It also discusses how memory testing
|
|
software or hardware can still pass faulty memory.</para>
|
|
|
|
<para>Finally, if none of this has helped it is possible that
|
|
you have just found a bug in &os;, and you should follow the
|
|
instructions to send a problem report.</para>
|
|
|
|
<para>There is an extensive FAQ on this at <ulink
|
|
url="http://www.bitwizard.nl/sig11/">the SIG11 problem FAQ</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="trap-12-panic">
|
|
<para>My system crashes with either <errorname>Fatal trap 12:
|
|
page fault in kernel mode</errorname>, or
|
|
<errorname>panic:</errorname>, and spits out a bunch of
|
|
information. What should I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The &os; developers are very interested in these
|
|
errors, but need some more information than just the error
|
|
you see. Copy your full crash message. Then consult the
|
|
FAQ section on <link
|
|
linkend="kernel-panic-troubleshooting">kernel panics</link>,
|
|
build a debugging kernel, and get a backtrace. This might
|
|
sound difficult, but you do not need any programming skills;
|
|
you just have to follow the instructions.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kmem-map-too-small">
|
|
<para>My system has more than 1 GB of RAM, and I'm
|
|
getting panics with <errorname>kmem_map too small</errorname>
|
|
messages. What is wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Normally, &os; determines a number of kernel parameters,
|
|
such as the maximum number of files that can be open
|
|
concurrently, from the amount of memory installed in the
|
|
system. On systems with one gigabyte of RAM or more, this
|
|
<quote>auto sizing</quote> mechanism may choose values that
|
|
are too high: while starting up, the kernel allocates
|
|
various tables and other structures that fill up most of the
|
|
available kernel memory. Later on, while the system is
|
|
running, the kernel has no more space left for dynamic
|
|
memory allocations, and panics.</para>
|
|
|
|
<para>Compile your own kernel, and add the
|
|
<option>VM_KMEM_SIZE_MAX</option> to your kernel
|
|
configuration file, increasing the maximum size to
|
|
400 MB (<option>options
|
|
VM_KMEM_SIZE_MAX=419430400</option>). 400 MB appears
|
|
to be sufficient for machines with up to 6 GB of
|
|
memory.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="panic-kmemmap-too-small">
|
|
<para>My system does not have 1 GB of RAM, and &os; still
|
|
panics with <errorname>kmem_map too
|
|
small</errorname>!</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The panic indicates that the system ran out of virtual
|
|
memory for network buffers (specifically, mbuf clusters).
|
|
You can increase the amount of VM available for mbuf
|
|
clusters by following the instructions in the <ulink
|
|
url="&url.books.handbook;/configtuning-kernel-limits.html#nmbclusters">Network Limits</ulink>
|
|
section of the Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="proc-table-full">
|
|
<para>Why do I get the error <errorname>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 (see <link
|
|
linkend="panic-kmemmap-too-small">this</link> earlier
|
|
question). If your machine is heavily loaded, you probably
|
|
want to increase <varname>kern.maxusers</varname>. This
|
|
will increase these other system limits in addition to the
|
|
maximum number of processes.</para>
|
|
|
|
<para>To adjust your <varname>kern.maxusers</varname> value,
|
|
see the <ulink
|
|
url="&url.books.handbook;/configtuning-kernel-limits.html#kern-maxfiles">File/Process Limits</ulink>
|
|
section of the Handbook. (While that section refers to open
|
|
files, the same limits apply to processes.)</para>
|
|
|
|
<para>If your machine is lightly loaded, and you are simply
|
|
running a very large number of processes, you can adjust
|
|
this with the <varname>kern.maxproc</varname> tunable. If
|
|
this tunable needs adjustment it needs to be defined in
|
|
<filename>/boot/loader.conf</filename>. The tunable will
|
|
not get adjusted until the system is rebooted. For more
|
|
information about tuning tunables, see
|
|
&man.loader.conf.5;.
|
|
If these processes are being run by a single user, you will
|
|
also need to adjust <varname>kern.maxprocperuid</varname> to
|
|
be one less than your new <varname>kern.maxproc</varname>
|
|
value. (It must be at least one less because one system
|
|
program, &man.init.8;, must always be running.)</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mail-loopback">
|
|
<para>Why does <application>sendmail</application> give me an
|
|
error reading <errorname>mail loops back to
|
|
myself</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can find a detailed answer for this question in the
|
|
<ulink
|
|
url="&url.books.handbook;/mail-trouble.html#q26.5.2.">Handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="remote-fullscreen">
|
|
<para>Why do full screen applications on remote machines
|
|
misbehave?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The remote machine may be setting your terminal type to
|
|
something other than the <literal>cons25</literal> terminal
|
|
type required by the &os; console.</para>
|
|
|
|
<para>There are a number of possible work-arounds for this
|
|
problem:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>After logging on to the remote machine, set your
|
|
<envar>TERM</envar> shell variable to
|
|
<literal>ansi</literal> or <literal>sco</literal> if
|
|
the remote machine knows about these terminal
|
|
types.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Use a VT100 emulator like
|
|
<application>screen</application> at the &os; console.
|
|
<application>screen</application> offers you the
|
|
ability to run multiple concurrent sessions from one
|
|
terminal, and is a neat program in its own right.
|
|
Each <application>screen</application> window behaves
|
|
like a VT100 terminal, so the <envar>TERM</envar>
|
|
variable at the remote end should be set to
|
|
<literal>vt100</literal>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Install the <literal>cons25</literal> terminal
|
|
database entry on the remote machine. The way to do
|
|
this depends on the operating system on the remote
|
|
machine. The system administration manuals for the
|
|
remote system should be able to help you here.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Fire up an X server at the &os; end and login to the
|
|
remote machine using an X based terminal emulator such
|
|
as <command>xterm</command> or <command>rxvt</command>.
|
|
The <envar>TERM</envar> variable at the remote host
|
|
should be set to <literal>xterm</literal> or
|
|
<literal>vt100</literal>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="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 you connect
|
|
from your computer (the client) to any server, the problem is
|
|
with the client; likewise, if the problem only occurs when
|
|
someone connects to your computer (the server) the problem
|
|
is with the server.</para>
|
|
|
|
<para>If the problem is with the client, the only remedy is to
|
|
fix the DNS so the server can resolve it. If this is on a
|
|
local network, consider it a server problem and keep
|
|
reading; conversely, if this is on the global Internet, you
|
|
will most likely need to contact your ISP and ask them to
|
|
fix it for you.</para>
|
|
|
|
<para>If the problem is with the server, and this is on a
|
|
local network, you need to configure the server to be able to
|
|
resolve address-to-hostname queries for your local address
|
|
range. See the &man.hosts.5; and &man.named.8; manual pages
|
|
for more information. If this is on the global Internet,
|
|
the problem may be that your server's resolver is not
|
|
functioning correctly. To check, try to look up another
|
|
host — say, <hostid>www.yahoo.com</hostid>. If it
|
|
does not work, that is your problem.</para>
|
|
|
|
<para>Following a fresh install of &os;, it is also possible
|
|
that domain and name server information is missing from
|
|
<filename>/etc/resolv.conf</filename>. This will often
|
|
cause a delay in <application>SSH</application>, as the
|
|
option <literal>UseDNS</literal> is set to
|
|
<literal>yes</literal> by default in
|
|
<filename>/etc/ssh/sshd_config</filename>.
|
|
If this is causing the
|
|
problem, you will either need to fill in the missing
|
|
information in <filename>/etc/resolv.conf</filename> or set
|
|
<literal>UseDNS</literal> to <literal>no</literal> in
|
|
<filename>sshd_config</filename> as a temporary
|
|
workaround.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="file-table-full">
|
|
<para>Why does <errorname>file: table is full</errorname> show
|
|
up repeatedly in &man.dmesg.8;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This error message indicates you have exhausted the
|
|
number of available file descriptors on your system. Please
|
|
see the <ulink
|
|
url="&url.books.handbook;/configtuning-kernel-limits.html#kern-maxfiles">kern.maxfiles</ulink>
|
|
section of the <ulink
|
|
url="&url.books.handbook;/configtuning-kernel-limits.html">Tuning Kernel Limits</ulink>
|
|
section of the Handbook for a discussion and
|
|
solution.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="computer-clock-skew">
|
|
<para>Why does the clock on my computer keep incorrect time?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your computer has two or more clocks, and &os; has
|
|
chosen to use the wrong one.</para>
|
|
|
|
<para>Run &man.dmesg.8;, and check for lines that contain
|
|
<literal>Timecounter</literal>. The one with the highest
|
|
quality value that &os; chose.</para>
|
|
|
|
<screen>&prompt.root; <userinput>dmesg | grep Timecounter</userinput>
|
|
Timecounter "i8254" frequency 1193182 Hz quality 0
|
|
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
|
|
Timecounter "TSC" frequency 2998570050 Hz quality 800
|
|
Timecounters tick every 1.000 msec</screen>
|
|
|
|
<para>You can confirm this by checking the
|
|
<varname>kern.timecounter.hardware</varname>
|
|
&man.sysctl.3;.</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.timecounter.hardware</userinput>
|
|
kern.timecounter.hardware: ACPI-fast</screen>
|
|
|
|
<para>It may be a broken ACPI timer. The simplest solution is
|
|
to disable the ACPI timer in
|
|
<filename>/boot/loader.conf</filename>:</para>
|
|
|
|
<programlisting>debug.acpi.disabled="timer"</programlisting>
|
|
|
|
<para>Or the BIOS may modify the TSC clock—perhaps to
|
|
change the speed of the processor when running from batteries,
|
|
or going into a power saving mode, but &os; is unaware of
|
|
these adjustments, and appears to gain or lose time.</para>
|
|
|
|
<para>In this example, the <literal>i8254</literal> clock is
|
|
also available, and can be selected by writing its name to the
|
|
<varname>kern.timecounter.hardware</varname>
|
|
&man.sysctl.3;.</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.timecounter.hardware=i8254</userinput>
|
|
kern.timecounter.hardware: TSC -> i8254</screen>
|
|
|
|
<para>Your computer should now start keeping more accurate
|
|
time.</para>
|
|
|
|
<para>To have this change automatically run at boot time, add
|
|
the following line to
|
|
<filename>/etc/sysctl.conf</filename>:</para>
|
|
|
|
<programlisting>kern.timecounter.hardware=i8254</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="indefinite-wait-buffer">
|
|
<para>What does the error <errorname>swap_pager: indefinite
|
|
wait buffer:</errorname> mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This means that a process is trying to page memory to
|
|
disk, and the page attempt has hung trying to access the
|
|
disk for more than 20 seconds. It might be caused by bad
|
|
blocks on the disk drive, disk wiring, cables, or any other
|
|
disk I/O-related hardware. If the drive itself is actually
|
|
bad, you will also see disk errors in
|
|
<filename>/var/log/messages</filename> and in the output of
|
|
<command>dmesg</command>. Otherwise, check your cables and
|
|
connections.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="lock-order-reversal">
|
|
<para>What is a <errorname>lock order
|
|
reversal</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>An answer for this question can be found in the &os;
|
|
Glossary, see <ulink
|
|
url="&url.books.handbook;/freebsd-glossary.html#lor-glossary">LOR</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="called-with-non-sleepable-locks-held">
|
|
<para>What does <errorname>Called ... with the following
|
|
non-sleepable locks held</errorname> mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This means that a function that may sleep was called
|
|
while a mutex (or other unsleepable) lock was held.</para>
|
|
|
|
<para>The reason this is an error is because mutexes are not
|
|
intended to be held for long periods of time; they are
|
|
supposed to only be held to maintain short periods of
|
|
synchronization. This programming contract allows device
|
|
drivers to use mutexes to synchronize with the rest of the
|
|
kernel during interrupts. Interrupts (under &os;) may not
|
|
sleep. Hence it is imperative that no subsystem in the
|
|
kernel block for an extended period while holding a
|
|
mutex.</para>
|
|
|
|
<para>To catch such errors, assertions may be added to the
|
|
kernel that interact with the &man.witness.4; subsystem to
|
|
emit a warning or fatal error (depending on the system
|
|
configuration) when a potentially blocking call is made
|
|
while holding a mutex.</para>
|
|
|
|
<para>In summary, such warnings are non-fatal, however with
|
|
unfortunate timing they could cause undesirable effects
|
|
ranging from a minor blip in the system's responsiveness to
|
|
a complete system lockup.</para>
|
|
|
|
<para>For additional information about locking in &os; see
|
|
&man.locking.9;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="touch-not-found">
|
|
<para>Why does
|
|
<maketarget>buildworld</maketarget>/<maketarget>installworld</maketarget>
|
|
die with the message <errorname>touch: not
|
|
found</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This error does not mean that the &man.touch.1; utility
|
|
is missing. The error is instead probably due to the dates
|
|
of the files being set sometime in the future. If your
|
|
CMOS-clock is set to local time you need to run the command
|
|
<command>adjkerntz -i</command> to adjust the kernel
|
|
clock when booting into single user mode.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="applications">
|
|
<title>User Applications</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="user-apps">
|
|
<para>So, where are all the user applications?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please take a look at <ulink
|
|
url="&url.base;/ports/index.html">the ports page</ulink>
|
|
for info on software packages ported to &os;. The list
|
|
currently tops &os.numports; and is growing daily, so come
|
|
back to check often or subscribe to the &a.announce; for
|
|
periodic updates on new entries.</para>
|
|
|
|
<para>Most ports should work on the
|
|
&rel3.relx;, &rel2.relx;, and &rel.relx; branches.
|
|
Each time a &os;
|
|
release is made, a snapshot of the ports tree at the time of
|
|
release in also included in the <filename class="directory">ports/</filename>
|
|
directory.</para>
|
|
|
|
<para>We also support the concept of a <quote>package</quote>,
|
|
essentially no more than a compressed binary distribution
|
|
with a little extra intelligence embedded in it for doing
|
|
whatever custom installation work is required. A package
|
|
can be installed and uninstalled again easily without having
|
|
to know the gory details of which files it includes.</para>
|
|
|
|
<para>Use
|
|
&man.pkg.add.1; on the specific package files
|
|
you are interested in installing. Package files can usually
|
|
be identified by their <filename>.tbz</filename> suffix and
|
|
CD-ROM distribution people will have a
|
|
<filename class="directory">packages/All</filename> directory on their CD
|
|
which contains such files. They can also be downloaded over
|
|
the net for various versions of &os; at the following
|
|
locations:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>for &rel3.relx; -RELEASE/&rel3.stable;</term>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel3.packages;/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel3.packages;</ulink></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>for &rel2.relx; -RELEASE/&rel2.stable;</term>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel2.packages;/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel2.packages;</ulink></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>for &rel.relx; -RELEASE/&rel.stable;</term>
|
|
|
|
<listitem>
|
|
<para><ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel.packages;/">ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/&rel.packages;</ulink></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>or your nearest local mirror site.</para>
|
|
|
|
<para>Note that all ports may not be available as packages
|
|
since new ones are constantly being added. It is always a
|
|
good idea to check back periodically to see which packages
|
|
are available at the <ulink
|
|
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/">ftp.FreeBSD.org</ulink>
|
|
master site.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="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.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Use SVN directly if you need custom patches
|
|
to the ports tree.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Use CTM if you prefer getting patches
|
|
by email (this is a rarer use case).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Any other method should be considered a
|
|
legacy method. If you do not already use them,
|
|
do not start.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="java">
|
|
<para>Does &os; support &java;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Please see <ulink
|
|
url="&url.base;/java/index.html">http://www.FreeBSD.org/java/</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ports-4x">
|
|
<para>Why can I not build this port on my
|
|
&rel3.relx; -, &rel2.relx; -, or
|
|
&rel.relx; -STABLE machine?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are running a &os; version that lags
|
|
significantly behind <emphasis>-CURRENT</emphasis> or
|
|
<emphasis>-STABLE</emphasis>, you may need to update your
|
|
Ports Collection; see the <ulink
|
|
url="&url.books.porters-handbook;/keeping-up.html">Keeping Up</ulink>
|
|
section of the Porter's Handbook for further information on
|
|
how to do this. If you are up to date, then someone might
|
|
have committed a change to the port which works for
|
|
<emphasis>-CURRENT</emphasis> but which broke the port for
|
|
<emphasis>-STABLE</emphasis>. Please submit a bug report on
|
|
this with the &man.send-pr.1; command, since the Ports
|
|
Collection is supposed to work for both the
|
|
<emphasis>-CURRENT</emphasis> and
|
|
<emphasis>-STABLE</emphasis> branches.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="make-index">
|
|
<para>I just tried to build <filename>INDEX</filename> using
|
|
<command>make <maketarget>index</maketarget></command>, and
|
|
it failed. Why?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>First, always make sure that you have a complete
|
|
up-to-date Ports Collection. Errors that affect building
|
|
<filename>INDEX</filename> from an up-to-date copy of the
|
|
Ports Collection are high-visibility and are thus almost
|
|
always fixed immediately.</para>
|
|
|
|
<para>There are rare cases where <filename>INDEX</filename>
|
|
will not build due to odd cases involving
|
|
<makevar>WITH_<replaceable>*</replaceable></makevar> or
|
|
<makevar>WITHOUT_<replaceable>*</replaceable></makevar>
|
|
variables being set in <filename>make.conf</filename>. If
|
|
you suspect that this is the case, please try to make
|
|
<filename>INDEX</filename> with those make variables turned
|
|
off before reporting it to &a.ports;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ports-update">
|
|
<para>I updated the sources, now how do I update my installed
|
|
ports?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; does not include a port upgrading tool, but it does
|
|
have some tools to make the upgrade process somewhat easier.
|
|
You can also install additional tools to simplify port
|
|
handling, see the <ulink
|
|
url="&url.books.handbook;/ports-using.html">Upgrading Ports</ulink>
|
|
section in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ports-major-upgrade">
|
|
<para>Do I need to recompile every port each time I perform a
|
|
major version update?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>By all means! While a recent system will run with
|
|
software compiled under an older release, you will end up with
|
|
things randomly crashing and failing to work once you start
|
|
installing other ports or updating a portion of what you
|
|
already have.</para>
|
|
|
|
<para>When the system is upgraded, various shared libraries,
|
|
loadable modules, and other parts of the system will be
|
|
replaced with newer versions. Applications linked against
|
|
the older versions may fail to start or, in other cases,
|
|
fail to function properly.</para>
|
|
|
|
<para>For more information, see <ulink
|
|
url="&url.books.handbook;/updating-upgrading-freebsdupdate.html#freebsdupdate-upgrade">the section on upgrades</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ports-minor-upgrade">
|
|
<para>Do I need to recompile every port each time I perform a
|
|
minor version update?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>In general, no. &os; developers do their utmost to
|
|
guarantee binary compatibility across all releases with the
|
|
same major version number. Any exceptions will be
|
|
documented in the Release Notes, and advice given there
|
|
should be followed.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="minimal-sh">
|
|
<para>Why is <command>/bin/sh</command> so minimal? Why
|
|
does &os; not use <command>bash</command> or another
|
|
shell?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>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.
|
|
(You can
|
|
compare for yourself the memory utilization of all these
|
|
shells by looking at the <quote>VSZ</quote> and
|
|
<quote>RSS</quote> columns in a <command>ps
|
|
<option>-u</option></command> listing.)</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="midi-sound-files">
|
|
<para>How do I create audio CDs from my MIDI files?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>To create audio CDs from MIDI files, first install
|
|
<filename role="package">audio/timidity++</filename> from
|
|
ports then install manually the GUS patches set by Eric A.
|
|
Welsh, available at <ulink
|
|
url="http://alleg.sourceforge.net/digmid.html"></ulink>.
|
|
After <application>TiMidity++</application> has been installed
|
|
properly, MIDI files may be converted to WAV files with the
|
|
following command line:</para>
|
|
|
|
<screen>&prompt.user; <userinput>timidity -Ow -s 44100 -o <replaceable>/tmp/juke/01.wav</replaceable> <replaceable>01.mid</replaceable></userinput></screen>
|
|
|
|
<para>The WAV files can then be converted to other formats or
|
|
burned onto audio CDs, as described in the <ulink
|
|
url="&url.books.handbook;/creating-cds.html">&os; Handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="officesuite">
|
|
<para>Where can I get an Office Suite for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The open-source <application><ulink
|
|
url="http://www.openoffice.org">Apache OpenOffice</ulink></application>
|
|
and <application><ulink
|
|
url="http://www.libreoffice.org">LibreOffice</ulink></application>
|
|
office suites work natively on &os;.</para>
|
|
|
|
<para>&os; also includes a variety of text editors,
|
|
spreadsheets, and drawing programs in the Ports
|
|
Collection.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="database-systems">
|
|
<para>Are there any Database systems for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes! See the <ulink
|
|
url="&url.base;/commercial/software_bycat.html#category_database">Commercial Vendors</ulink>
|
|
section of &os;'s Web site.</para>
|
|
|
|
<para>Also see the <ulink
|
|
url="&url.base;/ports/databases.html">Databases</ulink>
|
|
section of the Ports Collection.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="convert-back-from-pkgng">
|
|
<para>How can I convert from pkgng to the old package
|
|
tools?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: it is not possible.</para>
|
|
|
|
<para>Longer answer: if you have made any changes using
|
|
<command>pkg</command> converting back is non-trivial and
|
|
requires lots of manual editing of internal package
|
|
database files. However, if you have just run
|
|
<command>pkg2ng</command> then you may remove
|
|
<filename>/var/db/pkg/local.sqlite</filename>
|
|
and extract
|
|
<filename>/var/backups/pkgdb.bak.tbz</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="kernelconfig">
|
|
<title>Kernel Configuration</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="make-kernel">
|
|
<para>I would like to customize my kernel. Is it
|
|
difficult?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Not at all! Check out the <ulink
|
|
url="&url.books.handbook;/kernelconfig.html">kernel config section of the Handbook</ulink>.</para>
|
|
|
|
<note>
|
|
<para>The new <filename>kernel</filename> will be installed
|
|
to the <filename class="directory">/boot/kernel</filename> directory along
|
|
with its modules, while the old kernel and its modules
|
|
will be moved to the <filename class="directory">/boot/kernel.old</filename>
|
|
directory, so if you make a mistake the next time you play
|
|
with your configuration you can boot the previous version
|
|
of your kernel.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="why-kernel-big">
|
|
<para>Why is my kernel so big?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><literal>GENERIC</literal> kernels shipped with &os;
|
|
and later are compiled in <emphasis>debug mode</emphasis>.
|
|
Kernels built in debug mode
|
|
contain many symbols in separate files that are used for
|
|
debugging, thus greatly increasing the size of
|
|
<filename class="directory">/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>However, if you are running low on disk space, there
|
|
are different options to reduce the size of <filename
|
|
class="directory">/boot/kernel/</filename>.</para>
|
|
|
|
<para>If you do not want the symbol files to be installed,
|
|
make sure you have the following line present 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 do not want to build a debug kernel, make
|
|
sure that both of the following are true:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>You do not have a line in your kernel configuration
|
|
file that reads:</para>
|
|
|
|
<programlisting>makeoptions DEBUG=-g</programlisting>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>You are not running &man.config.8; with the
|
|
<option>-g</option> option.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Either of the above settings will cause your kernel to
|
|
be built in debug mode. As long as you make sure you follow
|
|
the steps above, you can build your kernel normally.</para>
|
|
|
|
<para>If you want only the modules you use to be built
|
|
and installed, make sure you have a line like below 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 modules you need. Only these modules will be
|
|
built. This does not only reduce the size of the kernel
|
|
directory but also decreases the amount of time needed to
|
|
build your kernel. For more information see
|
|
<filename>/usr/share/examples/etc/make.conf</filename>.</para>
|
|
|
|
<para>You can also remove unneeded devices from your kernel
|
|
to further reduce the size. See
|
|
<xref linkend="make-kernel"/> for more information.</para>
|
|
|
|
<para>To put any of these options into effect you will have
|
|
to <ulink url="&url.books.handbook;/kernelconfig-building.html">build and install</ulink>
|
|
your new kernel.</para>
|
|
|
|
<para>Most kernels (<filename>/boot/kernel/kernel</filename>)
|
|
tend to be around 12 MB to 16 MB.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="generic-kernel-build-failure">
|
|
<para>Why does every kernel I try to build fail to compile,
|
|
even <filename>GENERIC</filename>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are a number of possible causes for this problem.
|
|
They are, in no particular order:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>You are not using the
|
|
<command>make <maketarget>buildkernel</maketarget></command> and
|
|
<command>make <maketarget>installkernel</maketarget></command>
|
|
targets, and your source tree is different from the one
|
|
used to build the currently running system (e.g., you
|
|
are compiling &rel.current;-RELEASE on a
|
|
&rel2.current;-RELEASE system). If you are attempting
|
|
an upgrade, please read
|
|
<filename>/usr/src/UPDATING</filename>, paying
|
|
particular attention to the <quote>COMMON ITEMS</quote>
|
|
section at the end.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>You are using the
|
|
<command>make <maketarget>buildkernel</maketarget></command>
|
|
and
|
|
<command>make <maketarget>installkernel</maketarget></command>
|
|
targets, but you failed to assert the completion of the
|
|
<command>make <maketarget>buildworld</maketarget></command>
|
|
target. The
|
|
<command>make <maketarget>buildkernel</maketarget></command>
|
|
target relies on files generated by the
|
|
<command>make <maketarget>buildworld</maketarget></command>
|
|
target to complete its job correctly.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Even if you are trying to build <link
|
|
linkend="stable">&os;-STABLE</link>, it is possible that
|
|
you fetched the source tree at a time when it was either
|
|
being modified, or broken for other reasons; only
|
|
releases are absolutely guaranteed to be buildable,
|
|
although <link linkend="stable">&os;-STABLE</link>
|
|
builds fine the majority of the time. If you have not
|
|
already done so, try re-fetching the source tree and see
|
|
if the problem goes away. Try using a different server
|
|
in case the one you are using is having problems.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="scheduler-in-use">
|
|
<para>How can I verify which scheduler is in use on a running
|
|
system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>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 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 id="disks">
|
|
<title>Disks, File Systems, and Boot Loaders</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="adding-disks">
|
|
<para>How can I add my new hard disk to my &os; system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <ulink
|
|
url="&url.books.handbook;/disks-adding.html">Adding Disks</ulink>
|
|
section in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="new-huge-disk">
|
|
<para>How do I move my system over to my huge new disk?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The best way is to reinstall the OS on the new disk,
|
|
then move the user data over. This is highly recommended if
|
|
you have been tracking <emphasis>-STABLE</emphasis> for more
|
|
than one release, or have updated a release instead of
|
|
installing a new one. You can install booteasy on both
|
|
disks with &man.boot0cfg.8;, and dual boot them until you
|
|
are happy with the new configuration. Skip the next
|
|
paragraph to find out how to move the data after doing
|
|
this.</para>
|
|
|
|
<para>Alternatively, partition and label the new disk with either
|
|
&man.sade.8; or &man.gpart.8;. If the disks are MBR-formatted,
|
|
you can also install booteasy on both disks with
|
|
&man.boot0cfg.8;, so that you can dual boot to the old or
|
|
new system after the copying is done.</para>
|
|
|
|
<para>Now you have the new disk set up, and are ready to move
|
|
the data. Unfortunately, you cannot just blindly copy the
|
|
data. Things like device files (in
|
|
<filename class="directory">/dev</filename>), flags, and links tend to screw
|
|
that up. You need to use tools that understand these
|
|
things, which means &man.dump.8;. Although it is suggested
|
|
that you move the data in single user mode, it is not
|
|
required.</para>
|
|
|
|
<para>You should never use anything but &man.dump.8; and
|
|
&man.restore.8; to move the root file system. The
|
|
&man.tar.1; command may work — then again, it may not.
|
|
You should also use &man.dump.8; and &man.restore.8; if you
|
|
are moving a single partition to another empty partition.
|
|
The sequence of steps to use <command>dump</command> to move
|
|
a partitions data to a new partition is:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para><command>newfs</command> the new partition.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><command>mount</command> it on a temporary mount
|
|
point.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><command>cd</command> to that directory.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para><command>dump</command> the old partition, piping
|
|
output to the new one.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>For example, if you are going to move root to
|
|
<devicename>/dev/<replaceable>ada1s1a</replaceable></devicename>,
|
|
with <filename class="directory"><replaceable>/mnt</replaceable></filename> as
|
|
the temporary mount point, it is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/<replaceable>ada1s1a</replaceable></userinput>
|
|
&prompt.root; <userinput>mount /dev/<replaceable>ada1s1a</replaceable> <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>cd <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore rf -</userinput></screen>
|
|
|
|
<para>Rearranging your partitions with <command>dump</command>
|
|
takes a bit more work. To merge a partition like
|
|
<filename class="directory">/var</filename> into its parent, create the new
|
|
partition large enough for both, move the parent partition
|
|
as described above, then move the child partition into the
|
|
empty directory that the first move created:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/<replaceable>ada1s1a</replaceable></userinput>
|
|
&prompt.root; <userinput>mount /dev/<replaceable>ada1s1a</replaceable> <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>cd <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore rf -</userinput>
|
|
&prompt.root; <userinput>cd var</userinput>
|
|
&prompt.root; <userinput>dump 0af - /var | restore rf -</userinput></screen>
|
|
|
|
<para>To split a directory from its parent, say putting
|
|
<filename class="directory">/var</filename> on its own partition when it was
|
|
not before, create both partitions, then mount the child
|
|
partition on the appropriate directory in the temporary
|
|
mount point, then move the old single partition:</para>
|
|
|
|
<screen>&prompt.root; <userinput>newfs /dev/<replaceable>ada1s1a</replaceable></userinput>
|
|
&prompt.root; <userinput>newfs /dev/<replaceable>ada1s1d</replaceable></userinput>
|
|
&prompt.root; <userinput>mount /dev/<replaceable>ada1s1a</replaceable> <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>mkdir <replaceable>/mnt</replaceable>/var</userinput>
|
|
&prompt.root; <userinput>mount /dev/<replaceable>ada1s1d</replaceable> <replaceable>/mnt</replaceable>/var</userinput>
|
|
&prompt.root; <userinput>cd <replaceable>/mnt</replaceable></userinput>
|
|
&prompt.root; <userinput>dump 0af - / | restore rf -</userinput></screen>
|
|
|
|
<para>You might prefer &man.cpio.1;, &man.pax.1;, &man.tar.1;
|
|
to &man.dump.8; for user data. At the time of this writing,
|
|
these are known to lose file flag information, so use them
|
|
with caution.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="safe-softupdates">
|
|
<para>Which partitions can safely use Soft Updates? I have
|
|
heard that Soft Updates on <filename class="directory">/</filename> can cause
|
|
problems. What about Journaled Soft Updates?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: you can usually use Soft Updates safely on
|
|
all partitions.</para>
|
|
|
|
<para>Long answer: Soft Updates has two
|
|
characteristics that may be undesirable on certain
|
|
paritions. First, a Soft Updates
|
|
partition has a small chance of losing data during a system
|
|
crash. (The partition will not be corrupted; the data will
|
|
simply be lost.) 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 you delete
|
|
one large file and immediately create another large file.
|
|
The first large file is not yet actually removed from the
|
|
physical disk, so the disk might not have enough room for
|
|
the second large file. You get an error that the partition
|
|
does not have enough space, although you know perfectly well
|
|
that you just released a large chunk of space! When you try
|
|
again mere seconds later, the file creation works as you
|
|
expect. This has left more than one user scratching his
|
|
head and doubting his sanity, the &os; file system, or
|
|
both.</para>
|
|
|
|
<para>If a system should crash after the kernel accepts a
|
|
chunk of data for writing to disk, but before that data is
|
|
actually written out, data could be lost. 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 you
|
|
should be aware that it exists. If your system cannot
|
|
tolerate this much risk, do not use Soft Updates on the root
|
|
file system!</para>
|
|
|
|
<para><filename class="directory">/</filename> is traditionally one of the
|
|
smallest partitions. If you put the
|
|
<filename class="directory">/tmp</filename> directory on
|
|
<filename class="directory">/</filename> and you have a busy
|
|
<filename class="directory">/tmp</filename>, you might see intermittent space
|
|
problems. Symlinking <filename class="directory">/tmp</filename> to
|
|
<filename class="directory">/var/tmp</filename> will solve this
|
|
problem.</para>
|
|
|
|
<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 id="inappropriate-ccd">
|
|
<para>What is inappropriate about my &man.ccd.4;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The symptom of this is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ccdconfig -C</userinput>
|
|
ccdconfig: ioctl (CCDIOCSET): /dev/<replaceable>ccd0c</replaceable>: Inappropriate file type or format</screen>
|
|
|
|
<para>This usually happens when you are trying to concatenate
|
|
the <literal>c</literal> partitions, which default to type
|
|
<literal>unused</literal>. The &man.ccd.4; driver requires
|
|
the underlying partition type to be
|
|
<literal>FS_BSDFFS</literal>. Edit the disk label of the
|
|
disks you are trying to concatenate and change the types of
|
|
partitions to <literal>4.2BSD</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ccd-disk-label">
|
|
<para>Why can I not edit the disk label on my
|
|
&man.ccd.4;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The symptom of this is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>disklabel <replaceable>ccd0</replaceable></userinput>
|
|
(it prints something sensible here, so let us try to edit it)
|
|
&prompt.root; <userinput>disklabel -e <replaceable>ccd0</replaceable></userinput>
|
|
(edit, save, quit)
|
|
disklabel: ioctl DIOCWDINFO: No disk label on disk;
|
|
use "disklabel -r" to install initial label</screen>
|
|
|
|
<para>This is because the disk label returned by &man.ccd.4;
|
|
is actually a <quote>fake</quote> one that is not really on
|
|
the disk. You can solve this problem by writing it back
|
|
explicitly, as in:</para>
|
|
|
|
<screen>&prompt.root; <userinput>disklabel <replaceable>ccd0</replaceable> > <replaceable>/tmp/disklabel.tmp</replaceable></userinput>
|
|
&prompt.root; <userinput>disklabel -Rr <replaceable>ccd0</replaceable> <replaceable>/tmp/disklabel.tmp</replaceable></userinput>
|
|
&prompt.root; <userinput>disklabel -e <replaceable>ccd0</replaceable></userinput>
|
|
(this will work now)</screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-foreign-fs">
|
|
<para>Can I mount other foreign file systems under
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports a variety of other file systems.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>UFS</term>
|
|
|
|
<listitem>
|
|
<para>UFS CD-ROMs can be mounted directly on &os;.
|
|
Mounting disk partitions from Digital UNIX and other
|
|
systems that support UFS may be more complex,
|
|
depending on the details of the disk partitioning for
|
|
the operating system in question.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>ext2/ext3</term>
|
|
|
|
<listitem>
|
|
<para>&os; supports <literal>ext2fs</literal> and
|
|
<literal>ext3fs</literal> partitions. See
|
|
&man.mount.ext2fs.8; for more information.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>NTFS</term>
|
|
|
|
<listitem>
|
|
<para>FUSE based NTFS support is available as a port
|
|
(<filename role="package">sysutils/fusefs-ntfs</filename>).
|
|
For more information see <ulink
|
|
url="http://www.tuxera.com/community/ntfs-3g-manual/"><application>ntfs-3g</application></ulink>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>FAT</term>
|
|
|
|
<listitem>
|
|
<para>&os; includes a read-write FAT driver. For more
|
|
information, see &man.mount.msdosfs.8;.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>ZFS</term>
|
|
|
|
<listitem>
|
|
<para>&os; includes a port of
|
|
&sun;'s ZFS driver. The current recommendation is to
|
|
use it only on &arch.amd64; platforms with sufficient
|
|
memory. For more information, see &man.zfs.8;.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>&os; also supports network file systems such as NFS (see
|
|
&man.mount.nfs.8;), NetWare (see &man.mount.nwfs.8;), and
|
|
Microsoft-style SMB file systems (see &man.mount.smbfs.8;).
|
|
You can find ports based on FUSE (<filename
|
|
role="package">sysutils/fusefs-kmod</filename>) for many
|
|
other file systems.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-dos">
|
|
<para>How do I mount a secondary DOS partition?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The secondary DOS partitions are found after
|
|
<emphasis>all</emphasis> the primary partitions. For
|
|
example, if you have an <quote>E</quote> partition as the
|
|
second DOS partition on the second SCSI drive, there will be
|
|
a device file for <quote>slice 5</quote> in
|
|
<filename class="directory">/dev</filename>, so simply mount it:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -t msdosfs /dev/da1s5 /dos/e</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="crypto-file-system">
|
|
<para>Is there a cryptographic file system for &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. You can use either &man.gbde.8; or &man.geli.8;,
|
|
see the <ulink
|
|
url="&url.books.handbook;/disks-encrypting.html">Encrypting Disk Partitions</ulink>
|
|
section of the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="nt-bootloader">
|
|
<para>How can I use the &windowsnt; loader to boot
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The general idea is that you copy the first sector of
|
|
your native root &os; partition into a file in the
|
|
DOS/&windowsnt; partition. Assuming you name that file
|
|
something like <filename>c:\bootsect.bsd</filename>
|
|
(inspired by <filename>c:\bootsect.dos</filename>), you can
|
|
then edit <filename>c:\boot.ini</filename> to come
|
|
up with something like this:</para>
|
|
|
|
<programlisting>[boot loader]
|
|
timeout=30
|
|
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
|
|
[operating systems]
|
|
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT"
|
|
C:\BOOTSECT.BSD="&os;"
|
|
C:\="DOS"</programlisting>
|
|
|
|
<para>If &os; is installed on the same disk as the &windowsnt;
|
|
boot partition simply copy <filename>/boot/boot1</filename> to
|
|
<filename>C:\BOOTSECT.BSD</filename>. However, if &os; is
|
|
installed on a different disk
|
|
<filename>/boot/boot1</filename> will not work,
|
|
<filename>/boot/boot0</filename> is needed.</para>
|
|
|
|
<para><filename>/boot/boot0</filename> needs to be installed
|
|
using &man.sysinstall.8; by selecting the &os; boot manager
|
|
on the screen which asks if you wish to use a boot manager.
|
|
This is because <filename>/boot/boot0</filename> has the
|
|
partition table area filled with NULL characters but
|
|
&man.sysinstall.8; copies the partition table before copying
|
|
<filename>/boot/boot0</filename> to the MBR.</para>
|
|
|
|
<warning>
|
|
<para><emphasis>Do not simply copy
|
|
<filename>/boot/boot0</filename> instead of
|
|
<filename>/boot/boot1</filename>; you will overwrite
|
|
your partition table and render your computer
|
|
un-bootable!</emphasis></para>
|
|
</warning>
|
|
|
|
<para>When the &os; boot manager runs it records the last OS
|
|
booted by setting the active flag on the partition table
|
|
entry for that OS and then writes the whole 512-bytes of
|
|
itself back to the MBR so if you just copy
|
|
<filename>/boot/boot0</filename> to
|
|
<filename>C:\BOOTSECT.BSD</filename> then it writes an empty
|
|
partition table, with the active flag set on one entry, to
|
|
the MBR.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="lilo-bootloader">
|
|
<para>How do I boot &os; and &linux; from LILO?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you have &os; and &linux; on the same disk, just
|
|
follow LILO's installation instructions for booting a
|
|
non-&linux; operating system. Very briefly, these
|
|
are:</para>
|
|
|
|
<para>Boot &linux;, and add the following lines to
|
|
<filename>/etc/lilo.conf</filename>:</para>
|
|
|
|
<programlisting>other=/dev/hda2
|
|
table=/dev/hda
|
|
label=&os;</programlisting>
|
|
|
|
<para>(the above assumes that your &os; slice is known to
|
|
&linux; as <devicename>/dev/hda2</devicename>; tailor to
|
|
suit your setup). Then, run <command>lilo</command> as
|
|
<username>root</username> and you should be done.</para>
|
|
|
|
<para>If &os; resides on another disk, you need to add
|
|
<literal>loader=/boot/chain.b</literal> to the LILO entry.
|
|
For example:</para>
|
|
|
|
<programlisting>other=/dev/dab4
|
|
table=/dev/dab
|
|
loader=/boot/chain.b
|
|
label=&os;</programlisting>
|
|
|
|
<para>In some cases you may need to specify the BIOS drive
|
|
number to the &os; boot loader to successfully boot off the
|
|
second disk. For example, if your &os; SCSI disk is probed
|
|
by BIOS as BIOS disk 1, at the &os; boot loader prompt you
|
|
need to specify:</para>
|
|
|
|
<screen>Boot: <userinput>1:da(0,a)/boot/kernel/kernel</userinput></screen>
|
|
|
|
<para>You can configure &man.boot.8; to automatically do this
|
|
for you at boot time.</para>
|
|
|
|
<para>The <ulink
|
|
url="http://tldp.org/HOWTO/Linux+FreeBSD.html">&linux;+&os; mini-HOWTO</ulink>
|
|
is a good reference for &os; and &linux; interoperability
|
|
issues.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="grub-loader">
|
|
<para>How do I boot &os; and &linux; using GRUB?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Booting &os; using GRUB is very simple. Just add the
|
|
following to your configuration file
|
|
<filename>/boot/grub/menu.lst</filename> (or
|
|
<filename>/boot/grub/grub.conf</filename> in some systems,
|
|
e.g., Red Hat Linux and its derivatives).</para>
|
|
|
|
<programlisting>title &os; 6.1
|
|
root <replaceable>(hd0,a)</replaceable>
|
|
kernel /boot/loader</programlisting>
|
|
|
|
<para>Where <replaceable>hd0,a</replaceable> points to your
|
|
root partition on the first disk. If you need to specify
|
|
which slice number should be used, use something like this
|
|
<replaceable>(hd0,2,a)</replaceable>. By default, if the
|
|
slice number is omitted, GRUB searches the first slice which
|
|
has <literal>a</literal> partition.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="booteasy-loader">
|
|
<para>How do I boot &os; and &linux; using
|
|
<application>BootEasy?</application></para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Install LILO at the start of your &linux; boot partition
|
|
instead of in the Master Boot Record. You can then boot
|
|
LILO from <application>BootEasy</application>.</para>
|
|
|
|
<para>If you are running &windows; and &linux; this is
|
|
recommended anyway, to make it simpler to get &linux; booting
|
|
again if you should need to reinstall &windows; (which is a
|
|
Jealous Operating System, and will bear no other Operating
|
|
Systems in the Master Boot Record).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="changing-bootprompt">
|
|
<para>How do I change the boot prompt from
|
|
<literal>???</literal> to something more meaningful?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can not do that with the standard boot manager
|
|
without rewriting it. There are a number of other boot
|
|
managers in the <filename class="directory">sysutils</filename> ports category
|
|
that provide this functionality.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="removable-drives">
|
|
<para>I have a new removable drive, how do I use it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If the drive already has a
|
|
file system on it, you can 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 it is better idea to
|
|
stick a BSD file system on it, like UFS or ZFS.
|
|
You will get long filename
|
|
support, at least a 2X improvement in performance,
|
|
and a lot more 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 id="mount-cd-superblock">
|
|
<para>Why do I get <errorname>Incorrect super
|
|
block</errorname> when mounting a CD-ROM?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You have to tell &man.mount.8; the type of the device
|
|
that you want to mount. This is described in the <ulink
|
|
url="&url.books.handbook;/creating-cds.html"> Handbook section on optical media</ulink>,
|
|
specifically the section <ulink
|
|
url="&url.books.handbook;/creating-cds.html#mounting-cd">Using Data CDs</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cdrom-not-configured">
|
|
<para>Why do I get <errorname>Device not
|
|
configured</errorname> when mounting a CD-ROM?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This generally means that there is no CD-ROM in the
|
|
CD-ROM drive, or the drive is not visible on the bus.
|
|
Please see the <ulink
|
|
url="&url.books.handbook;/creating-cds.html#mounting-cd">Using Data CDs</ulink>
|
|
section of the Handbook for a detailed discussion of this
|
|
issue.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cdrom-unicode-filenames">
|
|
<para>Why do all non-English characters in filenames show up
|
|
as <quote>?</quote> on my CDs when mounted in &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your CD-ROM probably uses the <quote>Joliet</quote>
|
|
extension for storing information about files and
|
|
directories. This is discussed in the Handbook chapter on
|
|
<ulink
|
|
url="&url.books.handbook;/creating-cds.html">creating and using CD-ROMs</ulink>,
|
|
specifically the section on <ulink
|
|
url="&url.books.handbook;/creating-cds.html#mounting-cd">Using Data CD-ROMs</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="burncd-isofs">
|
|
<para>I burned a CD under &os; and now I can not read it under
|
|
any other operating system. Why?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You most likely burned a raw file to your CD, rather
|
|
than creating an ISO 9660 file system. Take a look at
|
|
the <ulink
|
|
url="&url.books.handbook;/creating-cds.html">Handbook chapter on creating CD-ROMs</ulink>,
|
|
particularly the section on <ulink
|
|
url="&url.books.handbook;/creating-cds.html#rawdata-cd">burning raw data CDs</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="copy-cd">
|
|
<para>How can I create an image of a data CD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is discussed in the Handbook section on <ulink
|
|
url="&url.books.handbook;/creating-cds.html#imaging-cd">duplicating data CDs</ulink>.
|
|
For more on working with CD-ROMs, see the <ulink
|
|
url="&url.books.handbook;/creating-cds.html">Creating CDs Section</ulink>
|
|
in the Storage chapter in the Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-audio-CD">
|
|
<para>Why can I not <command>mount</command> an audio
|
|
CD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you try to mount an audio CD, you will get an error
|
|
like <errorname>cd9660: /dev/acd0c: Invalid
|
|
argument</errorname>. This is because
|
|
<command>mount</command> only works on file systems. Audio
|
|
CDs do not have file systems; they just have data. You need
|
|
a program that reads audio CDs, such as the <filename
|
|
role="package">audio/xmcd</filename> port.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="multi-session-CD">
|
|
<para>How do I <command>mount</command> a multi-session
|
|
CD?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>By default, &man.mount.8; will attempt to mount the last
|
|
data track (session) of a CD. If you would like to load an
|
|
earlier session, you must use the <option>-s</option>
|
|
command line argument. Please see &man.mount.cd9660.8; for
|
|
specific examples.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="user-floppymount">
|
|
<para>How do I let ordinary users mount CD-ROMs, DVDs,
|
|
USB drives, and other removable media?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>As <username>root</username> 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><varname>vfs.usermount</varname>=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/da00 0666</programlisting>
|
|
|
|
<para>All users can now mount devices they could read
|
|
onto a directory that they own:</para>
|
|
|
|
<screen>&prompt.user; <userinput>mkdir <replaceable>~/my-mount-point</replaceable></userinput>
|
|
&prompt.user; <userinput>mount -t msdosfs /dev/da0<replaceable>~/my-mount-point</replaceable></userinput></screen>
|
|
|
|
<para>Unmounting the device is simple:</para>
|
|
|
|
<screen>&prompt.user; <userinput>umount <replaceable>~/my-mount-point</replaceable></userinput></screen>
|
|
|
|
<para>Enabling <varname>vfs.usermount</varname>, however, has
|
|
negative security implications. A better way to access
|
|
&ms-dos; formatted media is to use the <filename
|
|
role="package">emulators/mtools</filename> package in the
|
|
Ports Collection.</para>
|
|
|
|
<note>
|
|
<para>The device name used in the previous examples must be
|
|
changed according to your configuration.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="du-vs-df">
|
|
<para>The <command>du</command> and <command>df</command>
|
|
commands show different amounts of disk space available.
|
|
What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You need to understand what <command>du</command> and
|
|
<command>df</command> really do. <command>du</command> goes
|
|
through the directory tree, measures how large each file is,
|
|
and presents the totals. <command>df</command> just asks
|
|
the file system how much space it has left. They seem to be
|
|
the same thing, but a file without a directory entry will
|
|
affect <command>df</command> but not
|
|
<command>du</command>.</para>
|
|
|
|
<para>When a program is using a file, and you delete the file,
|
|
the file is not really removed from the file system until
|
|
the program stops using it. The file is immediately deleted
|
|
from the directory listing, however. You can see this
|
|
easily enough with a program such as
|
|
<command>more</command>. Assume you have a file large
|
|
enough that its presence affects the output of
|
|
<command>du</command> and <command>df</command>. (Since
|
|
disks can be so large today, this might be a
|
|
<emphasis>very</emphasis> large file!) If you delete this
|
|
file while using <command>more</command> on it,
|
|
<command>more</command> does not immediately choke and
|
|
complain that it cannot view the file. The entry is simply
|
|
removed from the directory so no other program or user can
|
|
access it. <command>du</command> shows that it is gone
|
|
— it has walked the directory tree and the file is not
|
|
listed. <command>df</command> shows that it is still there,
|
|
as the file system knows that <command>more</command> is
|
|
still using that space. Once you end the
|
|
<command>more</command> session, <command>du</command> and
|
|
<command>df</command> will agree.</para>
|
|
|
|
<para>Note that Soft Updates can delay the freeing of disk
|
|
space; you might need to wait up to 30 seconds for the
|
|
change to be visible!</para>
|
|
|
|
<para>This situation is common on web servers. Many people
|
|
set up a &os; web server and forget to rotate the log files.
|
|
The access log fills up <filename class="directory">/var</filename>. The new
|
|
administrator deletes the file, but the system still
|
|
complains that the partition is full. Stopping and
|
|
restarting the web server program would free the file,
|
|
allowing the system to release the disk space. To prevent
|
|
this from happening, set up &man.newsyslog.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="add-swap-space">
|
|
<para>How can I add more swap space?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>In the <ulink
|
|
url="&url.books.handbook;/config-tuning.html">Configuration and Tuning</ulink>
|
|
section of the Handbook, you will find a <ulink
|
|
url="&url.books.handbook;/adding-swap-space.html">section</ulink>
|
|
describing how to do this.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="manufacturer-disk-size">
|
|
<para>Why does &os; see my disk as smaller than the
|
|
manufacturer says it is?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Disk manufacturers calculate gigabytes as a billion
|
|
bytes each, whereas &os; calculates them as
|
|
1,073,741,824 bytes each. This explains why, for
|
|
example, &os;'s boot messages will report a disk that
|
|
supposedly has 80 GB as holding 76,319 MB.</para>
|
|
|
|
<para>Also note that &os; will (by default) <link
|
|
linkend="disk-more-than-full">reserve</link> 8% of the disk
|
|
space.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="disk-more-than-full">
|
|
<para>How is it possible for a partition to be more than 100%
|
|
full?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>A portion of each UFS partition (8%, by default) is
|
|
reserved for use by the operating system and the
|
|
<username>root</username> user. &man.df.1; does not count
|
|
that space when calculating the <literal>Capacity</literal>
|
|
column, so it can exceed 100%. Also, you will notice that
|
|
the <literal>Blocks</literal> column is always greater than
|
|
the sum of the <literal>Used</literal> and
|
|
<literal>Avail</literal> columns, usually by a factor of
|
|
8%.</para>
|
|
|
|
<para>For more details, look up <option>-m</option>
|
|
in &man.tunefs.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
|
|
<sect1 id="all-about-zfs">
|
|
<title>ZFS</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question 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 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 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 your 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 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 persisent 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 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 id="zpool-fully-full">
|
|
<para>I can not 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 a file you want to
|
|
delete.</para>
|
|
|
|
<screen>&prompt.user; <userinput>truncate -s 0 <replaceable>unimportant-file</replaceable></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 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<svnref>240868</svnref>. ZFS TRIM
|
|
support is not yet available on the -STABLE
|
|
branches.</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>
|
|
</sect1>
|
|
</chapter>
|
|
|
|
<chapter id="admin">
|
|
<title>System Administration</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="startup-config-files">
|
|
<para>Where are the system start-up configuration
|
|
files?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The primary configuration file is
|
|
<filename>/etc/defaults/rc.conf</filename> (see
|
|
&man.rc.conf.5;). System startup scripts such as
|
|
<filename class="directory">/etc/rc</filename> and
|
|
<filename class="directory">/etc/rc.d</filename> (see &man.rc.8;) just include
|
|
this file. <emphasis>Do not edit this file!</emphasis>
|
|
Instead, if there is any entry in
|
|
<filename>/etc/defaults/rc.conf</filename> that you want to
|
|
change, you should copy the line into
|
|
<filename>/etc/rc.conf</filename> and change it
|
|
there.</para>
|
|
|
|
<para>For example, if you wish to start &man.named.8;, the
|
|
included DNS server, all you need to do is:</para>
|
|
|
|
<screen>&prompt.root; <userinput>echo 'named_enable="YES"' >> /etc/rc.conf</userinput></screen>
|
|
|
|
<para>To start up local services, place shell scripts in the
|
|
<filename class="directory">/usr/local/etc/rc.d</filename> directory. These
|
|
shell scripts should be set executable, the default file
|
|
mode is <literal>555</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="adding-users">
|
|
<para>How do I add a user easily?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use the &man.adduser.8; command, or the &man.pw.8;
|
|
command for more complicated situations.</para>
|
|
|
|
<para>To remove the user, use the &man.rmuser.8; command or,
|
|
if necessary, &man.pw.8;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="root-not-found-cron-errors">
|
|
<para>Why do I keep getting messages like <errorname>root: not
|
|
found</errorname> after editing
|
|
<filename>/etc/crontab</filename></para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is normally caused by editing the system crontab
|
|
(<filename>/etc/crontab</filename>) and then using
|
|
&man.crontab.1; to install it:</para>
|
|
|
|
<screen>&prompt.root; <userinput>crontab /etc/crontab</userinput></screen>
|
|
|
|
<para>This is not the correct way to do things. The system
|
|
crontab has a different format to the per-user crontabs
|
|
which &man.crontab.1; updates (the &man.crontab.5; manual
|
|
page explains the differences in more detail).</para>
|
|
|
|
<para>If this is what you did, the extra crontab is simply a
|
|
copy of <filename>/etc/crontab</filename> in the wrong
|
|
format it. Delete it with the command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>crontab -r</userinput></screen>
|
|
|
|
<para>Next time, when you edit
|
|
<filename>/etc/crontab</filename>, you should not do
|
|
anything to inform &man.cron.8; of the changes, since it
|
|
will notice them automatically.</para>
|
|
|
|
<para>If you want something to be run once per day, week, or
|
|
month, it is probably better to add shell scripts
|
|
<filename class="directory">/usr/local/etc/periodic</filename>, and let the
|
|
&man.periodic.8; command run from the system
|
|
<command>cron</command> schedule it with the other periodic
|
|
system tasks.</para>
|
|
|
|
<para>The actual reason for the error is that the system
|
|
crontab has an extra field, specifying which user to run the
|
|
command as. In the default system crontab provided with
|
|
&os;, this is <username>root</username> for all entries.
|
|
When this crontab is used as the <username>root</username>
|
|
user's crontab (which is <emphasis>not</emphasis> the same
|
|
as the system crontab), &man.cron.8; assumes the string
|
|
<literal>root</literal> is the first word of the command to
|
|
execute, but no such command exists.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="su-wheel-group">
|
|
<para>Why do I get the error, <errorname>you are not in the
|
|
correct group to su root</errorname> when I try to
|
|
<command>su</command> to <username>root</username>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is a security feature. To
|
|
<command>su</command> to <username>root</username> (or any
|
|
other account with superuser privileges), you must be in the
|
|
<groupname>wheel</groupname> group. If this feature were
|
|
not there, anybody with an account on a system who also
|
|
found out <username>root</username>'s password would be able
|
|
to gain superuser level access to the system. With this
|
|
feature, this is not strictly true; &man.su.1; will prevent
|
|
them from even trying to enter the password if they are not
|
|
in <groupname>wheel</groupname>.</para>
|
|
|
|
<para>To allow someone to <command>su</command> to
|
|
<username>root</username>, simply put them in the
|
|
<groupname>wheel</groupname> group. Use &man.pw.8;
|
|
for this purpose.</para>
|
|
|
|
<screen>&prompt.root; <userinput>pw groupmod wheel -m <replaceable>lisa</replaceable></userinput></screen>
|
|
|
|
<para>The above example will add user
|
|
<username>lisa</username> to the group
|
|
<groupname>wheel</groupname>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="rcconf-readonly">
|
|
<para>I made a mistake in <filename>rc.conf</filename>, or
|
|
another startup file, and now I cannot edit it because the
|
|
file system is read-only. What should I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Restart the system using <userinput>boot -s</userinput>
|
|
at the loader prompt to enter Single User mode. When
|
|
prompted for a shell pathname, simply press
|
|
<keycap>Enter</keycap>, and run
|
|
<command>mount -urw /</command> to re-mount the root file
|
|
system in read/write mode. You may also need to run
|
|
<command>mount -a -t ufs</command> to mount the file system
|
|
where your favorite editor is defined. If your favorite
|
|
editor is on a network file system, you will need to either
|
|
configure the network manually before you can mount network
|
|
file systems, or use an editor which resides on a local file
|
|
system, such as &man.ed.1;.</para>
|
|
|
|
<para>If you intend to use a full screen editor such as
|
|
&man.vi.1; or &man.emacs.1;, you may also need to run
|
|
<command>export TERM=cons25</command> so that these editors
|
|
can load the correct data from the &man.termcap.5;
|
|
database.</para>
|
|
|
|
<para>Once you have performed these steps, you can edit
|
|
<filename>/etc/rc.conf</filename> as you usually would to
|
|
fix the syntax error. The error message displayed
|
|
immediately after the kernel boot messages should tell you
|
|
the number of the line in the file which is at fault.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="printer-setup">
|
|
<para>Why am I having trouble setting up my printer?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <ulink
|
|
url="&url.books.handbook;/printing.html">Handbook entry on printing</ulink>.
|
|
It should cover most of your problem.</para>
|
|
|
|
<para>Some printers require a host-based driver to do any kind
|
|
of printing. These so-called <quote>WinPrinters</quote> are
|
|
not natively supported by &os;. If your printer does not
|
|
work in DOS or &windows;, it is probably a WinPrinter. Your
|
|
only hope of getting one of these to work is to check if the
|
|
<filename role="package">print/pnm2ppa</filename> port
|
|
supports it.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="keyboard-mappings">
|
|
<para>How can I correct the keyboard mappings for my
|
|
system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the Handbook section on <ulink
|
|
url="&url.books.handbook;/using-localization.html">using localization</ulink>,
|
|
specifically the section on <ulink
|
|
url="&url.books.handbook;/using-localization.html#setting-console">console setup</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="user-quotas">
|
|
<para>Why can I not get user quotas to work properly?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>It is possible that your kernel is not configured
|
|
to use quotas. If this is the case, you will need to
|
|
add the following line to your kernel configuration
|
|
file and recompile:</para>
|
|
|
|
<programlisting>options QUOTA</programlisting>
|
|
|
|
<para>Please read the <ulink
|
|
url="&url.books.handbook;/quotas.html">Handbook entry on quotas</ulink>
|
|
for full details.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Do not turn on quotas on
|
|
<filename class="directory">/</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Put the quota file on the file system that the
|
|
quotas are to be enforced on, i.e.:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>File System</entry>
|
|
|
|
<entry>Quota file</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><filename class="directory">/usr</filename></entry>
|
|
|
|
<entry><filename>/usr/admin/quotas</filename></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><filename class="directory">/home</filename></entry>
|
|
|
|
<entry><filename>/home/admin/quotas</filename></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>…</entry>
|
|
|
|
<entry>…</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</listitem>
|
|
</orderedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="sysv-ipc">
|
|
<para>Does &os; support System V IPC primitives?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, &os; supports System V-style IPC, including shared
|
|
memory, messages and semaphores, in the
|
|
<filename>GENERIC</filename> kernel. In a custom kernel,
|
|
enable this support by adding the following lines to your
|
|
kernel config.</para>
|
|
|
|
<programlisting>options SYSVSHM # enable shared memory
|
|
options SYSVSEM # enable for semaphores
|
|
options SYSVMSG # enable for messaging</programlisting>
|
|
|
|
<para>Recompile and install your kernel.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="sendmail-alternative">
|
|
<para>What other mail-server software can I use instead of
|
|
<application>sendmail</application>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <ulink
|
|
url="http://www.sendmail.org/"><application>sendmail</application></ulink>
|
|
server is the default mail-server software for &os;, but you
|
|
can easily replace it with one of the other MTA (for
|
|
instance, an MTA installed from the ports).</para>
|
|
|
|
<para>There are various alternative MTAs in the ports tree
|
|
already, with <filename role="package">mail/exim</filename>,
|
|
<filename role="package">mail/postfix</filename>, <filename
|
|
role="package">mail/qmail</filename>, and <filename
|
|
role="package">mail/zmailer</filename> being some of the
|
|
most popular choices.</para>
|
|
|
|
<para>Diversity is nice, and the fact that you have many
|
|
different mail-servers to chose from is considered a good
|
|
thing; therefore try to avoid asking questions like
|
|
<quote>Is <application>sendmail</application> better than
|
|
<application>qmail</application>?</quote> in the mailing
|
|
lists. If you do feel like asking, first check the mailing
|
|
list archives. The advantages and disadvantages of each and
|
|
every one of the available MTAs have already been discussed
|
|
a few times.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="forgot-root-pw">
|
|
<para>I have forgotten the <username>root</username> password!
|
|
What do I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Do not panic! Restart the system, type
|
|
<userinput>boot -s</userinput> at the
|
|
<literal>Boot:</literal> prompt to enter Single User mode.
|
|
At the question about the shell to use, hit
|
|
<keycap>Enter</keycap>. You will be dropped to a
|
|
&prompt.root; prompt. Enter <command>mount -urw /</command>
|
|
to remount your root file system read/write, then run
|
|
<command>mount -a</command> to remount all the file systems.
|
|
Run <command>passwd root</command> to change the
|
|
<username>root</username> password then run &man.exit.1; to
|
|
continue booting.</para>
|
|
|
|
<note>
|
|
<para>If you are still prompted to give the
|
|
<username>root</username> password when entering the
|
|
Single User mode, it means that the console has been
|
|
marked as <literal>insecure</literal> in
|
|
<filename>/etc/ttys</filename>. In this case it will be
|
|
required to boot from a &os; installation disk, choose
|
|
the <guimenuitem>Live CD</guimenuitem> or
|
|
<guimenuitem>Shell</guimenuitem> at the beginning of the install
|
|
process and issue the commands mentioned above. You will need to
|
|
mount the specific partition in this case and then chroot to it,
|
|
i.e. replace <command>mount -urw /</command> by
|
|
<command>mount /dev/ada0p1 /mnt; chroot /mnt</command> for
|
|
a system on <replaceable>ada0p1</replaceable>.</para>
|
|
</note>
|
|
|
|
<note>
|
|
<para>If you cannot mount your root partition from Single
|
|
User mode, it is possible that the partitions are
|
|
encrypted and it is impossible to mount them without the
|
|
access keys. Your chances depend on the chosen
|
|
implementation. For more information see the section
|
|
about encrypted disks in the &os; <ulink
|
|
url="&url.books.handbook;/disks-encrypting.html">Handbook</ulink>.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="CAD-reboot">
|
|
<para>How do I keep <keycombo
|
|
action="simul"><keycap>Control</keycap><keycap>Alt</keycap><keycap>Delete</keycap></keycombo>
|
|
from rebooting the system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are using &man.syscons.4; (the default console
|
|
driver) build and install a new kernel with the line in the
|
|
configuration file:</para>
|
|
|
|
<programlisting>options SC_DISABLE_REBOOT</programlisting>
|
|
|
|
<para>This can also be done by setting the following
|
|
&man.sysctl.8; which does not require a reboot or kernel
|
|
recompile:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl hw.syscons.kbd_reboot=0</userinput></screen>
|
|
|
|
<note>
|
|
<para>The above two methods are exclusive: The &man.sysctl.8;
|
|
does not exist if you compile your kernel with the
|
|
<literal>SC_DISABLE_REBOOT</literal> option.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dos-to-unix-txt">
|
|
<para>How do I reformat DOS text files to &unix; ones?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use this &man.perl.1; command:</para>
|
|
|
|
<screen>&prompt.user; <userinput>perl -i.bak -npe 's/\r\n/\n/g' <replaceable>file(s)</replaceable></userinput></screen>
|
|
|
|
<para>where <replaceable>file(s)</replaceable> is one or more
|
|
files to process. The modification is done in-place, with the
|
|
original file stored with a <filename>.bak</filename>
|
|
extension.</para>
|
|
|
|
<para>Alternatively you can use the &man.tr.1; command:</para>
|
|
|
|
<screen>&prompt.user; <userinput>tr -d '\r' < <replaceable>dos-text-file</replaceable> > <replaceable>unix-file</replaceable></userinput></screen>
|
|
|
|
<para><replaceable>dos-text-file</replaceable> is the file
|
|
containing DOS text while
|
|
<replaceable>unix-file</replaceable> will contain the
|
|
converted output. This can be quite a bit faster than using
|
|
<command>perl</command>.</para>
|
|
|
|
<para>Yet another way to reformat DOS text files is to use the
|
|
<filename role="package">converters/dosunix</filename> port
|
|
from the Ports Collection. Consult its documentation about
|
|
the details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kill-by-name">
|
|
<para>How do I kill processes by name?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use &man.pkill.1;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="uninstall-kerberos">
|
|
<para>How do I uninstall
|
|
<application>Kerberos</application>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>To remove <application>Kerberos</application> from the
|
|
system, reinstall the <literal>base</literal> distribution
|
|
for the release you are running. If you have the CD-ROM,
|
|
you can mount it (we will assume on <filename
|
|
class="directory">/cdrom</filename>) and run the commands
|
|
below:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /cdrom/base</userinput>
|
|
&prompt.root; <userinput>./install.sh</userinput></screen>
|
|
|
|
<para>Alternately, you can include the
|
|
<makevar>NO_KERBEROS</makevar> option in your
|
|
<filename>/etc/make.conf</filename> and rebuild
|
|
world.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
<qandaentry>
|
|
<question id="add-pty">
|
|
<para>How do I add pseudoterminals to the system?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you have a lot of <command>telnet</command>,
|
|
<command>ssh</command>, X, or <command>screen</command>
|
|
users, you might run out of pseudoterminals. By default,
|
|
&os; supports 512 pseudoterminals.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="reread-rc">
|
|
<para>How do I re-read <filename>/etc/rc.conf</filename> and
|
|
re-start <filename>/etc/rc</filename> without a
|
|
reboot?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Go into single user mode and then back to multi user
|
|
mode.</para>
|
|
|
|
<para>On the console do:</para>
|
|
|
|
<screen>&prompt.root; <userinput>shutdown now</userinput>
|
|
(Note: without -r or -h)
|
|
|
|
&prompt.root; <userinput>return</userinput>
|
|
&prompt.root; <userinput>exit</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="release-candidate">
|
|
<para>I tried to update my system to the latest
|
|
<emphasis>-STABLE</emphasis>, but got
|
|
<emphasis>-BETA<replaceable>x</replaceable></emphasis>,
|
|
<emphasis>-RC</emphasis> or
|
|
<emphasis>-PRERELEASE</emphasis>! What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: it is just a name.
|
|
<emphasis>RC</emphasis> stands for <quote>Release
|
|
Candidate</quote>. It signifies that a release is imminent.
|
|
In &os;, <emphasis>-PRERELEASE</emphasis> is typically
|
|
synonymous with the code freeze before a release. (For some
|
|
releases, the <emphasis>-BETA</emphasis> label was used in
|
|
the same way as <emphasis>-PRERELEASE</emphasis>.)</para>
|
|
|
|
<para>Long answer: &os; derives its releases from one of two
|
|
places. Major, dot-zero, releases, such as 7.0-RELEASE and
|
|
8.0-RELEASE, are branched from the head of the development
|
|
stream, commonly referred to as <link
|
|
linkend="current">-CURRENT</link>. Minor releases, such as
|
|
6.3-RELEASE or 5.2-RELEASE, have been snapshots of the
|
|
active <link linkend="stable">-STABLE</link> branch.
|
|
Starting with 4.3-RELEASE, each release also now has its own
|
|
branch which can be tracked by people requiring an extremely
|
|
conservative rate of development (typically only security
|
|
advisories).</para>
|
|
|
|
<para>When a release is about to be made, the branch from
|
|
which it will be derived from has to undergo a certain
|
|
process. Part of this process is a code freeze. When a
|
|
code freeze is initiated, the name of the branch is changed
|
|
to reflect that it is about to become a release. For
|
|
example, if the branch used to be called 6.2-STABLE, its
|
|
name will be changed to 6.3-PRERELEASE to signify the code
|
|
freeze and signify that extra pre-release testing should be
|
|
happening. Bug fixes can still be committed to be part of
|
|
the release. When the source code is in shape for the
|
|
release the name will be changed to 6.3-RC to signify that a
|
|
release is about to be made from it. Once in the RC stage,
|
|
only the most critical bugs found can be fixed. Once the
|
|
release (6.3-RELEASE in this example) and release branch
|
|
have been made, the branch will be renamed to
|
|
6.3-STABLE.</para>
|
|
|
|
<para>For more information on version numbers and the various
|
|
Subversion branches, refer to the <ulink
|
|
url="&url.articles.releng;/article.html">Release Engineering</ulink>
|
|
article.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kernel-chflag-failure">
|
|
<para>I tried to install a new kernel, and the &man.chflags.1;
|
|
failed. How do I get around this?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: You are probably at security level greater
|
|
than 0. Reboot directly to Single User mode to install the
|
|
kernel.</para>
|
|
|
|
<para>Long answer: &os; disallows changing system flags at
|
|
security levels greater than 0. You can check your security
|
|
level with the command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
|
|
|
|
<para>You cannot lower the security level; you have to boot to
|
|
Single Mode to install the kernel, or change the security
|
|
level in <filename>/etc/rc.conf</filename> then reboot. See
|
|
the &man.init.8; manual page for details on
|
|
<literal>securelevel</literal>, and see
|
|
<filename>/etc/defaults/rc.conf</filename> and the
|
|
&man.rc.conf.5; manual page for more information on
|
|
<filename>rc.conf</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kernel-securelevel-time">
|
|
<para>I cannot change the time on my system by more than one
|
|
second! How do I get around this?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Short answer: You are probably at security level greater
|
|
than 1. Reboot directly to Single User mode to change the
|
|
date.</para>
|
|
|
|
<para>Long answer: &os; disallows changing the time by more
|
|
that one second at security levels greater than 1. You can
|
|
check your security level with the command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
|
|
|
|
<para>You cannot lower the security level; you have to boot to
|
|
Single User mode to change the date, or change the security
|
|
level in <filename>/etc/rc.conf</filename> then reboot. See
|
|
the &man.init.8; manual page for details on
|
|
<literal>securelevel</literal>, and see
|
|
<filename>/etc/defaults/rc.conf</filename> and the
|
|
&man.rc.conf.5; manual page for more information on
|
|
<filename>rc.conf</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="statd-mem-leak">
|
|
<para>Why is <command>rpc.statd</command> using 256 MB of
|
|
memory?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>No, there is no memory leak, and it is not using
|
|
256 MB of memory. For convenience,
|
|
<command>rpc.statd</command> maps an obscene amount of
|
|
memory into its address space. There is nothing terribly
|
|
wrong with this from a technical standpoint; it just throws
|
|
off things like &man.top.1; and &man.ps.1;.</para>
|
|
|
|
<para>&man.rpc.statd.8; maps its status file (resident on
|
|
<filename class="directory">/var</filename>) into its address space; to save
|
|
worrying about remapping it later when it needs to grow, it
|
|
maps it with a generous size. This is very evident from the
|
|
source code, where one can see that the length argument to
|
|
&man.mmap.2; is <literal>0x10000000</literal>, or one
|
|
sixteenth of the address space on an IA32, or exactly
|
|
256 MB.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="unsetting-schg">
|
|
<para>Why can I not unset the <literal>schg</literal> file
|
|
flag?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You are running at an elevated (i.e., greater than 0)
|
|
securelevel. Lower the securelevel and try again. For more
|
|
information, see <link linkend="securelevel">the FAQ entry
|
|
on securelevel</link> and the &man.init.8; manual
|
|
page.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ssh-shosts">
|
|
<para>Why does <application>SSH</application> authentication
|
|
through <filename>.shosts</filename> not work by default in
|
|
recent versions of &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The reason why <filename>.shosts</filename>
|
|
authentication does not work by default in more recent
|
|
versions of &os; is because &man.ssh.1; is not installed
|
|
suid <username>root</username> by default. To
|
|
<quote>fix</quote> this, you can do one of the
|
|
following:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>As a permanent fix, set
|
|
<makevar>ENABLE_SUID_SSH</makevar> to
|
|
<literal>true</literal> in
|
|
<filename>/etc/make.conf</filename> then rebuild and
|
|
reinstall &man.ssh.1;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>As a temporary fix, change the mode on
|
|
<filename>/usr/bin/ssh</filename> to
|
|
<literal>4555</literal> by running
|
|
<command>chmod 4555 /usr/bin/ssh</command> as
|
|
<username>root</username>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="vnlru">
|
|
<para>What is <literal>vnlru</literal>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><literal>vnlru</literal> flushes and frees vnodes when
|
|
the system hits the <varname>kern.maxvnodes</varname> limit.
|
|
This kernel thread sits mostly idle, and only activates if
|
|
you have a huge amount of RAM and are accessing tens of
|
|
thousands of tiny files.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="top-memory-states">
|
|
<para>What do the various memory states displayed by
|
|
<command>top</command> mean?</para>
|
|
</question>
|
|
|
|
<!-- Provided by John Dyson via Usenet -->
|
|
<answer>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><literal>Active</literal>: pages recently
|
|
statistically used.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>Inactive</literal>: pages recently
|
|
statistically unused.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>Cache</literal>: (most often) pages that
|
|
have percolated from inactive to a status where they
|
|
maintain their data, but can often be immediately reused
|
|
(either with their old association, or reused with a new
|
|
association). There can be certain immediate transitions
|
|
from <literal>active</literal> to
|
|
<literal>cache</literal> state if the page is known to
|
|
be clean (unmodified), but that transition is a matter
|
|
of policy, depending upon the algorithm choice of the VM
|
|
system maintainer.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>Free</literal>: pages without data content,
|
|
and can be immediately used in certain circumstances
|
|
where cache pages might be ineligible. Free pages can
|
|
be reused at interrupt or process
|
|
state.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>Wired</literal>: pages that are fixed into
|
|
memory, usually for kernel purposes, but also sometimes
|
|
for special use in processes.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Pages are most often written to disk (sort of a VM sync)
|
|
when they are in the inactive state, but active pages can
|
|
also be synced. This depends upon the CPU tracking of the
|
|
modified bit being available, and in certain situations
|
|
there can be an advantage for a block of VM pages to be
|
|
synced, whether they are active or inactive. In most common
|
|
cases, it is best to think of the inactive queue to be a
|
|
queue of relatively unused pages that might or might not be
|
|
in the process of being written to disk. Cached pages are
|
|
already synced, not mapped, but available for immediate
|
|
process use with their old association or with a new
|
|
association. Free pages are available at interrupt level,
|
|
but cached or free pages can be used at process state for
|
|
reuse. Cache pages are not adequately locked to be
|
|
available at interrupt level.</para>
|
|
|
|
<para>There are some other flags (e.g., busy flag or busy
|
|
count) that might modify some of the described rules.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="free-memory-amount">
|
|
<para>How much free memory is available?</para>
|
|
</question>
|
|
|
|
<!-- Provided by John Dyson via Usenet -->
|
|
<answer>
|
|
<para>There are a couple of kinds of <quote>free
|
|
memory</quote>. One kind is the amount of memory
|
|
immediately available without paging anything else out.
|
|
That is approximately the size of cache queue + size of free
|
|
queue (with a derating factor, depending upon system
|
|
tuning). Another kind of <quote>free memory</quote> is the
|
|
total amount of <acronym>VM</acronym> space. That can be
|
|
complex, but is dependent upon the amount of swap space and
|
|
memory. Other kinds of <quote>free memory</quote>
|
|
descriptions are also possible, but it is relatively useless
|
|
to define these, but rather it is important to make sure
|
|
that the paging rate is kept low, and to avoid running out
|
|
of swap space.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="var-empty">
|
|
<para>What is <filename class="directory">/var/empty</filename>? I can not
|
|
delete it!</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><filename class="directory">/var/empty</filename> is a directory that the
|
|
&man.sshd.8; program uses when performing privilege separation.
|
|
The <filename class="directory">/var/empty</filename> directory is empty, owned by
|
|
<username>root</username> and has the <literal>schg</literal>
|
|
flag set.</para>
|
|
|
|
<para>Although it is not recommended to delete this directory, to
|
|
do so you will need to unset the <literal>schg</literal> flag
|
|
first. See the &man.chflags.1; manual page for more information
|
|
(and bear in mind the answer to
|
|
<link linkend="unsetting-schg">the question on unsetting the schg flag</link>).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question 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 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 id="x">
|
|
<title>The X Window System and Virtual Consoles</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="whatis-X">
|
|
<para>What is the X Window System?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The X Window System (commonly <literal>X11</literal>) is
|
|
the most widely available windowing system capable of running
|
|
on &unix; or &unix; like systems, including &os;.
|
|
<ulink url= "http://www.x.org/wiki/">The X.Org Foundation</ulink>
|
|
administers the <ulink
|
|
url="http://en.wikipedia.org/wiki/X_Window_System_core_protocol">X protocol standards</ulink>,
|
|
with the current reference implementation, version 11
|
|
release &xorg.version;, so you will often see references
|
|
shortened to <literal>X11</literal>.</para>
|
|
|
|
<para>Many implementations are available for different
|
|
architectures and operating systems. An implementation of
|
|
the server-side code is properly known as an <literal>X
|
|
server</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="running-X">
|
|
<para>I want to run &xorg;, how do I go about it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>To install &xorg; do one of the following:</para>
|
|
|
|
<para>Use the <filename role="package">x11/xorg</filename>
|
|
meta-port, which builds and installs every &xorg;
|
|
component.</para>
|
|
|
|
<para>Use <filename
|
|
role="package">x11/xorg-minimal</filename>, which builds
|
|
and installs only the necessary &xorg; components.</para>
|
|
|
|
<para>Install &xorg; from &os; packages:</para>
|
|
|
|
<screen><userinput>&prompt.root; pkg_add -r xorg</userinput></screen>
|
|
|
|
<para>or on systems using <application>pkg</application>:</para>
|
|
|
|
<screen><userinput>&prompt.root; pkg install xorg</userinput></screen>
|
|
|
|
<para>After the installation of &xorg;, follow
|
|
the instructions from the <ulink
|
|
url="&url.books.handbook;/x-config.html">X11 Configuration</ulink> section of
|
|
the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="running-X-securelevels">
|
|
<para>I <emphasis>tried</emphasis> to run X, but I get a
|
|
<errorname>No devices detected.</errorname> error when I
|
|
type
|
|
<command>startx</command>. What do I do now?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your system is probably running at a raised
|
|
<literal>securelevel</literal>. It is not possible to start X
|
|
at a raised <literal>securelevel</literal> because X
|
|
requires write access to &man.io.4;. For more information,
|
|
see at the &man.init.8; manual page.</para>
|
|
|
|
<para>There are two solutions to the problem:
|
|
Set your
|
|
<literal>securelevel</literal> back down to zero (usually
|
|
in <filename>/etc/rc.conf</filename>), 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 id="x-and-moused">
|
|
<para>Why does my mouse not work with X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you are using &man.syscons.4; (the default console
|
|
driver), you can configure &os; to support a mouse pointer on
|
|
each virtual screen. To avoid conflicting with X,
|
|
&man.syscons.4; supports a virtual device called
|
|
<devicename>/dev/sysmouse</devicename>. All mouse events
|
|
received from the real mouse device are written to the
|
|
&man.sysmouse.4; device via &man.moused.8;. To use your
|
|
mouse on one or more virtual consoles,
|
|
<emphasis>and</emphasis> use X, see <xref
|
|
linkend="moused" remap="another section"/> and set up
|
|
&man.moused.8;.</para>
|
|
|
|
<para>Then edit <filename>/etc/X11/xorg.conf</filename> and
|
|
make sure you have the following lines:</para>
|
|
|
|
<programlisting>Section "InputDevice"
|
|
Option "Protocol" "SysMouse"
|
|
Option "Device" "/dev/sysmouse"
|
|
.....</programlisting>
|
|
|
|
<para>Starting with &xorg; version 7.4, the
|
|
<literal>InputDevice</literal> sections in
|
|
<filename>xorg.conf</filename> are ignored in favor of
|
|
autodetected devices. To restore the old behavior, add the
|
|
following line to the <literal>ServerLayout</literal> or
|
|
<literal>ServerFlags</literal> section:</para>
|
|
|
|
<programlisting>Option "AutoAddDevices" "false"</programlisting>
|
|
|
|
<para>Some people prefer to use
|
|
<devicename>/dev/mouse</devicename> under X. To make this
|
|
work, <devicename>/dev/mouse</devicename> should be linked
|
|
to <devicename>/dev/sysmouse</devicename> (see
|
|
&man.sysmouse.4;) by adding the following line to
|
|
<filename>/etc/devfs.conf</filename> (see
|
|
&man.devfs.conf.5;):</para>
|
|
|
|
<programlisting>link sysmouse mouse</programlisting>
|
|
|
|
<para>This link can be created by restarting &man.devfs.5;
|
|
with the following command (as
|
|
<username>root</username>):</para>
|
|
|
|
<screen>&prompt.root; <userinput>service devfs restart</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="x-and-wheel">
|
|
<para>My mouse has a fancy wheel. Can I use it in X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes.</para>
|
|
|
|
<para>You need to tell X that you have a 5 button mouse. To
|
|
do this, simply add the lines <literal>Buttons 5</literal>
|
|
and <literal>ZAxisMapping 4 5</literal> to the
|
|
<quote>InputDevice</quote> section of
|
|
<filename>/etc/X11/xorg.conf</filename>. For example, you
|
|
might have the following <quote>InputDevice</quote> section
|
|
in <filename>/etc/X11/xorg.conf</filename>.</para>
|
|
|
|
<example>
|
|
<title><quote>InputDevice</quote> Section for Wheeled Mouse
|
|
in &xorg; Configuration File</title>
|
|
|
|
<programlisting>Section "InputDevice"
|
|
Identifier "Mouse1"
|
|
Driver "mouse"
|
|
Option "Protocol" "auto"
|
|
Option "Device" "/dev/sysmouse"
|
|
Option "Buttons" "5"
|
|
Option "ZAxisMapping" "4 5"
|
|
EndSection</programlisting>
|
|
</example>
|
|
|
|
<example>
|
|
<title><quote>.emacs</quote> Example for Naive Page
|
|
Scrolling with Wheeled Mouse (optional)</title>
|
|
|
|
<programlisting>;; wheel mouse
|
|
(global-set-key [mouse-4] 'scroll-down)
|
|
(global-set-key [mouse-5] 'scroll-up)</programlisting>
|
|
</example>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="x-and-synaptic">
|
|
<para>My laptop has a Synaptics touchpad. Can I use
|
|
it in X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, you will have to configure a few things to
|
|
make it work.</para>
|
|
|
|
<para>If you plan to use the Xorg synaptics driver you
|
|
<emphasis>must</emphasis> remove moused_enable from
|
|
<filename>rc.conf</filename>. Xorg can not use
|
|
the synaptics mouse if the moused already sits on
|
|
<filename>/dev/psm0</filename>.</para>
|
|
|
|
<para>To enable synaptics in the &man.psm.4; driver you need
|
|
to add the following into
|
|
<filename>/boot/loader.conf</filename>:</para>
|
|
|
|
<programlisting>hw.psm.synaptics_support="1"</programlisting>
|
|
|
|
<para>You also need the following into
|
|
<filename>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 id="no-remote-x11">
|
|
<para>How do I use remote X displays?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>For security reasons, the default setting is to not
|
|
allow a machine to remotely open a window.</para>
|
|
|
|
<para>To enable this feature, simply start
|
|
<application>X</application> with the optional
|
|
<option>-listen_tcp</option> argument:</para>
|
|
|
|
<screen>&prompt.user; <userinput>startx -listen_tcp</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="virtual-console">
|
|
<para>What is a virtual console and how do I make more?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Virtual consoles, put simply, enable you to have several
|
|
simultaneous sessions on the same machine without doing
|
|
anything complicated like setting up a network or running
|
|
X.</para>
|
|
|
|
<para>When the system starts, it will display a login prompt
|
|
on the monitor after displaying all the boot messages. You
|
|
can then type in your login name and password and start
|
|
working (or playing!) on the first virtual console.</para>
|
|
|
|
<para>At some point, you will probably wish to start another
|
|
session, perhaps to look at documentation for a program you
|
|
are running or to read your mail while waiting for an FTP
|
|
transfer to finish. Just do <keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>
|
|
(hold down <keycap>Alt</keycap> and press
|
|
<keycap>F2</keycap>), and you will find a login prompt
|
|
waiting for you on the second <quote>virtual
|
|
console</quote>! When you want to go back to the original
|
|
session, do <keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F1</keycap></keycombo>.</para>
|
|
|
|
<para>The default &os; installation has eight virtual consoles
|
|
enabled. <keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F1</keycap></keycombo>,
|
|
<keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>,
|
|
<keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F3</keycap></keycombo>,
|
|
and so on will switch between these virtual consoles.</para>
|
|
|
|
<para>To enable more of them, edit
|
|
<filename>/etc/ttys</filename> (see &man.ttys.5;) and add
|
|
entries for <devicename>ttyv8</devicename> to
|
|
<devicename>ttyvc</devicename> after the comment on
|
|
<quote>Virtual terminals</quote>:</para>
|
|
|
|
<programlisting># Edit the existing entry for ttyv8 in /etc/ttys and change
|
|
# "off" to "on".
|
|
ttyv8 "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyv9 "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyva "/usr/libexec/getty Pc" cons25 on secure
|
|
ttyvb "/usr/libexec/getty Pc" cons25 on secure</programlisting>
|
|
|
|
<para>Use as many or as few as you want. The more virtual
|
|
terminals you have, the more resources that are used; this
|
|
can be important if you have 8 MB RAM or less. You may
|
|
also want to change the <literal>secure</literal> to
|
|
<literal>insecure</literal>.</para>
|
|
|
|
<important>
|
|
<para>If you want to run an X server you
|
|
<emphasis>must</emphasis> leave at least one virtual
|
|
terminal unused (or turned off) for it to use. That is to
|
|
say that if you want to have a login prompt pop up for all
|
|
twelve of your Alt-function keys, you are out of luck
|
|
— you can only do this for eleven of them if you
|
|
also want to run an X server on the same machine.</para>
|
|
</important>
|
|
|
|
<para>The easiest way to disable a console is by turning it
|
|
off. For example, if you had the full 12 terminal
|
|
allocation mentioned above and you wanted to run X, you
|
|
would change settings for virtual terminal 12 from:</para>
|
|
|
|
<programlisting>ttyvb "/usr/libexec/getty Pc" cons25 on secure</programlisting>
|
|
|
|
<para>to:</para>
|
|
|
|
<programlisting>ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting>
|
|
|
|
<para>If your keyboard has only ten function keys, you would
|
|
end up with:</para>
|
|
|
|
<programlisting>ttyv9 "/usr/libexec/getty Pc" cons25 off secure
|
|
ttyva "/usr/libexec/getty Pc" cons25 off secure
|
|
ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting>
|
|
|
|
<para>(You could also just delete these lines.)</para>
|
|
|
|
<para>Next, the easiest (and cleanest) way to activate the
|
|
virtual consoles is to reboot. However, if you really do
|
|
not want to reboot, you can just shut down the X Window
|
|
system and execute (as <username>root</username>):</para>
|
|
|
|
<screen>&prompt.root; <userinput>kill -HUP 1</userinput></screen>
|
|
|
|
<para>It is imperative that you completely shut down X Window
|
|
if it is running, before running this command. If you do not,
|
|
your system will probably appear to hang or lock up after
|
|
executing <command>kill</command>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="vty-from-x">
|
|
<para>How do I access the virtual consoles from X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use <keycombo
|
|
action="simul"><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F<replaceable>n</replaceable></keycap></keycombo>
|
|
to switch back to a virtual console. <keycombo
|
|
action="simul"><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo>
|
|
would return you to the first virtual console.</para>
|
|
|
|
<para>Once you are back to a text console, you can then use
|
|
<keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F<replaceable>n</replaceable></keycap></keycombo>
|
|
as normal to move between them.</para>
|
|
|
|
<para>To return to the X session, you must switch to the
|
|
virtual console running X. If you invoked X from the
|
|
command line, (e.g., using <command>startx</command>) then
|
|
the X session will attach to the next unused virtual
|
|
console, not the text console from which it was invoked. If
|
|
you have eight active virtual terminals then X will be
|
|
running on the ninth, and you would use <keycombo
|
|
action="simul"><keycap>Alt</keycap><keycap>F9</keycap></keycombo>
|
|
to return.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="xdm-boot">
|
|
<para>How do I start <application>XDM</application> on
|
|
boot?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are two schools of thought on how to start
|
|
&man.xdm.1;. One school starts <command>xdm</command> from
|
|
<filename>/etc/ttys</filename> (see &man.ttys.5;) using the
|
|
supplied example, while the other simply runs
|
|
<command>xdm</command> from
|
|
<filename>rc.local</filename> (see &man.rc.8;) or from an
|
|
<filename>X</filename> script in
|
|
<filename class="directory">/usr/local/etc/rc.d</filename>. Both are equally
|
|
valid, and one may work in situations where the other does
|
|
not. In both cases the result is the same: X will pop up a
|
|
graphical login prompt.</para>
|
|
|
|
<para>The &man.ttys.5; method has the advantage of documenting
|
|
which vty X will start on and passing the responsibility of
|
|
restarting the X server on logout to &man.init.8;. The
|
|
&man.rc.8; method makes it easy to <command>kill</command>
|
|
<command>xdm</command> if there is a problem starting the X
|
|
server.</para>
|
|
|
|
<para>If loaded from &man.rc.8;, <command>xdm</command> should
|
|
be started without any arguments (i.e., as a daemon).
|
|
<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>If you are to start <command>xdm</command> from
|
|
<filename>/etc/ttys</filename>, there still is a chance of
|
|
conflict between <command>xdm</command> and &man.getty.8;.
|
|
One way to avoid this is to add the <literal>vt</literal>
|
|
number in
|
|
<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
|
|
<devicename>/dev/ttyv3</devicename>. Note the number is
|
|
offset by one. The X server counts the vty from one,
|
|
whereas the &os; kernel numbers the vty from zero.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="xconsole-failure">
|
|
<para>Why do I get <errorname>Couldn't open
|
|
console</errorname> when I run
|
|
<command>xconsole</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you start <application>X</application> with
|
|
<command>startx</command>, the permissions on
|
|
<devicename>/dev/console</devicename> will
|
|
<emphasis>not</emphasis> get changed, resulting in things
|
|
like <command>xterm -C</command> and
|
|
<command>xconsole</command> not working.</para>
|
|
|
|
<para>This is because of the way console permissions are set
|
|
by default. On a multi-user system, one does not
|
|
necessarily want just any user to be able to write on the
|
|
system console. For users who are logging directly onto a
|
|
machine with a VTY, the &man.fbtab.5; file exists to solve
|
|
such problems.</para>
|
|
|
|
<para>In a nutshell, make sure an uncommented line of the form
|
|
is in <filename>/etc/fbtab</filename> (see
|
|
&man.fbtab.5;):</para>
|
|
|
|
<programlisting>/dev/ttyv0 0600 /dev/console</programlisting>
|
|
|
|
<para>It will ensure that whomever logs in on
|
|
<devicename>/dev/ttyv0</devicename> will own the
|
|
console.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ps2-x">
|
|
<para>Why does my PS/2 mouse misbehave under X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your mouse and the mouse driver may have somewhat become
|
|
out of synchronization.</para>
|
|
|
|
<para> In rare cases the driver may erroneously report
|
|
synchronization problem and you may see the kernel
|
|
message:</para>
|
|
|
|
<programlisting>psmintr: out of sync (xxxx != yyyy)</programlisting>
|
|
|
|
<para>and notice that your mouse does not work
|
|
properly.</para>
|
|
|
|
<para>If this happens, disable the synchronization check code
|
|
by setting the driver flags for the PS/2 mouse driver to
|
|
<literal>0x100</literal>. Enter
|
|
<emphasis>UserConfig</emphasis> by giving the
|
|
<option>-c</option> option at the boot prompt:</para>
|
|
|
|
<screen>boot: <userinput>-c</userinput></screen>
|
|
|
|
<para>Then, in the <emphasis>UserConfig</emphasis> command
|
|
line, type:</para>
|
|
|
|
<screen>UserConfig> <userinput>flags psm0 0x100</userinput>
|
|
UserConfig> <userinput>quit</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mouse-button-reverse">
|
|
<para>How do I reverse the mouse buttons?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Run the command <command>xmodmap -e "pointer = 3 2 1"</command>
|
|
from <filename>.xinitrc</filename> or
|
|
<filename>.xsession</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="install-splash">
|
|
<para>How do I install a splash screen and where do I find
|
|
them?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The detailed answer for this question can be found in
|
|
the <ulink
|
|
url="&url.books.handbook;/boot-blocks.html#boot-splash">Boot Time Splash Screens</ulink>
|
|
section of the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="windows-keys">
|
|
<para>Can I use the <keycap>Windows</keycap> keys on my
|
|
keyboard in X?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. All you need to do is use &man.xmodmap.1; to
|
|
define what function you wish them to perform.</para>
|
|
|
|
<para>Assuming all <quote>Windows</quote> keyboards are
|
|
standard then the keycodes for these three keys are the
|
|
following:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><keycode>115</keycode> —
|
|
<keycap>Windows</keycap> key, between the left-hand
|
|
<keycap>Ctrl</keycap> and <keycap>Alt</keycap>
|
|
keys</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><keycode>116</keycode> —
|
|
<keycap>Windows</keycap> key, to the right of
|
|
<keycap>AltGr</keycap></para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><keycode>117</keycode> — <keycap>Menu</keycap>
|
|
key, to the left of the right-hand <keycap>Ctrl</keycap>
|
|
key</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>To have the left <keycap>Windows</keycap> key print a
|
|
comma, try this.</para>
|
|
|
|
<screen>&prompt.root; <userinput>xmodmap -e "keycode 115 = comma"</userinput></screen>
|
|
|
|
<para>To have the <keycap>Windows</keycap> key-mappings
|
|
enabled automatically every time you start X either put the
|
|
<command>xmodmap</command> commands in your
|
|
<filename>~/.xinitrc</filename> file or, preferably, create
|
|
a file <filename>~/.xmodmaprc</filename> and include the
|
|
<command>xmodmap</command> options, one per line, then add
|
|
the following line to your
|
|
<filename>~/.xinitrc</filename>:</para>
|
|
|
|
<programlisting>xmodmap $HOME/.xmodmaprc</programlisting>
|
|
|
|
<para>For example, you could map the 3 keys to be
|
|
<keycap>F13</keycap>, <keycap>F14</keycap>, and
|
|
<keycap>F15</keycap>, respectively. This would make it easy
|
|
to map them to useful functions within applications or your
|
|
window manager, as demonstrated further down.</para>
|
|
|
|
<para>To do this put the following in
|
|
<filename>~/.xmodmaprc</filename>.</para>
|
|
|
|
<programlisting>keycode 115 = F13
|
|
keycode 116 = F14
|
|
keycode 117 = F15</programlisting>
|
|
|
|
<para>If you use the <filename
|
|
role="package">x11-wm/fvwm2</filename> port, for example,
|
|
you could map the keys so that <keycap>F13</keycap>
|
|
iconifies (or de-iconifies) the window the cursor is in,
|
|
<keycap>F14</keycap> brings the window the cursor is in to
|
|
the front or, if it is already at the front, pushes it to
|
|
the back, and <keycap>F15</keycap> pops up the main
|
|
Workplace (application) menu even if the cursor is not on
|
|
the desktop, which is useful if you do not have any part of
|
|
the desktop visible (and the logo on the key matches its
|
|
functionality).</para>
|
|
|
|
<para>The following entries in <filename>~/.fvwmrc</filename>
|
|
implement the aforementioned setup:</para>
|
|
|
|
<programlisting>Key F13 FTIWS A Iconify
|
|
Key F14 FTIWS A RaiseLower
|
|
Key F15 A A Menu Workplace Nop</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="x-3d-acceleration">
|
|
<para>How can I get 3D hardware acceleration for
|
|
&opengl;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The availability of 3D acceleration depends on the
|
|
version of &xorg; that you are using and the type of video
|
|
chip you have. If you have an nVidia chip, you can use the
|
|
binary drivers provided for &os; by installing one of the
|
|
following ports:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The latest versions of nVidia cards are supported by
|
|
the <filename role="package">x11/nvidia-driver</filename>
|
|
port.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>nVidia cards like the GeForce2 MX/3/4 series
|
|
are supported by the 96XX series of drivers, available
|
|
in the <filename
|
|
role="package">x11/nvidia-driver-96xx</filename>
|
|
port.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Even older cards, like GeForce and RIVA TNT are
|
|
supported by the 71XX series of drivers, available in
|
|
the <filename
|
|
role="package">x11/nvidia-driver-71xx</filename>
|
|
port.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>nVidia provides detailed information on which
|
|
card is supported by which driver
|
|
on their web site: <ulink
|
|
url="http://www.nvidia.com/object/IO_32667.html"></ulink>.</para>
|
|
|
|
<para>For Matrox G200/G400, check the
|
|
<filename role="package">x11-servers/mga_hal</filename>
|
|
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 id="networking">
|
|
<title>Networking</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="diskless-booting">
|
|
<para>Where can I get information on <quote>diskless
|
|
booting</quote>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><quote>Diskless booting</quote> means that the &os;
|
|
box is booted over a network, and reads the necessary
|
|
files from a server instead of its hard disk. For full
|
|
details, please read <ulink
|
|
url="&url.books.handbook;/network-diskless.html">the Handbook entry on diskless booting</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="router">
|
|
<para>Can a &os; box be used as a dedicated network
|
|
router?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. Please see the Handbook entry on <ulink
|
|
url="&url.books.handbook;/advanced-networking.html">advanced networking</ulink>,
|
|
specifically the section on <ulink
|
|
url="&url.books.handbook;/network-routing.html">routing and gateways</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="win95-connection">
|
|
<para>Can I connect my &windows; box to the Internet via
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Typically, people who ask this question have two PCs at
|
|
home, one with &os; and one with some version of &windows;
|
|
the idea is to use the &os; box to connect to the Internet
|
|
and then be able to access the Internet from the &windows;
|
|
box through the &os; box. This is really just a special
|
|
case of the previous question and works perfectly
|
|
well.</para>
|
|
|
|
<para>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, please see the &man.ppp.8; manual page or
|
|
the <ulink
|
|
url="&url.books.handbook;/userppp.html">Handbook entry on user PPP</ulink>.</para>
|
|
|
|
<para>If you are using kernel-mode PPP or have an Ethernet
|
|
connection to the Internet, you need to use &man.natd.8;.
|
|
Please look at the <ulink
|
|
url="&url.books.handbook;/network-natd.html">natd</ulink>
|
|
section of the Handbook for a tutorial.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="slip-ppp-support">
|
|
<para>Does &os; support 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, please see the
|
|
<ulink
|
|
url="&url.books.handbook;/ppp-and-slip.html">Handbook chapter on PPP</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="natd">
|
|
<para>Does &os; support NAT or Masquerading?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes. If you want to use NAT over a user PPP connection,
|
|
please see the <ulink
|
|
url="&url.books.handbook;/userppp.html">Handbook entry on user PPP</ulink>.
|
|
If you want to use NAT over some other sort of network
|
|
connection, please look at the <ulink
|
|
url="&url.books.handbook;/network-natd.html">natd</ulink>
|
|
section of the Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ethernet-aliases">
|
|
<para>How can I set up Ethernet aliases?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If the alias is on the same subnet as an address already
|
|
configured on the interface, then add <literal>netmask
|
|
0xffffffff</literal> to your &man.ifconfig.8; command-line,
|
|
as in the following:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>ed0</replaceable> alias <replaceable>192.0.2.2</replaceable> netmask 0xffffffff</userinput></screen>
|
|
|
|
<para>Otherwise, just specify the network address and netmask
|
|
as usual:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ifconfig <replaceable>ed0</replaceable> alias <replaceable>172.16.141.5</replaceable> netmask 0xffffff00</userinput></screen>
|
|
|
|
<para>You can read more about this in the &os; <ulink
|
|
url="&url.books.handbook;/configtuning-virtual-hosts.html">Handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="port-3c503">
|
|
<para>How do I get my 3C503 to use the other network
|
|
port?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you want to use the other ports, you will have to
|
|
specify an additional parameter on the &man.ifconfig.8;
|
|
command line. The default port is <literal>link0</literal>.
|
|
To use the AUI port instead of the BNC one, use
|
|
<literal>link2</literal>. These flags should be specified
|
|
using the ifconfig_* variables in
|
|
<filename>/etc/rc.conf</filename> (see
|
|
&man.rc.conf.5;).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="nfs-linux">
|
|
<para>Why can I not NFS-mount from a &linux; box?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Some versions of the &linux; NFS code only accept mount
|
|
requests from a privileged port; try to issue the following
|
|
command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mount -o -P <replaceable>linuxbox:/blah</replaceable> <replaceable>/mnt</replaceable></userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="exports-errors">
|
|
<para>Why does <command>mountd</command> keep telling me it
|
|
<errorname>can't change attributes</errorname> and that I
|
|
have a <errorname>bad exports list</errorname> on my &os;
|
|
NFS server?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The most frequent problem is not understanding the
|
|
correct format of <filename>/etc/exports</filename>. Please
|
|
review &man.exports.5; and the <ulink
|
|
url="&url.books.handbook;/network-nfs.html">NFS</ulink>
|
|
entry in the Handbook, especially the section on <ulink
|
|
url="&url.books.handbook;/network-nfs.html#configuring-nfs">configuring NFS</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ip-multicast">
|
|
<para>How do I enable IP multicast support?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>&os; supports multicast host operations by default. If
|
|
you want your box to run as a multicast router, you need to
|
|
recompile your kernel with the <literal>MROUTING</literal>
|
|
option and run &man.mrouted.8;. &os; will start
|
|
&man.mrouted.8; at boot time if the flag
|
|
<literal>mrouted_enable</literal> is set to
|
|
<literal>YES</literal> in
|
|
<filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<note>
|
|
<para>In recent &os; releases, the &man.mrouted.8; multicast
|
|
routing daemon, the &man.map-mbone.8; and &man.mrinfo.8;
|
|
utilities have been removed from the base system. These
|
|
programs are now available in the &os; Ports Collection as
|
|
<filename role="package">net/mrouted</filename>.</para>
|
|
</note>
|
|
|
|
<para>MBONE tools are available in their own ports category,
|
|
<ulink
|
|
url="http://www.FreeBSD.org/ports/mbone.html">mbone</ulink>.
|
|
If you are looking for the conference tools
|
|
<command>vic</command> and <command>vat</command>, look
|
|
there!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="fqdn-hosts">
|
|
<para>Why do I have to use the FQDN for hosts on my
|
|
site?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the answer in the &os; <ulink
|
|
url="&url.books.handbook;/mail-trouble.html">Handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="network-permission-denied">
|
|
<para>Why do I get an error, <errorname>Permission
|
|
denied</errorname>, for all networking operations?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you have compiled your kernel with the
|
|
<literal>IPFIREWALL</literal> option, you need to be aware
|
|
that the default policy is to deny all packets that are not
|
|
explicitly allowed.</para>
|
|
|
|
<para>If you had unintentionally misconfigured your system for
|
|
firewalling, you can restore network operability by typing
|
|
the following while logged in as
|
|
<username>root</username>:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ipfw add 65534 allow all from any to any</userinput></screen>
|
|
|
|
<para>You can also set <literal>firewall_type="open"</literal>
|
|
in <filename>/etc/rc.conf</filename>.</para>
|
|
|
|
<para>For further information on configuring a &os; firewall,
|
|
see the <ulink
|
|
url="&url.books.handbook;/firewalls.html">Handbook chapter</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ipfw-fwd">
|
|
<para>Why is my <command>ipfw</command> <quote>fwd</quote>
|
|
rule to redirect a service to another machine not
|
|
working?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Possibly because you want to do network address
|
|
translation (NAT) and not just forward packets. A
|
|
<quote>fwd</quote> rule does exactly what it says; it
|
|
forwards packets. It does not actually change the data
|
|
inside the packet. Say we have a rule like:</para>
|
|
|
|
<screen>01000 fwd <replaceable>10.0.0.1</replaceable> from any to <replaceable>foo 21</replaceable></screen>
|
|
|
|
<para>When a packet with a destination address of
|
|
<replaceable>foo</replaceable> arrives at the machine with
|
|
this rule, the packet is forwarded to
|
|
<replaceable>10.0.0.1</replaceable>, but it still has the
|
|
destination address of <replaceable>foo</replaceable>! The
|
|
destination address of the packet is
|
|
<emphasis>not</emphasis> changed to
|
|
<replaceable>10.0.0.1</replaceable>. Most machines would
|
|
probably drop a packet that they receive with a destination
|
|
address that is not their own. Therefore, using a
|
|
<quote>fwd</quote> rule does not often work the way the user
|
|
expects. This behavior is a feature and not a bug.</para>
|
|
|
|
<para>See the <link
|
|
linkend="service-redirect">FAQ about redirecting services</link>,
|
|
the &man.natd.8; manual, or one of the several port
|
|
redirecting utilities in the <ulink
|
|
url="&url.base;/ports/index.html">Ports Collection</ulink>
|
|
for a correct way to do this.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="service-redirect">
|
|
<para>How can I redirect service requests from one machine to
|
|
another?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can redirect FTP (and other service) request with
|
|
the <filename role="package">sysutils/socket</filename>
|
|
port. Simply replace the service's command line to call
|
|
<command>socket</command> instead, like so:</para>
|
|
|
|
<programlisting>ftp stream tcp nowait nobody /usr/local/bin/socket socket <replaceable>ftp.example.com</replaceable> <replaceable>ftp</replaceable></programlisting>
|
|
|
|
<para>where <replaceable>ftp.example.com</replaceable> and
|
|
<replaceable>ftp</replaceable> are the host and port to
|
|
redirect to, respectively.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bandwidth-mgr-tool">
|
|
<para>Where can I get a bandwidth management tool?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are three bandwidth management tools available for
|
|
&os;. &man.dummynet.4; is integrated into &os; as part of
|
|
&man.ipfw.4;. <ulink
|
|
url="http://www.sonycsl.co.jp/person/kjc/programs.html">ALTQ</ulink>
|
|
has been integrated into &os; as part of &man.pf.4;.
|
|
Bandwidth Manager from <ulink
|
|
url="http://www.etinc.com/">Emerging Technologies</ulink>
|
|
is a commercial product.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bpf-not-configured">
|
|
<para>Why do I get <errorname>/dev/bpf0: device not
|
|
configured</errorname>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You are running a program that requires the Berkeley
|
|
Packet Filter (&man.bpf.4;), but it is not in your kernel.
|
|
Add this to your kernel config file and build a new
|
|
kernel:</para>
|
|
|
|
<programlisting>device bpf # Berkeley Packet Filter</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="mount-smb-share">
|
|
<para>How do I mount a disk from a &windows; machine that is
|
|
on my network, like smbmount in &linux;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Use the <application>SMBFS</application> toolset. It
|
|
includes a set of kernel modifications and a set of userland
|
|
programs. The programs and information are available as
|
|
&man.mount.smbfs.8; in the base system.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="icmp-response-bw-limit">
|
|
<para>What are these messages about: <errorname>Limiting
|
|
icmp/open port/closed port response</errorname> in my log
|
|
files?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is the kernel telling you that some activity is
|
|
provoking it to send more ICMP or TCP reset (RST) responses
|
|
than it thinks it should. ICMP responses are often
|
|
generated as a result of attempted connections to unused UDP
|
|
ports. TCP resets are generated as a result of attempted
|
|
connections to unopened TCP ports. Among others, these are
|
|
the kinds of activities which may cause these
|
|
messages:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Brute-force denial of service (DoS) attacks (as
|
|
opposed to single-packet attacks which exploit a
|
|
specific vulnerability).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Port scans which attempt to connect to a large
|
|
number of ports (as opposed to only trying a few
|
|
well-known ports).</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>The first number in the message tells you how many
|
|
packets the kernel would have sent if the limit was not in
|
|
place, and the second number tells you the limit. You can
|
|
control the limit using the
|
|
<varname>net.inet.icmp.icmplim</varname> sysctl variable
|
|
like this, where <literal>300</literal> is the limit in
|
|
packets per second:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl net.inet.icmp.icmplim=300</userinput></screen>
|
|
|
|
<para>If you do not want to see messages about this in your
|
|
log files, but you still want the kernel to do response
|
|
limiting, you can use the
|
|
<varname>net.inet.icmp.icmplim_output</varname> sysctl
|
|
variable to disable the output like this:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl net.inet.icmp.icmplim_output=0</userinput></screen>
|
|
|
|
<para>Finally, if you want to disable response limiting, you
|
|
can set the <varname>net.inet.icmp.icmplim</varname> sysctl
|
|
variable (see above for an example) to <literal>0</literal>.
|
|
Disabling response limiting is discouraged for the reasons
|
|
listed above.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="unknown-hw-addr-format">
|
|
<para>What are these <errorname>arp: unknown hardware address
|
|
format</errorname> error messages?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This means that some device on your local Ethernet is
|
|
using a MAC address in a format that &os; does not
|
|
recognize. This is probably caused by someone experimenting
|
|
with an Ethernet card somewhere else on the network. You
|
|
will see this most commonly on cable modem networks. It is
|
|
harmless, and should not affect the performance of your &os;
|
|
machine.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="arp-wrong-iface">
|
|
<para>Why do I keep seeing messages like: <errorname>192.168.0.10 is on
|
|
fxp1 but got reply from 00:15:17:67:cf:82 on rl0</errorname>, and how do I
|
|
disable it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Because a packet is coming from outside the network
|
|
unexpectedly. To disable them, set
|
|
<varname>net.link.ether.inet.log_arp_wrong_iface</varname>
|
|
to <literal>0</literal>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="security">
|
|
<title>Security</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="sandbox">
|
|
<para>What is a sandbox?</para>
|
|
</question>
|
|
<answer>
|
|
<para><quote>Sandbox</quote> is a security term. It can mean
|
|
two things:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>A process which is placed inside a set of virtual
|
|
walls that are designed to prevent someone who breaks
|
|
into the process from being able to break into the wider
|
|
system.</para>
|
|
|
|
<para>The process is said to be able to
|
|
<quote>play</quote> inside the walls. That is, nothing
|
|
the process does in regards to executing code is
|
|
supposed to be able to breech the walls so you do not
|
|
have to do a detailed audit of its code to be able to
|
|
say certain things about its security.</para>
|
|
|
|
<para>The walls might be a user ID, for example.
|
|
This is the definition used in the &man.security.7; and
|
|
&man.named.8; man pages.</para>
|
|
|
|
<para>Take the <literal>ntalk</literal> service, for
|
|
example (see &man.inetd.8;). This service used to run
|
|
as user ID <username>root</username>. Now it runs
|
|
as user ID <username>tty</username>. The
|
|
<username>tty</username> user is a sandbox designed to
|
|
make it more difficult for someone who has successfully
|
|
hacked into the system via <literal>ntalk</literal> from
|
|
being able to hack beyond that user ID.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A process which is placed inside a simulation of the
|
|
machine. This is more hard-core. Basically it means
|
|
that someone who is able to break into the process may
|
|
believe that he can break into the wider machine but is,
|
|
in fact, only breaking into a simulation of that machine
|
|
and not modifying any real data.</para>
|
|
|
|
<para>The most common way to accomplish this is to build a
|
|
simulated environment in a subdirectory and then run the
|
|
processes in that directory chroot'd (i.e., <filename
|
|
class="directory">/</filename> for that process is this
|
|
directory, not the real <filename
|
|
class="directory">/</filename> of the system).</para>
|
|
|
|
<para>Another common use is to mount an underlying file
|
|
system read-only and then create a file system layer on
|
|
top of it that gives a process a seemingly writeable
|
|
view into that file system. The process may believe it
|
|
is able to write to those files, but only the process
|
|
sees the effects — other processes in the system
|
|
do not, necessarily.</para>
|
|
|
|
<para>An attempt is made to make this sort of sandbox so
|
|
transparent that the user (or hacker) does not realize
|
|
that he is sitting in it.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>&unix; implements two core sandboxes. One is at the
|
|
process level, and one is at the userid level.</para>
|
|
|
|
<para>Every &unix; process is completely firewalled off from
|
|
every other &unix; process. One process cannot modify the
|
|
address space of another. This is unlike &windows; where a
|
|
process can easily overwrite the address space of any other,
|
|
leading to a crash.</para>
|
|
|
|
<para>A &unix; process is owned by a particular userid. If
|
|
the user ID is not the <username>root</username> user,
|
|
it serves to firewall the process off from processes owned
|
|
by other users. The user ID is also used to firewall
|
|
off on-disk data.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="securelevel">
|
|
<para>What is securelevel?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para><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
|
|
(i.e., <username>root</username>) 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
|
|
<devicename>/dev/mem</devicename> and
|
|
<devicename>/dev/kmem</devicename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Load kernel modules.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Alter firewall rules.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>To check the status of the securelevel on a running
|
|
system, simply execute the following command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>sysctl -n kern.securelevel</userinput></screen>
|
|
|
|
<para>The output contains the current value of the
|
|
securelevel. If it is positive (i.e., greater than 0), at
|
|
least some of the securelevel's protections are
|
|
enabled.</para>
|
|
|
|
<para>The securelevel of a running system can not be
|
|
lowered as this would defeat its purpose. If you need
|
|
to do a task that requires that the securelevel be
|
|
non-positive (e.g., an <maketarget>installworld</maketarget>
|
|
or changing the date), you will have to change the
|
|
securelevel setting in <filename>/etc/rc.conf</filename>
|
|
(you want to look for the
|
|
<varname>kern_securelevel</varname> and
|
|
<varname>kern_securelevel_enable</varname> variables) and
|
|
reboot.</para>
|
|
|
|
<para>For more information on securelevel and the specific
|
|
things all the levels do, please consult the &man.init.8;
|
|
manual page.</para>
|
|
|
|
<warning>
|
|
<para>Securelevel is not a silver bullet; it has many known
|
|
deficiencies. More often than not, it provides a false
|
|
sense of security.</para>
|
|
|
|
<para>One of its biggest problems is that in order for it to
|
|
be at all effective, all files used in the boot process up
|
|
until the securelevel is set must be protected. If an
|
|
attacker can get the system to execute their code prior to
|
|
the securelevel being set (which happens quite late in the
|
|
boot process since some things the system must do at
|
|
start-up cannot be done at an elevated securelevel), its
|
|
protections are invalidated. While this task of
|
|
protecting all files used in the boot process is not
|
|
technically impossible, if it is achieved, system
|
|
maintenance will become a nightmare since one would have
|
|
to take the system down, at least to single-user mode, to
|
|
modify a configuration file.</para>
|
|
|
|
<para>This point and others are often discussed on the
|
|
mailing lists, particularly the &a.security;. Please
|
|
search the archives <ulink
|
|
url="&url.base;/search/index.html">here</ulink> for an
|
|
extensive discussion. A more fine-grained mechanism
|
|
is preffered.</para>
|
|
</warning>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="extra-named-port">
|
|
<para>BIND (<command>named</command>) is listening on
|
|
some high-numbered ports. What is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>BIND uses a random high-numbered port for outgoing
|
|
queries. Recent versions of it choose a new, random UDP
|
|
port for each query. This may cause problems for some
|
|
network configurations, especially if a firewall blocks
|
|
incoming UDP packets on particular ports. If you want to
|
|
get past that firewall, you can try the
|
|
<literal>avoid-v4-udp-ports</literal> and
|
|
<literal>avoid-v6-udp-ports</literal> options to avoid
|
|
selecting random port numbers within a blocked range.</para>
|
|
|
|
<warning>
|
|
<para>If a port number (like 53) is specified via the
|
|
<literal>query-source</literal> or
|
|
<literal>query-source-v6</literal> options in
|
|
<filename>/etc/namedb/named.conf</filename>, randomized
|
|
port selection will not be used. It is strongly
|
|
recommended that these options not be used to specify
|
|
fixed port numbers.</para>
|
|
</warning>
|
|
|
|
<para>Congratulations, by the way. It is good practice to
|
|
read your &man.sockstat.1; output and notice odd
|
|
things!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="sendmail-port-587">
|
|
<para>The <application>sendmail</application> daemon is
|
|
listening on port 587 as well as the standard port 25! What
|
|
is going on?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Recent versions of <application>sendmail</application>
|
|
support a mail submission feature that runs over port 587.
|
|
This is not yet widely supported, but is growing in
|
|
popularity.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="toor-account">
|
|
<para>What is this UID 0 <username>toor</username> account?
|
|
Have I been compromised?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Do not worry. <username>toor</username> is an
|
|
<quote>alternative</quote> superuser account (toor is root
|
|
spelt backwards). Previously it was created when the
|
|
&man.bash.1; shell was installed but now it is created by
|
|
default. It is intended to be used with a non-standard
|
|
shell so you do not have to change
|
|
<username>root</username>'s default shell. This is
|
|
important as shells which are not part of the base
|
|
distribution (for example a shell installed from ports or
|
|
packages) are likely to be installed in
|
|
<filename class="directory">/usr/local/bin</filename> which, by default,
|
|
resides on a different file system. If
|
|
<username>root</username>'s shell is located in
|
|
<filename class="directory">/usr/local/bin</filename> and
|
|
<filename class="directory">/usr</filename> (or whatever file system contains
|
|
<filename class="directory">/usr/local/bin</filename>) is not mounted for some
|
|
reason, <username>root</username> will not be able to log in
|
|
to fix a problem (although if you reboot into single user
|
|
mode you will be prompted for the path to a shell).</para>
|
|
|
|
<para>Some people use <username>toor</username> for day-to-day
|
|
<username>root</username> tasks with a non-standard shell,
|
|
leaving <username>root</username>, with a standard shell,
|
|
for single user mode or emergencies. By default you cannot
|
|
log in using <username>toor</username> as it does not have a
|
|
password, so log in as <username>root</username> and set a
|
|
password for <username>toor</username> if you want to use
|
|
it.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="ppp">
|
|
<title>PPP</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="userppp">
|
|
<para>I cannot make &man.ppp.8; work. What am I doing
|
|
wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You should first read the &man.ppp.8; manual page and
|
|
the <ulink
|
|
url="&url.books.handbook;/ppp-and-slip.html#userppp">PPP section of the handbook</ulink>.
|
|
Enable logging with the following command:</para>
|
|
|
|
<programlisting>set log Phase Chat Connect Carrier lcp ipcp ccp command</programlisting>
|
|
|
|
<para>This command may be typed at the &man.ppp.8; command
|
|
prompt or it may be entered in the
|
|
<filename>/etc/ppp/ppp.conf</filename> configuration file
|
|
(the start of the <literal>default</literal> section is the
|
|
best place to put it). Make sure that
|
|
<filename>/etc/syslog.conf</filename> (see
|
|
&man.syslog.conf.5;) contains the lines below and the file
|
|
<filename>/var/log/ppp.log</filename> exists:</para>
|
|
|
|
<programlisting>!ppp
|
|
*.* /var/log/ppp.log</programlisting>
|
|
|
|
<para>You can now find out a lot about what is going on from
|
|
the log file. Do not worry if it does not all make sense.
|
|
If you need to get help from someone, it may make sense to
|
|
them.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-hangs">
|
|
<para>Why does &man.ppp.8; hang when I run it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This is usually because your hostname will not resolve.
|
|
The best way to fix this is to make sure that
|
|
<filename>/etc/hosts</filename> is consulted by your
|
|
resolver first by editing
|
|
<filename>/etc/host.conf</filename> and putting the
|
|
<literal>hosts</literal> line first. Then, simply put an
|
|
entry in <filename>/etc/hosts</filename> for your local
|
|
machine. If you have no local network, change your
|
|
<hostid>localhost</hostid> line:</para>
|
|
|
|
<programlisting>127.0.0.1 foo.example.com foo localhost</programlisting>
|
|
|
|
<para>Otherwise, simply add another entry for your host.
|
|
Consult the relevant manual pages for more details.</para>
|
|
|
|
<para>You should be able to successfully
|
|
<command>ping -c1 `hostname`</command> when you are
|
|
done.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-nodial-auto">
|
|
<para>Why will &man.ppp.8; not dial in
|
|
<literal>-auto</literal> mode?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>First, check that you have got a default route. By
|
|
running <command>netstat -rn</command> (see
|
|
&man.netstat.1;), you should see two entries like
|
|
this:</para>
|
|
|
|
<programlisting>Destination Gateway Flags Refs Use Netif Expire
|
|
default 10.0.0.2 UGSc 0 0 tun0
|
|
10.0.0.2 10.0.0.1 UH 0 0 tun0</programlisting>
|
|
|
|
<para>This is assuming that you have used the addresses from
|
|
the handbook, the manual page, or from
|
|
<filename>ppp.conf.sample</filename>. If you do not
|
|
have a default route, it may be because you forgot to add
|
|
the <literal>HISADDR</literal> line to
|
|
<filename>ppp.conf</filename>.</para>
|
|
|
|
<para>Another reason for the default route line being missing
|
|
is that you have mistakenly set up a default router in your
|
|
<filename>/etc/rc.conf</filename> (see &man.rc.conf.5;) file
|
|
and you have omitted the line below from
|
|
<filename>ppp.conf</filename>:</para>
|
|
|
|
<programlisting>delete ALL</programlisting>
|
|
|
|
<para>If this is the case, go back to the <ulink
|
|
url="&url.books.handbook;/userppp.html#userppp-final">Final System Configuration</ulink>
|
|
section of the handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="no-route-to-host">
|
|
<para>What does <errorname>No route to host</errorname>
|
|
mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This error is usually due that the following section is
|
|
missing in your <filename>/etc/ppp/ppp.linkup</filename>:</para>
|
|
|
|
<programlisting>MYADDR:
|
|
delete ALL
|
|
add 0 0 HISADDR</programlisting>
|
|
|
|
<para>This is only necessary if you have a dynamic IP address
|
|
or do not know the address of your gateway. If you are
|
|
using interactive mode, you can type the following after
|
|
entering <literal>packet mode</literal> (packet mode is
|
|
indicated by the capitalized <acronym>PPP</acronym> in the
|
|
prompt):</para>
|
|
|
|
<programlisting>delete ALL
|
|
add 0 0 HISADDR</programlisting>
|
|
|
|
<para>Refer to the <ulink
|
|
url="&url.books.handbook;/userppp.html#userppp-dynamicip">PPP and Dynamic IP addresses</ulink>
|
|
section of the handbook for further details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="connection-threeminutedrop">
|
|
<para>Why does my connection drop after about 3
|
|
minutes?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The default PPP timeout is 3 minutes. This can be
|
|
adjusted with the following line:</para>
|
|
|
|
<programlisting>set timeout <replaceable>NNN</replaceable></programlisting>
|
|
|
|
<para>where <replaceable>NNN</replaceable> is the number of
|
|
seconds of inactivity before the connection is closed. If
|
|
<replaceable>NNN</replaceable> is zero, the connection is
|
|
never closed due to a timeout. It is possible to put this
|
|
command in <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 id="ppp-drop-heavy-load">
|
|
<para>Why does my connection drop under heavy load?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If you have Link Quality Reporting (LQR) configured, it
|
|
is possible that too many LQR packets are lost between your
|
|
machine and the peer. &man.ppp.8; deduces that
|
|
the line must therefore be bad, and disconnects.
|
|
LQR is disabled by default and can be enabled with the
|
|
following line:</para>
|
|
|
|
<programlisting>enable lqr</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-drop-random">
|
|
<para>Why does my connection drop after a random amount of
|
|
time?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Sometimes, on a noisy phone line or even on a line with
|
|
call waiting enabled, your modem may hang up because it
|
|
thinks (incorrectly) that it lost carrier.</para>
|
|
|
|
<para>There is a setting on most modems for determining how
|
|
tolerant it should be to temporary losses of carrier.
|
|
Refer to the modem manual for details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-hangs-random">
|
|
<para>Why does my connection hang after a random amount of
|
|
time?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Many people experience hung connections with no apparent
|
|
explanation. The first thing to establish is which side of
|
|
the link is hung.</para>
|
|
|
|
<para>If you are using an external modem, you can simply try
|
|
using &man.ping.8; to see if the <acronym>TD</acronym> light
|
|
is flashing when you transmit data. If it flashes (and the
|
|
<acronym>RD</acronym> light does not), the problem is with
|
|
the remote end. If <acronym>TD</acronym> does not flash,
|
|
the problem is local. With an internal modem, you will need
|
|
to use the <literal>set server</literal> command in your
|
|
<filename>ppp.conf</filename> file. When the hang occurs,
|
|
connect to &man.ppp.8; using &man.pppctl.8;. If your
|
|
network connection suddenly revives (PPP was revived due to
|
|
the activity on the diagnostic socket) or if you cannot
|
|
connect (assuming the <literal>set socket</literal> command
|
|
succeeded at startup time), the problem is local. If you
|
|
can connect and things are still hung, enable local async
|
|
logging with <literal>set log local async</literal> and use
|
|
&man.ping.8; from another window or terminal to make use of
|
|
the link. The async logging will show you the data being
|
|
transmitted and received on the link. If data is going out
|
|
and not coming back, the problem is remote.</para>
|
|
|
|
<para>Having established whether the problem is local or
|
|
remote, you now have two possibilities:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>If the problem is remote, read on entry <xref
|
|
linkend="ppp-remote-not-responding"/>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>If the problem is local, read on entry <xref
|
|
linkend="ppp-hung"/>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-remote-not-responding">
|
|
<para>The remote end is not responding. What can I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is very little you can do about this. Most ISPs
|
|
will refuse to help if you are not running a µsoft; OS.
|
|
You can <literal>enable lqr</literal> in your
|
|
<filename>ppp.conf</filename>, allowing &man.ppp.8; to
|
|
detect the remote failure and hang up, but this detection is
|
|
relatively slow and therefore not that useful. You may want
|
|
to avoid telling your ISP that you are running
|
|
user-PPP.</para>
|
|
|
|
<para>First, try disabling all local compression by adding the
|
|
following to your configuration:</para>
|
|
|
|
<programlisting>disable pred1 deflate deflate24 protocomp acfcomp shortseq vj
|
|
deny pred1 deflate deflate24 protocomp acfcomp shortseq vj</programlisting>
|
|
|
|
<para>Then reconnect to ensure that this makes no difference.
|
|
If things improve or if the problem is solved completely,
|
|
determine which setting makes the difference through trial
|
|
and error. This will provide good ammunition when you
|
|
contact your ISP (although it may make it apparent that you
|
|
are not running a µsoft; product).</para>
|
|
|
|
<para>Before contacting your ISP, enable async logging locally
|
|
and wait until the connection hangs again. This may use up
|
|
quite a bit of disk space. The last data read from the port
|
|
may be of interest. It is usually ASCII data, and may even
|
|
describe the problem (<errorname>Memory fault</errorname>,
|
|
<errorname>Core dumped</errorname>).</para>
|
|
|
|
<para>If your ISP is helpful, they should be able to enable
|
|
logging on their end, then when the next link drop occurs,
|
|
they may be able to tell you why their side is having a
|
|
problem.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-hung">
|
|
<para>&man.ppp.8; has hung. What can I do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Your best bet here is to rebuild &man.ppp.8; with
|
|
debugging information, and then use &man.gdb.1; to grab a
|
|
stack trace from the <application>ppp</application> process
|
|
that is stuck. To rebuild the
|
|
<application>ppp</application> utility with debugging
|
|
information, you can type:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/ppp</userinput>
|
|
&prompt.root; <userinput>env DEBUG_FLAGS='-g' make clean</userinput>
|
|
&prompt.root; <userinput>env DEBUG_FLAGS='-g' make install</userinput></screen>
|
|
|
|
<para>Then you should restart <application>ppp</application>
|
|
and wait until it hangs again. When the debug build of
|
|
<application>ppp</application> hangs, start
|
|
<application>gdb</application> on the stuck process by
|
|
typing:</para>
|
|
|
|
<screen>&prompt.root; <userinput>gdb ppp `pgrep ppp`</userinput></screen>
|
|
|
|
<para>At the <application>gdb</application> prompt, you can
|
|
use the <command>bt</command> or <command>where</command>
|
|
commands to get a stack trace. Save the output of your
|
|
<application>gdb</application> session, and
|
|
<quote>detach</quote> from the running process by the
|
|
<command>quit</command> command of
|
|
<application>gdb</application>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-same-magic">
|
|
<para>I keep seeing errors about magic being the same. What
|
|
does it mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Occasionally, just after connecting, you may see
|
|
messages in the log that say <errorname>Magic is
|
|
same</errorname>. Sometimes, these messages are harmless,
|
|
and sometimes one side or the other exits. Most PPP
|
|
implementations cannot survive this problem, and even if the
|
|
link seems to come up, you will see repeated configure
|
|
requests and configure acknowledgments in the log file until
|
|
&man.ppp.8; eventually gives up and closes the
|
|
connection.</para>
|
|
|
|
<para>This normally happens on server machines with slow disks
|
|
that are spawning a &man.getty.8; on the port, and executing
|
|
&man.ppp.8; from a login script or program after login.
|
|
There were reports of it happening consistently when using
|
|
slirp. The reason is that in the time taken between
|
|
&man.getty.8; exiting and &man.ppp.8; starting, the
|
|
client-side &man.ppp.8; starts sending Line Control Protocol
|
|
(LCP) packets. Because ECHO is still switched on for the
|
|
port on the server, the client &man.ppp.8; sees these
|
|
packets <quote>reflect</quote> back.</para>
|
|
|
|
<para>One part of the LCP negotiation is to establish a magic
|
|
number for each side of the link so that
|
|
<quote>reflections</quote> can be detected. The protocol
|
|
says that when the peer tries to negotiate the same magic
|
|
number, a NAK should be sent and a new magic number should
|
|
be chosen. During the period that the server port has ECHO
|
|
turned on, the client &man.ppp.8; sends LCP packets, sees
|
|
the same magic in the reflected packet and NAKs it. It also
|
|
sees the NAK reflect (which also means &man.ppp.8; must
|
|
change its magic). This produces a potentially enormous
|
|
number of magic number changes, all of which are happily
|
|
piling into the server's tty buffer. As soon as &man.ppp.8;
|
|
starts on the server, it is flooded with magic number
|
|
changes and almost immediately decides it has tried enough
|
|
to negotiate LCP and gives up. Meanwhile, the client, who
|
|
no longer sees the reflections, becomes happy just in time
|
|
to see a hangup from the server.</para>
|
|
|
|
<para>This can be avoided by allowing the peer to start
|
|
negotiating with the following line in
|
|
<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. If this is the case, you can do
|
|
something like:</para>
|
|
|
|
<programlisting>set openmode active 3</programlisting>
|
|
|
|
<para>This tells &man.ppp.8; to be passive for 3 seconds, and
|
|
then to start sending LCP requests. If the peer starts
|
|
sending requests during this period, &man.ppp.8; will
|
|
immediately respond rather than waiting for the full 3
|
|
second period.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-lcp-constant">
|
|
<para>LCP negotiations continue until the connection is
|
|
closed. What is wrong?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is currently an implementation mis-feature in
|
|
&man.ppp.8; where it does not associate LCP, CCP & IPCP
|
|
responses with their original requests. As a result, if one
|
|
PPP implementation is more than 6 seconds slower than the
|
|
other side, the other side will send two additional LCP
|
|
configuration requests. This is fatal.</para>
|
|
|
|
<para>Consider two implementations, <hostid>A</hostid> and
|
|
<hostid>B</hostid>. <hostid>A</hostid> starts sending LCP
|
|
requests immediately after connecting and <hostid>B</hostid>
|
|
takes 7 seconds to start. When <hostid>B</hostid> starts,
|
|
<hostid>A</hostid> has sent 3 LCP REQs. We are assuming the
|
|
line has ECHO switched off, otherwise we would see magic
|
|
number problems as described in the previous section.
|
|
<hostid>B</hostid> sends a REQ, then an ACK to the first of
|
|
<hostid>A</hostid>'s REQs. This results in
|
|
<hostid>A</hostid> entering the <acronym>OPENED</acronym>
|
|
state and sending and ACK (the first) back to
|
|
<hostid>B</hostid>. In the meantime, <hostid>B</hostid>
|
|
sends back two more ACKs in response to the two additional
|
|
REQs sent by <hostid>A</hostid> before <hostid>B</hostid>
|
|
started up. <hostid>B</hostid> then receives the first ACK
|
|
from <hostid>A</hostid> and enters the
|
|
<acronym>OPENED</acronym> state. <hostid>A</hostid>
|
|
receives the second ACK from <hostid>B</hostid> and goes
|
|
back to the <acronym>REQ-SENT</acronym> state, sending
|
|
another (forth) REQ as per the RFC. It then receives the
|
|
third ACK and enters the <acronym>OPENED</acronym> state.
|
|
In the meantime, <hostid>B</hostid> receives the forth REQ
|
|
from <hostid>A</hostid>, resulting in it reverting to the
|
|
<acronym>ACK-SENT</acronym> state and sending another
|
|
(second) REQ and (forth) ACK as per the RFC.
|
|
<hostid>A</hostid> gets the REQ, goes into
|
|
<acronym>REQ-SENT</acronym> and sends another REQ. It
|
|
immediately receives the following ACK and enters
|
|
<acronym>OPENED</acronym>.</para>
|
|
|
|
<para>This goes on until one side figures out that they are
|
|
getting nowhere and gives up.</para>
|
|
|
|
<para>The best way to avoid this is to configure one side to
|
|
be <literal>passive</literal> — that is, make one side
|
|
wait for the other to start negotiating. This can be done
|
|
with the following command:</para>
|
|
|
|
<programlisting>set openmode passive</programlisting>
|
|
|
|
<para>Care should be taken with this option. You should also
|
|
use this command to limit the amount of time that
|
|
&man.ppp.8; waits for the peer to begin negotiations:</para>
|
|
|
|
<programlisting>set stopped <replaceable>N</replaceable></programlisting>
|
|
|
|
<para>Alternatively, the following command (where
|
|
<replaceable>N</replaceable> is the number of seconds to
|
|
wait before starting negotiations) can be used:</para>
|
|
|
|
<programlisting>set openmode active <replaceable>N</replaceable></programlisting>
|
|
|
|
<para>Check the manual page for details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-shell-test-lockup">
|
|
<para>Why does &man.ppp.8; lock up when I shell out to test
|
|
it?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>When you execute the <command>shell</command> or
|
|
<command>!</command> command, &man.ppp.8; executes a shell
|
|
(or if you have passed any arguments, &man.ppp.8; will
|
|
execute those arguments). The
|
|
<application>ppp</application> program will wait for the
|
|
command to complete before continuing. If you attempt to
|
|
use the PPP link while running the command, the link will
|
|
appear to have frozen. This is because &man.ppp.8; is
|
|
waiting for the command to complete.</para>
|
|
|
|
<para>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 id="ppp-null-modem">
|
|
<para>Why does &man.ppp.8; over a null-modem cable never
|
|
exit?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is no way for &man.ppp.8; to automatically
|
|
determine that a direct connection has been dropped. This
|
|
is due to the lines that are used in a null-modem serial
|
|
cable. When using this sort of connection, LQR should
|
|
always be enabled with the following line:</para>
|
|
|
|
<programlisting>enable lqr</programlisting>
|
|
|
|
<para>LQR is accepted by default if negotiated by the
|
|
peer.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-auto-noreasondial">
|
|
<para>Why does &man.ppp.8; dial for no reason in
|
|
<option>-auto</option> mode?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If &man.ppp.8; is dialing unexpectedly, you must
|
|
determine the cause, and set up Dial filters (dfilters) to
|
|
prevent such dialing.</para>
|
|
|
|
<para>To determine the cause, use the following line:</para>
|
|
|
|
<programlisting>set log +tcp/ip</programlisting>
|
|
|
|
<para>This will log all traffic through the connection. The
|
|
next time the line comes up unexpectedly, you will see the
|
|
reason logged with a convenient timestamp next to it.</para>
|
|
|
|
<para>You can now disable dialing under these circumstances.
|
|
Usually, this sort of problem arises due to DNS lookups. To
|
|
prevent DNS lookups from establishing a connection (this
|
|
will <emphasis>not</emphasis> prevent &man.ppp.8; from
|
|
passing the packets through an established connection), use
|
|
the following:</para>
|
|
|
|
<programlisting>set dfilter 1 deny udp src eq 53
|
|
set dfilter 2 deny udp dst eq 53
|
|
set dfilter 3 permit 0/0 0/0</programlisting>
|
|
|
|
<para>This is not always suitable, as it will effectively
|
|
break your demand-dial capabilities — most programs
|
|
will need a DNS lookup before doing any other network
|
|
related things.</para>
|
|
|
|
<para>In the DNS case, you should try to determine what is
|
|
actually trying to resolve a host name. A lot of the time,
|
|
&man.sendmail.8; is the culprit. You should make sure that
|
|
you tell <application>sendmail</application> not to do any
|
|
DNS lookups in its configuration file. See the section on
|
|
<ulink
|
|
url="&url.books.handbook;/smtp-dialup.html">using email with a dialup connection</ulink>
|
|
in the &os; Handbook for details on how to create your own
|
|
configuration file and what should go into it. You may also
|
|
want to add the following line to your
|
|
<filename>.mc</filename> file:</para>
|
|
|
|
<programlisting>define(`confDELIVERY_MODE', `d')dnl</programlisting>
|
|
|
|
<para>This will make <application>sendmail</application> queue
|
|
everything until the queue is run (usually, sendmail is
|
|
run with <option>-bd -q30m</option>, telling it to run
|
|
the queue every 30 minutes) or until a <command>sendmail
|
|
<option>-q</option></command> is done (perhaps from your
|
|
<filename>ppp.linkup</filename>).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ccp-errors">
|
|
<para>What do these CCP errors mean?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>I keep seeing the following errors in my log
|
|
file:</para>
|
|
|
|
<programlisting>CCP: CcpSendConfigReq
|
|
CCP: Received Terminate Ack (1) state = Req-Sent (6)</programlisting>
|
|
|
|
<para>This is because &man.ppp.8; is trying to negotiate
|
|
Predictor1 compression, and the peer does not want to
|
|
negotiate any compression at all. The messages are
|
|
harmless, but if you wish to remove them, you can disable
|
|
Predictor1 compression locally too:</para>
|
|
|
|
<programlisting>disable pred1</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-connectionspeed">
|
|
<para>Why does &man.ppp.8; not log my connection speed?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>To log all lines of your modem
|
|
<quote>conversation</quote>, you must enable the
|
|
following:</para>
|
|
|
|
<programlisting>set log +connect</programlisting>
|
|
|
|
<para>This will make &man.ppp.8; log everything up until the
|
|
last requested <quote>expect</quote> string.</para>
|
|
|
|
<para>If you wish to see your connect speed and are using PAP
|
|
or CHAP (and therefore do not have anything to
|
|
<quote>chat</quote> after the CONNECT in the dial script
|
|
— no <literal>set login</literal> script), you must
|
|
make sure that you instruct &man.ppp.8; to
|
|
<quote>expect</quote> the whole CONNECT line, something like
|
|
this:</para>
|
|
|
|
<programlisting>set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \
|
|
\"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"</programlisting>
|
|
|
|
<para>Here, we get our CONNECT, send nothing, then expect a
|
|
line-feed, forcing &man.ppp.8; to read the whole CONNECT
|
|
response.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-ignores-backslash">
|
|
<para>Why does &man.ppp.8; ignore the <literal>\</literal>
|
|
character in my chat script?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <application>ppp</application> utility parses each
|
|
line in your config files so that it can interpret strings
|
|
such as <literal>set phone "123 456 789"</literal> correctly
|
|
and realize that the number is actually only
|
|
<emphasis>one</emphasis> argument. To specify a
|
|
<literal>"</literal> character, you must escape it
|
|
using a backslash (<literal>\</literal>).</para>
|
|
|
|
<para>When the chat interpreter parses each argument, it
|
|
re-interprets the argument to find any special
|
|
escape sequences such as <literal>\P</literal> or
|
|
<literal>\T</literal> (see the manual page). As a result of
|
|
this double-parsing, you must remember to use the correct
|
|
number of escapes.</para>
|
|
|
|
<para>If you wish to actually send a <literal>\</literal>
|
|
character to (say) your modem, you would need something
|
|
like:</para>
|
|
|
|
<programlisting>set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK"</programlisting>
|
|
|
|
<para>It will result in the following sequence:</para>
|
|
|
|
<programlisting>ATZ
|
|
OK
|
|
AT\X
|
|
OK</programlisting>
|
|
|
|
<para>Or:</para>
|
|
|
|
<programlisting>set phone 1234567
|
|
set dial "\"\" ATZ OK ATDT\\T"</programlisting>
|
|
|
|
<para>It will result in the following sequence:</para>
|
|
|
|
<programlisting>ATZ
|
|
OK
|
|
ATDT1234567</programlisting>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-segfault-nocore">
|
|
<para>Why does &man.ppp.8; get a <errorname>Segmentation
|
|
fault</errorname>, but I see no <filename>ppp.core</filename>
|
|
file?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <application>ppp</application> utility (or any other
|
|
program for that matter) should never dump core. Because
|
|
&man.ppp.8; runs setuid (with an effective user ID of
|
|
<literal>0</literal>), the operating system will not write
|
|
core image of &man.ppp.8; to disk before terminating it.
|
|
If, however &man.ppp.8; is actually terminating due to a
|
|
segmentation violation or some other signal that normally
|
|
causes core to be dumped, <emphasis>and</emphasis> you are
|
|
sure you are using the latest version (see the start of this
|
|
section), then you should install the system sources and do
|
|
the following:</para>
|
|
|
|
<screen>&prompt.root; <userinput><command>cd</command> <filename class="directory">/usr/src/usr.sbin/ppp</filename></userinput>
|
|
&prompt.root; <userinput><command>echo</command> <makevar>STRIP</makevar>= >> <filename>/etc/make.conf</filename></userinput>
|
|
&prompt.root; <userinput><command>echo</command> <makevar>CFLAGS</makevar>+=<option>-g</option> >> <filename>/etc/make.conf</filename></userinput>
|
|
&prompt.root; <userinput><command>make</command> <maketarget>install</maketarget> <maketarget>clean</maketarget></userinput></screen>
|
|
|
|
<para>You will now have a debuggable version of &man.ppp.8;
|
|
installed. You will have to be <username>root</username> to
|
|
run &man.ppp.8; as all of its privileges have been revoked.
|
|
When you start &man.ppp.8;, take a careful note of what your
|
|
current directory was at the time.</para>
|
|
|
|
<para>Now, if and when &man.ppp.8; receives the segmentation
|
|
violation, it will dump a core file called
|
|
<filename>ppp.core</filename>. You should then do the
|
|
following:</para>
|
|
|
|
<screen>&prompt.user; <userinput>su</userinput>
|
|
&prompt.root; <userinput>gdb /usr/sbin/ppp ppp.core</userinput>
|
|
<prompt>(gdb)</prompt> <userinput>bt</userinput>
|
|
.....
|
|
<prompt>(gdb)</prompt> <userinput>f 0</userinput>
|
|
....
|
|
<prompt>(gdb)</prompt> <userinput>i args</userinput>
|
|
....
|
|
<prompt>(gdb)</prompt> <userinput>l</userinput>
|
|
.....</screen>
|
|
|
|
<para>All of this information should be given alongside your
|
|
question, making it possible to diagnose the problem.</para>
|
|
|
|
<para>If you are familiar with &man.gdb.1;, you may wish to
|
|
find out some other bits and pieces such as what actually
|
|
caused the dump or the addresses and values of the relevant
|
|
variables.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-autodialprocess-noconnect">
|
|
<para>Why does the process that forces a dial in
|
|
<option>-auto</option> mode never connect?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>This was a known problem with &man.ppp.8; set up to
|
|
negotiate a dynamic local IP number with the peer in
|
|
<option>-auto</option> mode. It has been fixed a long time
|
|
ago — search the manual page for
|
|
<literal>iface</literal>.</para>
|
|
|
|
<para>The problem was that when that initial program calls
|
|
&man.connect.2;, the IP number of the &man.tun.4; interface
|
|
is assigned to the socket endpoint. The kernel creates the
|
|
first outgoing packet and writes it to the &man.tun.4;
|
|
device. &man.ppp.8; then reads the packet and establishes a
|
|
connection. If, as a result of &man.ppp.8;'s dynamic IP
|
|
assignment, the interface address is changed, the original
|
|
socket endpoint will be invalid. Any subsequent packets
|
|
sent to the peer will usually be dropped. Even if they are
|
|
not, any responses will not route back to the originating
|
|
machine as the IP number is no longer owned by that
|
|
machine.</para>
|
|
|
|
<para>There are several theoretical ways to approach this
|
|
problem. It would be nicest if the peer would re-assign the
|
|
same IP number if possible. The current version of
|
|
&man.ppp.8; does this, but most other implementations do
|
|
not.</para>
|
|
|
|
<para>The easiest method from our side would be to never
|
|
change the &man.tun.4; interface IP number, but instead to
|
|
change all outgoing packets so that the source IP number is
|
|
changed from the interface IP to the negotiated IP on the
|
|
fly. This is essentially what the
|
|
<literal>iface-alias</literal> option in the latest version
|
|
of &man.ppp.8; is doing (with the help of &man.libalias.3;
|
|
and &man.ppp.8;'s <option>-nat</option> switch) — it
|
|
is maintaining all previous interface addresses and NATing
|
|
them to the last negotiated address.</para>
|
|
|
|
<para>Another alternative (and probably the most reliable)
|
|
would be to implement a system call that changes all bound
|
|
sockets from one IP to another. &man.ppp.8; would use this
|
|
call to modify the sockets of all existing programs when a
|
|
new IP number is negotiated. The same system call could be
|
|
used by <acronym>DHCP</acronym> clients when they are forced
|
|
to call the <function>bind()</function> function for their
|
|
sockets.</para>
|
|
|
|
<para>Yet another possibility is to allow an interface to be
|
|
brought up without an IP number. Outgoing packets would be
|
|
given an IP number of <hostid
|
|
role="ipaddr">255.255.255.255</hostid> up until the first
|
|
<literal>SIOCAIFADDR</literal> &man.ioctl.2; is done. This
|
|
would result in fully binding the socket. It would be up to
|
|
&man.ppp.8; to change the source IP number, but only if it
|
|
is set to <hostid role="ipaddr">255.255.255.255</hostid>,
|
|
and only the IP number and IP checksum would need to change.
|
|
This, however is a bit of a hack as the kernel would be
|
|
sending bad packets to an improperly configured interface,
|
|
on the assumption that some other mechanism is capable of
|
|
fixing things retrospectively.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ppp-nat-games">
|
|
<para>Why do most games not work with the
|
|
<option>-nat</option> switch?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The reason games and the like do not work when
|
|
&man.libalias.3; is in use is that the machine on the outside
|
|
will try to open a connection or send (unsolicited) UDP
|
|
packets to the machine on the inside. The NAT software does
|
|
not know that it should send these packets to the interior
|
|
machine.</para>
|
|
|
|
<para>To make things work, make sure that the only thing
|
|
running is the software that you are having problems with,
|
|
then either run &man.tcpdump.1; on the &man.tun.4; interface
|
|
of the gateway or enable &man.ppp.8; TCP/IP logging
|
|
(<literal>set log +tcp/ip</literal>) on the gateway.</para>
|
|
|
|
<para>When you start the offending software, you should see
|
|
packets passing through the gateway machine. When something
|
|
comes back from the outside, it will be dropped (that is the
|
|
problem). Note the port number of these packets then shut
|
|
down the offending software. Do this a few times to see if
|
|
the port numbers are consistent. If they are, then the
|
|
following line in the relevant section of
|
|
<filename>/etc/ppp/ppp.conf</filename> will make the
|
|
software functional:</para>
|
|
|
|
<programlisting>nat port <replaceable>proto</replaceable> <replaceable>internalmachine</replaceable>:<replaceable>port</replaceable> <replaceable>port</replaceable></programlisting>
|
|
|
|
<para>where <replaceable>proto</replaceable> is either
|
|
<literal>tcp</literal> or <literal>udp</literal>,
|
|
<replaceable>internalmachine</replaceable> is the machine
|
|
that you want the packets to be sent to and
|
|
<replaceable>port</replaceable> is the destination port
|
|
number of the packets.</para>
|
|
|
|
<para>You will not be able to use the software on other
|
|
machines without changing the above command, and running the
|
|
software on two internal machines at the same time is out of
|
|
the question — after all, the outside world is seeing
|
|
your entire internal network as being just a single
|
|
machine.</para>
|
|
|
|
<para>If the port numbers are not consistent, there are three
|
|
more options:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Submit support in &man.libalias.3;. Examples of
|
|
<quote>special cases</quote> can be found in
|
|
<filename>/usr/src/sys/netinet/libalias/alias_*.c</filename>
|
|
(<filename>alias_ftp.c</filename> is a good prototype).
|
|
This usually involves reading certain recognized
|
|
outgoing packets, identifying the instruction that tells
|
|
the outside machine to initiate a connection back to the
|
|
internal machine on a specific (random) port and setting
|
|
up a <quote>route</quote> in the alias table so that the
|
|
subsequent packets know where to go.</para>
|
|
|
|
<para>This is the most difficult solution, but it is the
|
|
best and will make the software work with multiple
|
|
machines.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Use a proxy. The application may support
|
|
<literal>socks5</literal> for example, or
|
|
may have a
|
|
<quote>passive</quote> option that avoids ever
|
|
requesting that the peer open connections back to the
|
|
local machine.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Redirect everything to the internal machine using
|
|
<literal>nat addr</literal>. This is the sledge-hammer
|
|
approach.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="fcs-errors">
|
|
<para>What are FCS errors?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>FCS stands for 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 your link is bad (or if your serial driver is
|
|
dropping packets), you will see the occasional FCS error.
|
|
This is not usually worth worrying about although it does
|
|
slow down the compression protocols substantially. If you
|
|
have an external modem, make sure your cable is properly
|
|
shielded from interference — this may eradicate the
|
|
problem.</para>
|
|
|
|
<para>If your link freezes as soon as you have connected and
|
|
you see a large number of FCS errors, this may be because your
|
|
link is not 8-bit clean. Make sure your modem is not using
|
|
software flow control (XON/XOFF). If your datalink
|
|
<emphasis>must</emphasis> use software flow control, use the
|
|
command <literal>set accmap 0x000a0000</literal> to tell
|
|
&man.ppp.8; to escape the <literal>^Q</literal> and
|
|
<literal>^S</literal> characters.</para>
|
|
|
|
<para>Another reason for seeing too many FCS errors may be
|
|
that the remote end has stopped talking
|
|
<acronym>PPP</acronym>. You may want to enable
|
|
<literal>async</literal> logging at this point to determine
|
|
if the incoming data is actually a login or shell prompt.
|
|
If you have a shell prompt at the remote end, it is possible
|
|
to terminate &man.ppp.8; without dropping the line by using
|
|
<command>close lcp</command> (a following
|
|
<command>term</command>) will reconnect you to the
|
|
shell on the remote machine.</para>
|
|
|
|
<para>If nothing in your log file indicates why the link might
|
|
have been terminated, you should ask the remote
|
|
administrator (your ISP?) why the session was
|
|
terminated.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="desperation">
|
|
<para>None of this helps — I am desperate! What can I
|
|
do?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>If all else fails, send as much information as you can,
|
|
including your config files, how you are starting
|
|
&man.ppp.8;, the relevant parts of your log file and the
|
|
output of <command>netstat -rn</command> (before
|
|
and after connecting) to the &a.questions;
|
|
and someone should point you in the right
|
|
direction.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="serial">
|
|
<title>Serial Communications</title>
|
|
|
|
<para>This section answers common questions about serial
|
|
communications with &os;. PPP is covered in the <link
|
|
linkend="networking">Networking</link> section.</para>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="multiport-serial-support">
|
|
<para>Which multi-port serial cards are supported by
|
|
&os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There is a list of these in the <ulink
|
|
url="&url.books.handbook;/serial.html">Serial Communications</ulink>
|
|
chapter of the handbook.</para>
|
|
|
|
<para>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 id="serial-console-prompt">
|
|
<para>How do I get the boot: prompt to show on the serial
|
|
console?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See <ulink
|
|
url="&url.books.handbook;/serialconsole-setup.html">this section of the handbook</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question 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 in your system for which the kernel was configured.
|
|
You can either watch your system closely for the messages it
|
|
prints or run this command after your system is up and
|
|
running:</para>
|
|
|
|
<screen>&prompt.user; <userinput>dmesg | grep -E "^sio[0-9]"</userinput></screen>
|
|
|
|
<para>Here is some example output from the above
|
|
command:</para>
|
|
|
|
<programlisting>sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
|
|
sio0: type 16550A
|
|
sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0
|
|
sio1: type 16550A</programlisting>
|
|
|
|
<para>This shows two serial ports. The first is on
|
|
IRQ 4, is using port address <literal>0x3f8</literal>,
|
|
and has a 16550A-type UART chip. The second uses the same
|
|
kind of chip but is on IRQ 3 and is at port address
|
|
<literal>0x2f8</literal>. Internal modem cards are treated
|
|
just like serial ports — except that they always have
|
|
a modem <quote>attached</quote> to the port.</para>
|
|
|
|
<para>The <filename>GENERIC</filename> kernel includes support
|
|
for two serial ports using the same IRQ and port address
|
|
settings in the above example. If these settings are not
|
|
right for your system, or if you have added modem cards or
|
|
have more serial ports than your kernel is configured for,
|
|
just reconfigure your kernel. See section <link
|
|
linkend="make-kernel">about building a kernel</link> for
|
|
more details.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="access-serial-ports">
|
|
<para>How do I access the serial ports on &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The third serial port, <devicename>sio2</devicename>
|
|
(see &man.sio.4;, known as <devicename>COM3</devicename> in
|
|
DOS), is on <devicename>/dev/cuad2</devicename> for dial-out
|
|
devices, and on <devicename>/dev/ttyd2</devicename> for
|
|
dial-in devices. What is the difference between these two
|
|
classes of devices?</para>
|
|
|
|
<para>You use
|
|
<devicename>ttyd<replaceable>X</replaceable></devicename>
|
|
for dial-ins. When opening
|
|
<devicename>/dev/ttyd<replaceable>X</replaceable></devicename>
|
|
in blocking mode, a process will wait for the corresponding
|
|
<devicename>cuad<replaceable>X</replaceable></devicename>
|
|
device to become inactive, and then wait for the carrier
|
|
detect line to go active. When you open the
|
|
<devicename>cuad<replaceable>X</replaceable></devicename>
|
|
device, it makes sure the serial port is not already in use
|
|
by the
|
|
<devicename>ttyd<replaceable>X</replaceable></devicename>
|
|
device. If the port is available, it <quote>steals</quote>
|
|
it from the
|
|
<devicename>ttyd<replaceable>X</replaceable></devicename>
|
|
device. Also, the
|
|
<devicename>cuad<replaceable>X</replaceable></devicename>
|
|
device does not care about carrier detect. With this scheme
|
|
and an auto-answer modem, you can have remote users log in
|
|
and you can still dial out with the same modem and the
|
|
system will take care of all the conflicts.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="enable-multiport-serial">
|
|
<para>How do I enable support for a multiport serial
|
|
card?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Again, the section on kernel configuration provides
|
|
information about configuring your kernel. For a multiport
|
|
serial card, place an &man.sio.4; line for each serial port
|
|
on the card in the &man.device.hints.5; file. But place the
|
|
IRQ specifiers on only one of the entries. All of the ports
|
|
on the card should share one IRQ. For consistency, use the
|
|
last serial port to specify the IRQ. Also, specify the
|
|
following option in the kernel configuration file:</para>
|
|
|
|
<programlisting>options COM_MULTIPORT</programlisting>
|
|
|
|
<para>The following <filename>/boot/device.hints</filename>
|
|
example is for an AST 4-port serial card on
|
|
IRQ 12:</para>
|
|
|
|
<programlisting>hint.sio.4.at="isa"
|
|
hint.sio.4.port="0x2a0"
|
|
hint.sio.4.flags="0x701"
|
|
hint.sio.5.at="isa"
|
|
hint.sio.5.port="0x2a8"
|
|
hint.sio.5.flags="0x701"
|
|
hint.sio.6.at="isa"
|
|
hint.sio.6.port="0x2b0"
|
|
hint.sio.6.flags="0x701"
|
|
hint.sio.7.at="isa"
|
|
hint.sio.7.port="0x2b8"
|
|
hint.sio.7.flags="0x701"
|
|
hint.sio.7.irq="12"</programlisting>
|
|
|
|
<para>The flags indicate that the master port has minor number
|
|
<literal>7</literal> (<literal>0x700</literal>), and all the
|
|
ports share an IRQ (<literal>0x001</literal>).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="default-serial-params">
|
|
<para>Can I set the default serial parameters for a
|
|
port?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <ulink
|
|
url="&url.books.handbook;/serial.html#serial-hw-config">Serial Communications</ulink>
|
|
section in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="enable-dialup">
|
|
<para>How can I enable dialup logins on my modem?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please read the section about <ulink
|
|
url="&url.books.handbook;/dialup.html">Dial-in Services</ulink>
|
|
in the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dumb-terminal">
|
|
<para>How can I connect a dumb terminal to my &os; box?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You can find this information in the <ulink
|
|
url="&url.books.handbook;/term.html">Terminals</ulink>
|
|
section of the &os; Handbook.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="cannot-tip">
|
|
<para>Why can I not run <command>tip</command> or
|
|
<command>cu</command>?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>On your system, the programs &man.tip.1; and &man.cu.1;
|
|
can only access the <filename class="directory">/var/spool/lock</filename>
|
|
directory via user <username>uucp</username> and group
|
|
<groupname>dialer</groupname>. You can use the group
|
|
<groupname>dialer</groupname> to control who has access to
|
|
your modem or remote systems. Just add yourself to group
|
|
<groupname>dialer</groupname>.</para>
|
|
|
|
<para>Alternatively, you can let everyone on your system run
|
|
&man.tip.1; and &man.cu.1; by typing:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod 4511 /usr/bin/cu</userinput>
|
|
&prompt.root; <userinput>chmod 4511 /usr/bin/tip</userinput></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="misc">
|
|
<title>Miscellaneous Questions</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="more-swap">
|
|
<para>&os; 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 cacheing.</para>
|
|
|
|
<para>Note that while &os; is proactive in this regard, it
|
|
does not arbitrarily decide to swap pages when the system is
|
|
truly idle. Thus you will not find your system all paged
|
|
out when you get up in the morning after leaving it idle
|
|
overnight.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="top-freemem">
|
|
<para>Why does <command>top</command> show very little free
|
|
memory even when I have very few programs running?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The simple answer is that free memory is wasted memory.
|
|
Any memory that your programs do not actively allocate is
|
|
used within the &os; kernel as disk cache. The values shown
|
|
by &man.top.1; labeled as <literal>Inact</literal>,
|
|
<literal>Cache</literal>, and <literal>Buf</literal> are all
|
|
cached data at different aging levels. This cached data
|
|
means the system does not have to access a slow disk again
|
|
for data it has accessed recently, thus increasing overall
|
|
performance. In general, a low value shown for
|
|
<literal>Free</literal> memory in &man.top.1; is good,
|
|
provided it is not <emphasis>very</emphasis> low.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="chmod-symlinks">
|
|
<para>Why will <command>chmod</command> not change the
|
|
permissions on symlinks?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Symlinks do not have permissions, and by default,
|
|
&man.chmod.1; will follow symlinks to change the
|
|
permissions on the source file, if possible. So if you have a file,
|
|
<filename>foo</filename>, and a symlink to that file,
|
|
<filename>bar</filename>, then this command will always
|
|
succeed.</para>
|
|
|
|
<screen>&prompt.user; <userinput>chmod g-w bar</userinput></screen>
|
|
|
|
<para>However, the permissions on <filename>bar</filename>
|
|
will not have changed.</para>
|
|
|
|
<para>When changing modes of the file hierarchies rooted in the
|
|
files instead of the files themselves,
|
|
you have to use either <option>-H</option> or
|
|
<option>-L</option> together with <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;. If you want to change the permissions of a
|
|
directory referenced by a symlink, use &man.chmod.1;
|
|
without any options and follow the symlink with a trailing
|
|
slash (<filename class="directory">/</filename>). For example, if
|
|
<filename>foo</filename> is a symlink to directory
|
|
<filename class="directory">bar</filename>, and you want to change the
|
|
permissions of <filename>foo</filename> (actually
|
|
<filename class="directory">bar</filename>), you would do something
|
|
like:</para>
|
|
|
|
<screen>&prompt.user; <userinput>chmod 555 foo/</userinput></screen>
|
|
|
|
<para>With the trailing slash, &man.chmod.1; will follow the
|
|
symlink, <filename>foo</filename>, to change the
|
|
permissions of the directory,
|
|
<filename class="directory">bar</filename>.</para>
|
|
</warning>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dos-binaries">
|
|
<para>Can I run DOS binaries under &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, you can use <filename
|
|
role="package">emulators/doscmd</filename>, a DOS
|
|
emulation program, available in the &os; Ports
|
|
Collection.</para>
|
|
|
|
<para>If <application>doscmd</application> will not suffice,
|
|
the add-on utility <filename
|
|
role="package">emulators/pcemu</filename> emulates an 8088
|
|
and enough BIOS services to run many DOS text mode
|
|
applications. It requires the X Window System.</para>
|
|
|
|
<para>You may also try <filename
|
|
role="package">emulators/dosbox</filename> from the &os;
|
|
Ports Collection. The main focus of this application is
|
|
emulating old DOS games using the local file system for
|
|
files.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="translation">
|
|
<para>What do I need to do to translate a &os; document into
|
|
my native language?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the <ulink
|
|
url="&url.books.fdp-primer;/translations.html">Translation FAQ</ulink>
|
|
in the &os; Documentation Project Primer.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="freebsd-mail-bounces">
|
|
<para>Why does my email to any address at <hostid
|
|
role="domainname">FreeBSD.org</hostid> bounce?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The <hostid role="domainname">FreeBSD.org</hostid> mail
|
|
system implements some of the stricter
|
|
<application>Postfix</application> checks on incoming mail
|
|
and rejects mail that is either misconfigured or is
|
|
potential spam. Your mail might bounce for one of the
|
|
following reasons:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The email is being sent from a known spam domain or
|
|
IP block.</para>
|
|
|
|
<para>The &os; mail servers reject email from known spam
|
|
sources. If you have service through a company or
|
|
domain who generates or relays spam, please switch to a
|
|
service provider who does not.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The body of the email only contains HTML.</para>
|
|
|
|
<para>Mail should be sent in plain text only. Please
|
|
configure your mail user agent to send plain
|
|
text.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The mailer at <hostid
|
|
role="domainname">FreeBSD.org</hostid> cannot resolve
|
|
the IP address of the connecting host back to a
|
|
symbolic name.</para>
|
|
|
|
<para>Working reverse DNS is a standard requirement for
|
|
accepting mail from a host. Set up reverse DNS for your
|
|
mail server's IP address. Many home services (DSL,
|
|
cable, dialup, etc.) will not give you this option. In
|
|
this case, relay your email through your service
|
|
provider's mail server.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>The hostname given in the EHLO/HELO part of the SMTP
|
|
exchange cannot be resolved to an IP address.</para>
|
|
|
|
<para>A fully qualified, resolvable host name is necessary
|
|
in this part of the SMTP dialogue before mail will be
|
|
accepted. If you do not have a host name that is
|
|
registered in the DNS, then you should use your service
|
|
provider's mail server to relay your mail.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Your message had a message ID ending with the string
|
|
<quote>localhost</quote>.</para>
|
|
|
|
<para>Some mail user agents generate bad message IDs which
|
|
will not be accepted. You will need to persuade your mail
|
|
user agent to generate a valid message ID or else
|
|
configure your mail transfer agent to rewrite
|
|
them.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="free-account">
|
|
<para>Where can I find a free &os; account?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>While &os; does not provide open access to any of their
|
|
servers, others do provide open access &unix; systems. The
|
|
charge varies and limited services may be available.</para>
|
|
|
|
<para><ulink
|
|
url="http://www.arbornet.org/">Arbornet, Inc</ulink>,
|
|
also known as <emphasis>M-Net</emphasis>, has been providing
|
|
open access to &unix; systems since 1983. Starting on an
|
|
Altos running System III, the site switched to BSD/OS in
|
|
1991. In June of 2000, the site switched again to &os;.
|
|
<emphasis>M-Net</emphasis> can be accessed via
|
|
<application>telnet</application> and
|
|
<application>SSH</application> and provides basic access to
|
|
the entire &os; software suite. However, network access is
|
|
limited to members and patrons who donate to the system,
|
|
which is run as a non-profit organization.
|
|
<emphasis>M-Net</emphasis> also provides an bulletin board
|
|
system and interactive chat.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="daemon-name">
|
|
<para>What is the cute little red guy's name?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>He does not have one, and is just called <quote>the BSD
|
|
daemon</quote>. If you insist upon using a name, call him
|
|
<quote>beastie</quote>. Note that <quote>beastie</quote> is
|
|
pronounced <quote>BSD</quote>.</para>
|
|
|
|
<para>You can learn more about the BSD daemon on his <ulink
|
|
url="http://www.mckusick.com/beastie/index.html">home page</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="use-beastie">
|
|
<para>Can I use the BSD daemon image?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Perhaps. The BSD daemon is copyrighted by Marshall Kirk
|
|
McKusick. You will want to check his <ulink
|
|
url="http://www.mckusick.com/beastie/mainpage/copyright.html">Statement on the Use of the BSD Daemon Figure</ulink>
|
|
for detailed usage terms.</para>
|
|
|
|
<para>In summary, you are free to use the image in a tasteful
|
|
manner, for personal use, so long as appropriate credit is
|
|
given. If you want to use him commercially, you must
|
|
contact &a.mckusick;. More details are available on the
|
|
<ulink
|
|
url="http://www.mckusick.com/beastie/index.html">BSD Daemon's home page</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="daemon-images">
|
|
<para>Do you have any BSD daemon images I could use?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>You will find eps and Xfig drawings under
|
|
<filename class="directory">/usr/share/examples/BSD_daemon/</filename>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="glossary">
|
|
<para>I have seen an acronym or other term on the mailing
|
|
lists and I do not understand what it means. Where should I
|
|
look?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the <ulink
|
|
url="&url.books.handbook;/freebsd-glossary.html">&os; Glossary</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="bikeshed-painting">
|
|
<para>Why should I care what color the bikeshed is?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The really, really short answer is that you should not.
|
|
The somewhat longer answer is that just because you are
|
|
capable of building a bikeshed does not mean you should stop
|
|
others from building one just because you do not like the
|
|
color they plan to paint it. This is a metaphor indicating
|
|
that you need not argue about every little feature just
|
|
because you know enough to do so. Some people have
|
|
commented that the amount of noise generated by a change is
|
|
inversely proportional to the complexity of the
|
|
change.</para>
|
|
|
|
<para>The longer and more complete answer is that after a very
|
|
long argument about whether &man.sleep.1; should take
|
|
fractional second arguments, &a.phk; posted a long message
|
|
entitled <quote><ulink
|
|
url="http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=506636+517178+/usr/local/www/db/text/1999/freebsd-hackers/19991003.freebsd-hackers">A bike shed (any color will do) on greener grass...</ulink></quote>.
|
|
The appropriate portions of that message are quoted
|
|
below.</para>
|
|
|
|
<blockquote>
|
|
<attribution>&a.phk; on &a.hackers.name;, October 2,
|
|
1999</attribution>
|
|
|
|
<para><quote>What is it about this bike shed?</quote> Some
|
|
of you have asked me.</para>
|
|
|
|
<para>It is a long story, or rather it is an old story, but
|
|
it is quite short actually. C. Northcote Parkinson wrote
|
|
a book in the early 1960s, called <quote>Parkinson's
|
|
Law</quote>, which contains a lot of insight into the
|
|
dynamics of management.</para>
|
|
|
|
<para><emphasis>[snip a bit of commentary on the
|
|
book]</emphasis></para>
|
|
|
|
<para>In the specific example involving the bike shed, the
|
|
other vital component is an atomic power-plant, I guess
|
|
that illustrates the age of the book.</para>
|
|
|
|
<para>Parkinson shows how you can go into the board of
|
|
directors and get approval for building a multi-million or
|
|
even billion dollar atomic power plant, but if you want to
|
|
build a bike shed you will be tangled up in endless
|
|
discussions.</para>
|
|
|
|
<para>Parkinson explains that this is because an atomic
|
|
plant is so vast, so expensive and so complicated that
|
|
people cannot grasp it, and rather than try, they fall
|
|
back on the assumption that somebody else checked all the
|
|
details before it got this far. Richard P. Feynmann
|
|
gives a couple of interesting, and very much to the point,
|
|
examples relating to Los Alamos in his books.</para>
|
|
|
|
<para>A bike shed on the other hand. Anyone can build one
|
|
of those over a weekend, and still have time to watch the
|
|
game on TV. So no matter how well prepared, no matter how
|
|
reasonable you are with your proposal, somebody will seize
|
|
the chance to show that he is doing his job, that he is
|
|
paying attention, that he is
|
|
<emphasis>here</emphasis>.</para>
|
|
|
|
<para>In Denmark we call it <quote>setting your
|
|
fingerprint</quote>. It is about personal pride and
|
|
prestige, it is about being able to point somewhere and
|
|
say <quote>There! <emphasis>I</emphasis> did
|
|
that.</quote> It is a strong trait in politicians, but
|
|
present in most people given the chance. Just think about
|
|
footsteps in wet cement.</para>
|
|
</blockquote>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="funnies">
|
|
<title>The &os; Funnies</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="very-very-cool">
|
|
<para>How cool is &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Q. Has anyone done any temperature testing while
|
|
running &os;? I know &linux; runs cooler than DOS, but have
|
|
never seen a mention of &os;. It seems to run really
|
|
hot.</para>
|
|
|
|
<para>A. No, but we have done numerous taste tests on
|
|
blindfolded volunteers who have also had 250 micrograms of
|
|
LSD-25 administered beforehand. 35% of the volunteers said
|
|
that &os; tasted sort of orange, whereas &linux; tasted like
|
|
purple haze. Neither group mentioned any significant
|
|
variances in temperature. We eventually had to throw the
|
|
results of this survey out entirely anyway when we found
|
|
that too many volunteers were wandering out of the room
|
|
during the tests, thus skewing the results. We think most
|
|
of the volunteers are at Apple now, working on their new
|
|
<quote>scratch and sniff</quote> GUI. It is a funny old
|
|
business we are in!</para>
|
|
|
|
<para>Seriously, &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 id="letmeoutofhere">
|
|
<para>Who is scratching in my memory banks??</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Q. Is there anything <quote>odd</quote> that &os; does
|
|
when compiling the kernel which would cause the memory to
|
|
make a scratchy sound? When compiling (and for a brief
|
|
moment after recognizing the floppy drive upon startup, as
|
|
well), a strange scratchy sound emanates from what appears
|
|
to be the memory banks.</para>
|
|
|
|
<para>A. Yes! You will see frequent references to
|
|
<quote>daemons</quote> in the BSD documentation, and what
|
|
most people do not know is that this refers to genuine,
|
|
non-corporeal entities that now possess your computer. The
|
|
scratchy sound coming from your memory is actually
|
|
high-pitched whispering exchanged among the daemons as they
|
|
best decide how to deal with various system administration
|
|
tasks.</para>
|
|
|
|
<para>If the noise gets to you, a good
|
|
<command>fdisk /mbr</command> from DOS will get rid of them,
|
|
but do not be surprised if they react adversely and try to
|
|
stop you. In fact, if at any point during the exercise you
|
|
hear the satanic voice of Bill Gates coming from the
|
|
built-in speaker, take off running and do not ever look
|
|
back! Freed from the counterbalancing influence of the BSD
|
|
daemons, the twin demons of DOS and &windows; are often able
|
|
to re-assert total control over your machine to the eternal
|
|
damnation of your soul. Now that you know, given a choice
|
|
you would probably prefer to get used to the scratchy
|
|
noises, no?</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="changing-lightbulbs">
|
|
<para>How many &os; hackers does it take to change a
|
|
lightbulb?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>One thousand, one hundred and sixty-nine:</para>
|
|
|
|
<para>Twenty-three to complain to -CURRENT about the lights
|
|
being out;</para>
|
|
|
|
<para>Four to claim that it is a configuration problem, and
|
|
that such matters really belong on -questions;</para>
|
|
|
|
<para>Three to submit PRs about it, one of which is misfiled
|
|
under doc and consists only of <quote>it's
|
|
dark</quote>;</para>
|
|
|
|
<para>One to commit an untested lightbulb which breaks
|
|
buildworld, then back it out five minutes later;</para>
|
|
|
|
<para>Eight to flame the PR originators for not including
|
|
patches in their PRs;</para>
|
|
|
|
<para>Five to complain about buildworld being broken;</para>
|
|
|
|
<para>Thirty-one to answer that it works for them, and they
|
|
must have 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; adds:</emphasis></para>
|
|
|
|
<para><emphasis>I was laughing quite hard at
|
|
this.</emphasis></para>
|
|
|
|
<para><emphasis>And then I thought, <quote>Hang on, shouldn't
|
|
there be '1 to document it.' in that list
|
|
somewhere?</quote></emphasis></para>
|
|
|
|
<para><emphasis>And then I was enlightened
|
|
:-)</emphasis></para>
|
|
|
|
<para><emphasis>&a.tabthorpe;</emphasis> says: <quote>None,
|
|
<emphasis>real</emphasis> &os; hackers are not afraid of the
|
|
dark!</quote></para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dev-null">
|
|
<para>Where does data written to
|
|
<filename>/dev/null</filename> go?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>It goes into a special data sink in the CPU where it is
|
|
converted to heat which is vented through the heatsink / fan
|
|
assembly. This is why CPU cooling is increasingly
|
|
important; as people get used to faster processors, they
|
|
become careless with their data and more and more of it ends
|
|
up in <filename>/dev/null</filename>, overheating their
|
|
CPUs. If you delete <filename>/dev/null</filename> (which
|
|
effectively disables the CPU data sink) your CPU may run
|
|
cooler but your system will quickly become constipated with
|
|
all that excess data and start to behave erratically. If
|
|
you have a fast network connection you can cool down your
|
|
CPU by reading data out of <filename>/dev/random</filename>
|
|
and sending it off somewhere; however you run the risk of
|
|
overheating your network connection and
|
|
<filename class="directory">/</filename> or angering your ISP, as most of the
|
|
data will end up getting converted to heat by their
|
|
equipment, but they generally have good cooling, so if you
|
|
do not overdo it you should be OK.</para>
|
|
|
|
<para><emphasis>Paul Robinson adds:</emphasis></para>
|
|
|
|
<para>There are other methods. As every good sysadmin knows,
|
|
it is part of standard practice to send data to the screen
|
|
of interesting variety to keep all the pixies that make up
|
|
your picture happy. Screen pixies (commonly mis-typed or
|
|
re-named as <quote>pixels</quote>) are categorized by the
|
|
type of hat they wear (red, green or blue) and will hide or
|
|
appear (thereby showing the color of their hat) whenever
|
|
they receive a little piece of food. Video cards turn data
|
|
into pixie-food, and then send them to the pixies —
|
|
the more expensive the card, the better the food, so the
|
|
better behaved the pixies are. They also need constant
|
|
stimulation — this is why screen savers exist.</para>
|
|
|
|
<para>To take your suggestions further, you could just throw
|
|
the random data to console, thereby letting the pixies
|
|
consume it. This causes no heat to be produced at all,
|
|
keeps the pixies happy and gets rid of your data quite
|
|
quickly, even if it does make things look a bit messy on
|
|
your screen.</para>
|
|
|
|
<para>Incidentally, as an ex-admin of a large ISP who
|
|
experienced many problems attempting to maintain a stable
|
|
temperature in a server room, I would strongly discourage
|
|
people sending the data they do not want out to the network.
|
|
The fairies who do the packet switching and routing get
|
|
annoyed by it as well.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="punk-my-friend">
|
|
<para>My colleague sits at the computer too much, how
|
|
can I prank her?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Install <filename role="port">games/sl</filename> and wait
|
|
for her to mistype <userinput>sl</userinput> for
|
|
<command>ls</command>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="advanced">
|
|
<title>Advanced Topics</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question id="learn-advanced">
|
|
<para>How can I learn more about &os;'s internals?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>See the
|
|
<ulink
|
|
url="&url.books.arch-handbook;">&os; Architecture Handbook</ulink>.</para>
|
|
|
|
<para>Additionally, much general &unix; knowledge is directly
|
|
applicable to &os;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="how-to-contribute">
|
|
<para>How can I contribute to &os;?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please see the article on <ulink
|
|
url="&url.articles.contributing;/article.html">Contributing to &os;</ulink>
|
|
for specific advice on how to do this. Assistance is more
|
|
than welcome!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="define-snap-release">
|
|
<para>What are snapshots and releases?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>There are currently four active/semi-active branches in
|
|
the &os; <ulink
|
|
url="http://svnweb.FreeBSD.org/base/">Subversion Repository</ulink>.
|
|
(Earlier branches are only changed very rarely, which is why
|
|
there are only four active branches of development):</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>&rel3.releng; AKA
|
|
&rel3.stable;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>&rel2.releng; AKA
|
|
&rel2.stable;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>&rel.releng; AKA
|
|
&rel.stable;</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>&rel.head.releng; AKA
|
|
<emphasis>-CURRENT</emphasis> AKA
|
|
&rel.head;</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para><literal>HEAD</literal> is not an actual branch tag,
|
|
like the others; it is simply a symbolic constant for
|
|
<quote><emphasis>the current, non-branched development
|
|
stream</emphasis></quote> which we simply refer to as
|
|
<emphasis>-CURRENT</emphasis>.</para>
|
|
|
|
<para>Right now, <emphasis>-CURRENT</emphasis> is the
|
|
&rel.head.relx; development stream; the
|
|
&rel.stable; branch,
|
|
&rel.releng;, forked off from
|
|
<emphasis>-CURRENT</emphasis> in &rel.relengdate; and the
|
|
&rel2.stable; branch,
|
|
&rel2.releng;, forked off from
|
|
<emphasis>-CURRENT</emphasis> in &rel2.relengdate;.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="ctm">
|
|
<para>Can I follow <emphasis>-CURRENT</emphasis> with limited
|
|
Internet access?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Yes, you can do this <emphasis>without</emphasis>
|
|
downloading the whole source tree by using the <ulink
|
|
url="&url.books.handbook;/synching.html#ctm">CTM facility</ulink>.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="submitting-kernel-extensions">
|
|
<para>I have written a kernel extension, who do I send it
|
|
to?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Please take a look at the article on <ulink
|
|
url="&url.articles.contributing;/article.html">Contributing to &os;</ulink>
|
|
to learn how to submit code.</para>
|
|
|
|
<para>And thanks for the thought!</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="kernel-panic-troubleshooting">
|
|
<para>How can I make the most of the data I see when my kernel
|
|
panics?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Here is typical kernel panic:</para>
|
|
|
|
<programlisting>Fatal trap 12: page fault while in kernel mode
|
|
fault virtual address = 0x40
|
|
fault code = supervisor read, page not present
|
|
instruction pointer = 0x8:0xf014a7e5
|
|
stack pointer = 0x10:0xf4ed6f24
|
|
frame pointer = 0x10:0xf4ed6f28
|
|
code segment = base 0x0, limit 0xfffff, type 0x1b
|
|
= DPL 0, pres 1, def32 1, gran 1
|
|
processor eflags = interrupt enabled, resume, IOPL = 0
|
|
current process = 80 (mount)
|
|
interrupt mask =
|
|
trap number = 12
|
|
panic: page fault</programlisting>
|
|
|
|
<para>When you see a message like this, it is not enough to
|
|
just reproduce it and send it in. The instruction pointer
|
|
value is important;
|
|
unfortunately, it is also configuration dependent. In other
|
|
words, the value varies depending on the exact kernel image
|
|
that you are using. If you are using a
|
|
<filename>GENERIC</filename> kernel image from one of the
|
|
snapshots, then it is possible for somebody else to track
|
|
down the offending function, but if you are running a custom
|
|
kernel then only <emphasis>you</emphasis> can tell us where
|
|
the fault occurred.</para>
|
|
|
|
<para>What you should do is this:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Write down the instruction pointer value. Note
|
|
that the <literal>0x8:</literal> part at the beginning
|
|
is not significant in this case: it is the
|
|
<literal>0xf0xxxxxx</literal> part that we
|
|
want.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>When the system reboots, do the following:</para>
|
|
|
|
<screen>&prompt.user; <userinput><command>nm</command> <option>-n</option> <replaceable>kernel.that.caused.the.panic</replaceable> | <command>grep</command> f0xxxxxx</userinput></screen>
|
|
|
|
<para>where <literal>f0xxxxxx</literal> is the
|
|
instruction pointer value. The odds are you will not
|
|
get an exact match since the symbols in the kernel
|
|
symbol table are for the entry points of functions and
|
|
the instruction pointer address will be somewhere
|
|
inside a function, not at the start. If you do not
|
|
get an exact match, omit the last digit from the
|
|
instruction pointer value and try again, i.e.:</para>
|
|
|
|
<screen>&prompt.user; <userinput><command>nm</command> <option>-n</option> <replaceable>kernel.that.caused.the.panic</replaceable> | <command>grep</command> f0xxxxx</userinput></screen>
|
|
|
|
<para>If that does not yield any results, chop off another
|
|
digit. Repeat until you get some sort of output. The
|
|
result will be a possible list of functions which caused
|
|
the panic. This is a less than exact mechanism for
|
|
tracking down the point of failure, but it is better
|
|
than nothing.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>However, the best way to track down the cause of a panic
|
|
is by capturing a crash dump, then using &man.kgdb.1; to
|
|
generate a stack trace on the crash dump.</para>
|
|
|
|
<para>In any case, the method is this:</para>
|
|
|
|
<procedure>
|
|
<step>
|
|
<para>Make sure that the following line is included in
|
|
your kernel configuration file
|
|
(<filename>/usr/src/sys/<replaceable>arch</replaceable>/conf/<replaceable>MYKERNEL</replaceable></filename>):</para>
|
|
|
|
<programlisting>makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols</programlisting>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Change to the <filename
|
|
class="directory">/usr/src</filename>
|
|
directory:</para>
|
|
|
|
<screen>&prompt.root; <userinput><command>cd</command> <filename class="directory">/usr/src</filename></userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Compile the kernel:</para>
|
|
|
|
<screen>&prompt.root; <userinput><command>make</command> <maketarget>buildkernel</maketarget> <makevar>KERNCONF</makevar>=<replaceable>MYKERNEL</replaceable></userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Wait for &man.make.1; to finish compiling.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<screen>&prompt.root; <userinput><command>make</command> <maketarget>installkernel</maketarget> <makevar>KERNCONF</makevar>=<replaceable>MYKERNEL</replaceable></userinput></screen>
|
|
</step>
|
|
|
|
<step>
|
|
<para>Reboot.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<note>
|
|
<para>If you do not use the <makevar>KERNCONF</makevar>
|
|
make variable a <filename>GENERIC</filename> kernel will
|
|
be built and installed.</para>
|
|
</note>
|
|
|
|
<para>The &man.make.1; process will have built two kernels.
|
|
<filename>/usr/obj/usr/src/sys/<replaceable>MYKERNEL</replaceable>/kernel</filename>
|
|
and
|
|
<filename>/usr/obj/usr/src/sys/<replaceable>MYKERNEL</replaceable>/kernel.debug</filename>.
|
|
<filename>kernel</filename> was installed as
|
|
<filename>/boot/kernel/kernel</filename>, while
|
|
<filename>kernel.debug</filename> can be used as the source
|
|
of debugging symbols for &man.kgdb.1;.</para>
|
|
|
|
<para>To make sure you capture a crash dump, you need edit
|
|
<filename>/etc/rc.conf</filename> and set
|
|
<literal>dumpdev</literal> to point to your swap partition
|
|
(or <literal>AUTO</literal>). This will cause the
|
|
&man.rc.8; scripts to use the &man.dumpon.8; command to
|
|
enable crash dumps. You can also run &man.dumpon.8;
|
|
manually. After a panic, the crash dump can be recovered
|
|
using &man.savecore.8;; if <literal>dumpdev</literal> is set
|
|
in <filename>/etc/rc.conf</filename>, the &man.rc.8; scripts
|
|
will run &man.savecore.8; automatically and put the crash
|
|
dump in <filename class="directory">/var/crash</filename>.</para>
|
|
|
|
<note>
|
|
<para>&os; crash dumps are usually the same size as the
|
|
physical RAM size of your machine. That is, if you have
|
|
512 MB of RAM, you will get a 512 MB crash dump.
|
|
Therefore you must make sure there is enough space in
|
|
<filename class="directory">/var/crash</filename> to hold the dump.
|
|
Alternatively, you run &man.savecore.8; manually and have
|
|
it recover the crash dump to another directory where you
|
|
have more room. It is possible to limit the size of the
|
|
crash dump by using <literal>options
|
|
MAXMEM=<replaceable>N</replaceable></literal> where
|
|
<replaceable>N</replaceable> is the size of kernel's
|
|
memory usage in KBs. For example, if you have 1 GB
|
|
of RAM, you can limit the kernel's memory usage to
|
|
128 MB by this way, so that your crash dump size will
|
|
be 128 MB instead of 1 GB.</para>
|
|
</note>
|
|
|
|
<para>Once you have recovered the crash dump, you can get a
|
|
stack trace with &man.kgdb.1; as follows:</para>
|
|
|
|
<screen>&prompt.user; <userinput><command>kgdb</command> <filename>/usr/obj/usr/src/sys/<replaceable>MYKERNEL</replaceable>/kernel.debug</filename> <filename class="directory">/var/crash/<replaceable>vmcore.0</replaceable></filename></userinput>
|
|
<prompt>(kgdb)</prompt> <userinput>backtrace</userinput></screen>
|
|
|
|
<para>Note that there may be several screens worth of
|
|
information; ideally you should use &man.script.1; to
|
|
capture all of them. Using the unstripped kernel image with
|
|
all the debug symbols should show the exact line of kernel
|
|
source code where the panic occurred. Usually you have to
|
|
read the stack trace from the bottom up to trace
|
|
the exact sequence of events that lead to the crash. You
|
|
can also use &man.kgdb.1; to print out the contents of
|
|
various variables or structures to examine the
|
|
system state at the time of the crash.</para>
|
|
|
|
<tip>
|
|
<para>Now, if you are really insane and have a second
|
|
computer, you can also configure &man.kgdb.1; to do remote
|
|
debugging such that you can use &man.kgdb.1; on one system
|
|
to debug the kernel on another system, including setting
|
|
breakpoints, single-stepping through the kernel code, just
|
|
like you can do with a normal user-mode program.</para>
|
|
</tip>
|
|
|
|
<note>
|
|
<para>If you have <literal>DDB</literal> enabled and the
|
|
kernel drops into the debugger, you can force a panic (and
|
|
a crash dump) just by typing <literal>panic</literal> at
|
|
the <literal>ddb</literal> prompt. It may stop in the
|
|
debugger again during the panic phase. If it does, type
|
|
<literal>continue</literal> and it will finish the crash
|
|
dump.</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="dlsym-failure">
|
|
<para>Why has <function>dlsym()</function> stopped working for
|
|
ELF executables?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>The ELF toolchain does not, by default, make the symbols
|
|
defined in an executable visible to the dynamic linker.
|
|
Consequently <function>dlsym()</function> searches on
|
|
handles obtained from calls to <function>dlopen(NULL,
|
|
flags)</function> will fail to find such symbols.</para>
|
|
|
|
<para>If you want to search, using
|
|
<function>dlsym()</function>, for symbols present in the
|
|
main executable of a process, you need to link the
|
|
executable using the <option>--export-dynamic</option>
|
|
option to the ELF linker (&man.ld.1;).</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question id="change-kernel-address-space">
|
|
<para>How can I increase or reduce the kernel address space on
|
|
i386?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>By default, the kernel address space is 1 GB
|
|
(2 GB for PAE) for i386. If you run a
|
|
network-intensive server (e.g., a FTP or HTTP server),
|
|
or you want to use ZFS, you might find that is not
|
|
enough.</para>
|
|
|
|
<para>Add the following line to your kernel configuration file
|
|
to increase available space and rebuild your kernel:</para>
|
|
|
|
<programlisting>options KVA_PAGES=<replaceable>N</replaceable></programlisting>
|
|
|
|
<para>To find the correct value of
|
|
<replaceable>N</replaceable>, divide the desired address
|
|
space size (in megabytes) by four. (For example, it is
|
|
<literal>512</literal> for 2 GB.)</para>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<chapter id="acknowledgments">
|
|
<title>Acknowledgments</title>
|
|
|
|
<para>This innocent little Frequently Asked Questions document has
|
|
been written, rewritten, edited, folded, spindled, mutilated,
|
|
eviscerated, contemplated, discombobulated, cogitated,
|
|
regurgitated, rebuilt, castigated, and reinvigorated over the last
|
|
decade, by a cast of hundreds if not thousands.
|
|
Repeatedly.</para>
|
|
|
|
<para>We wish to thank every one of the people responsible, and we
|
|
encourage you to <ulink
|
|
url="&url.articles.contributing;/article.html">join them</ulink>
|
|
in making this FAQ even better.</para>
|
|
</chapter>
|
|
|
|
&bibliography;
|
|
</book>
|