"doc/en. The time has come. Prepare yourself."

"No, wait, I don't want t--" <blam>

"Goodbye".
This commit is contained in:
Nik Clayton 1999-08-21 18:13:33 +00:00
parent c49d00f601
commit dddae37958
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=5413
78 changed files with 0 additions and 61496 deletions

View file

@ -1,58 +0,0 @@
#
# $Id: Makefile,v 1.21 1999-05-05 20:31:23 nik Exp $
#
# Build the FreeBSD Handbook.
#
MAINTAINER=nik@FreeBSD.ORG
DOC?= handbook
FORMATS?= html-split
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
#
# SRCS lists the individual SGML files that make up the document. Changes
# to any of these files will force a rebuild
#
# SGML content
SRCS= handbook.sgml
SRCS+= advanced-networking/chapter.sgml
SRCS+= backups/chapter.sgml
SRCS+= basics/chapter.sgml
SRCS+= bibliography/chapter.sgml
SRCS+= contrib/chapter.sgml
SRCS+= cutting-edge/chapter.sgml
SRCS+= disks/chapter.sgml
SRCS+= eresources/chapter.sgml
SRCS+= hw/chapter.sgml
SRCS+= install/chapter.sgml
SRCS+= internals/chapter.sgml
SRCS+= introduction/chapter.sgml
SRCS+= kernelconfig/chapter.sgml
SRCS+= kerneldebug/chapter.sgml
SRCS+= kernelopts/chapter.sgml
SRCS+= l10n/chapter.sgml
SRCS+= linuxemu/chapter.sgml
SRCS+= mail/chapter.sgml
SRCS+= mirrors/chapter.sgml
SRCS+= pgpkeys/chapter.sgml
SRCS+= policies/chapter.sgml
SRCS+= ppp-and-slip/chapter.sgml
SRCS+= printing/chapter.sgml
SRCS+= quotas/chapter.sgml
SRCS+= security/chapter.sgml
SRCS+= serialcomms/chapter.sgml
SRCS+= staff/chapter.sgml
SRCS+= x11/chapter.sgml
SRCS+= ports/chapter.sgml
# Entities
SRCS+= authors.ent
SRCS+= chapters.ent
SRCS+= mailing-lists.ent
.include "../../share/mk/docproj.docbook.mk"

View file

@ -1,934 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.12 1999-07-28 20:23:15 nik Exp $
-->
<chapter id="advanced-networking">
<title>Advanced Networking</title>
<sect1 id="routing">
<title>Gateways and Routes</title>
<para><emphasis>Contributed by &a.gryphon;. 6 October
1995.</emphasis></para>
<para>For one machine to be able to find another, there must be a
mechanism in place to describe how to get from one to the other. This is
called Routing. A &ldquo;route&rdquo; is a defined pair of addresses: a
&ldquo;destination&rdquo; and a &ldquo;gateway&rdquo;. The pair
indicates that if you are trying to get to this
<emphasis>destination</emphasis>, send along through this
<emphasis>gateway</emphasis>. There are three types of destinations:
individual hosts, subnets, and &ldquo;default&rdquo;. The
&ldquo;default route&rdquo; is used if none of the other routes apply.
We will talk a little bit more about default routes later on. There are
also three types of gateways: individual hosts, interfaces (also called
&ldquo;links&rdquo;), and ethernet hardware addresses.</para>
<sect2>
<title>An example</title>
<para>To illustrate different aspects of routing, we will use the
following example which is the output of the command <command>netstat
-r</command>:</para>
<screen>Destination Gateway Flags Refs Use Netif Expire
default outside-gw UGSc 37 418 ppp0
localhost localhost UH 0 181 lo0
test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77
10.20.30.255 link#1 UHLW 1 2421
foobar.com link#1 UC 0 0
host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0
host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 =>
host2.foobar.com link#1 UC 0 0
224 link#1 UC 0 0</screen>
<para>The first two lines specify the default route (which we will cover
in the next section) and the <hostid>localhost</hostid> route.</para>
<para>The interface (<literal>Netif</literal> column) that it specifies
to use for <literal>localhost</literal> is
<devicename>lo0</devicename>, also known as the loopback device. This
says to keep all traffic for this destination internal, rather than
sending it out over the LAN, since it will only end up back where it
started anyway.</para>
<para>The next thing that stands out are the <hostid
role="mac">0:e0:...</hostid> addresses. These are ethernet hardware
addresses. FreeBSD will automatically identify any hosts
(<hostid>test0</hostid> in the example) on the local ethernet and add
a route for that host, directly to it over the ethernet interface,
<devicename>ed0</devicename>. There is also a timeout
(<literal>Expire</literal> column) associated with this type of route,
which is used if we fail to hear from the host in a specific amount of
time. In this case the route will be automatically deleted. These
hosts are identified using a mechanism known as RIP (Routing
Information Protocol), which figures out routes to local hosts based
upon a shortest path determination.</para>
<para>FreeBSD will also add subnet routes for the local subnet (<hostid
role="ipaddr">10.20.30.255</hostid> is the broadcast address for the
subnet <hostid role="ipaddr">10.20.30</hostid>, and <hostid
role="domainname">foobar.com</hostid> is the domain name associated
with that subnet). The designation <literal>link#1</literal> refers
to the first ethernet card in the machine. You will notice no
additional interface is specified for those.</para>
<para>Both of these groups (local network hosts and local subnets) have
their routes automatically configured by a daemon called
<command>routed</command>. If this is not run, then only routes which
are statically defined (ie. entered explicitly) will exist.</para>
<para>The <literal>host1</literal> line refers to our host, which it
knows by ethernet address. Since we are the sending host, FreeBSD
knows to use the loopback interface (<devicename>lo0</devicename>)
rather than sending it out over the ethernet interface.</para>
<para>The two <literal>host2</literal> lines are an example of what
happens when we use an ifconfig alias (see the section of ethernet for
reasons why we would do this). The <literal>=&gt;</literal> symbol
after the <devicename>lo0</devicename> interface says that not only
are we using the loopback (since this is address also refers to the
local host), but specifically it is an alias. Such routes only show
up on the host that supports the alias; all other hosts on the local
network will simply have a <literal>link#1</literal> line for
such.</para>
<para>The final line (destination subnet <literal>224</literal>) deals
with MultiCasting, which will be covered in a another section.</para>
<para>The other column that we should talk about are the
<literal>Flags</literal>. Each route has different attributes that
are described in the column. Below is a short table of some of these
flags and their meanings:</para>
<informaltable frame="none">
<tgroup cols="2">
<tbody>
<row>
<entry>U</entry>
<entry>Up: The route is active.</entry>
</row>
<row>
<entry>H</entry>
<entry>Host: The route destination is a single host.</entry>
</row>
<row>
<entry>G</entry>
<entry>Gateway: Send anything for this destination on to this
remote system, which will figure out from there where to send
it.</entry>
</row>
<row>
<entry>S</entry>
<entry>Static: This route was configured manually, not
automatically generated by the system.</entry>
</row>
<row>
<entry>C</entry>
<entry>Clone: Generates a new route based upon this route for
machines we connect to. This type of route is normally used
for local networks.</entry>
</row>
<row>
<entry>W</entry>
<entry>WasCloned: Indicated a route that was auto-configured
based upon a local area network (Clone) route.</entry>
</row>
<row>
<entry>L</entry>
<entry>Link: Route involves references to ethernet
hardware.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
<title>Default routes</title>
<para>When the local system needs to make a connection to remote host,
it checks the routing table to determine if a known path exists. If
the remote host falls into a subnet that we know how to reach (Cloned
routes), then the system checks to see if it can connect along that
interface.</para>
<para>If all known paths fail, the system has one last option: the
&ldquo;default&rdquo; route. This route is a special type of gateway
route (usually the only one present in the system), and is always
marked with a <literal>c</literal> in the flags field. For hosts on a
local area network, this gateway is set to whatever machine has a
direct connection to the outside world (whether via PPP link, or your
hardware device attached to a dedicated data line).</para>
<para>If you are configuring the default route for a machine which
itself is functioning as the gateway to the outside world, then the
default route will be the gateway machine at your Internet Service
Provider's (ISP) site.</para>
<para>Let us look at an example of default routes. This is a common
configuration:</para>
<literallayout>
[Local2] &lt;--ether--&gt; [Local1] &lt;--PPP--&gt; [ISP-Serv] &lt;--ether--&gt; [T1-GW]
</literallayout>
<para>The hosts <hostid>Local1</hostid> and <hostid>Local2</hostid> are
at your site, with the formed being your PPP connection to your ISP's
Terminal Server. Your ISP has a local network at their site, which
has, among other things, the server where you connect and a hardware
device (T1-GW) attached to the ISP's Internet feed.</para>
<para>The default routes for each of your machines will be:</para>
<informaltable frame="none">
<tgroup cols="3">
<thead>
<row>
<entry>host</entry>
<entry>default gateway</entry>
<entry>interface</entry>
</row>
</thead>
<tbody>
<row>
<entry>Local2</entry>
<entry>Local1</entry>
<entry>ethernet</entry>
</row>
<row>
<entry>Local1</entry>
<entry>T1-GW</entry>
<entry>PPP</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>A common question is &ldquo;Why (or how) would we set the T1-GW to
be the default gateway for Local1, rather than the ISP server it is
connected to?&rdquo;.</para>
<para>Remember, since the PPP interface is using an address on the ISP's
local network for your side of the connection, routes for any other
machines on the ISP's local network will be automatically generated.
Hence, you will already know how to reach the T1-GW machine, so there
is no need for the intermediate step of sending traffic to the ISP
server.</para>
<para>As a final note, it is common to use the address <hostid
role="ipaddr">...1</hostid> as the gateway address for your local
network. So (using the same example), if your local class-C address
space was <hostid role="ipaddr">10.20.30</hostid> and your ISP was
using <hostid role="ipaddr">10.9.9</hostid> then the default routes
would be:</para>
<literallayout>
Local2 (10.20.30.2) --&gt; Local1 (10.20.30.1)
Local1 (10.20.30.1, 10.9.9.30) --&gt; T1-GW (10.9.9.1)
</literallayout>
</sect2>
<sect2>
<title>Dual homed hosts</title>
<para>There is one other type of configuration that we should cover, and
that is a host that sits on two different networks. Technically, any
machine functioning as a gateway (in the example above, using a PPP
connection) counts as a dual-homed host. But the term is really only
used to refer to a machine that sits on two local-area
networks.</para>
<para>In one case, the machine as two ethernet cards, each having an
address on the separate subnets. Alternately, the machine may only
have one ethernet card, and be using ifconfig aliasing. The former is
used if two physically separate ethernet networks are in use, the
latter if there is one physical network segment, but two logically
separate subnets.</para>
<para>Either way, routing tables are set up so that each subnet knows
that this machine is the defined gateway (inbound route) to the other
subnet. This configuration, with the machine acting as a Bridge
between the two subnets, is often used when we need to implement
packet filtering or firewall security in either or both
directions.</para>
</sect2>
<sect2>
<title>Routing propagation</title>
<para>We have already talked about how we define our routes to the
outside world, but not about how the outside world finds us.</para>
<para>We already know that routing tables can be set up so that all
traffic for a particular address space (in our examples, a class-C
subnet) can be sent to a particular host on that network, which will
forward the packets inbound.</para>
<para>When you get an address space assigned to your site, your service
provider will set up their routing tables so that all traffic for your
subnet will be sent down your PPP link to your site. But how do sites
across the country know to send to your ISP?</para>
<para>There is a system (much like the distributed DNS information) that
keeps track of all assigned address-spaces, and defines their point of
connection to the Internet Backbone. The &ldquo;Backbone&rdquo; are
the main trunk lines that carry Internet traffic across the country,
and around the world. Each backbone machine has a copy of a master
set of tables, which direct traffic for a particular network to a
specific backbone carrier, and from there down the chain of service
providers until it reaches your network.</para>
<para>It is the task of your service provider to advertise to the
backbone sites that they are the point of connection (and thus the
path inward) for your site. This is known as route
propagation.</para>
</sect2>
<sect2>
<title>Troubleshooting</title>
<para>Sometimes, there is a problem with routing propagation, and some
sites are unable to connect to you. Perhaps the most useful command
for trying to figure out where a routing is breaking down is the
&man.traceroute.8; command. It is equally useful if you cannot seem
to make a connection to a remote machine (i.e. &man.ping.8;
fails).</para>
<para>The &man.traceroute.8; command is run with the name of the remote
host you are trying to connect to. It will show the gateway hosts
along the path of the attempt, eventually either reaching the target
host, or terminating because of a lack of connection.</para>
<para>For more information, see the manual page for
&man.traceroute.8;.</para>
</sect2>
</sect1>
<sect1 id="nfs">
<title>NFS</title>
<para><emphasis>Contributed by &a.jlind;.</emphasis></para>
<para>Certain Ethernet adapters for ISA PC systems have limitations which
can lead to serious network problems, particularly with NFS. This
difficulty is not specific to FreeBSD, but FreeBSD systems are affected
by it.</para>
<para>The problem nearly always occurs when (FreeBSD) PC systems are
networked with high-performance workstations, such as those made by
Silicon Graphics, Inc., and Sun Microsystems, Inc. The NFS mount will
work fine, and some operations may succeed, but suddenly the server will
seem to become unresponsive to the client, even though requests to and
from other systems continue to be processed. This happens to the client
system, whether the client is the FreeBSD system or the workstation. On
many systems, there is no way to shut down the client gracefully once
this problem has manifested itself. The only solution is often to reset
the client, because the NFS situation cannot be resolved.</para>
<para>Though the &ldquo;correct&rdquo; solution is to get a higher
performance and capacity Ethernet adapter for the FreeBSD system, there
is a simple workaround that will allow satisfactory operation. If the
FreeBSD system is the <emphasis>server</emphasis>, include the option
<option>-w=1024</option> on the mount from the client. If the FreeBSD
system is the <emphasis>client</emphasis>, then mount the NFS file
system with the option <option>-r=1024</option>. These options may be
specified using the fourth field of the <filename>fstab</filename> entry
on the client for automatic mounts, or by using the <option>-o</option>
parameter of the mount command for manual mounts.</para>
<para>It should be noted that there is a different problem, sometimes
mistaken for this one, when the NFS servers and clients are on different
networks. If that is the case, make <emphasis>certain</emphasis> that
your routers are routing the necessary UDP information, or you will not
get anywhere, no matter what else you are doing.</para>
<para>In the following examples, <hostid>fastws</hostid> is the host
(interface) name of a high-performance workstation, and
<hostid>freebox</hostid> is the host (interface) name of a FreeBSD
system with a lower-performance Ethernet adapter. Also,
<filename>/sharedfs</filename> will be the exported NFS filesystem (see
<command>man exports</command>), and <filename>/project</filename> will
be the mount point on the client for the exported file system. In all
cases, note that additional options, such as <option>hard</option> or
<option>soft</option> and <option>bg</option> may be desirable in your
application.</para>
<para>Examples for the FreeBSD system (<hostid>freebox</hostid>) as the
client: in <filename>/etc/fstab</filename> on freebox:</para>
<programlisting>
fastws:/sharedfs /project nfs rw,-r=1024 0 0</programlisting>
<para>As a manual mount command on <hostid>freebox</hostid>:</para>
<screen>&prompt.root; <userinput>mount -t nfs -o -r=1024 fastws:/sharedfs /project</userinput></screen>
<para>Examples for the FreeBSD system as the server: in
<filename>/etc/fstab</filename> on <hostid>fastws</hostid>:</para>
<programlisting>
freebox:/sharedfs /project nfs rw,-w=1024 0 0</programlisting>
<para>As a manual mount command on <hostid>fastws</hostid>:</para>
<screen>&prompt.root; <userinput>mount -t nfs -o -w=1024 freebox:/sharedfs /project</userinput></screen>
<para>Nearly any 16-bit Ethernet adapter will allow operation without the
above restrictions on the read or write size.</para>
<para>For anyone who cares, here is what happens when the failure occurs,
which also explains why it is unrecoverable. NFS typically works with a
&ldquo;block&rdquo; size of 8k (though it may do fragments of smaller
sizes). Since the maximum Ethernet packet is around 1500 bytes, the NFS
&ldquo;block&rdquo; gets split into multiple Ethernet packets, even
though it is still a single unit to the upper-level code, and must be
received, assembled, and <emphasis>acknowledged</emphasis> as a unit.
The high-performance workstations can pump out the packets which
comprise the NFS unit one right after the other, just as close together
as the standard allows. On the smaller, lower capacity cards, the later
packets overrun the earlier packets of the same unit before they can be
transferred to the host and the unit as a whole cannot be reconstructed
or acknowledged. As a result, the workstation will time out and try
again, but it will try again with the entire 8K unit, and the process
will be repeated, ad infinitum.</para>
<para>By keeping the unit size below the Ethernet packet size limitation,
we ensure that any complete Ethernet packet received can be acknowledged
individually, avoiding the deadlock situation.</para>
<para>Overruns may still occur when a high-performance workstations is
slamming data out to a PC system, but with the better cards, such
overruns are not guaranteed on NFS &ldquo;units&rdquo;. When an overrun
occurs, the units affected will be retransmitted, and there will be a
fair chance that they will be received, assembled, and
acknowledged.</para>
</sect1>
<sect1 id="diskless">
<title>Diskless Operation</title>
<para><emphasis>Contributed by &a.martin;.</emphasis></para>
<para><filename>netboot.com</filename>/<filename>netboot.rom</filename>
allow you to boot your FreeBSD machine over the network and run FreeBSD
without having a disk on your client. Under 2.0 it is now possible to
have local swap. Swapping over NFS is also still supported.</para>
<para>Supported Ethernet cards include: Western Digital/SMC 8003, 8013,
8216 and compatibles; NE1000/NE2000 and compatibles (requires
recompile)</para>
<sect2>
<title>Setup Instructions</title>
<procedure>
<step>
<para>Find a machine that will be your server. This machine will
require enough disk space to hold the FreeBSD 2.0 binaries and
have bootp, tftp and NFS services available. Tested
machines:</para>
<itemizedlist>
<listitem>
<para>HP9000/8xx running HP-UX 9.04 or later (pre 9.04 doesn't
work)</para>
</listitem>
<listitem>
<para>Sun/Solaris 2.3. (you may need to get bootp)</para>
</listitem>
</itemizedlist>
</step>
<step>
<para>Set up a bootp server to provide the client with IP, gateway,
netmask.</para>
<programlisting>
diskless:\
:ht=ether:\
:ha=0000c01f848a:\
:sm=255.255.255.0:\
:hn:\
:ds=192.1.2.3:\
:ip=192.1.2.4:\
:gw=192.1.2.5:\
:vm=rfc1048:</programlisting>
</step>
<step>
<para>Set up a TFTP server (on same machine as bootp server) to
provide booting information to client. The name of this file is
<filename>cfg.<replaceable>X.X.X.X</replaceable></filename> (or
<filename>/tftpboot/cfg.<replaceable>X.X.X.X</replaceable></filename>,
it will try both) where <replaceable>X.X.X.X</replaceable> is the
IP address of the client. The contents of this file can be any
valid netboot commands. Under 2.0, netboot has the following
commands:</para>
<informaltable frame="none">
<tgroup cols="2">
<tbody>
<row>
<entry>help</entry>
<entry>print help list</entry>
</row>
<row>
<entry>ip
<option><replaceable>X.X.X.X</replaceable></option></entry>
<entry>print/set client's IP address</entry>
</row>
<row>
<entry>server
<option><replaceable>X.X.X.X</replaceable></option></entry>
<entry>print/set bootp/tftp server address</entry>
</row>
<row>
<entry>netmask
<option><replaceable>X.X.X.X</replaceable></option></entry>
<entry>print/set netmask</entry>
</row>
<row>
<entry>hostname <replaceable>name</replaceable></entry>
<entry>print/set hostname</entry>
</row>
<row>
<entry>kernel
<option><replaceable>name</replaceable></option></entry>
<entry>print/set kernel name</entry>
</row>
<row>
<entry>rootfs
<option><replaceable>ip:/fs</replaceable></option></entry>
<entry>print/set root filesystem</entry>
</row>
<row>
<entry>swapfs
<option><replaceable>ip:/fs</replaceable></option></entry>
<entry>print/set swap filesystem</entry>
</row>
<row>
<entry>swapsize
<option><replaceable>size</replaceable></option></entry>
<entry>set diskless swapsize in Kbytes</entry>
</row>
<row>
<entry>diskboot</entry>
<entry>boot from disk</entry>
</row>
<row>
<entry>autoboot</entry>
<entry>continue boot process</entry>
</row>
<row>
<entry>trans
<option>on</option>|<option>off</option></entry>
<entry>turn transceiver on|off</entry>
</row>
<row>
<entry>flags
<option>b</option><option>c</option><option>d</option><option>h</option><option>s</option><option>v</option></entry>
<entry>set boot flags</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>A typical completely diskless cfg file might contain:</para>
<programlisting>
rootfs 192.1.2.3:/rootfs/myclient
swapfs 192.1.2.3:/swapfs
swapsize 20000
hostname myclient.mydomain</programlisting>
<para>A cfg file for a machine with local swap might contain:</para>
<programlisting>
rootfs 192.1.2.3:/rootfs/myclient
hostname myclient.mydomain</programlisting>
</step>
<step>
<para>Ensure that your NFS server has exported the root (and swap if
applicable) filesystems to your client, and that the client has
root access to these filesystems A typical
<filename>/etc/exports</filename> file on FreeBSD might look
like:</para>
<programlisting>
/rootfs/myclient -maproot=0:0 myclient.mydomain
/swapfs -maproot=0:0 myclient.mydomain</programlisting>
<para>And on HP-UX:</para>
<programlisting>
/rootfs/myclient -root=myclient.mydomain
/swapfs -root=myclient.mydomain</programlisting>
</step>
<step>
<para>If you are swapping over NFS (completely diskless
configuration) create a swap file for your client using
<command>dd</command>. If your <command>swapfs</command> command
has the arguments <filename>/swapfs</filename> and the size 20000
as in the example above, the swapfile for myclient will be called
<filename>/swapfs/swap.<replaceable>X.X.X.X</replaceable></filename>
where <replaceable>X.X.X.X</replaceable> is the client's IP addr,
eg:</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000</userinput></screen>
<para>Also, the client's swap space might contain sensitive
information once swapping starts, so make sure to restrict read
and write access to this file to prevent unauthorized
access:</para>
<screen>&prompt.root; <userinput>chmod 0600 /swapfs/swap.192.1.2.4</userinput></screen>
</step>
<step>
<para>Unpack the root filesystem in the directory the client will
use for its root filesystem (<filename>/rootfs/myclient</filename>
in the example above).</para>
<itemizedlist>
<listitem>
<para>On HP-UX systems: The server should be running HP-UX 9.04
or later for HP9000/800 series machines. Prior versions do not
allow the creation of device files over NFS.</para>
</listitem>
<listitem>
<para>When extracting <filename>/dev</filename> in
<filename>/rootfs/myclient</filename>, beware that some
systems (HPUX) will not create device files that FreeBSD is
happy with. You may have to go to single user mode on the
first bootup (press control-c during the bootup phase), cd
<filename>/dev</filename> and do a <command>sh ./MAKEDEV
all</command> from the client to fix this.</para>
</listitem>
</itemizedlist>
</step>
<step>
<para>Run <command>netboot.com</command> on the client or make an
EPROM from the <filename>netboot.rom</filename> file</para>
</step>
</procedure>
</sect2>
<sect2>
<title>Using Shared <filename>/</filename> and <filename>/usr</filename>
filesystems</title>
<para>At present there isn't an officially sanctioned way of doing this,
although I have been using a shared <filename>/usr</filename>
filesystem and individual <filename>/</filename> filesystems for each
client. If anyone has any suggestions on how to do this cleanly,
please let me and/or the &a.core; know.</para>
</sect2>
<sect2>
<title>Compiling netboot for specific setups</title>
<para>Netboot can be compiled to support NE1000/2000 cards by changing
the configuration in
<filename>/sys/i386/boot/netboot/Makefile</filename>. See the
comments at the top of this file.</para>
</sect2>
</sect1>
<sect1 id="isdn">
<title>ISDN</title>
<para><emphasis>Last modified by &a.wlloyd;</emphasis>.</para>
<para>A good resource for information on ISDN technology and hardware is
<ulink URL="http://alumni.caltech.edu/~dank/isdn/">Dan Kegel's ISDN
Page</ulink>.</para>
<para>A quick simple roadmap to ISDN follows:</para>
<itemizedlist>
<listitem>
<para>If you live in Europe I suggest you investigate the ISDN card
section.</para>
</listitem>
<listitem>
<para>If you are planning to use ISDN primarily to connect to the
Internet with an Internet Provider on a dialup non-dedicated basis,
I suggest you look into Terminal Adapters. This will give you the
most flexibility, with the fewest problems, if you change
providers.</para>
</listitem>
<listitem>
<para>If you are connecting two lans together, or connecting to the
Internet with a dedicated ISDN connection, I suggest you consider
the stand alone router/bridge option.</para>
</listitem>
</itemizedlist>
<para>Cost is a significant factor in determining what solution you will
choose. The following options are listed from least expensive to most
expensive.</para>
<sect2>
<title>ISDN Cards</title>
<para><emphasis>Contributed by &a.hm;.</emphasis></para>
<para>This section is really only relevant to ISDN users in countries
where the DSS1/Q.931 ISDN standard is supported.</para>
<para>Some growing number of PC ISDN cards are supported under FreeBSD
2.2.x and up by the isdn4bsd driver package. It is still under
development but the reports show that it is successfully used all over
Europe.</para>
<para>The latest isdn4bsd version is available from <ulink
url="ftp://isdn4bsd@ftp.consol.de/pub/">ftp://isdn4bsd@ftp.consol.de/pub/</ulink>,
the main isdn4bsd ftp site (you have to log in as user
<username>isdn4bsd</username> , give your mail address as the password
and change to the <filename>pub</filename> directory. Anonymous ftp
as user <username>ftp</username> or <username>anonymous</username>
will <emphasis>not</emphasis> give the desired result).</para>
<para>Isdn4bsd allows you to connect to other ISDN routers using either
IP over raw HDLC or by using synchronous PPP. A telephone answering
machine application is also available.</para>
<para>Many ISDN PC cards are supported, mostly the ones with a Siemens
ISDN chipset (ISAC/HSCX), support for other chipsets (from Motorola,
Cologne Chip Designs) is currently under development. For an
up-to-date list of supported cards, please have a look at the <ulink
url="ftp://isdn4bsd@ftp.consol.de/pub/README">README</ulink>
file.</para>
<para>In case you are interested in adding support for a different ISDN
protocol, a currently unsupported ISDN PC card or otherwise enhancing
isdn4bsd, please get in touch with <email>hm@kts.org</email>.</para>
<para>A majordomo maintained mailing list is available. To join the
list, send mail to <email>majordomo@FreeBSD.org</email> and
specify:</para>
<programlisting>
subscribe freebsd-isdn</programlisting>
<para>in the body of your message.</para>
</sect2>
<sect2>
<title>ISDN Terminal Adapters</title>
<para>Terminal adapters(TA), are to ISDN what modems are to regular
phone lines.</para>
<para>Most TA's use the standard hayes modem AT command set, and can be
used as a drop in replacement for a modem.</para>
<para>A TA will operate basically the same as a modem except connection
and throughput speeds will be much faster than your old modem. You
will need to configure <link linkend="ppp">PPP</link> exactly the same
as for a modem setup. Make sure you set your serial speed as high as
possible.</para>
<para>The main advantage of using a TA to connect to an Internet
Provider is that you can do Dynamic PPP. As IP address space becomes
more and more scarce, most providers are not willing to provide you
with a static IP anymore. Most standalone routers are not able to
accommodate dynamic IP allocation.</para>
<para>TA's completely rely on the PPP daemon that you are running for
their features and stability of connection. This allows you to
upgrade easily from using a modem to ISDN on a FreeBSD machine, if you
already have PPP setup. However, at the same time any problems you
experienced with the PPP program and are going to persist.</para>
<para>If you want maximum stability, use the kernel <link
linkend="ppp">PPP</link> option, not the user-land <link
linkend="userppp">iijPPP</link>.</para>
<para>The following TA's are know to work with FreeBSD.</para>
<itemizedlist>
<listitem>
<para>Motorola BitSurfer and Bitsurfer Pro</para>
</listitem>
<listitem>
<para>Adtran</para>
</listitem>
</itemizedlist>
<para>Most other TA's will probably work as well, TA vendors try to make
sure their product can accept most of the standard modem AT command
set.</para>
<para>The real problem with external TA's is like modems you need a good
serial card in your computer.</para>
<para>You should read the <link linkend="uart">serial ports</link>
section in the handbook for a detailed understanding of serial
devices, and the differences between asynchronous and synchronous
serial ports.</para>
<para>A TA running off a standard PC serial port (asynchronous) limits
you to 115.2Kbs, even though you have a 128Kbs connection. To fully
utilize the 128Kbs that ISDN is capable of, you must move the TA to a
synchronous serial card.</para>
<para>Do not be fooled into buying an internal TA and thinking you have
avoided the synchronous/asynchronous issue. Internal TA's simply have
a standard PC serial port chip built into them. All this will do, is
save you having to buy another serial cable, and find another empty
electrical socket.</para>
<para>A synchronous card with a TA is at least as fast as a standalone
router, and with a simple 386 FreeBSD box driving it, probably more
flexible.</para>
<para>The choice of sync/TA vs standalone router is largely a religious
issue. There has been some discussion of this in the mailing lists.
I suggest you search the <ulink
URL="http://www.FreeBSD.org/search.html">archives</ulink> for the
complete discussion.</para>
</sect2>
<sect2>
<title>Standalone ISDN Bridges/Routers</title>
<para>ISDN bridges or routers are not at all specific to FreeBSD or any
other operating system. For a more complete description of routing
and bridging technology, please refer to a Networking reference
book.</para>
<para>In the context of this page, I will use router and bridge
interchangeably.</para>
<para>As the cost of low end ISDN routers/bridges comes down, it will
likely become a more and more popular choice. An ISDN router is a
small box that plugs directly into your local Ethernet network(or
card), and manages its own connection to the other bridge/router. It
has all the software to do PPP and other protocols built in.</para>
<para>A router will allow you much faster throughput that a standard TA,
since it will be using a full synchronous ISDN connection.</para>
<para>The main problem with ISDN routers and bridges is that
interoperability between manufacturers can still be a problem. If you
are planning to connect to an Internet provider, I recommend that you
discuss your needs with them.</para>
<para>If you are planning to connect two lan segments together, ie: home
lan to the office lan, this is the simplest lowest maintenance
solution. Since you are buying the equipment for both sides of the
connection you can be assured that the link will work.</para>
<para>For example to connect a home computer or branch office network to
a head office network the following setup could be used.</para>
<example>
<title>Branch office or Home network</title>
<para>Network is 10 Base T Ethernet. Connect router to network cable
with AUI/10BT transceiver, if necessary.</para>
<!-- This should be a graphic -->
<programlisting>
---Sun workstation
|
---FreeBSD box
|
---Windows 95 (Do not admit to owning it)
|
Standalone router
|
ISDN BRI line</programlisting>
<para>If your home/branch office is only one computer you can use a
twisted pair crossover cable to connect to the standalone router
directly.</para>
</example>
<example>
<title>Head office or other lan</title>
<para>Network is Twisted Pair Ethernet.</para>
<!-- This should be a graphic -->
<programlisting>
-------Novell Server
| H |
| ---Sun
| |
| U ---FreeBSD
| |
| ---Windows 95
| B |
|___---Standalone router
|
ISDN BRI line</programlisting>
</example>
<para>One large advantage of most routers/bridges is that they allow you
to have 2 <emphasis>separate independent</emphasis> PPP connections to
2 separate sites at the <emphasis>same</emphasis> time. This is not
supported on most TA's, except for specific(expensive) models that
have two serial ports. Do not confuse this with channel bonding, MPP
etc.</para>
<para>This can be very useful feature, for example if you have an
dedicated internet ISDN connection at your office and would like to
tap into it, but don't want to get another ISDN line at work. A router
at the office location can manage a dedicated B channel connection
(64Kbs) to the internet, as well as a use the other B channel for a
separate data connection. The second B channel can be used for
dialin, dialout or dynamically bond(MPP etc.) with the first B channel
for more bandwidth.</para>
<para>An Ethernet bridge will also allow you to transmit more than just
IP traffic, you can also send IPX/SPX or whatever other protocols you
use.</para>
</sect2>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,399 +0,0 @@
<!--
Names and email address of contributing authors and CVS committers.
Entity names for committers should be the same as their login names on
freefall.FreeBSD.org.
Use these entities when referencing people.
Please keep this list in alphabetical order by entity names.
$Id: authors.ent,v 1.43 1999-08-11 13:53:12 alfred Exp $
-->
<!ENTITY a.abial "Andrzej Bialecki <email>abial@FreeBSD.org</email>">
<!ENTITY a.ache "Andrey A. Chernov <email>ache@FreeBSD.org</email>">
<!ENTITY a.adam "Adam David <email>adam@FreeBSD.org</email>">
<!ENTITY a.alc "Alan L. Cox <email>alc@FreeBSD.org</email>">
<!ENTITY a.alex "Alex Nash <email>alex@FreeBSD.org</email>">
<!ENTITY a.alfred "Alfred Perlstein <email>alfred@FreeBSD.org</email>">
<!ENTITY a.amurai "Atsushi Murai <email>amurai@FreeBSD.org</email>">
<!ENTITY a.andreas "Andreas Klemm <email>andreas@FreeBSD.org</email>">
<!ENTITY a.archie "Archie Cobbs <email>archie@FreeBSD.org</email>">
<!ENTITY a.asami "Satoshi Asami <email>asami@FreeBSD.org</email>">
<!ENTITY a.ats "Andreas Schulz <email>ats@FreeBSD.org</email>">
<!ENTITY a.awebster "Andrew Webster <email>awebster@pubnix.net</email>">
<!ENTITY a.bde "Bruce Evans <email>bde@FreeBSD.org</email>">
<!ENTITY a.billf "Bill Fumerola <email>billf@FreeBSD.org</email>">
<!ENTITY a.brandon "Brandon Gillespie <email>brandon@FreeBSD.org</email>">
<!ENTITY a.brian "Brian Somers <email>brian@FreeBSD.org</email>">
<!ENTITY a.cawimm "Charles A. Wimmer <email>cawimm@FreeBSD.org</email>">
<!ENTITY a.cg "Cameron Grant <email>cg@FreeBSD.org</email>">
<!ENTITY a.charnier "Philippe Charnier <email>charnier@FreeBSD.org</email>">
<!ENTITY a.chris "Chris Costello <email>chris@FreeBSD.org</email>">
<!ENTITY a.chuck "Chuck Robey <email>chuckr@glue.umd.edu</email>">
<!ENTITY a.chuckr "Chuck Robey <email>chuckr@FreeBSD.org</email>">
<!ENTITY a.cpiazza "Chris Piazza <email>cpiazza@FreeBSD.org</email>">
<!ENTITY a.cracauer "Martin Cracauer <email>cracauer@FreeBSD.org</email>">
<!ENTITY a.csgr "Geoff Rehmet <email>csgr@FreeBSD.org</email>">
<!ENTITY a.cwt "Chris Timmons <email>cwt@FreeBSD.org</email>">
<!ENTITY a.danny "Daniel O'Callaghan <email>danny@FreeBSD.org</email>">
<!ENTITY a.darrenr "Darren Reed <email>darrenr@FreeBSD.org</email>">
<!ENTITY a.davidn "David Nugent <email>davidn@blaze.net.au</email>">
<!ENTITY a.dbaker "Daniel Baker <email>dbaker@FreeBSD.org</email>">
<!ENTITY a.dburr "Donald Burr <email>dburr@FreeBSD.org</email>">
<!ENTITY a.dcs "Daniel C. Sobral <email>dcs@FreeBSD.org</email>">
<!ENTITY a.deischen "Daniel Eischen <email>deischen@FreeBSD.org</email>">
<!ENTITY a.des "Dag-Erling C. Sm&oslash;rgrav <email>des@FreeBSD.org</email>">
<!ENTITY a.dfr "Doug Rabson <email>dfr@FreeBSD.org</email>">
<!ENTITY a.dg "David Greenman <email>dg@FreeBSD.org</email>">
<!ENTITY a.dick "Richard Seaman Jr. <email>dick@FreeBSD.org</email>">
<!ENTITY a.dillon "Matthew Dillon <email>dillon@FreeBSD.org</email>">
<!ENTITY a.dima "Dima Ruban <email>dima@FreeBSD.org</email>">
<!ENTITY a.dirk "Dirk Fr&ouml;mberg <email>dirk@FreeBSD.org</email>">
<!ENTITY a.dirkvangulik "Dirk-Willem van Gulik <email>Dirk.vanGulik@jrc.it</email>">
<!ENTITY a.dt "Dmitrij Tejblum <email>dt@FreeBSD.org</email>">
<!ENTITY a.dufault "Peter Dufault <email>dufault@FreeBSD.org</email>">
<!ENTITY a.dwhite "Doug White <email>dwhite@FreeBSD.org</email>">
<!ENTITY a.dyson "John Dyson <email>dyson@FreeBSD.org</email>">
<!ENTITY a.eivind "Eivind Eklund <email>eivind@FreeBSD.org</email>">
<!ENTITY a.ejc "Eric J. Chet <email>ejc@FreeBSD.org</email>">
<!ENTITY a.erich "Eric L. Hernes <email>erich@FreeBSD.org</email>">
<!ENTITY a.faq "FAQ Maintainer <email>faq@FreeBSD.org</email>">
<!ENTITY a.fenner "Bill Fenner <email>fenner@FreeBSD.org</email>">
<!ENTITY a.flathill "Seiichirou Hiraoka <email>flathill@FreeBSD.org</email>">
<!ENTITY a.foxfair "Howard F. Hu <email>foxfair@FreeBSD.org</email>">
<!ENTITY a.fsmp "Steve Passe <email>fsmp@FreeBSD.org</email>">
<!ENTITY a.gallatin "Andrew Gallatin <email>gallatin@FreeBSD.org</email>">
<!ENTITY a.gclarkii "Gary Clark II <email>gclarkii@FreeBSD.org</email>">
<!ENTITY a.gehenna "Masahide MAEKAWA <email>gehenna@FreeBSD.org</email>">
<!ENTITY a.gena "Gennady B. Sorokopud <email>gena@NetVision.net.il</email>">
<!ENTITY a.ghelmer "Guy Helmer <email>ghelmer@cs.iastate.edu</email>">
<!ENTITY a.gibbs "Justin T. Gibbs <email>gibbs@FreeBSD.org</email>">
<!ENTITY a.gj "Gary Jennejohn <email>gj@FreeBSD.org</email>">
<!ENTITY a.gpalmer "Gary Palmer <email>gpalmer@FreeBSD.org</email>">
<!ENTITY a.graichen "Thomas Graichen <email>graichen@FreeBSD.org</email>">
<!ENTITY a.green "Brian F. Feldman <email>green@FreeBSD.org</email>">
<!ENTITY a.grog "Greg Lehey <email>grog@FreeBSD.org</email>">
<!ENTITY a.gryphon "Coranth Gryphon <email>gryphon@healer.com</email>">
<!ENTITY a.guido "Guido van Rooij <email>guido@FreeBSD.org</email>">
<!ENTITY a.hanai "Hiroyuki HANAI <email>hanai@FreeBSD.org</email>">
<!ENTITY a.handy "Brian N. Handy <email>handy@sxt4.physics.montana.edu</email>">
<!ENTITY a.helbig "Wolfgang Helbig <email>helbig@FreeBSD.org</email>">
<!ENTITY a.hm "Hellmuth Michaelis <email>hm@FreeBSD.org</email>">
<!ENTITY a.hoek "Tim Vanderhoek <email>hoek@FreeBSD.org</email>">
<!ENTITY a.hosokawa "Tatsumi Hosokawa <email>hosokawa@FreeBSD.org</email>">
<!ENTITY a.hsu "Jeffrey Hsu <email>hsu@FreeBSD.org</email>">
<!ENTITY a.imp "Warner Losh <email>imp@FreeBSD.org</email>">
<!ENTITY a.itojun "Jun-ichiro Itoh <email>itojun@itojun.org</email>">
<!ENTITY a.iwasaki "Mitsuru IWASAKI <email>iwasaki@FreeBSD.org</email>">
<!ENTITY a.jasone "Jason Evans <email>jasone@FreeBSD.org</email>">
<!ENTITY a.jb "John Birrell <email>jb@cimlogic.com.au</email>">
<!ENTITY a.jdp "John Polstra <email>jdp@FreeBSD.org</email>">
<!ENTITY a.jehamby "Jake Hamby <email>jehamby@lightside.com</email>">
<!ENTITY a.jfieber "John Fieber <email>jfieber@FreeBSD.org</email>">
<!ENTITY a.jfitz "James FitzGibbon <email>jfitz@FreeBSD.org</email>">
<!ENTITY a.jgreco "Joe Greco <email>jgreco@FreeBSD.org</email>">
<!ENTITY a.jhay "John Hay <email>jhay@FreeBSD.org</email>">
<!ENTITY a.jhs "Julian Stacey <email>jhs@FreeBSD.org</email>">
<!ENTITY a.jim "Jim Mock <email>jim@FreeBSD.org</email>">
<!ENTITY a.jkh "Jordan K. Hubbard <email>jkh@FreeBSD.org</email>">
<!ENTITY a.jkoshy "Joseph Koshy <email>jkoshy@FreeBSD.org</email>">
<!ENTITY a.jlemon "Jonathan Lemon <email>jlemon@FreeBSD.org</email>">
<!ENTITY a.jlind "John Lind <email>john@starfire.MN.ORG</email>">
<!ENTITY a.jlrobin "James L. Robinson <email>jlrobin@FreeBSD.org</email>">
<!ENTITY a.jmacd "Joshua Peck Macdonald <email>jmacd@FreeBSD.org</email>">
<!ENTITY a.jmb "Jonathan M. Bresler <email>jmb@FreeBSD.org</email>">
<!ENTITY a.jmg "John-Mark Gurney <email>jmg@FreeBSD.org</email>">
<!ENTITY a.jmz "Jean-Marc Zucconi <email>jmz@FreeBSD.org</email>">
<!ENTITY a.joerg "J&ouml;rg Wunsch <email>joerg@FreeBSD.org</email>">
<!ENTITY a.john "John Cavanaugh <email>john@FreeBSD.org</email>">
<!ENTITY a.jraynard "James Raynard <email>jraynard@FreeBSD.org</email>">
<!ENTITY a.jseger "Justin Seger <email>jseger@FreeBSD.org</email>">
<!ENTITY a.julian "Julian Elischer <email>julian@FreeBSD.org</email>">
<!ENTITY a.jvh "Johannes Helander <email>jvh@FreeBSD.org</email>">
<!ENTITY a.karl "Karl Strickland <email>karl@FreeBSD.org</email>">
<!ENTITY a.kato "Takenori KATO <email>kato@FreeBSD.org</email>">
<!ENTITY a.kelly "Sean Kelly <email>kelly@plutotech.com</email>">
<!ENTITY a.ken "Kenneth D. Merry <email>ken@FreeBSD.org</email>">
<!ENTITY a.kevlo "Kevin Lo <email>kevlo@FreeBSD.org</email>">
<!ENTITY a.kjc "Kenjiro Cho <email>kjc@FreeBSD.org</email>">
<!ENTITY a.kris "Kris Kennaway <email>kris@FreeBSD.org</email>">
<!ENTITY a.kuriyama "Jun Kuriyama <email>kuriyama@FreeBSD.org</email>">
<!ENTITY a.lars "Lars Fredriksen <email>lars@FreeBSD.org</email>">
<!ENTITY a.lile "Larry Lile <email>lile@FreeBSD.org</email>">
<!ENTITY a.ljo "L Jonas Olsson <email>ljo@FreeBSD.org</email>">
<!ENTITY a.luoqi "Luoqi Chen <email>luoqi@FreeBSD.org</email>">
<!ENTITY a.marcel "Marcel Moolenaar <email>marcel@FreeBSD.org</email>">
<!ENTITY a.markm "Mark Murray <email>markm@FreeBSD.org</email>">
<!ENTITY a.martin "Martin Renters <email>martin@FreeBSD.org</email>">
<!ENTITY a.max "Masafumi NAKANE <email>max@FreeBSD.org</email>">
<!ENTITY a.mayo "Mark Mayo <email>mark@vmunix.com</email>">
<!ENTITY a.mbarkah "Ade Barkah <email>mbarkah@FreeBSD.org</email>">
<!ENTITY a.mckay "Stephen McKay <email>mckay@FreeBSD.org</email>">
<!ENTITY a.mckusick "Kirk McKusick <email>mckusick@FreeBSD.org</email>">
<!ENTITY a.md "Mark Dapoz <email>md@bsc.no</email>">
<!ENTITY a.mdodd "Matthew N. Dodd <email>winter@jurai.net</email>">
<!ENTITY a.mharo "Michael Haro <email>mharo@FreeBSD.org</email>">
<!ENTITY a.mjacob "Matthew Jacob <email>mjacob@FreeBSD.org</email>">
<!ENTITY a.mks "Mike Spengler <email>mks@FreeBSD.org</email>">
<!ENTITY a.motoyuki "Motoyuki Konno <email>motoyuki@FreeBSD.org</email>">
<!ENTITY a.mph "Matthew Hunt <email>mph@FreeBSD.org</email>">
<!ENTITY a.mpp "Mike Pritchard <email>mpp@FreeBSD.org</email>">
<!ENTITY a.msmith "Michael Smith <email>msmith@FreeBSD.org</email>">
<!ENTITY a.nate "Nate Williams <email>nate@FreeBSD.org</email>">
<!ENTITY a.nectar "Jacques Vidrine <email>nectar@FreeBSD.org</email>">
<!ENTITY a.newton "Mark Newton <email>newton@FreeBSD.org</email>">
<!ENTITY a.nhibma "Nick Hibma <email>n_hibma@FreeBSD.org</email>">
<!ENTITY a.nik "Nik Clayton <email>nik@FreeBSD.org</email>">
<!ENTITY a.nsayer "Nick Sayer <email>nsayer@FreeBSD.org</email>">
<!ENTITY a.nsj "Nate Johnson <email>nsj@FreeBSD.org</email>">
<!ENTITY a.nyan "Yoshihiro Takahashi <email>nyan@FreeBSD.org</email>">
<!ENTITY a.obrien "David O'Brien <email>obrien@FreeBSD.org</email>">
<!ENTITY a.olah "Andras Olah <email>olah@FreeBSD.org</email>">
<!ENTITY a.opsys "Chris Watson <email>opsys@open-systems.net</email>">
<!ENTITY a.paul "Paul Richards <email>paul@FreeBSD.org</email>">
<!ENTITY a.pb "Pierre Beyssac <email>pb@fasterix.freenix.org</email>">
<!ENTITY a.pds "Peter da Silva <email>pds@FreeBSD.org</email>">
<!ENTITY a.peter "Peter Wemm <email>peter@FreeBSD.org</email>">
<!ENTITY a.phk "Poul-Henning Kamp <email>phk@FreeBSD.org</email>">
<!ENTITY a.pjc "Peter Childs <email>pjchilds@imforei.apana.org.au</email>">
<!ENTITY a.proven "Chris Provenzano <email>proven@FreeBSD.org</email>">
<!ENTITY a.pst "Paul Traina <email>pst@FreeBSD.org</email>">
<!ENTITY a.rgrimes "Rodney Grimes <email>rgrimes@FreeBSD.org</email>">
<!ENTITY a.rhuff "Robert Huff <email>rhuff@cybercom.net</email>">
<!ENTITY a.ricardag "Ricardo AG <email>ricardag@ag.com.br</email>">
<!ENTITY a.rich "Rich Murphey <email>rich@FreeBSD.org</email>">
<!ENTITY a.rnordier "Robert Nordier <email>rnordier@FreeBSD.org</email>">
<!ENTITY a.roberto "Ollivier Robert <email>roberto@FreeBSD.org</email>">
<!ENTITY a.rse "Ralf S. Engelschall <email>rse@FreeBSD.org</email>">
<!ENTITY a.ru "Ruslan Ermilov <email>ru@FreeBSD.org</email>">
<!ENTITY a.sada "Kenji SADA <email>sada@FreeBSD.org</email>">
<!ENTITY a.scrappy "Marc G. Fournier <email>scrappy@FreeBSD.org</email>">
<!ENTITY a.se "Stefan Esser <email>se@FreeBSD.org</email>">
<!ENTITY a.sef "Sean Eric Fagan <email>sef@FreeBSD.org</email>">
<!ENTITY a.sheldonh "Sheldon Hearn <email>sheldonh@FreeBSD.org</email>">
<!ENTITY a.shige "Shigeyuki Fukushima <email>shige@FreeBSD.org</email>">
<!ENTITY a.shin "Yoshinobu Inoue <email>shin@FreeBSD.org</email>">
<!ENTITY a.simokawa "Hidetoshi Shimokawa <email>simokawa@FreeBSD.org</email>">
<!ENTITY a.smace "Scott Mace <email>smace@FreeBSD.org</email>">
<!ENTITY a.smpatel "Sujal Patel <email>smpatel@FreeBSD.org</email>">
<!ENTITY a.sos "S&oslash;ren Schmidt <email>sos@FreeBSD.org</email>">
<!ENTITY a.stark "Gene Stark <email>stark@FreeBSD.org</email>">
<!ENTITY a.stb "Stefan Bethke <email>stb@FreeBSD.org</email>">
<!ENTITY a.steve "Steve Price <email>steve@FreeBSD.org</email>">
<!ENTITY a.sumikawa "Munechika Sumikawa <email>sumikawa@FreeBSD.org</email>">
<!ENTITY a.swallace "Steven Wallace <email>swallace@FreeBSD.org</email>">
<!ENTITY a.tanimura "Seigo Tanimura <email>tanimura@FreeBSD.org</email>">
<!ENTITY a.taoka "Satoshi Taoka <email>taoka@FreeBSD.org</email>">
<!ENTITY a.tedm "Ted Mittelstaedt <email>tedm@FreeBSD.org</email>">
<!ENTITY a.tegge "Tor Egge <email>tegge@FreeBSD.org</email>">
<!ENTITY a.tg "Thomas Gellekum <email>tg@FreeBSD.org</email>">
<!ENTITY a.thepish "Peter Hawkins <email>thepish@FreeBSD.org</email>">
<!ENTITY a.tom "Tom Hukins <email>tom@FreeBSD.org</email>">
<!ENTITY a.torstenb "Torsten Blum <email>torstenb@FreeBSD.org</email>">
<!ENTITY a.truckman "Don &ldquo;Truck&rdquo; Lewis <email>truckman@FreeBSD.org</email>">
<!ENTITY a.ugen "Ugen J.S.Antsilevich <email>ugen@FreeBSD.org</email>">
<!ENTITY a.uhclem "Frank Durda IV <email>uhclem@FreeBSD.org</email>">
<!ENTITY a.ulf "Ulf Zimmermann <email>ulf@FreeBSD.org</email>">
<!ENTITY a.vanilla "Vanilla I. Shu <email>vanilla@FreeBSD.org</email>">
<!ENTITY a.wes "Wes Peters <email>wes@FreeBSD.org</email>">
<!ENTITY a.whiteside "Don Whiteside <email>whiteside@acm.org</email>">
<!ENTITY a.wilko "Wilko Bulte <email>wilko@yedi.iaf.nl</email>">
<!ENTITY a.wlloyd "Bill Lloyd <email>wlloyd@mpd.ca</email>">
<!ENTITY a.wollman "Garrett Wollman <email>wollman@FreeBSD.org</email>">
<!ENTITY a.wosch "Wolfram Schneider <email>wosch@FreeBSD.org</email>">
<!ENTITY a.wpaul "Bill Paul <email>wpaul@FreeBSD.org</email>">
<!ENTITY a.yokota "Kazutaka YOKOTA <email>yokota@FreeBSD.org</email>">

View file

@ -1,621 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.8 1999-06-15 20:37:38 mpp Exp $
-->
<chapter id="backups">
<title>Backups</title>
<para>Issues of hardware compatibility are among the most troublesome in the
computer industry today and FreeBSD is by no means immune to trouble. In
this respect, FreeBSD's advantage of being able to run on inexpensive
commodity PC hardware is also its liability when it comes to support for
the amazing variety of components on the market. While it would be
impossible to provide a exhaustive listing of hardware that FreeBSD
supports, this section serves as a catalog of the device drivers included
with FreeBSD and the hardware each drivers supports. Where possible and
appropriate, notes about specific products are included. You may also
want to refer to <link linkend="kernelconfig-config"> the kernel
configuration file</link> section in this handbook for a list of
supported devices.</para>
<para>As FreeBSD is a volunteer project without a funded testing department,
we depend on you, the user, for much of the information contained in this
catalog. If you have direct experience of hardware that does or does not
work with FreeBSD, please let us know by sending e-mail to the &a.doc;.
Questions about supported hardware should be directed to the &a.questions
(see <link linkend="eresources-mail">Mailing Lists</link> for more
information). When submitting information or asking a question, please
remember to specify exactly what version of FreeBSD you are using and
include as many details of your hardware as possible.</para>
<sect1>
<title>* What about backups to floppies?</title>
<para></para>
</sect1>
<sect1 id="backups-tapebackups">
<title>Tape Media</title>
<para>The major tape media are the 4mm, 8mm, QIC, mini-cartridge and
DLT.</para>
<sect2 id="backups-tapebackups-4mm">
<title>4mm (DDS: Digital Data Storage)</title>
<para>4mm tapes are replacing QIC as the workstation backup media of
choice. This trend accelerated greatly when Conner purchased Archive,
a leading manufacturer of QIC drives, and then stopped production of
QIC drives. 4mm drives are small and quiet but do not have the
reputation for reliability that is enjoyed by 8mm drives. The
cartridges are less expensive and smaller (3 x 2 x 0.5 inches, 76 x 51
x 12 mm) than 8mm cartridges. 4mm, like 8mm, has comparatively short
head life for the same reason, both use helical scan.</para>
<para>Data thruput on these drives starts ~150kB/s, peaking at ~500kB/s.
Data capacity starts at 1.3 GB and ends at 2.0 GB. Hardware
compression, available with most of these drives, approximately
doubles the capacity. Multi-drive tape library units can have 6
drives in a single cabinet with automatic tape changing. Library
capacities reach 240 GB.</para>
<para>4mm drives, like 8mm drives, use helical-scan. All the benefits
and drawbacks of helical-scan apply to both 4mm and 8mm drives.</para>
<para>Tapes should be retired from use after 2,000 passes or 100 full
backups.</para>
</sect2>
<sect2 id="backups-tapebackups-8mm">
<title>8mm (Exabyte)</title>
<para>8mm tapes are the most common SCSI tape drives; they are the best
choice of exchanging tapes. Nearly every site has an exabyte 2 GB 8mm
tape drive. 8mm drives are reliable, convenient and quiet. Cartridges
are inexpensive and small (4.8 x 3.3 x 0.6 inches; 122 x 84 x 15 mm).
One downside of 8mm tape is relatively short head and tape life due to
the high rate of relative motion of the tape across the heads.</para>
<para>Data thruput ranges from ~250kB/s to ~500kB/s. Data sizes start
at 300 MB and go up to 7 GB. Hardware compression, available with
most of these drives, approximately doubles the capacity. These
drives are available as single units or multi-drive tape libraries
with 6 drives and 120 tapes in a single cabinet. Tapes are changed
automatically by the unit. Library capacities reach 840+ GB.</para>
<para>Data is recorded onto the tape using helical-scan, the heads are
positioned at an angle to the media (approximately 6 degrees). The
tape wraps around 270 degrees of the spool that holds the heads. The
spool spins while the tape slides over the spool. The result is a
high density of data and closely packed tracks that angle across the
tape from one edge to the other.</para>
</sect2>
<sect2 id="backups-tapebackups-qic">
<title>QIC</title>
<para>QIC-150 tapes and drives are, perhaps, the most common tape drive
and media around. QIC tape drives are the least expensive "serious"
backup drives. The downside is the cost of media. QIC tapes are
expensive compared to 8mm or 4mm tapes, up to 5 times the price per GB
data storage. But, if your needs can be satisfied with a half-dozen
tapes, QIC may be the correct choice. QIC is the
<emphasis>most</emphasis> common tape drive. Every site has a QIC
drive of some density or another. Therein lies the rub, QIC has a
large number of densities on physically similar (sometimes identical)
tapes. QIC drives are not quiet. These drives audibly seek before
they begin to record data and are clearly audible whenever reading,
writing or seeking. QIC tapes measure (6 x 4 x 0.7 inches; 15.2 x
10.2 x 1.7 mm). <link
linkend="backups-tapebackups-mini">Mini-cartridges</link>, which
also use 1/4" wide tape are discussed separately. Tape libraries and
changers are not available.</para>
<para>Data thruput ranges from ~150kB/s to ~500kB/s. Data capacity
ranges from 40 MB to 15 GB. Hardware compression is available on many
of the newer QIC drives. QIC drives are less frequently installed;
they are being supplanted by DAT drives.</para>
<para>Data is recorded onto the tape in tracks. The tracks run along
the long axis of the tape media from one end to the other. The number
of tracks, and therefore the width of a track, varies with the tape's
capacity. Most if not all newer drives provide backward-compatibility
at least for reading (but often also for writing). QIC has a good
reputation regarding the safety of the data (the mechanics are simpler
and more robust than for helical scan drives).</para>
<para>Tapes should be retired from use after 5,000 backups.</para>
</sect2>
<sect2 id="backups-tapebackups-mini">
<title>* Mini-Cartridge</title>
<para></para>
</sect2>
<sect2 id="backups-tapebackups-dlt">
<title>DLT</title>
<para>DLT has the fastest data transfer rate of all the drive types
listed here. The 1/2" (12.5mm) tape is contained in a single spool
cartridge (4 x 4 x 1 inches; 100 x 100 x 25 mm). The cartridge has a
swinging gate along one entire side of the cartridge. The drive
mechanism opens this gate to extract the tape leader. The tape leader
has an oval hole in it which the drive uses to "hook" the tape. The
take-up spool is located inside the tape drive. All the other tape
cartridges listed here (9 track tapes are the only exception) have
both the supply and take-up spools located inside the tape cartridge
itself.</para>
<para>Data thruput is approximately 1.5MB/s, three times the thruput of
4mm, 8mm, or QIC tape drives. Data capacities range from 10GB to 20GB
for a single drive. Drives are available in both multi-tape changers
and multi-tape, multi-drive tape libraries containing from 5 to 900
tapes over 1 to 20 drives, providing from 50GB to 9TB of
storage.</para>
<para>Data is recorded onto the tape in tracks parallel to the direction
of travel (just like QIC tapes). Two tracks are written at once.
Read/write head lifetimes are relatively long; once the tape stops
moving, there is no relative motion between the heads and the
tape.</para>
</sect2>
<sect2>
<title>Using a new tape for the first time</title>
<para>The first time that you try to read or write a new, completely
blank tape, the operation will fail. The console messages should be
similar to:</para>
<screen>sa0(ncr1:4:0): NOT READY asc:4,1
sa0(ncr1:4:0): Logical unit is in process of becoming ready</screen>
<para>The tape does not contain an Identifier Block (block number 0).
All QIC tape drives since the adoption of QIC-525 standard write an
Identifier Block to the tape. There are two solutions:</para>
<para><command>mt fsf 1</command> causes the tape drive to write an
Identifier Block to the tape.</para>
<para>Use the front panel button to eject the tape.</para>
<para>Re-insert the tape and &man.dump.8; data to the tape.</para>
<para>&man.dump.8; will report <literal>DUMP: End of tape
detected</literal> and the console will show: <literal>HARDWARE
FAILURE info:280 asc:80,96</literal></para>
<para>rewind the tape using: <command>mt rewind</command></para>
<para>Subsequent tape operations are successful.</para>
</sect2>
</sect1>
<sect1 id="backup-programs">
<title>Backup Programs</title>
<para>The three major programs are
&man.dump.8;,
&man.tar.1;,
and
&man.cpio.1;.</para>
<sect2>
<title>Dump and Restore</title>
<para>&man.dump.8; and &man.restore.8; are the traditional Unix backup
programs. They operate on the drive as a collection of disk blocks,
below the abstractions of files, links and directories that are
created by the filesystems. &man.dump.8; backs up devices, entire
filesystems, not parts of a filesystem and not directory trees that
span more than one filesystem, using either soft links &man.ln.1; or
mounting one filesystem onto another. &man.dump.8; does not write
files and directories to tape, but rather writes the data blocks that
are the building blocks of files and directories. &man.dump.8; has
quirks that remain from its early days in Version 6 of ATT Unix (circa
1975). The default parameters are suitable for 9-track tapes (6250
bpi), not the high-density media available today (up to 62,182 ftpi).
These defaults must be overridden on the command line to utilize the
capacity of current tape drives.</para>
<para>&man.rdump.8; and &man.rrestore.8; backup data across the network
to a tape drive attached to another computer. Both programs rely upon
&man.rcmd.3; and &man.ruserok.3; to access the remote tape drive.
Therefore, the user performing the backup must have
<literal>rhosts</literal> access to the remote computer. The
arguments to &man.rdump.8; and &man.rrestore.8; must suitable to use
on the remote computer. (e.g. When <command>rdump</command>'ing from
a FreeBSD computer to an Exabyte tape drive connected to a Sun called
<hostid>komodo</hostid>, use: <command>/sbin/rdump 0dsbfu 54000 13000
126 komodo:/dev/nrsa8 /dev/rda0a 2>&amp;1</command>) Beware: there
are security implications to allowing <literal>rhosts</literal>
commands. Evaluate your situation carefully.</para>
</sect2>
<sect2>
<title>Tar</title>
<para>&man.tar.1; also dates back to Version 6 of ATT Unix (circa 1975).
&man.tar.1; operates in cooperation with the filesystem; &man.tar.1;
writes files and directories to tape. &man.tar.1; does not support the
full range of options that are available from &man.cpio.1;, but
&man.tar.1; does not require the unusual command pipeline that
&man.cpio.1; uses.</para>
<para>Most versions of &man.tar.1; do not support backups across the
network. The GNU version of &man.tar.1;, which FreeBSD utilizes,
supports remote devices using the same syntax as &man.rdump.8;. To
&man.tar.1; to an Exabyte tape drive connected to a Sun called
<hostid>komodo</hostid>, use: <command>/usr/bin/tar cf
komodo:/dev/nrsa8 . 2>&amp;1</command>. For versions without remote
device support, you can use a pipeline and &man.rsh.1; to send the
data to a remote tape drive. (XXX add an example command)</para>
</sect2>
<sect2>
<title>Cpio</title>
<para>&man.cpio.1; is the original Unix file interchange tape program
for magnetic media. &man.cpio.1; has options (among many others) to
perform byte-swapping, write a number of different archives format,
and pipe the data to other programs. This last feature makes
&man.cpio.1; and excellent choice for installation media.
&man.cpio.1; does not know how to walk the directory tree and a list
of files must be provided through <filename>stdin</filename>.</para>
<para>&man.cpio.1; does not support backups across the network. You can
use a pipeline and &man.rsh.1; to send the data to a remote tape
drive. (XXX add an example command)</para>
</sect2>
<sect2>
<title>Pax</title>
<para>&man.pax.1; is IEEE/POSIX's answer to &man.tar.1; and
&man.cpio.1;. Over the years the various versions of &man.tar.1;
and &man.cpio.1; have gotten slightly incompatible. So rather than
fight it out to fully standardize them, POSIX created a new archive
utility. &man.pax.1; attempts to read and write many of the various
&man.cpio.1; and &man.tar.1; formats, plus new formats of its own.
Its command set more resembles &man.cpio.1; than &man.tar.1;.</para>
</sect2>
<sect2 id="backups-programs-amanda">
<title>Amanda</title>
<para><ulink url="../ports/misc.html#amanda-2.4.0">Amanda</ulink>
(Advanced Maryland Network Disk Archiver) is a client/server backup
system, rather than a single program. An Amanda server will backup to
a single tape drive any number of computers that have Amanda clients
and network communications with the Amanda server. A common problem
at locations with a number of large disks is the length of time
required to backup to data directly to tape exceeds the amount of time
available for the task. Amanda solves this problem. Amanda can use a
"holding disk" to backup several filesystems at the same time. Amanda
creates "archive sets": a group of tapes used over a period of time to
create full backups of all the filesystems listed in Amanda's
configuration file. The "archive set" also contains nightly
incremental (or differential) backups of all the filesystems.
Restoring a damaged filesystem requires the most recent full backup
and the incremental backups.</para>
<para>The configuration file provides fine control backups and the
network traffic that Amanda generates. Amanda will use any of the
above backup programs to write the data to tape. Amanda is available
as either a port or a package, it is not installed by default.</para>
</sect2>
<sect2>
<title>Do nothing</title>
<para>&ldquo;Do nothing&rdquo; is not a computer program, but it is the
most widely used backup strategy. There are no initial costs. There
is no backup schedule to follow. Just say no. If something happens
to your data, grin and bear it!</para>
<para>If your time and your data is worth little to nothing, then
&ldquo;Do nothing&rdquo; is the most suitable backup program for your
computer. But beware, Unix is a useful tool, you may find that within
six months you have a collection of files that are valuable to
you.</para>
<para>&ldquo;Do nothing&rdquo; is the correct backup method for
<filename>/usr/obj</filename> and other directory trees that can be
exactly recreated by your computer. An example is the files that
comprise these handbook pages-they have been generated from
<acronym>SGML</acronym> input files. Creating backups of these
<acronym>HTML</acronym> files is not necessary. The
<acronym>SGML</acronym> source files are backed up regularly.</para>
</sect2>
<sect2>
<title>Which Backup Program is Best?</title>
<para>&man.dump.8; <emphasis>Period.</emphasis> Elizabeth D. Zwicky
torture tested all the backup programs discussed here. The clear
choice for preserving all your data and all the peculiarities of Unix
filesystems is &man.dump.8;. Elizabeth created filesystems containing
a large variety of unusual conditions (and some not so unusual ones)
and tested each program by do a backup and restore of that
filesystems. The peculiarities included: files with holes, files with
holes and a block of nulls, files with funny characters in their
names, unreadable and unwritable files, devices, files that change
size during the backup, files that are created/deleted during the
backup and more. She presented the results at LISA V in Oct. 1991.
See <ulink
url="http://reality.sgi.com/zwicky_neu/testdump.doc.html">torture-testing
Backup and Archive Programs</ulink>.</para>
</sect2>
<sect2>
<title>Emergency Restore Procedure</title>
<sect3>
<title>Before the Disaster</title>
<para>There are only four steps that you need to perform in
preparation for any disaster that may occur.</para>
<para>First, print the disklabel from each of your disks
(<command>e.g. disklabel da0 | lpr</command>), your filesystem table
(<command>/etc/fstab</command>) and all boot messages, two copies of
each.</para>
<para>Second, determine that the boot and fixit floppies
(<filename>boot.flp</filename> and <filename>fixit.flp</filename>)
have all your devices. The easiest way to check is to reboot your
machine with the boot floppy in the floppy drive and check the boot
messages. If all your devices are listed and functional, skip on to
step three.</para>
<para>Otherwise, you have to create two custom bootable floppies which
has a kernel that can mount your all of your disks and access your
tape drive. These floppies must contain:
&man.fdisk.8;, &man.disklabel.8;, &man.newfs.8;, &man.mount.8;, and
whichever backup program you use. These programs must be statically
linked. If you use &man.dump.8;, the floppy must contain
&man.restore.8;.</para>
<para>Third, create backup tapes regularly. Any changes that you make
after your last backup may be irretrievably lost. Write-protect the
backup tapes.</para>
<para>Fourth, test the floppies (either <filename>boot.flp</filename>
and <filename>fixit.flp</filename> or the two custom bootable
floppies you made in step two.) and backup tapes. Make notes of the
procedure. Store these notes with the bootable floppy, the
printouts and the backup tapes. You will be so distraught when
restoring that the notes may prevent you from destroying your backup
tapes (How? In place of <command>tar xvf /dev/rsa0</command>, you
might accidently type <command>tar cvf /dev/rsa0</command> and
over-write your backup tape).</para>
<para>For an added measure of security, make bootable floppies and two
backup tapes each time. Store one of each at a remote location. A
remote location is NOT the basement of the same office building. A
number of firms in the World Trade Center learned this lesson the
hard way. A remote location should be physically separated from
your computers and disk drives by a significant distance.</para>
<para>An example script for creating a bootable floppy:</para>
<programlisting>
<![ CDATA [#!/bin/sh
#
# create a restore floppy
#
# format the floppy
#
PATH=/bin:/sbin:/usr/sbin:/usr/bin
fdformat -q fd0
if [ $? -ne 0 ]
then
echo "Bad floppy, please use a new one"
exit 1
fi
# place boot blocks on the floppy
#
disklabel -w -B /dev/rfd0c fd1440
#
# newfs the one and only partition
#
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/rfd0a
#
# mount the new floppy
#
mount /dev/fd0a /mnt
#
# create required directories
#
mkdir /mnt/dev
mkdir /mnt/bin
mkdir /mnt/sbin
mkdir /mnt/etc
mkdir /mnt/root
mkdir /mnt/mnt # for the root partition
mkdir /mnt/tmp
mkdir /mnt/var
#
# populate the directories
#
if [ ! -x /sys/compile/MINI/kernel ]
then
cat << EOM
The MINI kernel does not exist, please create one.
Here is an example config file:
#
# MINI -- A kernel to get FreeBSD on onto a disk.
#
machine "i386"
cpu "I486_CPU"
ident MINI
maxusers 5
options INET # needed for _tcp _icmpstat _ipstat
# _udpstat _tcpstat _udb
options FFS #Berkeley Fast File System
options FAT_CURSOR #block cursor in syscons or pccons
options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device
options NCONS=2 #1 virtual consoles
options USERCONFIG #Allow user configuration with -c XXX
config kernel root on da0 swap on da0 and da1 dumps on da0
controller isa0
controller pci0
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
disk fd0 at fdc0 drive 0
controller ncr0
controller scbus0
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
device npx0 at isa? port "IO_NPX" irq 13 vector npxintr
device da0
device da1
device da2
device sa0
pseudo-device loop # required by INET
pseudo-device gzip # Exec gzipped a.out's
EOM
exit 1
fi
cp -f /sys/compile/MINI/kernel /mnt
gzip -c -best /sbin/init > /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore
gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync
cp /root/.profile /mnt/root
cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV
chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore
#
# create the devices nodes
#
cd /mnt/dev
./MAKEDEV std
./MAKEDEV da0
./MAKEDEV da1
./MAKEDEV da2
./MAKEDEV sa0
./MAKEDEV pty0
cd /
#
# create minimum filesystem table
#
cat > /mnt/etc/fstab <<EOM
/dev/fd0a / ufs rw 1 1
EOM
#
# create minimum passwd file
#
cat > /mnt/etc/passwd <<EOM
root:*:0:0:Charlie &:/root:/bin/sh
EOM
cat > /mnt/etc/master.passwd <<EOM
root::0:0::0:0:Charlie &:/root:/bin/sh
EOM
chmod 600 /mnt/etc/master.passwd
chmod 644 /mnt/etc/passwd
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd
#
# umount the floppy and inform the user
#
/sbin/umount /mnt]]></programlisting>
</sect3>
<sect3>
<title>After the Disaster</title>
<para>The key question is: did your hardware survive? You have been
doing regular backups so there is no need to worry about the
software.</para>
<para>If the hardware has been damaged. First, replace those parts
that have been damaged.</para>
<para>If your hardware is okay, check your floppies. If you are using
a custom boot floppy, boot single-user (type <literal>-s</literal>
at the <prompt>boot:</prompt> prompt). Skip the following
paragraph.</para>
<para>If you are using the <filename>boot.flp</filename> and
<filename>fixit.flp</filename> floppies, keep reading. Insert the
<filename>boot.flp</filename> floppy in the first floppy drive and
boot the computer. The original install menu will be displayed on
the screen. Select the <literal>Fixit--Repair mode with CDROM or
floppy.</literal> option. Insert the
<filename>fixit.flp</filename> when prompted.
<command>restore</command> and the other programs that you need are
located in <filename>/mnt2/stand</filename>.</para>
<para>Recover each filesystem separately.</para>
<para>Try to &man.mount.8; (e.g. <command>mount /dev/da0a
/mnt</command>) the root partition of your first disk. If the
disklabel was damaged, use &man.disklabel.8; to re-partition and
label the disk to match the label that your printed and saved. Use
&man.newfs.8; to re-create the filesystems. Re-mount the root
partition of the floppy read-write (<command>mount -u -o rw
/mnt</command>). Use your backup program and backup tapes to
recover the data for this filesystem (e.g. <command>restore vrf
/dev/sa0</command>). Unmount the filesystem (e.g. <command>umount
/mnt</command>) Repeat for each filesystem that was
damaged.</para>
<para>Once your system is running, backup your data onto new tapes.
Whatever caused the crash or data loss may strike again. An another
hour spent now, may save you from further distress later.</para>
</sect3>
<sect3>
<title>* I did not prepare for the Disaster, What Now?</title>
<para></para>
</sect3>
</sect2>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,139 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.9 1999-04-08 21:30:16 nik Exp $
-->
<chapter id="basics">
<title>Unix Basics</title>
<sect1 id="basics-man">
<title>The Online Manual</title>
<para>The most comprehensive documentation on FreeBSD is in the form of
<emphasis>man pages</emphasis>. Nearly every program on the system
comes with a short reference manual explaining the basic operation and
various arguments. These manuals can be view with the
<command>man</command> command. Use of the <command>man</command>
command is simple:</para>
<screen>&prompt.user; <userinput>man <replaceable>command</replaceable></userinput></screen>
<para><replaceable>command</replaceable> is the name of the command you
wish to learn about. For example, to learn more about
<command>ls</command> command type:</para>
<screen>&prompt.user; <userinput>man ls</userinput></screen>
<para>The online manual is divided up into numbered sections:</para>
<orderedlist>
<listitem>
<para>User commands</para>
</listitem>
<listitem>
<para>System calls and error numbers</para>
</listitem>
<listitem>
<para>Functions in the C libraries</para>
</listitem>
<listitem>
<para>Device drivers</para>
</listitem>
<listitem>
<para>File formats</para>
</listitem>
<listitem>
<para>Games and other diversions</para>
</listitem>
<listitem>
<para>Miscellaneous information</para>
</listitem>
<listitem>
<para>System maintenance and operation commands</para>
</listitem>
<listitem>
<para>Kernel developers</para>
</listitem>
</orderedlist>
<para>In some cases, the same topic may appear in more than one section of
the on-line manual. For example, there is a <command>chmod</command>
user command and a <function>chmod()</function> system call. In this
case, you can tell the <command>man</command> command which one you want
by specifying the section:</para>
<screen>&prompt.user; <userinput>man 1 chmod</userinput></screen>
<para>This will display the manual page for the user command
<command>chmod</command>. References to a particular section of the
on-line manual are traditionally placed in parenthesis in written
documentation, so &man.chmod.1; refers to the
<command>chmod</command> user command and &man.chmod.2; refers to the
system call.</para>
<para>This is fine if you know the name of the command and simply wish to
know how to use it, but what if you cannot recall the command name? You
can use <command>man</command> to search for keywords in the command
<emphasis>descriptions</emphasis> by using the <option>-k</option>
switch:</para>
<screen>&prompt.user; <userinput>man -k mail</userinput></screen>
<para>With this command you will be presented with a list of commands that
have the keyword &ldquo;mail&rdquo; in their descriptions. This is
actually functionally equivalent to using the <command>apropos</command>
command.</para>
<para>So, you are looking at all those fancy commands in
<filename>/usr/bin</filename> but do not even have the faintest idea
what most of them actually do? Simply do a
<screen>&prompt.user; <userinput>cd /usr/bin; man -f *</userinput></screen>
or
<screen>&prompt.user; <userinput>cd /usr/bin; whatis *</userinput></screen>
which does the same thing.</para>
</sect1>
<sect1 id="basics-info">
<title>GNU Info Files</title>
<para>FreeBSD includes many applications and utilities produced by the
Free Software Foundation (FSF). In addition to man pages, these
programs come with more extensive hypertext documents called
&ldquo;info&rdquo; files which can be viewed with the
<command>info</command> command or, if you installed
<command>emacs</command>, the info mode of
<command>emacs</command>.</para>
<para>To use the &man.info.1; command, simply type:</para>
<screen>&prompt.user; <userinput>info</userinput></screen>
<para>For a brief introduction, type <userinput>h</userinput>. For a
quick command reference, type <userinput>?</userinput>.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,478 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.13 1999-08-05 20:48:08 nik Exp $
-->
<chapter id="bibliography">
<title>Bibliography</title>
<para>While the manual pages provide the definitive reference for individual
pieces of the FreeBSD operating system, they are notorious for not
illustrating how to put the pieces together to make the whole operating
system run smoothly. For this, there is no substitute for a good book on
UNIX system administration and a good users' manual.</para>
<sect1>
<title>Books &amp; Magazines Specific to FreeBSD</title>
<para><emphasis>International books &amp;
Magazines:</emphasis></para>
<itemizedlist>
<listitem>
<para><ulink
URL="http://freebsd.csie.nctu.edu.tw/~jdli/book.html">Using
FreeBSD</ulink> (in Chinese).</para>
</listitem>
<listitem>
<para>FreeBSD for PC 98'ers (in Japanese), published by SHUWA System
Co, LTD. ISBN 4-87966-468-5 C3055 P2900E.</para>
</listitem>
<listitem>
<para>FreeBSD (in Japanese), published by CUTT. ISBN 4-906391-22-2
C3055 P2400E.</para>
</listitem>
<listitem>
<para><ulink
URL="http://www.shoeisha.co.jp/pc/index/shinkan/97_05_06.htm">Complete Introduction to FreeBSD</ulink> (in Japanese), published by <ulink URL="http://www.shoeisha.co.jp/">Shoeisha Co., Ltd</ulink>. ISBN 4-88135-473-6 P3600E.</para>
</listitem>
<listitem>
<para><ulink
URL="http://www.ascii.co.jp/pb/book1/shinkan/detail/1322785.html">Personal UNIX Starter Kit FreeBSD</ulink> (in Japanese), published by <ulink URL="http://www.ascii.co.jp/">ASCII</ulink>. ISBN 4-7561-1733-3 P3000E.</para>
</listitem>
<listitem>
<para>FreeBSD Handbook (Japanese translation), published by <ulink
URL="http://www.ascii.co.jp/">ASCII</ulink>. ISBN 4-7561-1580-2
P3800E.</para>
</listitem>
<listitem>
<para>FreeBSD mit Methode (in German), published by Computer und
Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.</para>
</listitem>
<listitem>
<para><ulink
url="http://www.pc.mycom.co.uk/FreeBSD/install-manual.html">FreeBSD Install and Utilization Manual</ulink> (in Japanese), published by <ulink url="http://www.pc.mycom.co.jp/">Mainichi Communications Inc.</ulink>.</para>
</listitem>
</itemizedlist>
<para><emphasis>English language books &amp; Magazines:</emphasis></para>
<itemizedlist>
<listitem>
<para><ulink
URL="http://www.cdrom.com/titles/freebsd/bsdbook2.phtml">The
Complete FreeBSD</ulink>, published by <ulink
URL="http://www.cdrom.com">Walnut Creek CDROM</ulink>.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1>
<title>Users' Guides</title>
<itemizedlist>
<listitem>
<para>Computer Systems Research Group, UC Berkeley. <emphasis>4.4BSD
User's Reference Manual</emphasis>. O'Reilly &amp; Associates,
Inc., 1994. ISBN 1-56592-075-9</para>
</listitem>
<listitem>
<para>Computer Systems Research Group, UC Berkeley. <emphasis>4.4BSD
User's Supplementary Documents</emphasis>. O'Reilly &amp;
Associates, Inc., 1994. ISBN 1-56592-076-7</para>
</listitem>
<listitem>
<para><emphasis>UNIX in a Nutshell</emphasis>. O'Reilly &amp;
Associates, Inc., 1990. ISBN 093717520X</para>
</listitem>
<listitem>
<para>Mui, Linda. <emphasis>What You Need To Know When You Can't Find
Your UNIX System Administrator</emphasis>. O'Reilly &amp;
Associates, Inc., 1995. ISBN 1-56592-104-6</para>
</listitem>
<listitem>
<para><ulink URL="http://www-wks.acs.ohio-state.edu/">Ohio State
University</ulink> has written a <ulink
URL="http://www-wks.acs.ohio-state.edu/unix_course/unix.html">UNIX
Introductory Course</ulink> which is available online in HTML and
postscript format.</para>
</listitem>
<listitem>
<para><ulink url="http://www.jp.FreeBSD.org/">Jpman Project, Japan
FreeBSD Users Group</ulink>. <ulink
url="http://www.pc.mycom.co.jp/FreeBSD/urm.html">FreeBSD User's
Reference Manual</ulink> (Japanese translation). <ulink
url="http://www.pc.mycom.co.jp/">Mainichi Communications
Inc.</ulink>, 1998. ISBN4-8399-0088-4 P3800E.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1>
<title>Administrators' Guides</title>
<itemizedlist>
<listitem>
<para>Albitz, Paul and Liu, Cricket. <emphasis>DNS and
BIND</emphasis>, 2nd Ed. O'Reilly &amp; Associates, Inc., 1997.
ISBN 1-56592-236-0</para>
</listitem>
<listitem>
<para>Computer Systems Research Group, UC Berkeley. <emphasis>4.4BSD
System Manager's Manual</emphasis>. O'Reilly &amp; Associates,
Inc., 1994. ISBN 1-56592-080-5</para>
</listitem>
<listitem>
<para>Costales, Brian, et al. <emphasis>Sendmail</emphasis>, 2nd Ed.
O'Reilly &amp; Associates, Inc., 1997. ISBN 1-56592-222-0</para>
</listitem>
<listitem>
<para>Frisch, &AElig;leen. <emphasis>Essential System
Administration</emphasis>, 2nd Ed. O'Reilly &amp; Associates,
Inc., 1995. ISBN 1-56592-127-5</para>
</listitem>
<listitem>
<para>Hunt, Craig. <emphasis>TCP/IP Network
Administration</emphasis>. O'Reilly &amp; Associates, Inc., 1992.
ISBN 0-937175-82-X</para>
</listitem>
<listitem>
<para>Nemeth, Evi. <emphasis>UNIX System Administration
Handbook</emphasis>. 2nd Ed. Prentice Hall, 1995. ISBN
0131510517</para>
</listitem>
<listitem>
<para>Stern, Hal <emphasis>Managing NFS and NIS</emphasis> O'Reilly
&amp; Associates, Inc., 1991. ISBN 0-937175-75-7</para>
</listitem>
<listitem>
<para><ulink url="http://www.jp.FreeBSD.org/">Jpman Project, Japan
FreeBSD Users Group</ulink>. <ulink
url="http://www.pc.mycom.co.jp/FreeBSD/sam.html">FreeBSD System
Administrator's Manual</ulink> (Japanese translation). <ulink
url="http://www.pc.mycom.co.jp/">Mainichi Communications
Inc.</ulink>, 1998. ISBN4-8399-0109-0 P3300E.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1>
<title>Programmers' Guides</title>
<itemizedlist>
<listitem>
<para>Asente, Paul. <emphasis>X Window System Toolkit</emphasis>.
Digital Press. ISBN 1-55558-051-3</para>
</listitem>
<listitem>
<para>Computer Systems Research Group, UC Berkeley. <emphasis>4.4BSD
Programmer's Reference Manual</emphasis>. O'Reilly &amp;
Associates, Inc., 1994. ISBN 1-56592-078-3</para>
</listitem>
<listitem>
<para>Computer Systems Research Group, UC Berkeley. <emphasis>4.4BSD
Programmer's Supplementary Documents</emphasis>. O'Reilly &amp;
Associates, Inc., 1994. ISBN 1-56592-079-1</para>
</listitem>
<listitem>
<para>Harbison, Samuel P. and Steele, Guy L. Jr. <emphasis>C: A
Reference Manual</emphasis>. 4rd ed. Prentice Hall, 1995.
ISBN 0-13-326224-3</para>
</listitem>
<listitem>
<para>Kernighan, Brian and Dennis M. Ritchie. <emphasis>The C
Programming Language.</emphasis>. PTR Prentice Hall, 1988.
ISBN 0-13-110362-9</para>
</listitem>
<listitem>
<para>Lehey, Greg. <emphasis>Porting UNIX Software</emphasis>.
O'Reilly &amp; Associates, Inc., 1995. ISBN 1-56592-126-7</para>
</listitem>
<listitem>
<para>Plauger, P. J. <emphasis>The Standard C Library</emphasis>.
Prentice Hall, 1992. ISBN 0-13-131509-9</para>
</listitem>
<listitem>
<para>Stevens, W. Richard. <emphasis>Advanced Programming in the UNIX
Environment</emphasis>. Reading, Mass. : Addison-Wesley, 1992
ISBN 0-201-56317-7</para>
</listitem>
<listitem>
<para>Stevens, W. Richard. <emphasis>UNIX Network
Programming</emphasis>. 2nd Ed, PTR Prentice Hall, 1998. ISBN
0-13-490012-X</para>
</listitem>
<listitem>
<para>Wells, Bill. &ldquo;Writing Serial Drivers for UNIX&rdquo;.
<emphasis>Dr. Dobb's Journal</emphasis>. 19(15), December 1994.
pp68-71, 97-99.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1>
<title>Operating System Internals</title>
<itemizedlist>
<listitem>
<para>Andleigh, Prabhat K. <emphasis>UNIX System
Architecture</emphasis>. Prentice-Hall, Inc., 1990. ISBN
0-13-949843-5</para>
</listitem>
<listitem>
<para>Jolitz, William. &ldquo;Porting UNIX to the 386&rdquo;.
<emphasis>Dr. Dobb's Journal</emphasis>. January 1991-July
1992.</para>
</listitem>
<listitem>
<para>Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and
John Quarterman <emphasis>The Design and Implementation of the
4.3BSD UNIX Operating System</emphasis>. Reading, Mass. :
Addison-Wesley, 1989. ISBN 0-201-06196-1</para>
</listitem>
<listitem>
<para>Leffler, Samuel J., Marshall Kirk McKusick, <emphasis>The Design
and Implementation of the 4.3BSD UNIX Operating System: Answer
Book</emphasis>. Reading, Mass. : Addison-Wesley, 1991. ISBN
0-201-54629-9</para>
</listitem>
<listitem>
<para>McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and
John Quarterman. <emphasis>The Design and Implementation of the
4.4BSD Operating System</emphasis>. Reading, Mass. :
Addison-Wesley, 1996. ISBN 0-201-54979-4</para>
</listitem>
<listitem>
<para>Stevens, W. Richard. <emphasis>TCP/IP Illustrated, Volume 1:
The Protocols</emphasis>. Reading, Mass. : Addison-Wesley,
1996. ISBN 0-201-63346-9</para>
</listitem>
<listitem>
<para>Schimmel, Curt. <emphasis>Unix Systems for Modern
Architectures</emphasis>. Reading, Mass. : Addison-Wesley, 1994.
ISBN 0-201-63338-8</para>
</listitem>
<listitem>
<para>Stevens, W. Richard. <emphasis>TCP/IP Illustrated, Volume 3:
TCP for Transactions, HTTP, NNTP and the UNIX Domain
Protocols</emphasis>. Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63495-3</para>
</listitem>
<listitem>
<para>Vahalia, Uresh. <emphasis>UNIX Internals -- The New
Frontiers</emphasis>. Prentice Hall, 1996. ISBN
0-13-101908-2</para>
</listitem>
<listitem>
<para>Wright, Gary R. and W. Richard Stevens. <emphasis>TCP/IP
Illustrated, Volume 2: The Implementation</emphasis>. Reading,
Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X</para>
</listitem>
</itemizedlist>
</sect1>
<sect1>
<title>Security Reference</title>
<itemizedlist>
<listitem>
<para>Cheswick, William R. and Steven M. Bellovin. <emphasis>Firewalls
and Internet Security: Repelling the Wily Hacker</emphasis>.
Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-63357-4</para>
</listitem>
<listitem>
<para>Garfinkel, Simson and Gene Spafford. <emphasis>Practical UNIX
Security</emphasis>. 2nd Ed. O'Reilly &amp; Associates, Inc.,
1996. ISBN 1-56592-148-8</para>
</listitem>
<listitem>
<para>Garfinkel, Simson. <emphasis>PGP Pretty Good
Privacy</emphasis> O'Reilly &amp; Associates, Inc., 1995. ISBN
1-56592-098-8</para>
</listitem>
</itemizedlist>
</sect1>
<sect1>
<title>Hardware Reference</title>
<itemizedlist>
<listitem>
<para>Anderson, Don and Tom Shanley. <emphasis>Pentium Processor
System Architecture</emphasis>. 2nd Ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-40992-5</para>
</listitem>
<listitem>
<para>Ferraro, Richard F. <emphasis>Programmer's Guide to the EGA,
VGA, and Super VGA Cards</emphasis>. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-62490-7</para>
</listitem>
<listitem>
<para>Intel Corporation publishes documentation on their CPUs,
chipsets and standards on their <ulink
url="http://developer.intel.com/">developer web site</ulink>,
usually as PDF files.</para>
</listitem>
<listitem>
<para>Shanley, Tom. <emphasis>80486 System Architecture</emphasis>.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40994-1</para>
</listitem>
<listitem>
<para>Shanley, Tom. <emphasis>ISA System Architecture</emphasis>.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40996-8</para>
</listitem>
<listitem>
<para>Shanley, Tom. <emphasis>PCI System Architecture</emphasis>.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40993-3</para>
</listitem>
<listitem>
<para>Van Gilluwe, Frank. <emphasis>The Undocumented PC</emphasis>.
Reading, Mass: Addison-Wesley Pub. Co., 1994. ISBN
0-201-62277-7</para>
</listitem>
</itemizedlist>
</sect1>
<sect1>
<title>UNIX History</title>
<itemizedlist>
<listitem>
<para>Lion, John <emphasis>Lion's Commentary on UNIX, 6th Ed. With
Source Code</emphasis>. ITP Media Group, 1996. ISBN
1573980137</para>
</listitem>
<listitem>
<para>Raymond, Eric S. <emphasis>The New Hacker's Dictionary, 3rd
edition</emphasis>. MIT Press, 1996. ISBN
0-262-68092-0. Also known as the <ulink
URL="http://www.ccil.org/jargon/jargon.html">Jargon
File</ulink></para>
</listitem>
<listitem>
<para>Salus, Peter H. <emphasis>A quarter century of UNIX</emphasis>.
Addison-Wesley Publishing Company, Inc., 1994. ISBN
0-201-54777-5</para>
</listitem>
<listitem>
<para>Simon Garfinkel, Daniel Weise, Steven Strassmann. <emphasis>The
UNIX-HATERS Handbook</emphasis>. IDG Books Worldwide, Inc.,
1994. ISBN 1-56884-203-1</para>
</listitem>
<listitem>
<para>Don Libes, Sandy Ressler <emphasis>Life with UNIX</emphasis>
&mdash; special edition. Prentice-Hall, Inc., 1989. ISBN
0-13-536657-7</para>
</listitem>
<listitem>
<para><emphasis>The BSD family tree</emphasis>. 1997. <ulink
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree">ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree</ulink> or <ulink URL="file:/usr/share/misc/bsd-family-tree">local</ulink> on a FreeBSD-current machine.</para>
</listitem>
<listitem>
<para><emphasis>The BSD Release Announcements collection</emphasis>.
1997. <ulink
URL="http://www.de.FreeBSD.org/de/ftp/releases/">http://www.de.FreeBSD.org/de/ftp/releases/</ulink></para>
</listitem>
<listitem>
<para><emphasis>Networked Computer Science Technical Reports
Library</emphasis>. <ulink
URL="http://www.ncstrl.org/">http://www.ncstrl.org/</ulink></para>
</listitem>
<listitem>
<para><emphasis>Old BSD releases from the Computer Systems Research
group (CSRG)</emphasis>. <ulink
url="http://www.mckusick.com/csrg/">http://www.mckusick.com/csrg/</ulink>:
The 4CD set covers all BSD versions from 1BSD to 4.4BSD and
4.4BSD-Lite2 (but not 2.11BSD, unfortunately). As well, the last
disk holds the final sources plus the SCCS files.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1>
<title>Magazines and Journals</title>
<itemizedlist>
<listitem>
<para><emphasis>The C/C++ Users Journal</emphasis>. R&amp;D
Publications Inc. ISSN 1075-2838</para>
</listitem>
<listitem>
<para><emphasis>Sys Admin &mdash; The Journal for UNIX System
Administrators</emphasis> Miller Freeman, Inc., ISSN
1061-2688</para>
</listitem>
</itemizedlist>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1 +0,0 @@
<!DOCTYPE chapter PUBLIC "-//FreeBSD//DTD DocBook V3.1-Based Extension//EN">

View file

@ -1,49 +0,0 @@
<!--
Creates entities for each chapter in the FreeBSD Handbook. Each entity
is named chap.foo, where foo is the value of the id attribute on that
chapter, and corresponds to the name of the directory in which that
chapter's .sgml file is stored.
Chapters should be listed in the order in which they are referenced.
$Id: chapters.ent,v 1.3 1998-11-12 01:26:17 nik Exp $
-->
<!-- Part one -->
<!ENTITY chap.introduction SYSTEM "introduction/chapter.sgml">
<!ENTITY chap.install SYSTEM "install/chapter.sgml">
<!ENTITY chap.basics SYSTEM "basics/chapter.sgml">
<!ENTITY chap.ports SYSTEM "ports/chapter.sgml">
<!-- Part two -->
<!ENTITY chap.kernelconfig SYSTEM "kernelconfig/chapter.sgml">
<!ENTITY chap.security SYSTEM "security/chapter.sgml">
<!ENTITY chap.printing SYSTEM "printing/chapter.sgml">
<!ENTITY chap.disks SYSTEM "disks/chapter.sgml">
<!ENTITY chap.backups SYSTEM "backups/chapter.sgml">
<!ENTITY chap.quotas SYSTEM "quotas/chapter.sgml">
<!ENTITY chap.x11 SYSTEM "x11/chapter.sgml">
<!ENTITY chap.hw SYSTEM "hw/chapter.sgml">
<!ENTITY chap.l10n SYSTEM "l10n/chapter.sgml">
<!-- Part three -->
<!ENTITY chap.serialcomms SYSTEM "serialcomms/chapter.sgml">
<!ENTITY chap.ppp-and-slip SYSTEM "ppp-and-slip/chapter.sgml">
<!ENTITY chap.advanced-networking SYSTEM "advanced-networking/chapter.sgml">
<!ENTITY chap.mail SYSTEM "mail/chapter.sgml">
<!-- Part four -->
<!ENTITY chap.cutting-edge SYSTEM "cutting-edge/chapter.sgml">
<!ENTITY chap.contrib SYSTEM "contrib/chapter.sgml">
<!ENTITY chap.policies SYSTEM "policies/chapter.sgml">
<!ENTITY chap.kernelopts SYSTEM "kernelopts/chapter.sgml">
<!ENTITY chap.kerneldebug SYSTEM "kerneldebug/chapter.sgml">
<!ENTITY chap.linuxemu SYSTEM "linuxemu/chapter.sgml">
<!ENTITY chap.internals SYSTEM "internals/chapter.sgml">
<!-- Part five (appendices) -->
<!ENTITY chap.mirrors SYSTEM "mirrors/chapter.sgml">
<!ENTITY chap.bibliography SYSTEM "bibliography/chapter.sgml">
<!ENTITY chap.eresources SYSTEM "eresources/chapter.sgml">
<!ENTITY chap.staff SYSTEM "staff/chapter.sgml">
<!ENTITY chap.pgpkeys SYSTEM "pgpkeys/chapter.sgml">

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,168 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.6 1999-05-16 13:40:15 nik Exp $
-->
<chapter id="disks">
<title>Disks</title>
<para><emphasis>Contributed by &a.obrien; 26 April 1998</emphasis></para>
<para>Lets say we want to add a new SCSI disk to a machine that currently
only has a single drive. First turn off the computer and install the
drive in the computer following the instructions of the computer,
controller, and drive manufacturer. Due the wide variations of procedures
to do this, the details are beyond the scope of this document.</para>
<para>Login as user <username>root</username>. After you've installed the
drive, inspect <filename>/var/run/dmesg.boot</filename> to ensure the new
disk was found. Continuing with our example, the newly added drive will
be <filename>da1</filename> and we want to mount it on
<filename>/1</filename>. (if you are adding an IDE drive substitute
<filename>wd</filename> for <filename>da</filename>)</para>
<para>Because FreeBSD runs on IBM-PC compatible computers, it must take into
account the PC BIOS partitions. These are different from the traditional
BSD partitions. A PC disk has up to four BIOS partition entries. If the
disk is going to be truly dedicated to FreeBSD, you can use the
<emphasis>dedicated</emphasis> mode. Otherwise, FreeBSD will have to live
with in one of the PC BIOS partitions. FreeBSD calls the PC BIOS
partitions, <emphasis>slices</emphasis> so as not to confuse them with
traditional BSD partitions. You may also use slices on a disk that is
dedicated to FreeBSD, but used in a computer that also has another
operating system installed. This is to not confuse the
<command>fdisk</command> utility of the other operating system.</para>
<para>In the slice case the drive will be added as
<filename>/dev/da1s1e</filename>. This is read as: SCSI disk, unit number
1 (second SCSI disk), slice 1 (PC BIOS partition 1), and
<filename>e</filename> BSD partition. In the dedicated case, the drive
will be added simply as <filename>/dev/da1e</filename>.</para>
<sect1>
<title>Using sysinstall</title>
<para>You may use <command>/stand/sysinstall</command> to partition and
label a new disk using its easy to use menus. Either login as user
<username>root</username> or use the <command>su</command> command. Run
<command>/stand/sysinstall</command> and enter the
<literal>Configure</literal> menu. With in the <literal>FreeBSD
Configuration Menu</literal>, scroll down and select the
<literal>Partition</literal> item. Next you should be presented with a
list of hard drives installed in your system. If you do not see
<literal>da1</literal> listed, you need to recheck your physical
installation and <command>dmesg</command> output in the file
<filename>/var/run/dmesg.boot</filename>.</para>
<para>Select <literal>da1</literal> to enter the <literal>FDISK Partition
Editor</literal>. Choose <literal>A</literal> to use the entire disk
for FreeBSD. When asked if you want to <quote>remain cooperative with
any future possible operating systems</quote>, answer
<literal>YES</literal>. Write the changes to the disk using
<command>W</command>. Now exit the FDISK editor using
<command>q</command>. Next you will be asked about the Master Boot
Record. Since you are adding a disk to an already running system,
choose <literal>None</literal>.</para>
<para>Next enter the <literal>Disk Label Editor</literal>. This is where
you will create the traditional BSD partitions. A disk can have up to
eight partitions, labeled a-h. A few of the partition labels have
special uses. The <literal>a</literal> partition is used for the root
partition (<filename>/</filename>). Thus only your system disk (e.g,
the disk you boot from) should have an <literal>a</literal> partition.
The <literal>b</literal> partition is used for swap partitions, and you
may have many disks with swap partitions. The <literal>c</literal>
partition addresses the entire disk in dedicated mode, or the entire
FreeBSD slice in slice mode. The other partitions are for general
use.</para>
<para>Sysinstall's Label editor favors the <literal>e</literal> partition
for non-root, non-swap partitions. With in the Label editor, create a
single file system using <command>C</command>. When prompted if this
will be a FS (file system) or swap, choose <literal>FS</literal> and
give a mount point (e.g, <filename>/mnt</filename>). When adding a disk
in post-install mode, Sysinstall will not create entries in
<filename>/etc/fstab</filename> for you, so the mount point you specify
isn't important.</para>
<para>You are now ready to write the new label to the disk and create a
file system on it. Do this by hitting <command>W</command>. Ignore any
errors from Sysinstall that it could not mount the new partition. Exit
the Label Editor and Sysinstall completely.</para>
<para>The last step is to edit <filename>/etc/fstab</filename> to add an
entry for your new disk.</para>
</sect1>
<sect1>
<title>Using command line utilities</title>
<sect2>
<title>* Using Slices</title>
<para></para>
</sect2>
<sect2>
<title>Dedicated</title>
<para>If you will not be sharing the new drive with another operating
system, you may use the <literal>dedicated</literal> mode. Remember
this mode can confuse Microsoft operating systems; however, no damage
will be done by them. IBM's OS/2 however, will
&ldquo;appropriate&rdquo; any partition it finds which it doesn't
understand.</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 bs=1k count=1</userinput>
&prompt.root; <userinput>disklabel -Brw da1 auto</userinput>
&prompt.root; <userinput>disklabel -e da1</userinput> # create the `e' partition
&prompt.root; <userinput>newfs -d0 /dev/rda1e</userinput>
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>vi /etc/fstab</userinput> # add an entry for /dev/da1e
&prompt.root; <userinput>mount /1</userinput></screen>
<para>An alternate method is:</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda1 count=2</userinput>
&prompt.root; <userinput>disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin</userinput>
&prompt.root; <userinput>newfs /dev/rda1e</userinput>
&prompt.root; <userinput>mkdir -p /1</userinput>
&prompt.root; <userinput>vi /etc/fstab</userinput> # add an entry for /dev/da1e
&prompt.root; <userinput>mount /1</userinput></screen>
</sect2>
</sect1>
<sect1>
<title>* Non-traditional Drives</title>
<sect2>
<title>* Zip Drives</title>
<para></para>
</sect2>
<sect2>
<title>* Jaz Drives</title>
<para></para>
</sect2>
<sect2>
<title>* Sequest Drives</title>
<para></para>
</sect2>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

File diff suppressed because it is too large Load diff

View file

@ -1,129 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: handbook.sgml,v 1.78 1999-07-28 20:23:02 nik Exp $
-->
<!DOCTYPE BOOK PUBLIC "-//FreeBSD//DTD DocBook V3.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man;
<!ENTITY % bookinfo PUBLIC "-//FreeBSD//ENTITIES DocBook BookInfo Entities//EN">
%bookinfo;
<!ENTITY % chapters SYSTEM "chapters.ent"> %chapters;
<!ENTITY % authors SYSTEM "authors.ent"> %authors;
<!ENTITY % mailing-lists SYSTEM "mailing-lists.ent"> %mailing-lists;
<!ENTITY % newsgroups SYSTEM "newsgroups.ent"> %newsgroups;
<!-- The currently released version of FreeBSD. This value is used to
create some links on web sites and such, so do NOT change it until
it's really release time -->
<!ENTITY rel.current CDATA "3.2">
]>
<book>
<bookinfo>
<title>FreeBSD Handbook</title>
<authorgroup>
<author>
<surname>The FreeBSD Documentation Project</surname>
</author>
</authorgroup>
<pubdate>February 1999</pubdate>
<copyright>
<year>1995</year>
<year>1996</year>
<year>1997</year>
<year>1998</year>
<year>1999</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>
&bookinfo.legalnotice;
<abstract>
<para>Welcome to FreeBSD! This handbook covers the installation and day
to day use of <emphasis>FreeBSD Release &rel.current;</emphasis>.
This manual is a <emphasis>work in progress</emphasis> and is the work
of many individuals. Many sections do not yet exist and some of those
that do exist need to be updated. 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/">FreeBSD World Wide Web server</ulink>.
It may also be downloaded in a variety of formats and compression
options from the <ulink
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc">FreeBSD FTP
server</ulink> or one of the numerous <link
linkend="mirrors-ftp">mirror sites</link>. You may also want to
<ulink URL="http://www.FreeBSD.org/search.html">Search the
Handbook</ulink>.</para>
</abstract>
</bookinfo>
<part>
<title>Getting Started</title>
&chap.introduction;
&chap.install;
&chap.basics;
&chap.ports
</part>
<part>
<title>System Administration</title>
&chap.kernelconfig;
&chap.security;
&chap.printing;
&chap.disks;
&chap.backups;
&chap.quotas;
&chap.x11;
&chap.hw;
&chap.l10n;
</part>
<part>
<title>Network Communications</title>
&chap.serialcomms;
&chap.ppp-and-slip;
&chap.advanced-networking;
&chap.mail;
</part>
<part>
<title>Advanced topics</title>
&chap.cutting-edge;
&chap.contrib;
&chap.policies;
&chap.kernelopts;
&chap.kerneldebug;
&chap.linuxemu;
&chap.internals;
</part>
<part>
<title>Appendices</title>
&chap.mirrors;
&chap.bibliography;
&chap.eresources;
&chap.staff;
&chap.pgpkeys;
</part>
</book>
<!--
Local Variables:
mode: sgml
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
End:
-->

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,607 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.13 1999-06-13 16:18:55 nik Exp $
-->
<chapter id="introduction">
<title>Introduction</title>
<para>FreeBSD is a 4.4BSD-Lite2 based operating system for Intel architecture
(x86) and DEC Alpha based computer systems. For an overview of FreeBSD, see
<link linkend="nutshell">FreeBSD in a nutshell</link>. For a history of
the project, read <link linkend="history">a brief history of FreeBSD</link>.
To see a description of the latest release, read <link
linkend="relnotes">about the current release</link>. If you are
interested in contributing something to the FreeBSD project (code,
equipment, sacks of unmarked bills), please see about <link
linkend="contrib">contributing to FreeBSD</link>.</para>
<sect1 id="nutshell">
<title>FreeBSD in a Nutshell</title>
<para>FreeBSD is a state of the art operating system for computer
systems based on both the Intel CPU architecture, which includes the
386 and 486 and Pentium processors (both SX and DX versions) and the DEC
Alpha architecture. Intel compatible CPUs from AMD to Cyrix are
supported as well. FreeBSD provides you with many advanced features
previously available only on much more expensive computers.
These features include:</para>
<itemizedlist>
<listitem>
<para><emphasis>Preemptive multitasking</emphasis> with dynamic
priority adjustment to ensure smooth and fair sharing of the
computer between applications and users.</para>
</listitem>
<listitem>
<para><emphasis>Multiuser</emphasis> access means that many people can
use a FreeBSD system simultaneously for a variety of things. System
peripherals such as printers and tape drives are also properly
SHARED BETWEEN ALL users on the system.</para>
</listitem>
<listitem>
<para>Complete <emphasis>TCP/IP networking</emphasis> including SLIP,
PPP, NFS and NIS support. This means that your FreeBSD machine can
inter-operate easily with other systems as well act as an enterprise
server, providing vital functions such as NFS (remote file access)
and e-mail services or putting your organization on the Internet
with WWW, ftp, routing and firewall (security) services.</para>
</listitem>
<listitem>
<para><emphasis>Memory protection</emphasis> ensures that applications
(or users) cannot interfere with each other. One application
crashing will not affect others in any way.</para>
</listitem>
<listitem>
<para>FreeBSD is a <emphasis>32-bit</emphasis> operating system and
was designed as such from the ground up.</para>
</listitem>
<listitem>
<para>The industry standard <emphasis>X Window System</emphasis>
(X11R6) provides a graphical user interface (GUI) for the cost of a
common VGA card and monitor and comes with full sources.</para>
</listitem>
<listitem>
<para><emphasis>Binary compatibility</emphasis> with many programs
built for SCO, BSDI, NetBSD, Linux and 386BSD.</para>
</listitem>
<listitem>
<para>Hundreds of <emphasis>ready-to-run</emphasis> applications are
available from the FreeBSD <emphasis>ports</emphasis> and
<emphasis>packages</emphasis> collection. Why search the net when
you can find it all right here?</para>
</listitem>
<listitem>
<para>Thousands of additional and <emphasis>easy-to-port</emphasis>
applications available on the Internet. FreeBSD is source code
compatible with most popular commercial Unix systems and thus most
applications require few, if any, changes to compile.</para>
</listitem>
<listitem>
<para>Demand paged <emphasis>virtual memory</emphasis> and
&ldquo;merged VM/buffer cache&rdquo; design efficiently satisfies
applications with large appetites for memory while still maintaining
interactive response to other users.</para>
</listitem>
<listitem>
<para><emphasis>Shared libraries</emphasis> (the Unix equivalent of
MS-Windows DLLs) provide for efficient use of disk space and
memory.</para>
</listitem>
<listitem>
<para>A full complement of <emphasis>C</emphasis>,
<emphasis>C++</emphasis> and <emphasis>Fortran</emphasis>
development tools. Many additional languages for advanced research
and development are also available in the ports and packages
collection.</para>
</listitem>
<listitem>
<para><emphasis>Source code</emphasis> for the entire system means you
have the greatest degree of control over your environment. Why be
locked into a proprietary solution and at the mercy of your vendor
when you can have a truly Open System?</para>
</listitem>
<listitem>
<para>Extensive <emphasis>on-line documentation</emphasis>.</para>
</listitem>
<listitem>
<para><emphasis>And many more!</emphasis></para>
</listitem>
</itemizedlist>
<para>FreeBSD is based on the 4.4BSD-Lite2 release from Computer Systems
Research Group (CSRG) at the University of California at Berkeley, and
carries on the distinguished tradition of BSD systems development. In
addition to the fine work provided by CSRG, the FreeBSD Project has put
in many thousands of hours in fine tuning the system for maximum
performance and reliability in real-life load situations. As many of
the commercial giants struggle to field PC operating systems with such
features, performance and reliability, FreeBSD can offer them
<emphasis>now</emphasis>!</para>
<para>The applications to which FreeBSD can be put are truly limited only
by your own imagination. From software development to factory
automation, inventory control to azimuth correction of remote satellite
antennae; if it can be done with a commercial UNIX product then it is
more than likely that you can do it with FreeBSD, too! FreeBSD also
benefits significantly from the literally thousands of high quality
applications developed by research centers and universities around the
world, often available at little to no cost. Commercial applications are
also available and appearing in greater numbers every day.</para>
<para>Because the source code for FreeBSD itself is generally available,
the system can also be customized to an almost unheard of degree for
special applications or projects, and in ways not generally possible
with operating systems from most major commercial vendors. Here is just
a sampling of some of the applications in which people are currently
using FreeBSD:</para>
<itemizedlist>
<listitem>
<para><emphasis>Internet Services:</emphasis> The robust TCP/IP
networking built into FreeBSD makes it an ideal platform for a
variety of Internet services such as:</para>
<itemizedlist>
<listitem>
<para>FTP servers</para>
</listitem>
<listitem>
<para>World Wide Web servers</para>
</listitem>
<listitem>
<para>Gopher servers</para>
</listitem>
<listitem>
<para>Electronic Mail servers</para>
</listitem>
<listitem>
<para>USENET News</para>
</listitem>
<listitem>
<para>Bulletin Board Systems</para>
</listitem>
<listitem>
<para>And more...</para>
</listitem>
</itemizedlist>
<para>You can easily start out small with an inexpensive 386 class PC
and upgrade as your enterprise grows.</para>
</listitem>
<listitem>
<para><emphasis>Education:</emphasis> Are you a student of computer
science or a related engineering field? There is no better way of
learning about operating systems, computer architecture and
networking than the hands on, under the hood experience that FreeBSD
can provide. A number of freely available CAD, mathematical and
graphic design packages also make it highly useful to those whose
primary interest in a computer is to get <emphasis>other</emphasis>
work done!</para>
</listitem>
<listitem>
<para><emphasis>Research:</emphasis> With source code for the entire
system available, FreeBSD is an excellent platform for research in
operating systems as well as other branches of computer science.
FreeBSD's freely available nature also makes it possible for remote
groups to collaborate on ideas or shared development without having
to worry about special licensing agreements or limitations on what
may be discussed in open forums.</para>
</listitem>
<listitem>
<para><emphasis>Networking:</emphasis> Need a new router? A name
server (DNS)? A firewall to keep people out of your internal
network? FreeBSD can easily turn that unused 386 or 486 PC sitting
in the corner into an advanced router with sophisticated packet
filtering capabilities.</para>
</listitem>
<listitem>
<para><emphasis>X Window workstation:</emphasis> FreeBSD is a fine
choice for an inexpensive X terminal solution, either using the
freely available XFree86 server or one of the excellent commercial
servers provided by X Inside. Unlike an X terminal, FreeBSD allows
many applications to be run locally, if desired, thus relieving the
burden on a central server. FreeBSD can even boot
&ldquo;diskless&rdquo;, making individual workstations even cheaper
and easier to administer.</para>
</listitem>
<listitem>
<para><emphasis>Software Development:</emphasis> The basic FreeBSD
system comes with a full complement of development tools including
the renowned GNU C/C++ compiler and debugger.</para>
</listitem>
</itemizedlist>
<para>FreeBSD is available in both source and binary form on CDROM and via
anonymous ftp. See <link linkend="mirrors">Obtaining FreeBSD</link>
for more details.</para>
</sect1>
<sect1 id="history">
<title>A Brief History of FreeBSD</title>
<para><emphasis>Contributed by &a.jkh;</emphasis>.</para>
<para>The FreeBSD project had its genesis in the early part of 1993,
partially as an outgrowth of the &ldquo;Unofficial 386BSD
Patchkit&rdquo; by the patchkit's last 3 coordinators: Nate Williams,
Rod Grimes and myself.</para>
<para>Our original goal was to produce an intermediate snapshot of 386BSD
in order to fix a number of problems with it that the patchkit mechanism
just was not capable of solving. Some of you may remember the early
working title for the project being &ldquo;386BSD 0.5&rdquo; or
&ldquo;386BSD Interim&rdquo; in reference to that fact.</para>
<para>386BSD was Bill Jolitz's operating system, which had been up to that
point suffering rather severely from almost a year's worth of neglect.
As the patchkit swelled ever more uncomfortably with each passing day,
we were in unanimous agreement that something had to be done and decided
to try and assist Bill by providing this interim &ldquo;cleanup&rdquo;
snapshot. Those plans came to a rude halt when Bill Jolitz suddenly
decided to withdraw his sanction from the project and without any clear
indication of what would be done instead.</para>
<para>It did not take us long to decide that the goal remained worthwhile,
even without Bill's support, and so we adopted the name
&ldquo;FreeBSD&rdquo;, coined by David Greenman. Our initial objectives
were set after consulting with the system's current users and, once it
became clear that the project was on the road to perhaps even becoming a
reality, I contacted Walnut Creek CDROM with an eye towards improving
FreeBSD's distribution channels for those many unfortunates without easy
access to the Internet. Walnut Creek CDROM not only supported the idea
of distributing FreeBSD on CD but went so far as to provide the project
with a machine to work on and a fast Internet connection. Without
Walnut Creek CDROM's almost unprecedented degree of faith in what was,
at the time, a completely unknown project, it is quite unlikely that
FreeBSD would have gotten as far, as fast, as it has today.</para>
<para>The first CDROM (and general net-wide) distribution was FreeBSD 1.0,
released in December of 1993. This was based on the 4.3BSD-Lite
(&ldquo;Net/2&rdquo;) tape from U.C. Berkeley, with many components also
provided by 386BSD and the Free Software Foundation. It was a fairly
reasonable success for a first offering, and we followed it with the
highly successful FreeBSD 1.1 release in May of 1994.</para>
<para>Around this time, some rather unexpected storm clouds formed on the
horizon as Novell and U.C. Berkeley settled their long-running lawsuit
over the legal status of the Berkeley Net/2 tape. A condition of that
settlement was U.C. Berkeley's concession that large parts of Net/2 were
&ldquo;encumbered&rdquo; code and the property of Novell, who had in
turn acquired it from AT&amp;T some time previously. What Berkeley got
in return was Novell's &ldquo;blessing&rdquo; that the 4.4BSD-Lite
release, when it was finally released, would be declared unencumbered
and all existing Net/2 users would be strongly encouraged to switch.
This included FreeBSD, and the project was given until the end of July
1994 to stop shipping its own Net/2 based product. Under the terms of
that agreement, the project was allowed one last release before the
deadline, that release being FreeBSD 1.1.5.1.</para>
<para>FreeBSD then set about the arduous task of literally re-inventing
itself from a completely new and rather incomplete set of 4.4BSD-Lite
bits. The &ldquo;Lite&rdquo; releases were light in part because
Berkeley's CSRG had removed large chunks of code required for actually
constructing a bootable running system (due to various legal
requirements) and the fact that the Intel port of 4.4 was highly
incomplete. It took the project until November of 1994 to make this
transition, at which point it released FreeBSD 2.0 to the net
and on CDROM (in late December). Despite being still more than a little
rough around the edges, the release was a significant success and was
followed by the more robust and easier to install FreeBSD 2.0.5 release
in June of 1995.</para>
<para>We released FreeBSD 2.1.5 in August of 1996, and it appeared to be
popular enough among the ISP and commercial communities that another
release along the 2.1-stable branch was merited. This was FreeBSD
2.1.7.1, released in February 1997 and capping the end of mainstream
development on 2.1-stable. Now in maintenance mode, only security
enhancements and other critical bug fixes will be done on this branch
(RELENG_2_1_0).</para>
<para>FreeBSD 2.2 was branched from the development mainline
(&ldquo;-current&rdquo;) in November 1996 as the RELENG_2_2 branch, and
the first full release (2.2.1) was released in April, 1997. Further
releases along the 2.2 branch were done in the Summer and Fall of '97,
the latest being 2.2.7 which appeared in late July of '98. The first
official 3.0 release appeared in October, 1998 and the last release on
the 2.2 branch, 2.2.8, appeared in November, 1998.</para>
<para>The tree branched again on Jan 20, 1999. This led to 4.0-current
and a 3.x-stable branch, from which 3.1 was released on February
15th, 1999 and 3.2 was released on May 15, 1999.</para>
<para>Long term development projects will continue to take place in the
4.0-current branch and SNAPshot releases of 4.0 on CDROM (and, of
course, on the net).</para>
</sect1>
<sect1 id="goals">
<title>FreeBSD Project Goals</title>
<para><emphasis>Contributed by &a.jkh;</emphasis>.</para>
<para>The goals of the FreeBSD Project are to provide software that may be
used for any purpose and without strings attached. Many of us have a
significant investment in the code (and project) and would certainly not
mind a little financial compensation now and then, but we are definitely
not prepared to insist on it. We believe that our first and foremost
&ldquo;mission&rdquo; is to provide code to any and all comers, and for
whatever purpose, so that the code gets the widest possible use and
provides the widest possible benefit. This is, I believe, one of the
most fundamental goals of Free Software and one that we enthusiastically
support.</para>
<para>That code in our source tree which falls under the GNU General Public
License (GPL) or Library General Public License (LGPL) comes with slightly
more strings attached, though at least on the side of enforced access
rather than the usual opposite. Due to the additional complexities that
can evolve in the commercial use of GPL software, we do, however,
endeavor to replace such software with submissions under the more
relaxed BSD copyright when reasonable to do so.</para>
</sect1>
<sect1 id="development">
<title>The FreeBSD Development Model</title>
<para><emphasis>Contributed by &a.asami;</emphasis>.</para>
<para>The development of FreeBSD is a very open and flexible process,
FreeBSD being literally built from the contributions of hundreds of
people around the world, as can be seen from our <link
linkend="staff">list of contributors</link>. We are constantly on the
lookout for new developers and ideas, and those interested in becoming
more closely involved with the project need simply contact us at the
&a.hackers;. Those who prefer to work more independently are also
accommodated, and they are free to use our FTP facilities at <ulink
URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/incoming">ftp.FreeBSD.org</ulink>
to distribute their own patches or work-in-progress sources. The
&a.announce; is also available to those wishing to make other FreeBSD
users aware of major areas of work.</para>
<para>Useful things to know about the FreeBSD project and its development
process, whether working independently or in close cooperation:</para>
<variablelist>
<varlistentry>
<term>The CVS repository<anchor
id="development-cvs-repository"></term>
<listitem>
<para>The central source tree for FreeBSD is maintained by <ulink
URL="http://www.cyclic.com/cyclic-pages/CVS-sheet.html">CVS</ulink>
(Concurrent Version System), a freely available source code
control tool which comes bundled with FreeBSD. The primary <ulink
URL="http://www.FreeBSD.org/cgi/cvsweb.cgi">CVS
repository</ulink> resides on a machine in Concord CA, USA from
where it is replicated to numerous mirror machines throughout the
world. The CVS tree, as well as the <link
linkend="current">-current</link> and <link
linkend="stable">-stable</link> trees which are checked out of
it, can be easily replicated to your own machine as well. Please
refer to the <link linkend="synching">Synchronizing your source
tree</link> section for more information on doing this.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>The committers list<anchor id="development-committers"></term>
<listitem>
<para>The <link linkend="staff-committers">committers</link> are the
people who have <emphasis>write</emphasis> access to the CVS tree,
and are thus authorized to make modifications to the FreeBSD
source (the term &ldquo;committer&rdquo; comes from the
&man.cvs.1; <command>commit</command> command, which is used
to bring new changes into the CVS repository). The best way of
making submissions for review by the committers list is to use the
&man.send-pr.1; command, though if something appears to be
jammed in the system then you may also reach them by sending mail
to <email>committers@FreeBSD.org</email>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>The FreeBSD core team<anchor id="development-core"></term>
<listitem>
<para>The <link linkend="staff-core">FreeBSD core team</link> would
be equivalent to the board of directors if the FreeBSD Project
were a company. The primary task of the core team is to make sure
the project, as a whole, is in good shape and is heading in the
right directions. Inviting dedicated and responsible developers
to join our group of committers is one of the functions of the
core team, as is the recruitment of new core team members as
others move on. Most current members of the core team started as
committers whose addiction to the project got the better of
them.</para>
<para>Some core team members also have specific <link
linkend="staff-who">areas of responsibility</link>, meaning that
they are committed to ensuring that some large portion of the
system works as advertised.</para>
<note>
<para>Most members of the core team are volunteers when it comes
to FreeBSD development and do not benefit from the project
financially, so &ldquo;commitment&rdquo; should also not be
misconstrued as meaning &ldquo;guaranteed support.&rdquo; The
&ldquo;board of directors&rdquo; analogy above is not actually
very accurate, and it may be more suitable to say that these are
the people who gave up their lives in favor of FreeBSD against
their better judgement! <!-- smiley
--><emphasis>;)</emphasis></para>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term>Outside contributors</term>
<listitem>
<para>Last, but definitely not least, the largest group of
developers are the users themselves who provide feedback and
bug-fixes to us on an almost constant basis. The primary way of
keeping in touch with FreeBSD's more non-centralized development
is to subscribe to the &a.hackers; (see <link
linkend="eresources-mail">mailing list info</link>) where such
things are discussed.</para>
<para><link linkend="contrib-additional">The list</link> of those
who have contributed something which made its way into our source
tree is a long and growing one, so why not join it by contributing
something back to FreeBSD today? <!-- smiley
--><emphasis>:-)</emphasis></para>
<para>Providing code is not the only way of contributing to the
project; for a more complete list of things that need doing,
please refer to the <link linkend="contrib">how to
contribute</link> section in this handbook.</para>
</listitem>
</varlistentry>
</variablelist>
<para>In summary, our development model is organized as a loose set of
concentric circles. The centralized model is designed for the
convenience of the <emphasis>users</emphasis> of FreeBSD, who are
thereby provided with an easy way of tracking one central code base, not
to keep potential contributors out! Our desire is to present a stable
operating system with a large set of coherent <link
linkend="ports">application programs</link> that the users can easily
install and use, and this model works very well in accomplishing
that.</para>
<para>All we ask of those who would join us as FreeBSD developers is some
of the same dedication its current people have to its continued
success!</para>
</sect1>
<sect1 id="relnotes">
<title>About the Current Release</title>
<para>FreeBSD is a freely available, full source 4.4BSD-Lite2 based release
for Intel i386/i486/Pentium/PentiumPro/Pentium II (or compatible) and DEC
Alpha based computer systems. It is based primarily on software from U.C.
Berkeley's CSRG group, with some enhancements from NetBSD, OpenBSD, 386BSD,
and the Free Software Foundation.</para>
<para>Since our release of FreeBSD 2.0 in late 94, the performance,
feature set, and stability of FreeBSD has improved dramatically. The
largest change is a revamped virtual memory system with a merged VM/file
buffer cache that not only increases performance, but reduces FreeBSD's
memory footprint, making a 5MB configuration a more acceptable minimum.
Other enhancements include full NIS client and server support,
transaction TCP support, dial-on-demand PPP, an improved SCSI subsystem,
ISDN support, support for ATM, FDDI and Fast Ethernet (100Mbit)
adapters, improved support for the Adaptec 2940 (WIDE and narrow) and
many hundreds of bug fixes.</para>
<para>We have also taken the comments and suggestions of many of our users
to heart and have attempted to provide what we hope is a more sane and
easily understood installation process. Your feedback on this
(constantly evolving) process is especially welcome!</para>
<para>In addition to the base distributions, FreeBSD offers a new ported
software collection with hundreds of commonly sought-after programs. At
the end of April 1999 there were more than 2300 ports! The list of
ports ranges from http (WWW) servers, to games, languages, editors and
almost everything in between. The entire ports collection requires
approximately 50MB of storage, all ports being expressed as
&ldquo;deltas&rdquo; to their original sources. This makes it much
easier for us to update ports, and greatly reduces the disk space
demands made by the older 1.0 ports collection. To compile a port, you
simply change to the directory of the program you wish to install, type
<command>make all</command> followed by <command>make install</command>
after successful compilation and let the system do the rest. The full
original distribution for each port you build is retrieved dynamically
off the CDROM or a local ftp site, so you need only enough disk space to
build the ports you want. (Almost) every port is also provided as a
pre-compiled &ldquo;package&rdquo; which can be installed with a simple
command (pkg_add) by those who do not wish to compile their own ports
from source.</para>
<para>A number of additional documents which you may find very helpful in
the process of installing and using FreeBSD may now also be found in the
<filename>/usr/share/doc</filename> directory on any machine running
FreeBSD 2.1 or later. You may view the locally installed manuals with
any HTML capable browser using the following URLs:</para>
<variablelist>
<varlistentry>
<term>The FreeBSD handbook</term>
<listitem>
<para><ulink
URL="file:/usr/share/doc/handbook/handbook.html">file:/usr/share/doc/handbook/handbook.html</ulink></para>
</listitem>
</varlistentry>
<varlistentry>
<term>The FreeBSD FAQ</term>
<listitem>
<para><ulink
URL="file:/usr/share/doc/FAQ/FAQ.html">file:/usr/share/doc/FAQ/FAQ.html</ulink></para>
</listitem>
</varlistentry>
</variablelist>
<para>You can also visit the master (and most frequently updated)
copies at <ulink
URL="http://www.FreeBSD.org">http://www.FreeBSD.org</ulink>.</para>
<para>The core of FreeBSD does not contain DES code which would inhibit
its being exported outside the United States. There is an add-on
package to the core distribution, for use only in the United States,
that contains the programs that normally use DES. The auxiliary
packages provided separately can be used by anyone. A freely (from
outside the U.S.) exportable European distribution of DES for our
non-U.S. users also exists and is described in the <ulink
URL="../FAQ/FAQ.html">FreeBSD FAQ</ulink>.</para>
<para>If password security for FreeBSD is all you need, and you have no
requirement for copying encrypted passwords from different hosts (Suns,
DEC machines, etc) into FreeBSD password entries, then FreeBSD's MD5
based security may be all you require! We feel that our default security
model is more than a match for DES, and without any messy export issues
to deal with. If you are outside (or even inside) the U.S., give it a
try!</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

File diff suppressed because it is too large Load diff

View file

@ -1,597 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.16 1999-08-05 20:48:16 nik Exp $
-->
<chapter id="kerneldebug">
<title>Kernel Debugging</title>
<para><emphasis>Contributed by &a.paul; and &a.joerg;</emphasis></para>
<sect1>
<title>Debugging a Kernel Crash Dump with <command>kgdb</command></title>
<para>Here are some instructions for getting kernel debugging working on a
crash dump. They assume that you have enough swap space for a crash
dump. If you have multiple swap partitions and the first one is too
small to hold the dump, you can configure your kernel to use an
alternate dump device (in the <literal>config kernel</literal> line), or
you can specify an alternate using the
&man.dumpon.8; command. The best way to use &man.dumpon.8; is to set
the <literal>dumpdev</literal> variable in
<filename>/etc/rc.conf</filename>. Typically you want to specify one of
the swap devices specified in <filename>/etc/fstab</filename>. Dumps to
non-swap devices, tapes for example, are currently not supported. Config
your kernel using <command>config -g</command>. See <link
linkend="kernelconfig">Kernel Configuration</link> for details on
configuring the FreeBSD kernel.</para>
<para>Use the &man.dumpon.8; command to tell the kernel where to dump to
(note that this will have to be done after configuring the partition in
question as swap space via &man.swapon.8;). This is normally arranged
via <filename>/etc/rc.conf</filename> and <filename>/etc/rc</filename>.
Alternatively, you can hard-code the dump device via the
<literal>dump</literal> clause in the <literal>config</literal> line of
your kernel config file. This is deprecated and should be used only if
you want a crash dump from a kernel that crashes during booting.</para>
<note>
<para>In the following, the term <command>kgdb</command> refers to
<command>gdb</command> run in &ldquo;kernel debug mode&rdquo;. This
can be accomplished by either starting the <command>gdb</command> with
the option <option>-k</option>, or by linking and starting it under
the name <command>kgdb</command>. This is not being done by default,
however, and the idea is basically deprecated since the GNU folks do
not like their tools to behave differently when called by another
name. This feature may well be discontinued in further
releases.</para>
</note>
<para>When the kernel has been built make a copy of it, say
<filename>kernel.debug</filename>, and then run <command>strip
-g</command> on the original. Install the original as normal. You
may also install the unstripped kernel, but symbol table lookup time for
some programs will drastically increase, and since the whole kernel is
loaded entirely at boot time and cannot be swapped out later, several
megabytes of physical memory will be wasted.</para>
<para>If you are testing a new kernel, for example by typing the new
kernel's name at the boot prompt, but need to boot a different one in
order to get your system up and running again, boot it only into single
user state using the <option>-s</option> flag at the boot prompt, and
then perform the following steps:</para>
<screen>&prompt.root; <userinput>fsck -p</userinput>
&prompt.root; <userinput>mount -a -t ufs</userinput> # so your file system for /var/crash is writable
&prompt.root; <userinput>savecore -N /kernel.panicked /var/crash</userinput>
&prompt.root; <userinput>exit</userinput> # ...to multi-user</screen>
<para>This instructs &man.savecore.8; to use another kernel for symbol
name extraction. It would otherwise default to the currently running
kernel and most likely not do anything at all since the crash dump and
the kernel symbols differ.</para>
<para>Now, after a crash dump, go to
<filename>/sys/compile/WHATEVER</filename> and run
<command>kgdb</command>. From <command>kgdb</command> do:
<screen><userinput>symbol-file kernel.debug</userinput>
<userinput>exec-file /var/crash/kernel.0</userinput>
<userinput>core-file /var/crash/vmcore.0</userinput></screen>
and voila, you can debug the crash dump using the kernel sources just
like you can for any other program.</para>
<para>Here is a script log of a <command>kgdb</command> session
illustrating the procedure. Long lines have been folded to improve
readability, and the lines are numbered for reference. Despite this, it
is a real-world error trace taken during the development of the pcvt
console driver.</para>
<screen> 1:Script started on Fri Dec 30 23:15:22 1994
2:&prompt.root; <userinput>cd /sys/compile/URIAH</userinput>
3:&prompt.root; <userinput>kgdb kernel /var/crash/vmcore.1</userinput>
4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel
...done.
5:IdlePTD 1f3000
6:panic: because you said to!
7:current pcb at 1e3f70
8:Reading in symbols for ../../i386/i386/machdep.c...done.
9:<prompt>(kgdb)</prompt> <userinput>where</userinput>
10:#0 boot (arghowto=256) (../../i386/i386/machdep.c line 767)
11:#1 0xf0115159 in panic ()
12:#2 0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698)
13:#3 0xf010185e in db_fncall ()
14:#4 0xf0101586 in db_command (-266509132, -266509516, -267381073)
15:#5 0xf0101711 in db_command_loop ()
16:#6 0xf01040a0 in db_trap ()
17:#7 0xf0192976 in kdb_trap (12, 0, -272630436, -266743723)
18:#8 0xf019d2eb in trap_fatal (...)
19:#9 0xf019ce60 in trap_pfault (...)
20:#10 0xf019cb2f in trap (...)
21:#11 0xf01932a1 in exception:calltrap ()
22:#12 0xf0191503 in cnopen (...)
23:#13 0xf0132c34 in spec_open ()
24:#14 0xf012d014 in vn_open ()
25:#15 0xf012a183 in open ()
26:#16 0xf019d4eb in syscall (...)
27:<prompt>(kgdb)</prompt> <userinput>up 10</userinput>
28:Reading in symbols for ../../i386/i386/trap.c...done.
29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\
30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\
31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\
32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\
33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\
34:ss = -266427884}) (../../i386/i386/trap.c line 283)
35:283 (void) trap_pfault(&amp;frame, FALSE);
36:<prompt>(kgdb)</prompt> <userinput>frame frame-&gt;tf_ebp frame-&gt;tf_eip</userinput>
37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done.
38:#0 0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\
39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403)
40:403 return ((*linesw[tp-&gt;t_line].l_open)(dev, tp));
41:<prompt>(kgdb)</prompt> <userinput>list</userinput>
42:398
43:399 tp-&gt;t_state |= TS_CARR_ON;
44:400 tp-&gt;t_cflag |= CLOCAL; /* cannot be a modem (:-) */
45:401
46:402 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
47:403 return ((*linesw[tp-&gt;t_line].l_open)(dev, tp));
48:404 #else
49:405 return ((*linesw[tp-&gt;t_line].l_open)(dev, tp, flag));
50:406 #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */
51:407 }
52:<prompt>(kgdb)</prompt> <userinput>print tp</userinput>
53:Reading in symbols for ../../i386/i386/cons.c...done.
54:$1 = (struct tty *) 0x1bae
55:<prompt>(kgdb)</prompt> <userinput>print tp-&gt;t_line</userinput>
56:$2 = 1767990816
57:<prompt>(kgdb)</prompt> <userinput>up</userinput>
58:#1 0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\
59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126)
60: return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
61:<prompt>(kgdb)</prompt> <userinput>up</userinput>
62:#2 0xf0132c34 in spec_open ()
63:<prompt>(kgdb)</prompt> <userinput>up</userinput>
64:#3 0xf012d014 in vn_open ()
65:<prompt>(kgdb)</prompt> <userinput>up</userinput>
66:#4 0xf012a183 in open ()
67:<prompt>(kgdb)</prompt> <userinput>up</userinput>
68:#5 0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\
69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\
70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \
71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \
72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673)
73:673 error = (*callp-&gt;sy_call)(p, args, rval);
74:<prompt>(kgdb)</prompt> <userinput>up</userinput>
75:Initial frame selected; you cannot go up.
76:<prompt>(kgdb)</prompt> <userinput>quit</userinput>
77:&prompt.root; <userinput>exit</userinput>
78:exit
79:
80:Script done on Fri Dec 30 23:18:04 1994</screen>
<para>Comments to the above script:</para>
<variablelist>
<varlistentry>
<term>line 6:</term>
<listitem>
<para>This is a dump taken from within DDB (see below), hence the
panic comment &ldquo;because you said to!&rdquo;, and a rather
long stack trace; the initial reason for going into DDB has been a
page fault trap though.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>line 20:</term>
<listitem>
<para>This is the location of function <function>trap()</function>
in the stack trace.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>line 36:</term>
<listitem>
<para>Force usage of a new stack frame; this is no longer necessary
now. The stack frames are supposed to point to the right
locations now, even in case of a trap. (I do not have a new core
dump handy &lt;g&gt;, my kernel has not panicked for a rather long
time.) From looking at the code in source line 403, there is a
high probability that either the pointer access for
&ldquo;tp&rdquo; was messed up, or the array access was out of
bounds.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>line 52:</term>
<listitem>
<para>The pointer looks suspicious, but happens to be a valid
address.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>line 56:</term>
<listitem>
<para>However, it obviously points to garbage, so we have found our
error! (For those unfamiliar with that particular piece of code:
<literal>tp-&gt;t_line</literal> refers to the line discipline of
the console device here, which must be a rather small integer
number.)</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1>
<title>Debugging a crash dump with DDD</title>
<para>Examining a kernel crash dump with a graphical debugger like
<command>ddd</command> is also possible. Add the <option>-k</option>
option to the <command>ddd</command> command line you would use
normally. For example;</para>
<screen>&prompt.root; <userinput>ddd -k /var/crash/kernel.0 /var/crash/vmcore.0</userinput></screen>
<para>You should then be able to go about looking at the crash dump using
<command>ddd</command>'s graphical interface.</para>
</sect1>
<sect1>
<title>Post-mortem Analysis of a Dump</title>
<para>What do you do if a kernel dumped core but you did not expect it,
and it is therefore not compiled using <command>config -g</command>? Not
everything is lost here. Do not panic!</para>
<para>Of course, you still need to enable crash dumps. See above on the
options you have to specify in order to do this.</para>
<para>Go to your kernel config directory
(<filename>/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>)
and edit your configuration file. Uncomment (or add, if it does not
exist) the following line</para>
<programlisting>
makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols</programlisting>
<para>Rebuild the kernel. Due to the time stamp change on the Makefile,
there will be some other object files rebuild, for example
<filename>trap.o</filename>. With a bit of luck, the added
<option>-g</option> option will not change anything for the generated
code, so you will finally get a new kernel with similar code to the
faulting one but some debugging symbols. You should at least verify the
old and new sizes with the &man.size.1; command. If there is a
mismatch, you probably need to give up here.</para>
<para>Go and examine the dump as described above. The debugging symbols
might be incomplete for some places, as can be seen in the stack trace
in the example above where some functions are displayed without line
numbers and argument lists. If you need more debugging symbols, remove
the appropriate object files and repeat the <command>kgdb</command>
session until you know enough.</para>
<para>All this is not guaranteed to work, but it will do it fine in most
cases.</para>
</sect1>
<sect1>
<title>On-line Kernel Debugging Using DDB</title>
<para>While <command>kgdb</command> as an offline debugger provides a very
high level of user interface, there are some things it cannot do. The
most important ones being breakpointing and single-stepping kernel
code.</para>
<para>If you need to do low-level debugging on your kernel, there is an
on-line debugger available called DDB. It allows to setting
breakpoints, single-stepping kernel functions, examining and changing
kernel variables, etc. However, it cannot access kernel source files,
and only has access to the global and static symbols, not to the full
debug information like <command>kgdb</command>.</para>
<para>To configure your kernel to include DDB, add the option line
<programlisting>
options DDB</programlisting>
to your config file, and rebuild. (See <link
linkend="kernelconfig">Kernel Configuration</link> for details on
configuring the FreeBSD kernel.</para>
<note>
<para>Note that if you have an older version of the boot blocks, your
debugger symbols might not be loaded at all. Update the boot blocks;
the recent ones load the DDB symbols automagically.)</para>
</note>
<para>Once your DDB kernel is running, there are several ways to enter
DDB. The first, and earliest way is to type the boot flag
<option>-d</option> right at the boot prompt. The kernel will start up
in debug mode and enter DDB prior to any device probing. Hence you can
even debug the device probe/attach functions.</para>
<para>The second scenario is a hot-key on the keyboard, usually
Ctrl-Alt-ESC. For syscons, this can be remapped; some of the
distributed maps do this, so watch out. There is an option available
for serial consoles that allows the use of a serial line BREAK on the
console line to enter DDB (<literal>options BREAK_TO_DEBUGGER</literal>
in the kernel config file). It is not the default since there are a lot
of crappy serial adapters around that gratuitously generate a BREAK
condition, for example when pulling the cable.</para>
<para>The third way is that any panic condition will branch to DDB if the
kernel is configured to use it. For this reason, it is not wise to
configure a kernel with DDB for a machine running unattended.</para>
<para>The DDB commands roughly resemble some <command>gdb</command>
commands. The first thing you probably need to do is to set a
breakpoint:</para>
<screen><userinput>b function-name</userinput>
<userinput>b address</userinput></screen>
<para>Numbers are taken hexadecimal by default, but to make them distinct
from symbol names; hexadecimal numbers starting with the letters
<literal>a-f</literal> need to be preceded with <literal>0x</literal>
(this is optional for other numbers). Simple expressions are allowed,
for example: <literal>function-name + 0x103</literal>.</para>
<para>To continue the operation of an interrupted kernel, simply
type:</para>
<screen><userinput>c</userinput></screen>
<para>To get a stack trace, use:</para>
<screen><userinput>trace</userinput></screen>
<note>
<para>Note that when entering DDB via a hot-key, the kernel is currently
servicing an interrupt, so the stack trace might be not of much use
for you.</para>
</note>
<para>If you want to remove a breakpoint, use</para>
<screen><userinput>del</userinput>
<userinput>del address-expression</userinput></screen>
<para>The first form will be accepted immediately after a breakpoint hit,
and deletes the current breakpoint. The second form can remove any
breakpoint, but you need to specify the exact address; this can be
obtained from:</para>
<screen><userinput>show b</userinput></screen>
<para>To single-step the kernel, try:</para>
<screen><userinput>s</userinput></screen>
<para>This will step into functions, but you can make DDB trace them until
the matching return statement is reached by:</para>
<screen><userinput>n</userinput></screen>
<note>
<para>This is different from <command>gdb</command>'s
<command>next</command> statement; it is like <command>gdb</command>'s
<command>finish</command>.</para>
</note>
<para>To examine data from memory, use (for example):
<screen><userinput>x/wx 0xf0133fe0,40</userinput>
<userinput>x/hd db_symtab_space</userinput>
<userinput>x/bc termbuf,10</userinput>
<userinput>x/s stringbuf</userinput></screen>
for word/halfword/byte access, and hexadecimal/decimal/character/ string
display. The number after the comma is the object count. To display
the next 0x10 items, simply use:</para>
<screen><userinput>x ,10</userinput></screen>
<para>Similarly, use
<screen><userinput>x/ia foofunc,10</userinput></screen>
to disassemble the first 0x10 instructions of
<function>foofunc</function>, and display them along with their offset
from the beginning of <function>foofunc</function>.</para>
<para>To modify memory, use the write command:</para>
<screen><userinput>w/b termbuf 0xa 0xb 0</userinput>
<userinput>w/w 0xf0010030 0 0</userinput></screen>
<para>The command modifier
(<literal>b</literal>/<literal>h</literal>/<literal>w</literal>)
specifies the size of the data to be written, the first following
expression is the address to write to and the remainder is interpreted
as data to write to successive memory locations.</para>
<para>If you need to know the current registers, use:</para>
<screen><userinput>show reg</userinput></screen>
<para>Alternatively, you can display a single register value by e.g.
<screen><userinput>p $eax</userinput></screen>
and modify it by:</para>
<screen><userinput>set $eax new-value</userinput></screen>
<para>Should you need to call some kernel functions from DDB, simply
say:</para>
<screen><userinput>call func(arg1, arg2, ...)</userinput></screen>
<para>The return value will be printed.</para>
<para>For a &man.ps.1; style summary of all running processes, use:</para>
<screen><userinput>ps</userinput></screen>
<para>Now you have now examined why your kernel failed, and you wish to
reboot. Remember that, depending on the severity of previous
malfunctioning, not all parts of the kernel might still be working as
expected. Perform one of the following actions to shut down and reboot
your system:</para>
<screen><userinput>call diediedie()</userinput></screen>
<para>This will cause your kernel to dump core and reboot, so you can
later analyze the core on a higher level with kgdb. This command
usually must be followed by another <command>continue</command>
statement. There is now an alias for this:
<command>panic</command>.</para>
<screen><userinput>call boot(0)</userinput></screen>
<para>Which might be a good way to cleanly shut down the running system,
<function>sync()</function> all disks, and finally reboot. As long as
the disk and file system interfaces of the kernel are not damaged, this
might be a good way for an almost clean shutdown.</para>
<screen><userinput>call cpu_reset()</userinput></screen>
<para>is the final way out of disaster and almost the same as hitting the
Big Red Button.</para>
<para>If you need a short command summary, simply type:</para>
<screen><userinput>help</userinput></screen>
<para>However, it is highly recommended to have a printed copy of the
&man.ddb.4; manual page ready for a debugging
session. Remember that it is hard to read the on-line manual while
single-stepping the kernel.</para>
</sect1>
<sect1>
<title>On-line Kernel Debugging Using Remote GDB</title>
<para>This feature has been supported since FreeBSD 2.2, and it is
actually a very neat one.</para>
<para>GDB has already supported <emphasis>remote debugging</emphasis> for
a long time. This is done using a very simple protocol along a serial
line. Unlike the other methods described above, you will need two
machines for doing this. One is the host providing the debugging
environment, including all the sources, and a copy of the kernel binary
with all the symbols in it, and the other one is the target machine that
simply runs a similar copy of the very same kernel (but stripped of the
debugging information).</para>
<para>You should configure the kernel in question with <command>config
-g</command>, include <option>DDB</option> into the configuration, and
compile it as usual. This gives a large blurb of a binary, due to the
debugging information. Copy this kernel to the target machine, strip
the debugging symbols off with <command>strip -x</command>, and boot it
using the <option>-d</option> boot option. Connect the first serial
line of the target machine to any serial line of the debugging host.
Now, on the debugging machine, go to the compile directory of the target
kernel, and start gdb:</para>
<screen>&prompt.user; <userinput>gdb -k kernel</userinput>
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.16 (i386-unknown-freebsd),
Copyright 1996 Free Software Foundation, Inc...
<prompt>(kgdb)</prompt> </screen>
<para>Initialize the remote debugging session (assuming the first serial
port is being used) by:</para>
<screen><prompt>(kgdb)</prompt> <userinput>target remote /dev/cuaa0</userinput></screen>
<para>Now, on the target host (the one that entered DDB right before even
starting the device probe), type:</para>
<screen>Debugger("Boot flags requested debugger")
Stopped at Debugger+0x35: movb $0, edata+0x51bc
<prompt>db&gt;</prompt> <userinput>gdb</userinput></screen>
<para>DDB will respond with:</para>
<screen>Next trap will enter GDB remote protocol mode</screen>
<para>Every time you type <command>gdb</command>, the mode will be toggled
between remote GDB and local DDB. In order to force a next trap
immediately, simply type <command>s</command> (step). Your hosting GDB
will now gain control over the target kernel:</para>
<screen>Remote debugging using /dev/cuaa0
Debugger (msg=0xf01b0383 "Boot flags requested debugger")
at ../../i386/i386/db_interface.c:257
<prompt>(kgdb)</prompt></screen>
<para>You can use this session almost as any other GDB session, including
full access to the source, running it in gud-mode inside an Emacs window
(which gives you an automatic source code display in another Emacs
window) etc.</para>
<para>Remote GDB can also be used to debug LKMs. First build the LKM with
debugging symbols:</para>
<screen>&prompt.root; <userinput>cd /usr/src/lkm/linux</userinput>
&prompt.root; <userinput>make clean; make COPTS=-g</userinput></screen>
<para>Then install this version of the module on the target machine, load
it and use <command>modstat</command> to find out where it was
loaded:</para>
<screen>&prompt.root; <userinput>linux</userinput>
&prompt.root; <userinput>modstat</userinput>
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 4 f5109000 001c f510f010 1 linux_mod</screen>
<para>Take the load address of the module and add 0x20 (probably to
account for the a.out header). This is the address that the module code
was relocated to. Use the <command>add-symbol-file</command> command in
GDB to tell the debugger about the module:</para>
<screen><prompt>(kgdb)</prompt> <userinput>add-symbol-file /usr/src/lkm/linux/linux_mod.o 0xf5109020</userinput>
add symbol table from file "/usr/src/lkm/linux/linux_mod.o" at
text_addr = 0xf5109020? (y or n) <userinput>y</userinput>
<prompt>(kgdb)</prompt></screen>
<para>You now have access to all the symbols in the LKM.</para>
</sect1>
<sect1>
<title>Debugging a Console Driver</title>
<para>Since you need a console driver to run DDB on, things are more
complicated if the console driver itself is failing. You might remember
the use of a serial console (either with modified boot blocks, or by
specifying <option>-h</option> at the <prompt>Boot:</prompt> prompt),
and hook up a standard terminal onto your first serial port. DDB works
on any configured console driver, of course also on a serial
console.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,164 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.9 1999-03-08 22:04:43 nik Exp $
-->
<chapter id="kernelopts">
<title>Adding New Kernel Configuration Options</title>
<para><emphasis>Contributed by &a.joerg;</emphasis></para>
<note>
<para>You should be familiar with the section about <link
linkend="kernelconfig">kernel configuration</link> before reading
here.</para>
</note>
<sect1>
<title>What's a <emphasis>Kernel Option</emphasis>, Anyway?</title>
<para>The use of kernel options is basically described in the <link
linkend="kernelconfig-options">kernel configuration</link> section.
There's also an explanation of &ldquo;historic&rdquo; and
&ldquo;new-style&rdquo; options. The ultimate goal is to eventually
turn all the supported options in the kernel into new-style ones, so for
people who correctly did a <command>make depend</command> in their
kernel compile directory after running
&man.config.8;, the build process will automatically pick up modified
options, and only recompile those files where it is necessary. Wiping
out the old compile directory on each run of &man.config.8; as it is
still done now can then be eliminated again.</para>
<para>Basically, a kernel option is nothing else than the definition of a
C preprocessor macro for the kernel compilation process. To make the
build truly optional, the corresponding part of the kernel source (or
kernel <filename>.h</filename> file) must be written with the option
concept in mind, i.e. the default must have been made overridable by the
config option. This is usually done with something like:</para>
<programlisting>
#ifndef THIS_OPTION
#define THIS_OPTION (some_default_value)
#endif /* THIS_OPTION */</programlisting>
<para>This way, an administrator mentioning another value for the option
in his config file will take the default out of effect, and replace it
with his new value. Clearly, the new value will be substituted into the
source code during the preprocessor run, so it must be a valid C
expression in whatever context the default value would have been
used.</para>
<para>It is also possible to create value-less options that simply enable
or disable a particular piece of code by embracing it in</para>
<programlisting>
#ifdef THAT_OPTION
[your code here]
#endif</programlisting>
<para>Simply mentioning <literal>THAT_OPTION</literal> in the config file
(with or without any value) will then turn on the corresponding piece of
code.</para>
<para>People familiar with the C language will immediately recognize that
everything could be counted as a &ldquo;config option&rdquo; where there
is at least a single <literal>#ifdef</literal> referencing it...
However, it's unlikely that many people would put</para>
<programlisting>
options notyet,notdef</programlisting>
<para>in their config file, and then wonder why the kernel compilation
falls over. <!-- smiley -->:-)</para>
<para>Clearly, using arbitrary names for the options makes it very hard to
track their usage throughout the kernel source tree. That is the
rationale behind the <emphasis>new-style</emphasis> option scheme, where
each option goes into a separate <filename>.h</filename> file in the
kernel compile directory, which is by convention named
<filename>opt_<replaceable>foo</replaceable>.h</filename>. This way,
the usual Makefile dependencies could be applied, and
<command>make</command> can determine what needs to be recompiled once
an option has been changed.</para>
<para>The old-style option mechanism still has one advantage for local
options or maybe experimental options that have a short anticipated
lifetime: since it is easy to add a new <literal>#ifdef</literal> to the
kernel source, this has already made it a kernel config option. In this
case, the administrator using such an option is responsible himself for
knowing about its implications (and maybe manually forcing the
recompilation of parts of his kernel). Once the transition of all
supported options has been done, &man.config.8; will warn whenever an
unsupported option appears in the config file, but it will nevertheless
include it into the kernel Makefile.</para>
</sect1>
<sect1>
<title>Now What Do I Have to Do for it?</title>
<para>First, edit <filename>sys/conf/options</filename> (or
<filename>sys/i386/conf/options.<replaceable>&lt;arch&gt;</replaceable></filename>,
e. g. <filename>sys/i386/conf/options.i386</filename>), and select an
<filename>opt_<replaceable>foo</replaceable>.h</filename> file where
your new option would best go into.</para>
<para>If there is already something that comes close to the purpose of the
new option, pick this. For example, options modifying the overall
behaviour of the SCSI subsystem can go into
<filename>opt_scsi.h</filename>. By default, simply mentioning an
option in the appropriate option file, say <literal>FOO</literal>,
implies its value will go into the corresponding file
<filename>opt_foo.h</filename>. This can be overridden on the
right-hand side of a rule by specifying another filename.</para>
<para>If there is no
<filename>opt_<replaceable>foo</replaceable>.h</filename> already
available for the intended new option, invent a new name. Make it
meaningful, and comment the new section in the
<filename>options[<replaceable>.&lt;arch&gt;</replaceable>]</filename>
file. &man.config.8; will automagically pick up the change, and create
that file next time it is run. Most options should go in a header file
by themselves..</para>
<para>Packing too many options into a single
<filename>opt_<replaceable>foo</replaceable>.h</filename> will cause too
many kernel files to be rebuilt when one of the options has been changed
in the config file.</para>
<para>Finally, find out which kernel files depend on the new option.
Unless you have just invented your option, and it does not exist
anywhere yet, <screen>&prompt.user; <userinput>find /usr/src/sys -name
type f | xargs fgrep NEW_OPTION</userinput></screen> is your friend
in finding them. Go and edit all those files, and add <programlisting>
#include "opt_foo.h"</programlisting> <emphasis>on top</emphasis>,
before all the <literal>#include &lt;xxx.h&gt;</literal> stuff. This
sequence is most important as the options could override defaults from
the regular include files, if the defaults are of the form
<programlisting> #ifndef NEW_OPTION #define NEW_OPTION (something)
#endif</programlisting> in the regular header.</para>
<para>Adding an option that overrides something in a system header file
(i.e., a file sitting in <filename>/usr/include/sys/</filename>) is
almost always a mistake.
<filename>opt_<replaceable>foo</replaceable>.h</filename> cannot be
included into those files since it would break the headers more
seriously, but if it is not included, then places that include it may
get an inconsistent value for the option. Yes, there are precedents for
this right now, but that does not make them more correct.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,333 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.11 1999-08-05 20:48:17 nik Exp $
-->
<chapter id="l10n">
<title>Localization</title>
<sect1 id="russian">
<title>Russian Language (KOI8-R encoding)</title>
<para><emphasis>Contributed by &a.ache; 1 May
1997</emphasis>.</para>
<para>See more info about KOI8-R encoding at <ulink
URL="http://www.nagual.pp.ru/~ache/koi8.html">KOI8-R References
(Russian Net Character Set)</ulink>.</para>
<sect2 id="russian-console">
<title>Console Setup</title>
<procedure>
<step>
<para>Add following line to your kernel configuration file:
<programlisting>
options "SC_MOUSE_CHAR=0x03"</programlisting>
to move character codes used for mouse cursor off KOI8-R
pseudographics range.</para>
</step>
<step>
<para>Russian console entry in
<filename>/etc/rc.conf</filename> should looks like:</para>
<programlisting>
keymap=ru.koi8-r
keychange="61 ^[[K"
scrnmap=koi8-r2cp866
font8x16=cp866b-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8</programlisting>
<note>
<para>^[ means that real ESC character must be entered into
<filename>/etc/rc.conf</filename>, not just ^[ string.</para>
</note>
<para>This tuning means KOI8-R keyboard with Alternative screen font
mapped to KOI8-R encoding to preserve pseudographics,
<literal>Gray Delete</literal> key remapped to match Russian
&man.termcap.5; entry for
FreeBSD console.</para>
<para>RUS/LAT switch will be <literal>CapsLock</literal>. Old
CapsLock function still available via
<literal>Shift+CapsLock</literal>. CapsLock LED will indicate RUS
mode, not CapsLock mode.</para>
</step>
<step>
<para>For each <literal>ttyv?</literal> entry in
<filename>/etc/ttys</filename> change terminal type from
<literal>cons25</literal> to <literal>cons25r</literal>, i.e. each
entry should looks like:</para>
<programlisting>
ttyv0 "/usr/libexec/getty Pc" cons25r on secure</programlisting>
</step>
</procedure>
</sect2>
<sect2 id="russian-locale">
<title>Locale Setup</title>
<para><anchor id="russian-env"> There is two environment variables
for locale setup:</para>
<itemizedlist>
<listitem>
<para><envar>LANG</envar> for POSIX &man.setlocale.3; family
functions;</para>
</listitem>
<listitem>
<para><envar>MM_CHARSET</envar> for applications MIME character
set.</para>
</listitem>
</itemizedlist>
<para>The best way is using <filename>/etc/login.conf</filename>
<literal>russian</literal> user's login class in
&man.passwd.5; entry login class position. See &man.login.conf.5;
for details.</para>
<sect3 id="russian-class">
<title>Login Class Method</title>
<para>First of all check your <filename>/etc/login.conf</filename>
have <literal>russian</literal> login class, this entry may looks
like:</para>
<programlisting>
russian:Russian Users Accounts:\
:charset=KOI8-R:\
:lang=ru_RU.KOI8-R:\
:tc=default:</programlisting>
<sect4>
<title>How to do it with &man.vipw.8;</title>
<para>If you use &man.vipw.8; for adding new users,
<filename>/etc/master.passwd</filename> entry should looks
like:</para>
<programlisting>
user:password:1111:11:russian:0:0:User Name:/home/user:/bin/csh</programlisting>
</sect4>
<sect4>
<title>How to do it with &man.adduser.8;</title>
<para>If you use &man.adduser.8; for adding new users:</para>
<itemizedlist>
<listitem>
<para>Set
<programlisting>
defaultclass = russian</programlisting>
in <filename>/etc/adduser.conf</filename> (you must enter
<literal>default</literal> class for all non-Russian users in
this case);</para>
</listitem>
<listitem>
<para>Alternative variant will be answering
<literal>russian</literal> each time when you see
<screen><prompt>Enter login class:</prompt> default []:</screen>
prompt from &man.adduser.8;;</para>
</listitem>
<listitem>
<para>Another variant: call
<screen>&prompt.root; <userinput>adduser -class russian</userinput></screen>
for each Russian user you want to add.</para>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>How to do it with &man.pw.8;</title>
<para>If you use &man.pw.8; for adding new users, call it in this
form:</para>
<screen>&prompt.root; <userinput>pw useradd user_name -L russian</userinput></screen>
</sect4>
</sect3>
<sect3>
<title>Shell Startup Files Method</title>
<para>If you don't want to use <link linkend="russian-class">login
class method</link> for some reasons, just set this <link
linkend="russian-env">two environment variables</link> in the
following shell startup files:</para>
<itemizedlist>
<listitem>
<para><filename>/etc/profile</filename>:</para>
<programlisting>
LANG=ru_RU.KOI8-R; export LANG
MM_CHARSET=KOI8-R; export MM_CHARSET</programlisting>
</listitem>
<listitem>
<para><filename>/etc/csh.login</filename>:</para>
<programlisting>
setenv LANG ru_RU.KOI8-R
setenv MM_CHARSET KOI8-R</programlisting>
</listitem>
</itemizedlist>
<para>Alternatively you can add this instructions to</para>
<itemizedlist>
<listitem>
<para><filename>/usr/share/skel/dot.profile</filename>:</para>
<para>(similar to <filename>/etc/profile</filename> above);</para>
</listitem>
<listitem>
<para><filename>/usr/share/skel/dot.login</filename>:</para>
<para>(similar to <filename>/etc/csh.login</filename>
above).</para>
</listitem>
</itemizedlist>
</sect3>
</sect2>
<sect2 id="russian-printer">
<title>Printer Setup</title>
<para>Since most printers with Russian characters comes with hardware
code page CP866, special output filter needed for KOI8-R -&gt; CP866
conversion. Such filter installed by default as
<filename>/usr/libexec/lpr/ru/koi2alt</filename>. So, Russian printer
<filename>/etc/printcap</filename> entry should looks like:</para>
<programlisting>
lp|Russian local line printer:\
:sh:of=/usr/libexec/lpr/ru/koi2alt:\
:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:</programlisting>
<para>See &man.printcap.5; for detailed description.</para>
</sect2>
<sect2 id="russian-msdosfs">
<title>MSDOS FS and Russian file names</title>
<para>Look at following example &man.fstab.5; entry to enable support
for Russian file names in MSDOS FS:</para>
<programlisting>
/dev/sd0s1 /dos/c msdos rw,-W=koi2dos,-L=ru_RU.KOI8-R 0 0</programlisting>
<para>See &man.mount.msdos.8; for detailed description of
<option>-W</option> and <option>-L</option> options.</para>
</sect2>
<sect2 id="russian-xwindow">
<title>X Window Setup</title>
<para>Step by step instructions:</para>
<procedure>
<step>
<para>Do <link linkend="russian-locale">non-X locale setup</link>
first as described.</para>
<note>
<para><anchor id="russian-note">Russian KOI8-R locale may not work
with old XFree86 releases (lower than 3.3). XFree86 port from
<filename>/usr/ports/x11/XFree86</filename> already have most
recent XFree86 version, so it will work, if you install XFree86
from this port. XFree86 version shipped with the latest FreeBSD
distribution should work too (check XFree86 version number not
less than 3.3 first).</para>
</note>
</step>
<step>
<para>Go to <filename>/usr/ports/russian/X.language</filename>
directory and say
<screen>&prompt.root; <userinput>make all install</userinput></screen>
there. This port install latest version of KOI8-R fonts. XFree86
3.3 already have some KOI8-R fonts, but this ones scaled
better.</para>
<para>Check find <literal>"Files"</literal> section in your
<filename>/etc/XF86Config</filename>, following lines must be
before any other <literal>FontPath</literal> entries:</para>
<programlisting>
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"</programlisting>
<para>If you use high resolution video mode, swap 75 dpi and 100 dpi
lines.</para>
</step>
<step>
<para>To activate Russian keyboard add
<programlisting>
XkbKeymap "xfree86(ru)"</programlisting>
line into <literal>"Keyboard"</literal> section in your
<filename>/etc/XF86Config</filename>, also make sure that
<literal>XkbDisable</literal> is turned off (commented out)
there.</para>
<para>RUS/LAT switch will be <literal>CapsLock</literal>. Old
CapsLock function still available via
<literal>Shift+CapsLock</literal> (in LAT mode only).</para>
<note>
<para>Russian XKB keyboard may not work with old XFree86 versions,
see <link linkend="russian-note">locale note</link> for more
info. Russian XKB keyboard may not work with non-localized
applications too, minimally localized application should call
<literal>XtSetLanguageProc (NULL, NULL, NULL);</literal>
function early in the program.</para>
</note>
</step>
</procedure>
</sect2>
</sect1>
<sect1 id="german">
<title>German Language (ISO 8859-1)</title>
<para>Slaven Rezic <email>eserte@cs.tu-berlin.de</email> wrote a tutorial
how to use umlauts on a FreeBSD machine. The tutorial is written in
German and available at <ulink
URL="http://www.de.FreeBSD.org/de/umlaute/">http://www.de.FreeBSD.org/de/umlaute/</ulink>.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,947 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.17 1999-08-05 20:48:18 nik Exp $
-->
<chapter id="linuxemu">
<title>Linux Emulation</title>
<para><emphasis>Contributed by &a.handy; and &a.rich;</emphasis></para>
<sect1>
<title>How to Install the Linux Emulator</title>
<para>Linux emulation in FreeBSD has reached a point where it is possible
to run a large fraction of Linux binaries in both a.out and ELF format.
The linux emulation in the 2.1-STABLE branch is capable of running Linux
DOOM and Mathematica; the version present in &rel.current;-RELEASE is
vastly more capable and runs all these as well as Quake, Abuse, IDL,
netrek for Linux and a whole host of other programs.</para>
<para>There are some Linux-specific operating system features that are not
supported on FreeBSD. Linux binaries will not work on FreeBSD if they
use the Linux <filename>/proc</filename> filesystem (which is different
from the optional FreeBSD <filename>/proc</filename> filesystem) or
i386-specific calls, such as enabling virtual 8086 mode.</para>
<para>Depending on which version of FreeBSD you are running, how you get
Linux-emulation up will vary slightly:</para>
<sect2>
<title>Installing Linux Emulation in 2.1-STABLE</title>
<para>The <filename>GENERIC</filename> kernel in 2.1-STABLE is not
configured for linux compatibility so you must reconfigure your kernel
for it. There are two ways to do this: 1. linking the emulator
statically in the kernel itself and 2. configuring your kernel to
dynamically load the linux loadable kernel module (LKM).</para>
<para>To enable the emulator, add the following to your configuration
file (c.f. <filename>/sys/i386/conf/LINT</filename>):</para>
<programlisting>
options COMPAT_LINUX</programlisting>
<para>If you want to run doom or other applications that need shared
memory, also add the following.</para>
<programlisting>
options SYSVSHM</programlisting>
<para>The linux system calls require 4.3BSD system call compatibility.
So make sure you have the following.</para>
<programlisting>
options "COMPAT_43"</programlisting>
<para>If you prefer to statically link the emulator in the kernel rather
than use the loadable kernel module (LKM), then add</para>
<programlisting>
options LINUX</programlisting>
<para>Then run config and install the new kernel as described in the
<link linkend="kernelconfig">kernel configuration</link>
section.</para>
<para>If you decide to use the LKM you must also install the loadable
module. A mismatch of versions between the kernel and loadable module
can cause the kernel to crash, so the safest thing to do is to
reinstall the LKM when you install the kernel.</para>
<screen>&prompt.root; <userinput>cd /usr/src/lkm/linux</userinput>
&prompt.root; <userinput>make all install</userinput></screen>
<para>Once you have installed the kernel and the LKM, you can invoke
`linux' as root to load the LKM.</para>
<screen>&prompt.root; <userinput>linux</userinput>
Linux emulator installed
Module loaded as ID 0</screen>
<para>To see whether the LKM is loaded, run
<command>modstat</command>.</para>
<screen>&prompt.user; modstat
Type Id Off Loadaddr Size Info Rev
Module Name EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator</screen>
<para>You can cause the LKM to be loaded when the system boots in either
of two ways. In FreeBSD 2.2.1-RELEASE and 2.1-STABLE enable it in
<filename>/etc/sysconfig</filename>
<programlisting>
linux=YES</programlisting>
by changing it from NO to YES. FreeBSD 2.1 RELEASE and earlier do not
have such a line and on those you will need to edit
<filename>/etc/rc.local</filename> to add the following line.</para>
<programlisting>
linux</programlisting>
</sect2>
<sect2>
<title>Installing Linux Emulation in 2.2.2-RELEASE and later</title>
<para>It is no longer necessary to specify <literal>options
LINUX</literal> or <literal>options COMPAT_LINUX</literal>. Linux
emulation is done with an LKM (&ldquo;Loadable Kernel Module&rdquo;)
so it can be installed on the fly without having to reboot. You will
need the following things in your startup files, however:</para>
<orderedlist>
<listitem>
<para>In <filename>/etc/rc.conf</filename>, you need the following
line:</para>
<programlisting>
linux_enable=YES</programlisting>
</listitem>
<listitem>
<para>This, in turn, triggers the following action in
<filename>/etc/rc.i386</filename>:</para>
<programlisting>
# Start the Linux binary emulation if requested.
if [ "X${linux_enable}" = X"YES" ]; then echo -n '
linux'; linux &gt; /dev/null 2&gt;&amp;1
fi</programlisting>
</listitem>
</orderedlist>
<para>If you want to verify it is running, modstat will do that:</para>
<screen>&prompt.user; modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod</screen>
<para>However, there have been reports that this fails on some
2.2-RELEASE and later systems. If for some reason you cannot load the
linux LKM, then statically link the emulator in the kernel by
adding
<programlisting>
options LINUX</programlisting>
to your kernel config file. Then run config and install the new
kernel as described in the <link linkend="kernelconfig">kernel
configuration</link> section.</para>
</sect2>
<sect2>
<title>Installing Linux Runtime Libraries</title>
<sect3>
<title>Installing using the linux_base port</title>
<para>Most linux applications use shared libraries, so you are still
not done until you install the shared libraries. It is possible to
do this by hand, however, it is vastly simpler to just grab the
linux_base port:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base</userinput>
&prompt.root; <userinput>make all install</userinput></screen>
<para>and you should have a working linux emulator. Legend (and the
mail archives <!-- smiley -->:-) seems to hold that Linux emulation
works best with linux binaries linked against the ZMAGIC libraries;
QMAGIC libraries (such as those used in Slackware V2.0) may tend to
give the Linuxulator heartburn. Also, expect some programs to
complain about incorrect minor versions of the system libraries. In
general, however, this does not seem to be a problem.</para>
</sect3>
<sect3>
<title>Installing libraries manually</title>
<para>If you do not have the &ldquo;ports&rdquo; distribution, you can
install the libraries by hand instead. You will need the Linux
shared libraries that the program depends on and the runtime linker.
Also, you will need to create a "shadow root" directory,
<filename>/compat/linux</filename>, for Linux libraries on your
FreeBSD system. Any shared libraries opened by Linux programs run
under FreeBSD will look in this tree first. So, if a Linux program
loads, for example, <filename>/lib/libc.so</filename>, FreeBSD will
first try to open <filename>/compat/linux/lib/libc.so</filename>,
and if that does not exist then it will try
<filename>/lib/libc.so</filename>. Shared libraries should be
installed in the shadow tree <filename>/compat/linux/lib</filename>
rather than the paths that the Linux <command>ld.so</command>
reports.</para>
<para>FreeBSD-2.2-RELEASE and later works slightly differently with
respect to <filename>/compat/linux</filename>: all files, not just
libraries, are searched for from the &ldquo;shadow root&rdquo;
<filename>/compat/linux</filename>.</para>
<para>Generally, you will need to look for the shared libraries that
Linux binaries depend on only the first few times that you install
a Linux program on your FreeBSD system. After a while, you will
have a sufficient set of Linux shared libraries on your system to be
able to run newly imported Linux binaries without any extra
work.</para>
</sect3>
<sect3>
<title>How to install additional shared libraries</title>
<para>What if you install the <filename>linux_base</filename> port and
your application still complains about missing shared libraries? How
do you know which shared libraries Linux binaries need, and where to
get them? Basically, there are 2 possibilities (when following these
instructions: you will need to be root on your FreeBSD system to do
the necessary installation steps).</para>
<para>If you have access to a Linux system, see what shared libraries
the application needs, and copy them to your FreeBSD system.
Example: you have just ftp'ed the Linux binary of Doom. Put it on
the Linux system you have access to, and check which shared
libraries it needs by running <command>ldd
linuxxdoom</command>:</para>
<screen>&prompt.user; <userinput>ldd linuxxdoom</userinput>
libXt.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<para>You would need to get all the files from the last column, and
put them under <filename>/compat/linux</filename>, with the names in
the first column as symbolic links pointing to them. This means you
eventually have these files on your FreeBSD system:</para>
<screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -&gt; libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -&gt; libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
<note>
<para>Note that if you already have a Linux shared library with a
matching major revision number to the first column of the
<command>ldd</command> output, you will not need to copy the file
named in the last column to your system, the one you already have
should work. It is advisable to copy the shared library anyway if
it is a newer version, though. You can remove the old one, as
long as you make the symbolic link point to the new one. So, if
you have these libraries on your system:</para>
<screen>/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.27</screen>
<para>and you find a new binary that claims to require a later
version according to the output of <command>ldd</command>:</para>
<screen>libc.so.4 (DLL Jump 4.5pl26) -&gt; libc.so.4.6.29</screen>
<para>If it is only one or two versions out of date in the in the
trailing digit then do not worry about copying
<filename>/lib/libc.so.4.6.29</filename> too, because the program
should work fine with the slightly older version. However, if you
like you can decide to replace the <filename>libc.so</filename>
anyway, and that should leave you with:</para>
<screen>/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
</note>
<note>
<para>The symbolic link mechanism is <emphasis>only</emphasis>
needed for Linux binaries. The FreeBSD runtime linker takes care
of looking for matching major revision numbers itself and you do
not need to worry about it.</para>
</note>
</sect3>
<sect3>
<title>Configuring the <filename>ld.so</filename> &mdash; for FreeBSD
2.2-RELEASE and later</title>
<para>This section applies only to FreeBSD 2.2-RELEASE and later.
Those running 2.1-STABLE should skip this section.</para>
<para>Finally, if you run FreeBSD 2.2-RELEASE you must make sure that
you have the Linux runtime linker and its config files on your
system. You should copy these files from the Linux system to their
appropriate place on your FreeBSD system (to the
<filename>/compat/linux</filename> tree):</para>
<screen>/compat/linux/lib/ld.so
/compat/linux/etc/ld.so.config</screen>
<para>If you do not have access to a Linux system, you should get the
extra files you need from various ftp sites. Information on where
to look for the various files is appended below. For now, let us
assume you know where to get the files.</para>
<para>Retrieve the following files (all from the same ftp site to
avoid any version mismatches), and install them under
<filename>/compat/linux</filename> (i.e.
<filename>/foo/bar</filename> is installed as
<filename>/compat/linux/foo/bar</filename>):</para>
<screen>/sbin/ldconfig
/usr/bin/ldd
/lib/libc.so.x.y.z
/lib/ld.so</screen>
<para><command>ldconfig</command> and <command>ldd</command> do not
necessarily need to be under <filename>/compat/linux</filename>; you
can install them elsewhere in the system too. Just make sure they
do not conflict with their FreeBSD counterparts. A good idea would
be to install them in <filename>/usr/local/bin</filename> as
<command>ldconfig-linux</command> and
<command>ldd-linux</command>.</para>
<para>Create the file
<filename>/compat/linux/etc/ld.so.conf</filename>, containing the
directories in which the Linux runtime linker should look for shared
libs. It is a plain text file, containing a directory name on each
line. <filename>/lib</filename> and <filename>/usr/lib</filename>
are standard, you could add the following:</para>
<programlisting>
/usr/X11/lib
/usr/local/lib</programlisting>
<para>When a linux binary opens a library such as
<filename>/lib/libc.so</filename> the emulator maps the name to
<filename>/compat/linux/lib/libc.so</filename> internally. All
linux libraries should be installed under /compat/linux (e.g.
<filename>/compat/linux/lib/libc.so</filename>,
<filename>/compat/linux/usr/X11/lib/libX11.so</filename>, etc.) in
order for the emulator to find them.</para>
<para>Those running FreeBSD 2.2-RELEASE should run the Linux ldconfig
program.</para>
<screen>&prompt.root <userinput>cd /compat/linux/lib</userinput>
&prompt.root; <userinput>/compat/linux/sbin/ldconfig</userinput></screen>
<para><command>ldconfig</command> is statically linked, so it does not
need any shared libraries to run. It creates the file
<filename>/compat/linux/etc/ld.so.cache</filename> which contains
the names of all the shared libraries and should be rerun to
recreate this file whenever you install additional shared
libraries.</para>
<para>On 2.1-STABLE do not install
<filename>/compat/linux/etc/ld.so.cache</filename> or run
<command>ldconfig</command>; in 2.1-STABLE the syscalls are
implemented differently and <command>ldconfig</command> is not
needed or used.</para>
<para>You should now be set up for Linux binaries which only need a
shared libc. You can test this by running the Linux
<command>ldd</command> on itself. Supposing that you have it
installed as <command>ldd-linux</command>, it should produce
something like:</para>
<screen>&prompt.root; <userinput>ldd-linux `which ldd-linux`</userinput>
libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<para>This being done, you are ready to install new Linux binaries.
Whenever you install a new Linux program, you should check if it
needs shared libraries, and if so, whether you have them installed
in the <filename>/compat/linux</filename> tree. To do this, you run
the Linux version <command>ldd</command> on the new program, and
watch its output. <command>ldd</command> (see also the manual page
for &man.ldd.1;) will print a list of shared libraries
that the program depends on, in the form
<literal><replaceable>majorname</replaceable>
(<replaceable>jumpversion</replaceable>) =&gt;
<replaceable>fullname</replaceable></literal>.</para>
<para>If it prints <literal>not found</literal> instead of
<replaceable>fullname</replaceable> it means that you need an extra
library. The library needed is shown in majorname and will be of
the form
<literal>lib<replaceable>XXXX</replaceable>.so.<replaceable>N</replaceable></literal>.
You will need to find a
<filename>lib<replaceable>XXXX</replaceable>.so.N.mm</filename> on a
Linux ftp site, and install it on your system. The
<replaceable>XXXX</replaceable> (name) and
<replaceable>N</replaceable> (major revision number) should match;
the minor number(s) <replaceable>mm</replaceable> are less
important, though it is advised to take the most recent
version.</para>
</sect3>
</sect2>
<sect2>
<title>Installing Linux ELF binaries</title>
<para>ELF binaries sometimes require an extra step of
&ldquo;branding&rdquo;. If you attempt to run an unbranded ELF
binary, you will get an error message like the following;</para>
<screen>&prompt.user; <userinput>./my-linux-elf-binary</userinput>
ELF binary type not known
Abort</screen>
<para>To help the FreeBSD kernel distinguish between a FreeBSD ELF
binary from a Linux binary, use the &man.brandelf.1; utility.</para>
<screen>&prompt.user; <userinput>brandelf -t Linux my-linux-elf-binary</userinput></screen>
<para>The GNU toolchain now places the appropriate branding information
into ELF binaries automatically, so you should be needing to do this
step increasingly rarely in future.</para>
</sect2>
<sect2>
<title>Configuring the host name resolver</title>
<para>If DNS does not work or you get the messages
<screen>resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword</screen>
then you need to configure a
<filename>/compat/linux/etc/host.conf</filename> file containing:
<programlisting>
order hosts, bind
multi on</programlisting>
where the order here specifies that <filename>/etc/hosts</filename> is
searched first and DNS is searched second. When
<filename>/compat/linux/etc/host.conf</filename> is not installed
linux applications find FreeBSD's <filename>/etc/host.conf</filename>
and complain about the incompatible FreeBSD syntax. You should remove
<literal>bind</literal> if you have not configured a name-server using
the <filename>/etc/resolv.conf</filename> file.</para>
<para>Lastly, those who run 2.1-STABLE need to set an the
<envar>RESOLV_HOST_CONF</envar> environment variable so that
applications will know how to search the host tables. If you run
FreeBSD 2.2-RELEASE or later, you can skip this. For the
<filename>/bin/csh</filename> shell use:</para>
<screen>&prompt.user; <userinput>setenv RESOLV_HOST_CONF /compat/linux/etc/host.conf</userinput></screen>
<para>For <filename>/bin/sh</filename> use:</para>
<screen>&prompt.user; <userinput>RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF</userinput></screen>
</sect2>
<sect2>
<title>Finding the necessary files</title>
<note>
<para>The information below is valid as of the time this document was
written, but certain details such as names of ftp sites, directories
and distribution names may have changed by the time you read
this.</para>
</note>
<para>Linux is distributed by several groups that make their own set of
binaries that they distribute. Each distribution has its own name,
like &ldquo;Slackware&rdquo; or &ldquo;Yggdrasil&rdquo;. The
distributions are available on a lot of ftp sites. Sometimes the
files are unpacked, and you can get the individual files you need, but
mostly they are stored in distribution sets, usually consisting of
subdirectories with gzipped tar files in them. The primary ftp sites
for the distributions are:</para>
<orderedlist>
<listitem>
<para>sunsite.unc.edu:/pub/Linux/distributions</para>
</listitem>
<listitem>
<para>tsx-11.mit.edu:/pub/linux/distributions</para>
</listitem>
</orderedlist>
<para>Some European mirrors:</para>
<orderedlist>
<listitem>
<para>ftp.luth.se:/pub/linux/distributions</para>
</listitem>
<listitem>
<para>ftp.demon.co.uk:/pub/unix/linux</para>
</listitem>
<listitem>
<para>src.doc.ic.ac.uk:/packages/linux/distributions</para>
</listitem>
</orderedlist>
<para>For simplicity, let us concentrate on Slackware here. This
distribution consists of a number of subdirectories, containing
separate packages. Normally, they are controlled by an install
program, but you can retrieve files &ldquo;by hand&rdquo; too. First
of all, you will need to look in the <filename>contents</filename>
subdir of the distribution. You will find a lot of small text files
here describing the contents of the separate packages. The fastest
way to look something up is to retrieve all the files in the contents
subdirectory, and grep through them for the file you need. Here is an
example of a list of files that you might need, and in which
contents-file you will find it by grepping through them:</para>
<informaltable frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Library</entry>
<entry>Package</entry>
</row>
</thead>
<tbody>
<row>
<entry><filename>ld.so</filename></entry>
<entry>ldso</entry>
</row>
<row>
<entry><filename>ldconfig</filename></entry>
<entry>ldso</entry>
</row>
<row>
<entry><filename>ldd</filename></entry>
<entry>ldso</entry>
</row>
<row>
<entry><filename>libc.so.4</filename></entry>
<entry>shlibs</entry>
</row>
<row>
<entry><filename>libX11.so.6.0</filename></entry>
<entry>xf_lib</entry>
</row>
<row>
<entry><filename>libXt.so.6.0</filename></entry>
<entry>xf_lib</entry>
</row>
<row>
<entry><filename>libX11.so.3</filename></entry>
<entry>oldlibs</entry>
</row>
<row>
<entry><filename>libXt.so.3</filename></entry>
<entry>oldlibs</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>So, in this case, you will need the packages ldso, shlibs, xf_lib
and oldlibs. In each of the contents-files for these packages, look
for a line saying <literal>PACKAGE LOCATION</literal>, it will tell
you on which &ldquo;disk&rdquo; the package is, in our case it will
tell us in which subdirectory we need to look. For our example, we
would find the following locations:</para>
<informaltable frame="none">
<tgroup cols="2">
<thead
<row>
<entry>Package</entry>
<entry>Location</entry>
</row>
</thead>
<tbody>
<row>
<entry>ldso</entry>
<entry>diska2</entry>
</row>
<row>
<entry>shlibs</entry>
<entry>diska2</entry>
</row>
<row>
<entry>oldlibs</entry>
<entry>diskx6</entry>
</row>
<row>
<entry>xf_lib</entry>
<entry>diskx9</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>The locations called
&ldquo;disk<replaceable>XX</replaceable>&rdquo; refer to the
<filename>slakware/<replaceable>XX</replaceable></filename>
subdirectories of the distribution, others may be found in the
<filename>contrib</filename> subdirectory. In this case, we could now
retrieve the packages we need by retrieving the following files
(relative to the root of the Slackware distribution tree):</para>
<itemizedlist>
<listitem>
<para><filename>slakware/a2/ldso.tgz</filename></para>
</listitem>
<listitem>
<para><filename>slakware/a2/shlibs.tgz</filename></para>
</listitem>
<listitem>
<para><filename>slakware/x6/oldlibs.tgz</filename></para>
</listitem>
<listitem>
<para><filename>slakware/x9/xf_lib.tgz</filename></para>
</listitem>
</itemizedlist>
<para>Extract the files from these gzipped tarfiles in your
<filename>/compat/linux</filename> directory (possibly omitting or
afterwards removing files you do not need), and you are done.</para>
<para><emphasis>See also:</emphasis>
<filename>ftp://ftp.FreeBSD.org/pub/FreeBSD/2.0.5-RELEASE/xperimnt/linux-emu/README</filename> and <filename>/usr/src/sys/i386/ibcs2/README.iBCS2</filename></para>
</sect2>
</sect1>
<sect1 id="mathematica">
<title>How to Install Mathematica on FreeBSD</title>
<para><emphasis>Contributed by &a.rich; and &a.chuck;</emphasis></para>
<para>This document shows how to install the Linux binary distribution of
Mathematica 2.2 on FreeBSD 2.1.</para>
<para>Mathematica supports Linux but not FreeBSD as it stands. So once
you have configured your system for Linux compatibility you have most of
what you need to run Mathematica.</para>
<para>For those who already have the student edition of Mathematica for
DOS the cost of upgrading to the Linux version at the time this was
written, March 1996, was &#36;45.00. It can be ordered directly from
Wolfram at (217) 398-6500 and paid for by credit card.</para>
<sect2>
<title>Unpacking the Mathematica distribution</title>
<para>The binaries are currently distributed by Wolfram on CDROM. The
CDROM has about a dozen tar files, each of which is a binary
distribution for one of the supported architectures. The one for
Linux is named <filename>LINUX.TAR</filename>. You can, for example,
unpack this into <filename>/usr/local/Mathematica</filename>:</para>
<screen>&prompt.root; <userinput>cd /usr/local</userinput>
&prompt.root; <userinput>mkdir Mathematica</userinput>
&prompt.root; <userinput>cd Mathematica</userinput>
&prompt.root; <userinput>tar -xvf /cdrom/LINUX.TAR</userinput></screen>
</sect2>
<sect2>
<title>Obtaining your Mathematica Password</title>
<para>Before you can run Mathematica you will have to obtain a password
from Wolfram that corresponds to your &ldquo;machine ID&rdquo;.</para>
<para>Once you have installed the linux compatibility runtime libraries
and unpacked the mathematica you can obtain the &ldquo;machine
ID&rdquo; by running the program <command>mathinfo</command> in the
Install directory.</para>
<screen>&prompt.root; <userinput>cd /usr/local/Mathematica/Install</userinput>
&prompt.root; <userinput>mathinfo</userinput>
LINUX: 'ioctl' fd=5, typ=0x89(), num=0x27 not implemented
richc.isdn.bcm.tmc.edu 9845-03452-90255</screen>
<para>So, for example, the &ldquo;machine ID&rdquo; of
<hostid>richc</hostid> is <literal>9845-03452-90255</literal>. You
can ignore the message about the ioctl that is not implemented. It
will not prevent Mathematica from running in any way and you can
safely ignore it, though you will see the message every time you run
Mathematica.</para>
<para>When you register with Wolfram, either by email, phone or fax, you
will give them the &ldquo;machine ID&rdquo; and they will respond with
a corresponding password consisting of groups of numbers. You need to
add them both along with the machine name and license number in your
mathpass file.</para>
<para>You can do this by invoking:</para>
<screen>&prompt.root; <userinput>cd /usr/local/Mathematica/Install</userinput>
&prompt.root; <userinput>math.install</userinput></screen>
<para>It will ask you to enter your license number and the Wolfram
supplied password. If you get them mixed up or for some reason the
math.install fails, that is OK; you can simply edit the file
<filename>mathpass</filename> in this same directory to correct the
info manually.</para>
<para>After getting past the password, math.install will ask you if you
accept the install defaults provided, or if you want to use your own.
If you are like us and distrust all install programs, you probably
want to specify the actual directories. Beware. Although the
math.install program asks you to specify directories, it will not
create them for you, so you should perhaps have a second window open
with another shell so that you can create them before you give them to
the install program. Or, if it fails, you can create the directories
and then restart the <command>math.install</command> program. The
directories we chose to create beforehand and specify to
<command>math.install</command> were:</para>
<informaltable frame="none">
<tgroup cols="2">
<tbody>
<row>
<entry><filename>/usr/local/Mathematica/bin</filename></entry>
<entry>for binaries</entry>
</row>
<row>
<entry><filename>/usr/local/Mathematica/man/man1</filename></entry>
<entry>for man pages</entry>
</row>
<row>
<entry>/usr/local/Mathematica/lib/X11</entry>
<entry>for the XKeysymb file</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>You can also tell it to use <filename>/tmp/math.record</filename>
for the system record file, where it puts logs of sessions. After
this <command>math.install</command> will continue on to unpacking
things and placing everything where it should go.</para>
<para>The Mathematica Notebook feature is included separately, as the X
Front End, and you have to install it separately. To get the X Front
End stuff correctly installed, cd into the
<filename>/usr/local/Mathematica/FrontEnd</filename> directory and
execute the <command>xfe.install</command> shell script. You will
have to tell it where to put things, but you do not have to create any
directories because it will use the same directories that had been
created for math.install. When it finishes, there should be a new
shell script in <filename>/usr/local/Mathematica/bin</filename> called
<filename>mathematica</filename>.</para>
<para>Lastly, you need to modify each of the shell scripts that
Mathematica has installed. At the beginning of every shell script in
<filename>/usr/local/Mathematica/bin</filename> add the following
line:</para>
<screen>&prompt.user; <userinput>XKEYSYMDB=/usr/local/Mathematica/lib/X11/XKeysymDB; export XKEYSYMDB</userinput></screen>
<para>This tells Mathematica were to find its own
version of the key mapping file <filename>XKeysymDB</filename>.
Without this you will get pages of error messages about missing
key mappings.</para>
<para>On 2.1-STABLE you need to add the following as well:</para>
<screen>&prompt.user; <userinput>RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF</userinput></screen>
<para>This tells Mathematica to use the linux version of host.conf.
This file has a different syntax from FreeBSD's host.conf, so you will
get an error message about <filename>/etc/host.conf</filename> if you
leave this out.</para>
<para>You might also want to modify your
<filename>/etc/manpath.config</filename> file to read the new man
directory, and you may need to edit your <filename>~/.cshrc</filename>
file to add <filename>/usr/local/Mathematica/bin</filename> to your
path.</para>
<para>That is about all it takes. With this you should be able to type
<command>mathematica</command> and get a really slick looking
Mathematica Notebook screen up. Mathematica has included the Motif
user interfaces, but it is compiled in statically, so you do not need
the Motif libraries. Good luck doing this yourself!</para>
</sect2>
<sect2>
<title>Bugs</title>
<para>The Notebook front end is known to hang sometimes when reading
notebook files with an error messages similar to:</para>
<screen><errorname>File .../Untitled-1.mb appears to be broken for OMPR.257.0</errorname></screen>
<para>We have not found the cause for this, but it only affects the
Notebook's X Window front end, not the mathematica engine itself. So
the command line interface invoked by 'math' is unaffected by this
bug.</para>
</sect2>
<sect2>
<title>Acknowledgments</title>
<para>A well-deserved thanks should go to &a.sos; and &a.peter; who made
linux emulation what it is today, and Michael Smith who drove these
two guys like dogs to get it to the point where it runs Linux binaries
better than linux! <!-- smiley -->:-)</para>
</sect2>
</sect1>
<sect1>
<title>How does the emulation work?</title>
<para>This section is based heavily on an e-mail written to the
<email>chat@FreeBSD.org</email> mailing list, written by Terry Lambert
<email>tlambert@primenet.com</email> (Message ID:
<literal>&lt;199906020108.SAA07001@usr09.primenet.com&gt;</literal>).</para>
<para>FreeBSD has an abstraction called an &ldquo;execution class
loader&rdquo;. This is a wedge into the &man.execve.2; system
call.</para>
<para>What happens is that FreeBSD has a list of loaders, instead of a
single loader with a fallback to the <literal>#!</literal> loader for
running any shell interpreters or shell scripts.</para>
<para>Historically, the only loader on the UNIX platform examined the
magic number (generally the first 4 or 8 bytes of the file) to see if it
was a binary known to the system, and if so, invoked the binary
loader.</para>
<para>If it was not the binary type for the system, the &man.execve.2;
call returned a failure, and the shell attempted to start executing it
as shell commands.</para>
<para>The assumption was a default of &ldquo;whatever the current shell
is&rdquo;.</para>
<para>Later, a hack was made for &man.sh.1; to examine the first two
characters, and if they were <literal>:\n</literal>, then it invoked the
&man.csh.1; shell instead (I believe SCO first made this hack, but am
willing to be corrected).</para>
<para>What FreeBSD does now is go through a list of loaders, with a
generic <literal>#!</literal> loader that knows about interpreters as
the characters which follow to the next whitespace next to last,
followed by a fallback to <filename>/bin/sh</filename>.</para>
<para>For the Linux binary emulation, FreeBSD sees the magic number as an
ELF binary (it makes no distinction between FreeBSD, Solaris, Linux, or
any other OS which has an ELF image type, at this point).</para>
<para>The ELF loader looks for a specialized <emphasis>brand</emphasis>,
which is a comment section in the ELF image, and which is not present on
SVR4/Solaris ELF binaries.</para>
<para>For Linux binaries to function, they must be
<emphasis>branded</emphasis> as type <literal>Linux</literal>; from
&man.brandelf.1;:</para>
<screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen>
<para>When this is done, the ELF loader will see the
<literal>Linux</literal> brand on the file.</para>
<para>When the ELF loader sees the <literal>Linux</literal> brand, the
loader replaces a pointer in the <literal>proc</literal>
structure. All system calls are indexed through this pointer (in a
traditional UNIX system, this would be the <literal>sysent[]</literal> structure array, containing the system
calls). In addition, the process is flagged for special handling of the
trap vector for the signal trampoline code, and sever other (minor)
fixups that are handled by the Linux kernel module.</para>
<para>The Linux system call vector contains, among other things, a list of
<literal>sysent[]</literal> entries whose addresses reside in the kernel
module.</para>
<para>When a system call is called by the Linux binary, the trap code
dereferences the system call function pointer off the
<literal>proc</literal> structure, and gets the Linux, not the FreeBSD,
system call entry points.</para>
<para>In addition, the Linux emulation dynamically
<emphasis>reroots</emphasis> lookups; this is, in effect, what the
<literal>union</literal> option to FS mounts ( <emphasis>not</emphasis>
the unionfs!) does. First, an attempt is made to lookup the file in the
<filename>/compat/linux/<replaceable>original-path</replaceable></filename>
directory, <emphasis>then</emphasis> only if that fails, the lookup is
done in the
<filename>/<replaceable>original-path</replaceable></filename>
directory. This makes sure that binaries that require other binaries
can run (e.g., the Linux toolchain can all run under emulation). It
also means that the Linux binaries can load and exec FreeBSD binaries,
if there are no corresponding Linux binaries present, and that you could
place a &man.uname.1; command in the <filename>/compat/linux</filename>
directory tree to ensure that the Linux binaries could not tell they
were not running on Linux.</para>
<para>In effect, there is a Linux kernel in the FreeBSD kernel; the
various underlying functions that implement all of the services provided
by the kernel are identical to both the FreeBSD system call table
entries, and the Linux system call table entries: file system
operations, virtual memory operations, signal delivery, System V IPC,
etc&hellip; The only difference is that FreeBSD binaries get the FreeBSD
<emphasis>glue</emphasis> functions, and Linux binaries get the Linux
<emphasis>glue</emphasis> functions (most older OS's only had their own
<emphasis>glue</emphasis> functions: addresses of functions in a static
global <literal>sysent[]</literal> structure array, instead of addresses
of functions dereferenced off a dynamically initialized pointer in the
<literal>proc</literal> structure of the process making the
call).</para>
<para>Which one is the native FreeBSD ABI? It does not matter. Basically
the only difference is that (currently; this could easily be changed in
a future release, and probably will be after this) the FreeBSD
<emphasis>glue</emphasis> functions are statically linked into the
kernel, and the Linux glue functions can be statically linked, or they
can be accessed via a kernel module.</para>
<para>Yeah, but is this really emulation? No. It is an ABI
implementation, not an emulation. There is no emulator (or simulator,
to cut off the next question) involved.</para>
<para>So why is it called &ldquo;Linux emulation&rdquo;? To make it hard
to sell FreeBSD! <!-- smiley -->8-). Really, it is because the
historical implementation was done at a time when there was really no
word other than that to describe what was going on; saying that FreeBSD
ran Linux binaries was not true, if you did not compile the code in or
load a module, and there needed to be a word to describe what was being
loaded&mdash;hence &ldquo;the Linux emulator&rdquo;.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,567 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.11 1999-08-05 20:48:18 nik Exp $
-->
<chapter id="mail">
<title>Electronic Mail</title>
<para><emphasis>Contributed by &a.wlloyd;.</emphasis></para>
<para>Electronic Mail configuration is the subject of many <link
linkend="bibliography">System Administration</link> books. If you plan
on doing anything beyond setting up one mailhost for your network, you
need industrial strength help.</para>
<para>Some parts of E-Mail configuration are controlled in the Domain Name
System (DNS). If you are going to run your own own DNS server check out
<filename>/etc/namedb</filename> and <command>man -k named</command> for
more information.</para>
<sect1>
<title>Basic Information</title>
<para>These are the major programs involved in an E-Mail exchange. A
&ldquo;mailhost&rdquo; is a server that is responsible for delivering
and receiving all email for your host, and possibly your network.</para>
<sect2>
<title>User program</title>
<para>This is a program like <application >elm</application>,
<application>pine</application>, <application>mail</application>, or
something more sophisticated like a WWW browser. This program will
simply pass off all e-mail transactions to the local
&ldquo;mailhost&rdquo; , either by calling <command>sendmail</command>
or delivering it over TCP.</para>
</sect2>
<sect2>
<title>Mailhost Server Daemon</title>
<para>Usually this program is <command>sendmail</command> or
<command>smail</command> running in the background. Turn it off or
change the command line options in <filename>/etc/rc.conf</filename>
(or, prior to FreeBSD 2.2.2, <filename>/etc/sysconfig</filename>). It
is best to leave it on, unless you have a specific reason to want it
off. Example: You are building a <link
linkend="firewalls">Firewall</link>.</para>
<para>You should be aware that <command>sendmail</command> is a
potential weak link in a secure site. Some versions of
<command>sendmail</command> have known security problems.</para>
<para><command>sendmail</command> does two jobs. It looks after
delivering and receiving mail.</para>
<para>If <command>sendmail</command> needs to deliver mail off your site
it will look up in the DNS to determine the actual host that will
receive mail for the destination.</para>
<para>If it is acting as a delivery agent <command>sendmail</command>
will take the message from the local queue and deliver it across the
Internet to another sendmail on the receivers computer.</para>
</sect2>
<sect2>
<title>DNS &mdash; Name Service</title>
<para>The Domain Name System and its daemon <command>named</command>,
contain the database mapping hostname to IP address, and hostname to
mailhost. The IP address is specified in an A record. The MX record
specifies the mailhost that will receive mail for you. If you do not
have a MX record mail for your hostname, the mail will be delivered to
your host directly.</para>
<para>Unless you are running your own DNS server, you will not be able
to change any information in the DNS yourself. If you are using an
Internet Provider, speak to them.</para>
</sect2>
<sect2>
<title>POP Servers</title>
<para>This program gets the mail from your mailbox and gives it to your
browser. If you want to run a POP server on your computer, you will
need to do 2 things.</para>
<procedure>
<step>
<para>Get pop software from the <ulink
URL="../ports/mail.html">Ports collection</ulink> that can be
found in <filename>/usr/ports</filename> or packages collection.
This handbook section has a complete reference on the <link
linkend="ports">Ports</link> system.</para>
</step>
<step>
<para>Modify <filename>/etc/inetd.conf</filename> to load the POP
server.</para>
</step>
</procedure>
<para>The pop program will have instructions with it. Read them.</para>
</sect2>
</sect1>
<sect1>
<title>Configuration</title>
<sect2>
<title>Basic</title>
<para>As your FreeBSD system comes &ldquo;out of the box&rdquo;[TM], you
should be able to send E-mail to external hosts as long as you have
<filename>/etc/resolv.conf</filename> setup or are running a name
server. If you want to have mail for your host delivered to your
specific host,there are two methods:</para>
<itemizedlist>
<listitem>
<para>Run a name server (<command>man -k named</command>) and have
your own domain <hostid role="domainname">smallminingco.com
</hostid></para>
</listitem>
<listitem>
<para>Get mail delivered to the current DNS name for your host. Ie:
<hostid role="fqdn">dorm6.ahouse.school.edu </hostid></para>
</listitem>
</itemizedlist>
<para>No matter what option you choose, to have mail delivered directly
to your host, you must be a full Internet host. You must have a
permanent IP address. IE: NO dynamic PPP. If you are behind a
firewall, the firewall must be passing on smtp traffic to you. From
<filename>/etc/services</filename>:</para>
<programlisting>
smtp 25/tcp mail #Simple Mail Transfer</programlisting>
<para>If you want to receive mail at your host itself, you must make
sure that the DNS MX entry points to your host address, or there is no
MX entry for your DNS name.</para>
<para>Try this:</para>
<screen>&prompt.root; <userinput>hostname</userinput>
newbsdbox.FreeBSD.org
&prompt.root; <userinput>host newbsdbox.FreeBSD.org</userinput>
newbsdbox.FreeBSD.org has address 204.216.27.xx</screen>
<para>If that is all that comes out for your machine, mail directory to
<email>root@newbsdbox.FreeBSD.org</email> will work no
problems.</para>
<para>If instead, you have this:</para>
<screen>&prompt.root; <userinput>host newbsdbox.FreeBSD.org</userinput>
newbsdbox.FreeBSD.org has address 204.216.27.xx
newbsdbox.FreeBSD.org mail is handled (pri=10) by freefall.FreeBSD.org</screen>
<para>All mail sent to your host directly will end up on
<hostid>freefall</hostid>, under the same username.</para>
<para>This information is setup in your domain name server. This should
be the same host that is listed as your primary nameserver in
<filename>/etc/resolv.conf</filename></para>
<para>The DNS record that carries mail routing information is the Mail
eXchange entry. If no MX entry exists, mail will be delivered directly
to the host by way of the Address record.</para>
<para>The MX entry for <hostid role="fqdn">freefall.FreeBSD.org</hostid>
at one time.</para>
<programlisting>
freefall MX 30 mail.crl.net
freefall MX 40 agora.rdrop.com
freefall HINFO Pentium FreeBSD
freefall MX 10 freefall.FreeBSD.org
freefall MX 20 who.cdrom.com
freefall A 204.216.27.xx
freefall CNAME www.FreeBSD.org</programlisting>
<para><hostid>freefall</hostid> has many MX entries. The lowest MX
number gets the mail in the end. The others will queue mail
temporarily, if <hostid>freefall</hostid> is busy or down.</para>
<para>Alternate MX sites should have separate connections to the
Internet, to be most useful. An Internet Provider or other friendly
site can provide this service.</para>
<para><command>dig</command>, <command>nslookup</command>, and
<command>host</command> are your friends.</para>
</sect2>
<sect2 id="mail-domain">
<title>Mail for your Domain (Network).</title>
<para>To setup up a network mailhost, you need to direct the mail from
arriving at all the workstations. In other words, you want to hijack
all mail for <hostid role="domainname">*.smallminingco.com </hostid>
and divert it to one machine, your &ldquo;mailhost&rdquo;.</para>
<para>The network users on their workstations will most likely pick up
their mail over POP or telnet.</para>
<para>A user account with the <emphasis>same username</emphasis> should
exist on both machines. Please use <command>adduser</command> to do
this as required. If you set the <literal>shell</literal> to
<literal>/nonexistent</literal> the user will not be allowed to
login.</para>
<para>The mailhost that you will be using must be designated the
Mail eXchange for each workstation. This must be arranged in DNS (ie
BIND, named). Please refer to a Networking book for in-depth
information.</para>
<para>You basically need to add these lines in your DNS server.</para>
<programlisting>
pc24.smallminingco.com A <replaceable>xxx.xxx.xxx.xxx</replaceable> ; Workstation ip
MX 10 smtp.smallminingco.com ; Your mailhost</programlisting>
<para>You cannot do this yourself unless you are running a DNS server.
If you do not want to run a DNS server, get somebody else like your
Internet Provider to do it.</para>
<para>This will redirect mail for the workstation to the Mail eXchange
host. It does not matter what machine the A record points to, the mail
will be sent to the MX host.</para>
<para>This feature is used to implement Virtual E-Mail Hosting.</para>
<para>Example</para>
<para>I have a customer with domain foo.bar and I want all mail for
foo.bar to be sent to my machine smtp.smalliap.com. You must make an
entry in your DNS server like:</para>
<programlisting>
foo.bar MX 10 smtp.smalliap.com ; your mailhost</programlisting>
<para>The A record is not needed if you only want E-Mail for the domain.
IE: Don't expect <command>ping foo.bar</command> to work unless an
Address record for <filename>foo.bar</filename> exists as well.</para>
<para>On the mailhost that actually accepts mail for final delivery to a
mailbox, <command>sendmail</command> must be told what hosts it will
be accepting mail for.</para>
<para>Add <literal>pc24.smallminingco.com</literal> to
<filename>/etc/sendmail.cw</filename> (if you are using
<literal>FEATURE(use_cw_file)</literal>), or add a <literal>Cw
myhost.smalliap.com</literal> line to
<filename>/etc/sendmail.cf</filename></para>
<para>If you plan on doing anything serious with
<command>sendmail</command> you should install the
<command>sendmail</command> source. The source has plenty of
documentation with it. You will find information on getting
<command>sendmail</command> source from <link
linkend="sendmailuucp">the UUCP information</link>.</para>
</sect2>
<sect2 id="sendmailuucp">
<title>Setting up UUCP.</title>
<para><emphasis>Stolen from the FAQ.</emphasis></para>
<para>The sendmail configuration that ships with FreeBSD is suited for
sites that connect directly to the Internet. Sites that wish to
exchange their mail via UUCP must install another
<command>sendmail</command> configuration file.</para>
<para>Tweaking <filename>/etc/sendmail.cf</filename> manually is
considered something for purists. Sendmail version 8 comes with a new
approach of generating config files via some <command>m4</command>
preprocessing, where the actual hand-crafted configuration is on a
higher abstraction level. You should use the configuration files under
<filename>/usr/src/usr.sbin/sendmail/cf</filename>.</para>
<para>If you did not install your system with full sources, the
<command>sendmail</command> config stuff has been broken out into a
separate source distribution tarball just for you. Assuming you have
your CD-ROM mounted, do:</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>tar -xvzf /cdrom/dists/src/ssmailcf.aa</userinput></screen>
<para>Do not panic, this is only a few hundred kilobytes in size. The
file <filename>README</filename> in the <filename>cf</filename>
directory can serve as a basic introduction to m4
configuration.</para>
<para>For UUCP delivery, you are best advised to use the
<emphasis>mailertable</emphasis> feature. This constitutes a database
that <command>sendmail</command> can use to base its routing decision
upon.</para>
<para>First, you have to create your <filename>.mc</filename> file. The
directory <filename>/usr/src/usr.sbin/sendmail/cf/cf</filename> is the
home of these files. Look around, there are already a few examples.
Assuming you have named your file <filename>foo.mc</filename>, all you
need to do in order to convert it into a valid
<filename>sendmail.cf</filename> is:</para>
<screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/sendmail/cf/cf</userinput>
&prompt.root; <userinput>make foo.cf</userinput></screen>
<para>If you don't have a <filename>/usr/obj</filename> hierarchy,
then:</para>
<screen>&prompt.root; <userinput>cp foo.cf /etc/sendmail.cf</userinput></screen>
<para>Otherwise:</para>
<screen>&prompt.root; <userinput>cp /usr/obj/`pwd`/foo.cf /etc/sendmail.cf</userinput></screen>
<para>A typical <filename>.mc</filename> file might look like:</para>
<programlisting>
include(`../m4/cf.m4')
VERSIONID(`<replaceable>Your version number</replaceable>')
OSTYPE(bsd4.4)
FEATURE(nodns)
FEATURE(nocanonify)
FEATURE(mailertable)
define(`UUCP_RELAY', <replaceable>your.uucp.relay</replaceable>)
define(`UUCP_MAX_SIZE', 200000)
MAILER(local)
MAILER(smtp)
MAILER(uucp)
Cw <replaceable>your.alias.host.name</replaceable>
Cw <replaceable>youruucpnodename.UUCP</replaceable></programlisting>
<para>The <literal>nodns</literal> and <literal>nocanonify</literal>
features will prevent any usage of the DNS during mail delivery. The
<literal>UUCP_RELAY</literal> clause is needed for bizarre reasons, do
not ask. Simply put an Internet hostname there that is able to handle
.UUCP pseudo-domain addresses; most likely, you will enter the mail
relay of your ISP there.</para>
<para>Once you have this, you need this file called
<filename>/etc/mailertable</filename>. A typical example of this
gender again:</para>
<programlisting>
#
# makemap hash /etc/mailertable.db &lt; /etc/mailertable
#
horus.interface-business.de uucp-dom:horus
.interface-business.de uucp-dom:if-bus
interface-business.de uucp-dom:if-bus
.heep.sax.de smtp8:%1 horus.UUCP
uucp-dom:horus if-bus.UUCP
uucp-dom:if-bus . uucp-dom:sax</programlisting>
<para>As you can see, this is part of a real-life file. The first three
lines handle special cases where domain-addressed mail should not be
sent out to the default route, but instead to some UUCP neighbor in
order to &ldquo;shortcut&rdquo; the delivery path. The next line
handles mail to the local Ethernet domain that can be delivered using
SMTP. Finally, the UUCP neighbors are mentioned in the .UUCP
pseudo-domain notation, to allow for a
<literal>uucp-neighbor!recipient</literal> override of the default
rules. The last line is always a single dot, matching everything else,
with UUCP delivery to a UUCP neighbor that serves as your universal
mail gateway to the world. All of the node names behind the
<literal>uucp-dom:</literal> keyword must be valid UUCP neighbors, as
you can verify using the command <command>uuname</command>.</para>
<para>As a reminder that this file needs to be converted into a DBM
database file before being usable, the command line to accomplish this
is best placed as a comment at the top of the
<filename>mailertable</filename>. You always have to execute this
command each time you change your
<filename>mailertable</filename>.</para>
<para>Final hint: if you are uncertain whether some particular mail
routing would work, remember the <option>-bt</option> option to
<command>sendmail</command>. It starts <command>sendmail</command> in
&ldquo;address test mode&rdquo;; simply enter <literal>0</literal>,
followed by the address you wish to test for the mail routing. The
last line tells you the used internal mail agent, the destination host
this agent will be called with, and the (possibly translated) address.
Leave this mode by typing Control-D.</para>
<screen>&prompt.user; <userinput>sendmail -bt</userinput>
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter &lt;ruleset&gt; &lt;address&gt;
<prompt>&gt;</prompt> <userinput>0 foo@interface-business.de</userinput>
rewrite: ruleset 0 input: foo @ interface-business . de
&hellip;
rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo &lt; @ interface-business . de</screen>
</sect2>
</sect1>
<sect1 id="mailfaq">
<title>FAQ</title>
<para><emphasis>Migration from FAQ.</emphasis></para>
<sect2>
<title>Why do I have to use the FQDN for hosts on my site?</title>
<para>You will probably find that the host is actually in a different
domain; for example, if you are in <hostid
role="fqdn">foo.bar.edu</hostid> and you wish to reach a host called
<hostid>mumble</hostid> in the <hostid
role="domainname">bar.edu</hostid> domain, you will have to refer to
it by the fully-qualified domain name, <hostid
role="fqdn">mumble.bar.edu</hostid>, instead of just
<hostid>mumble</hostid>.</para>
<para>Traditionally, this was allowed by BSD BIND resolvers. However the
current version of <application>BIND</application> that ships with
FreeBSD no longer provides default abbreviations for non-fully
qualified domain names other than the domain you are in. So an
unqualified host <hostid>mumble</hostid> must either be found as
<hostid role="fqdn">mumble.foo.bar.edu</hostid>, or it will be
searched for in the root domain.</para>
<para>This is different from the previous behavior, where the search
continued across <hostid role="domainname">mumble.bar.edu</hostid>,
and <hostid role="domainname">mumble.edu</hostid>. Have a look at RFC
1535 for why this was considered bad practice, or even a security
hole.</para>
<para>As a good workaround, you can place the line
<programlisting>
search foo.bar.edu bar.edu</programlisting>
instead of the previous
<programlisting>
domain foo.bar.edu</programlisting>
into your <filename>/etc/resolv.conf</filename>. However, make sure
that the search order does not go beyond the &ldquo;boundary between
local and public administration&rdquo;, as RFC 1535 calls it.</para>
</sect2>
<sect2>
<title>Sendmail says <errorname>mail loops back to
myself</errorname></title>
<para>This is answered in the sendmail FAQ as follows:</para>
<programlisting>
* I am getting "Local configuration error" messages, such as:
553 relay.domain.net config error: mail loops back to myself
554 &lt;user@domain.net&gt;... Local configuration error
How can I solve this problem?
You have asked mail to the domain (e.g., domain.net) to be
forwarded to a specific host (in this case, relay.domain.net)
by using an MX record, but the relay machine does not recognize
itself as domain.net. Add domain.net to /etc/sendmail.cw
(if you are using FEATURE(use_cw_file)) or add "Cw domain.net"
to /etc/sendmail.cf.</programlisting>
<para>The sendmail FAQ is in
<filename>/usr/src/usr.sbin/sendmail</filename> and is recommended
reading if you want to do any &ldquo;tweaking&rdquo; of your mail
setup.</para>
</sect2>
<sect2>
<title>How can I do E-Mail with a dialup PPP host?</title>
<para>You want to connect a FreeBSD box on a lan, to the Internet. The
FreeBSD box will be a mail gateway for the lan. The PPP connection is
non-dedicated.</para>
<para>There are at least two way to do this.</para>
<para>The other is to use UUCP.</para>
<para>The key is to get a Internet site to provide secondary MX services
for your domain. For example:</para>
<programlisting>
bigco.com. MX 10 bigco.com.
MX 20 smalliap.com.</programlisting>
<para>Only one host should be specified as the final recipient ( add
<literal>Cw bigco.com</literal> in
<filename>/etc/sendmail.cf</filename> on bigco.com).</para>
<para>When the senders <command>sendmail</command> is trying to deliver
the mail it will try to connect to you over the modem link. It will
most likely time out because you are not online.
<command>sendmail</command> will automatically deliver it to the
secondary MX site, ie your Internet provider. The secondary MX site
will try every (<literal>sendmail_flags = "-bd -q15m"</literal> in
<filename>/etc/rc.conf</filename> ) 15 minutes to connect to your host
to deliver the mail to the primary MX site.</para>
<para>You might want to use something like this as a login
script.</para>
<programlisting>
#!/bin/sh
# Put me in /usr/local/bin/pppbigco
( sleep 60 ; /usr/sbin/sendmail -q ) &amp;
/usr/sbin/ppp -direct pppbigco</programlisting>
<para>If you are going to create a separate login script for a user you
could use <command>sendmail -qRbigco.com</command> instead in the
script above. This will force all mail in your queue for bigco.com to
be processed immediately.</para>
<para>A further refinement of the situation is as follows.</para>
<para>Message stolen from the freebsd-isp mailing list.</para>
<programlisting>
&gt; we provide the secondary mx for a customer. The customer connects to
&gt; our services several times a day automatically to get the mails to
&gt; his primary mx (We do not call his site when a mail for his domains
&gt; arrived). Our sendmail sends the mailqueue every 30 minutes. At the
&gt; moment he has to stay 30 minutes online to be sure that all mail is
&gt; gone to the primary mx.
&gt;
&gt; Is there a command that would initiate sendmail to send all the mails
&gt; now? The user has not root-privileges on our machine of course.
In the 'privacy flags' section of sendmail.cf, there is a definition
Opgoaway,restrictqrun
Remove restrictqrun to allow non-root users to start the queue processing.
You might also like to rearrange the MXs. We are the 1st MX for our
customers like this, and we have defined:
# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue
That way a remote site will deliver straight to you, without trying
the customer connection. You then send to your customer. Only works for
"hosts", so you need to get your customer to name their mail machine
"customer.com" as well as "hostname.customer.com" in the DNS. Just put
an A record in the DNS for "customer.com".</programlisting>
</sect2>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,104 +0,0 @@
<!--
Names of FreeBSD mailing lists and related software.
$Id: mailing-lists.ent,v 1.3 1999-07-28 20:23:05 nik Exp $
-->
<!ENTITY a.advocacy "FreeBSD advocacy mailing list
<email>freebsd-advocacy@FreeBSD.org</email>">
<!ENTITY a.announce "FreeBSD announcements mailing list
<email>freebsd-announce@FreeBSD.org</email>">
<!ENTITY a.bugs "FreeBSD problem reports mailing list
<email>freebsd-bugs@FreeBSD.org</email>">
<!ENTITY a.chat "FreeBSD chat mailing list
<email>freebsd-chat@FreeBSD.org</email>">
<!ENTITY a.core "FreeBSD core team
<email>freebsd-core@FreeBSD.org</email>">
<!ENTITY a.current "FreeBSD-current mailing list
<email>freebsd-current@FreeBSD.org</email>">
<!ENTITY a.cvsall "FreeBSD CVS commit message mailing list
<email>cvs-all@FreeBSD.org</email>">
<!ENTITY a.database "FreeBSD based Databases mailing list
<email>freebsd-database@FreeBSD.org</email>">
<!ENTITY a.doc "FreeBSD documentation project mailing list
<email>freebsd-doc@FreeBSD.org</email>">
<!ENTITY a.emulation "FreeBSD-emulation mailing list
<email>freebsd-emulation@FreeBSD.org</email>">
<!ENTITY a.fs "FreeBSD filesystem project mailing list
<email>freebsd-fs@FreeBSD.org</email>">
<!ENTITY a.hackers "FreeBSD technical discussions mailing list
<email>freebsd-hackers@FreeBSD.org</email>">
<!ENTITY a.hardware "FreeBSD hardware and equipment mailing list
<email>freebsd-hardware@FreeBSD.org</email>">
<!ENTITY a.isdn "FreeBSD ISDN mailing list
<email>freebsd-isdn@FreeBSD.org</email>">
<!ENTITY a.isp "FreeBSD Internet service provider's mailing list
<email>freebsd-isp@FreeBSD.org</email>">
<!ENTITY a.java "FreeBSD Java Language mailing list
<email>freebsd-java@FreeBSD.org</email>">
<!ENTITY a.jobs "FreeBSD related employment mailing list
<email>freebsd-jobs@FreeBSD.org</email>">
<!ENTITY a.mobile "FreeBSD laptop computer mailing list
<email>freebsd-mobile@FreeBSD.org</email>">
<!ENTITY a.mozilla "FreeBSD port of the Mozilla browser mailing list
<email>freebsd-mozilla@FreeBSD.org</email>">
<!ENTITY a.multimedia "FreeBSD multimedia mailing list
<email>freebsd-multimedia@FreeBSD.org</email>">
<!ENTITY a.net "FreeBSD networking mailing list
<email>freebsd-net@FreeBSD.org</email>">
<!ENTITY a.newbies "FreeBSD new users mailing list
<email>freebsd-newbies@FreeBSD.org</email>">
<!ENTITY a.newbus "New Bus Architecture mailing list
<email>new-bus-arch@bostonradio.org</email>">
<!ENTITY a.ports "FreeBSD ports mailing list
<email>freebsd-ports@FreeBSD.org</email>">
<!ENTITY a.questions "FreeBSD general questions mailing list
<email>freebsd-questions@FreeBSD.org</email>">
<!ENTITY a.scsi "FreeBSD SCSI subsystem mailing list
<email>freebsd-scsi@FreeBSD.org</email>">
<!ENTITY a.security "FreeBSD security mailing list
<email>freebsd-security@FreeBSD.org</email>">
<!ENTITY a.security-notifications "FreeBSD security notifications mailing list
<email>freebsd-security-notifications@FreeBSD.org</email>">
<!ENTITY a.small "FreeBSD-small mailing list
<email>freebsd-small@FreeBSD.org</email>">
<!ENTITY a.smp "FreeBSD symmetric multiprocessing mailing list
<email>freebsd-smp@FreeBSD.org</email>">
<!ENTITY a.stable "FreeBSD-stable mailing list
<email>freebsd-stable@FreeBSD.org</email>">
<!ENTITY a.tokenring "FreeBSD tokenring mailing list
<email>freebsd-tokenring@FreeBSD.org</email>">
<!ENTITY a.majordomo "<email>majordomo@FreeBSD.org</email>">

File diff suppressed because it is too large Load diff

View file

@ -1,10 +0,0 @@
<!--
Names of FreeBSD newsgroups
$Id: newsgroups.ent,v 1.1 1999-03-04 22:14:06 nik Exp $
-->
<!ENTITY ng.misc "the
<ulink url='news:comp.unix.bsd.freebsd.misc'>comp.unix.bsd.freebsd.misc</ulink>
newsgroup">

View file

@ -1,624 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.13 1999-07-28 20:23:29 nik Exp $
-->
<chapter id="pgpkeys">
<title>PGP keys</title>
<para>In case you need to verify a signature or send encrypted email to one
of the officers or core team members a number of keys are provided here
for your convenience.</para>
<sect1>
<title>Officers</title>
<sect2>
<title>FreeBSD Security Officer
<email>security-officer@FreeBSD.org</email></title>
<programlisting>
FreeBSD Security Officer &lt;security-officer@FreeBSD.org&gt;
Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i
mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL
h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L
Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR
tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl
ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU
tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7
PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql
3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz
QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV
nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A
3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD
/REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb
5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS
9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B
sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P
BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT
0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx
ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD
ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO
v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1
lw==
=ipyA
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.imp;</title>
<programlisting>
Warner Losh &lt;imp@village.org&gt;
aka &lt;imp@FreeBSD.org&gt;
Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
3gTYx+Nlo6xqjR+J2NnBYU8p
=7fQV
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
</sect1>
<sect1>
<title>Core Team members</title>
<sect2>
<title>&a.asami;</title>
<programlisting>
Satoshi Asami &lt;asami@cs.berkeley.edu&gt;
aka &lt;asami@FreeBSD.org&gt;
Fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
+EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
+NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
=39SC
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.jmb;</title>
<programlisting>
Jonathan M. Bresler &lt;jmb@FreeBSD.org&gt;
f16 Fingerprint16 = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI
gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn
GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY
2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J
AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ
tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk
2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7
BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI
8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8
h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2
aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz
2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ
NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE
KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h
/ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E
5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP
VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt
bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj
lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0
PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx
5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+
gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU
/2ls4QSBZZlb
=zbCw
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.ache;</title>
<programlisting>
Andrey A. Chernov &lt;ache@FreeBSD.org&gt;
aka &lt;ache@nagual.pp.ru&gt;
Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez
u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY
cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ
aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20
JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi
YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h
mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt
pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi
YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW
xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30
Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ
nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY
rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B
gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl
eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV
AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa
o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ
mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC
Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr
anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI
rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8
vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO
DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh
Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9
KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a
hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b
vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI
AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB
AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5
MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA
Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx
/IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA
+6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM
1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV
AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM
y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv
Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV
HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14
5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R
rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3
5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw
erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5
+uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6
EB33OunazFcfZFRIcXk1sfyLDvYE
=1ahV
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.jkh;</title>
<programlisting>
Jordan K. Hubbard &lt;jkh@FreeBSD.org&gt;
Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM
j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD
ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY
laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+
5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az
VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN
GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB
AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB
uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ
utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof
f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H
U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ
csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV
AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y
oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5
LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C
BiMRuaw=
=C/Jw
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.phk;</title>
<programlisting>
Poul-Henning Kamp &lt;phk@FreeBSD.org&gt;
Fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzAdpMIAAAEEALHDgrFUwhZtb7PbXg3upELoDVEUPFRwnmpJH1rRqyROUGcI
ooVe7u+FQlIs5OsXK8ECs/5Wpe2UrZSzHvjwBYOND5H42YtI5UULZLRCo5bFfTVA
K9Rpo5icfTsYihrzU2nmnycwFMk+jYXyT/ZDYWDP/BM9iLjj0x9/qQgDWPy9AAUR
tCNQb3VsLUhlbm5pbmcgS2FtcCA8cGhrQEZyZWVCU0Qub3JnPokAlQMFEDQQ0aZ1
u244dqP3sQEBu4ID/jXFFeJgs2MdTDNOZM/FbfDhI4qxAbYUsqS3+Ra16yd8Wd/A
jV+IHJE2NomFWl8UrUjCGinXiwzPgK1OfFJrS9Og1wQLvAl0X84BA8MTP9BQr4w7
6I/RbksgUSrVCIO8MJwlydjSPocWGBeXlVjbZxXzyuJk7H+TG+zuI5BuBcNIiQCV
AwUQMwYr2rNaYutZnzI9AQHiIQP/XxtBWFXaBRgVLEhRNpS07YdU+LsZGlLOZehN
9L4UnJFHQQPNOpMey2gF7Y95aBOw5/1xS5vlQpwmRFCntWsm/gqdzK6rulfr1r5A
y94LO5TAC6ucNu396Y4vo1TyD1STnRC466KlvmtQtAtFGgXlORWLL9URLzcRFd1h
D0yXd9aJAJUDBRAxfo19a1pnjYGyp3kBAQqyA/4v64vP3l1F0Sadn6ias761hkz/
SMdTuLzILmofSCC4o4KWMjiWJHs2Soo41QlZi1+xMHzV32JKiwFlGtPHqL+EHyXy
Q4H3vmf9/1KF+0XCaMtgI0wWUMziPSTJK8xXbRRmMDK/0F4TnVVaUhnmf+h5K7O6
XdmejDTa0X/NWcicmIkAlQMFEDF8lef1FVv7jlQtXQEBcnwD/0ro1PpUtlkLmreD
tsGTkNa7MFLegrYRvDDrHOwPZH152W2jPUncY+eArQJakeHiTDmJNpFagLZglhE0
bqJyca+UwCXX+6upAclWHEBMg2byiWMMqyPVEEnpUoHM1sIkgdNWlfQAmipRBfYh
2LyCgWvR8CbtwPYIFvUmGgB3MR87iQCVAwUQMUseXB9/qQgDWPy9AQGPkwP/WEDy
El2Gkvua9COtMAifot2vTwuvWWpNopIEx0Ivey4aVbRLD90gGCJw8OGDEtqFPcNV
8aIiy3fYVKXGZZjvCKd7zRfhNmQn0eLDcymq2OX3aPrMc2rRlkT4Jx425ukR1gsO
qiQAgw91aWhY8dlw/EKzk8ojm52x4VgXaBACMjaJAJUDBRAxOUOg72G56RHVjtUB
AbL4A/9HOn5Qa0lq9tKI/HkSdc5fGQD/66VdCBAb292RbB7CS/EM07MdbcqRRYIa
0+0gwQ3OdsWPdCVgH5RIhp/WiC+UPkR1cY8N9Mg2kTwJfZZfNqN+BgWlgRMPN27C
OhYNl8Q33Nl9CpBLrZWABF44jPeT0EvvTzP/5ZQ7T75EsYKYiYkAlQMFEDDmryQA
8tkJ67sbQQEBPdsEALCj6v1OBuJLLJTlxmmrkqAZPVzt5QdeO3Eqa2tcPWcU0nqP
vHYMzZcZ7oFg58NZsWrhSQQDIB5e+K65Q/h6dC7W/aDskZd64jxtEznX2kt0/MOr
8OdsDis1K2f9KQftrAx81KmVwW4Tqtzl7NWTDXt44fMOtibCwVq8v2DFkTJy
=JKbP
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.rich;</title>
<programlisting>
Rich Murphey &lt;rich@FreeBSD.org&gt;
fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
=QoiM
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.jdp;</title>
<programlisting>
John D. Polstra &lt;jdp@polstra.com&gt;
Fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
+45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
V31K/PIoYsHAy5w=
=cHFa
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.guido;</title>
<programlisting>
Guido van Rooij &lt;guido@gvr.win.tue.nl&gt;
Fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzGeO84AAAEEAKKAY91Na//DXwlUusr9GVESSlVwVP6DyH1wcZXhfN1fyZHq
SwhMCEdHYoojQds+VqD1iiZQvv1RLByBgj622PDAPN4+Z49HjGs7YbZsUNuQqPPU
wRPpP6ty69x1hPKq1sQIB5MS4radpCM+4wbZbhxv7l4rP3RWUbNaYutZnzI9AAUR
tCZHdWlkbyB2YW4gUm9vaWogPGd1aWRvQGd2ci53aW4udHVlLm5sPokAlQMFEDMG
Hcgff6kIA1j8vQEBbYgD/jm9xHuUuY+iXDkOzpCXBYACYEZDV913MjtyBAmaVqYo
Rh5HFimkGXe+rCo78Aau0hc57fFMTsJqnuWEqVt3GRq28hSK1FOZ7ni9/XibHcmN
rt2yugl3hYpClijo4nrDL1NxibbamkGW/vFGcljS0jqXz6NDVbGx5Oo7HBByxByz
iQCVAwUQMhmtVjt/x7zOdmsfAQFuVQQApsVUTigT5YWjQA9Nd5Z0+a/oVtZpyw5Z
OljLJP3vqJdMa6TidhfcatjHbFTve5x1dmjFgMX/MQTd8zf/+Xccy/PX4+lnKNpP
eSf1Y4aK+E8KHmBGd6GzX6CIboyGYLS9e3kGnN06F2AQtaLyJFgQ71wRaGuyKmQG
FwTn7jiKb1aJAJUDBRAyEOLXPt3iN6QQUSEBATwQA/9jqu0Nbk154+Pn+9mJX/YT
fYR2UqK/5FKCqgL5Nt/Deg2re0zMD1f8F9Dj6vuAAxq8hnOkIHKlWolMjkRKkzJi
mSPEWl3AuHJ31k948J8it4f8kq/o44usIA2KKVMlI63Q/rmNdfWCyiYQEVGcRbTm
GTdZIHYCOgV5dOo4ebFqgYkAlQMFEDIE1nMEJn15jgpJ0QEBW6kEAKqN8XSgzTqf
CrxFXT07MlHhfdbKUTNUoboxCGCLNW05vf1A8F5fdE5i14LiwkldWIzPxWD+Sa3L
fNPCfCZTaCiyGcLyTzVfBHA18MBAOOX6JiTpdcm22jLGUWBf/aJK3yz/nfbWntd/
LRHysIdVp29lP5BF+J9/Lzbb/9LxP1taiQCVAwUQMgRXZ44CzbsJWQz9AQFf7gP/
Qa2FS5S6RYKG3rYanWADVe/ikFV2lxuM1azlWbsmljXvKVWGe6cV693nS5lGGAjx
lbd2ADwXjlkNhv45HLWFm9PEveO9Jjr6tMuXVt8N2pxiX+1PLUN9CtphTIU7Yfjn
s6ryZZfwGHSfIxNGi5ua2SoXhg0svaYnxHxXmOtH24iJAJUDBRAyAkpV8qaAEa3W
TBkBARfQBAC+S3kbulEAN3SI7/A+A/dtl9DfZezT9C4SRBGsl2clQFMGIXmMQ/7v
7lLXrKQ7U2zVbgNfU8smw5h2vBIL6f1PyexSmc3mz9JY4er8KeZpcf6H0rSkHl+i
d7TF0GvuTdNPFO8hc9En+GG6QHOqbkB4NRZ6cwtfwUMhk2FHXBnjF4kAlQMFEDH5
FFukUJAsCdPmTQEBe74EAMBsxDnbD9cuI5MfF/QeTNEG4BIVUZtAkDme4Eg7zvsP
d3DeJKCGeNjiCWYrRTCGwaCWzMQk+/+MOmdkI6Oml+AIurJLoHceHS9jP1izdP7f
N2jkdeJSBsixunbQWtUElSgOQQ4iF5kqwBhxtOfEP/L9QsoydRMR1yB6WPD75H7V
iQCVAwUQMZ9YNGtaZ42Bsqd5AQH0PAQAhpVlAc3ZM/KOTywBSh8zWKVlSk3q/zGn
k7hJmFThnlhH1723+WmXE8aAPJi+VXOWJUFQgwELJ6R8jSU2qvk2m1VWyYSqRKvc
VRQMqT2wjss0GE1Ngg7tMrkRHT0il7E2xxIb8vMrIwmdkbTfYqBUhhGnsWPHZHq7
MoA1/b+rK7CJAJUDBRAxnvXh3IDyptUyfLkBAYTDA/4mEKlIP/EUX2Zmxgrd/JQB
hqcQlkTrBAaDOnOqe/4oewMKR7yaMpztYhJs97i03Vu3fgoLhDspE55ooEeHj0r4
cOdiWfYDsjSFUYSPNVhW4OSruMA3c29ynMqNHD7hpr3rcCPUi7J2RncocOcCjjK2
BQb/9IAUNeK4C9gPxMEZLokAlQMFEDGeO86zWmLrWZ8yPQEBEEID/2fPEUrSX3Yk
j5TJPFZ9MNX0lEo7AHYjnJgEbNI4pYm6C3PnMlsYfCSQDHuXmRQHAOWSdwOLvCkN
F8eDaF3M6u0urgeVJ+KVUnTz2+LZoZs12XSZKCte0HxjbvPpWMTTrYyimGezH79C
mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J
=mSvM
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.peter;</title>
<programlisting>
Peter Wemm &lt;peter@FreeBSD.org&gt;
aka &lt;peter@spinner.dialix.com&gt;
aka &lt;peter@haywire.dialix.com&gt;
aka &lt;peter@perth.dialix.oz.au&gt;
Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
=gv+h
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.joerg;</title>
<programlisting>
Type Bits/KeyID Date User ID
pub 1024/76A3F7B1 1996/04/27 Joerg Wunsch &lt;joerg_wunsch@uriah.heep.sax.de&gt;
Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E
Joerg Wunsch &lt;joerg_wunsch@interface-business.de&gt;
Joerg Wunsch &lt;j@uriah.heep.sax.de&gt;
Joerg Wunsch &lt;j@interface-business.de&gt;
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzGCFeAAAAEEAKmRBU2Nvc7nZy1Ouid61HunA/5hF4O91cXm71/KPaT7dskz
q5sFXvPJPpawwvqHPHfEbAK42ZaywyFp59L1GaYj87Pda+PlAYRJyY2DJl5/7JPe
ziq+7B8MdvbX6D526sdmcR+jPXPbHznASjkx9DPmK+7TgFujyXW7bjh2o/exAAUR
tC1Kb2VyZyBXdW5zY2ggPGpvZXJnX3d1bnNjaEB1cmlhaC5oZWVwLnNheC5kZT6J
AJUDBRA0FFkBs1pi61mfMj0BAfDCA/oCfkjrhvRwRCpSL8klJ1YDoUJdmw+v4nJc
pw3OpYXbwKOPLClsE7K3KCQscHel7auf91nrekAwbrXv9Clp0TegYeAQNjw5vZ9f
L6UZ5l3fH8E2GGA7+kqgNWs1KxAnG5GdUvJ9viyrWm8dqWRGo+loDWlZ12L2OgAD
fp7jVZTI1okAlQMFEDQPrLoff6kIA1j8vQEB2XQEAK/+SsQPCT/X4RB/PBbxUr28
GpGJMn3AafAaA3plYw3nb4ONbqEw9tJtofAn4UeGraiWw8nHYR2DAzoAjR6OzuX3
TtUV+57BIzrTPHcNkb6h8fPuHU+dFzR+LNoPaGJsFeov6w+Ug6qS9wa5FGDAgaRo
LHSyBxcRVoCbOEaS5S5EiQCVAwUQM5BktWVgqaw0+fnVAQGKPwP+OiWho3Zm2GKp
lEjiZ5zx3y8upzb+r1Qutb08jr2Ewja04hLg0fCrt6Ad3DoVqxe4POghIpmHM4O4
tcW92THQil70CLzfCxtfUc6eDzoP3krD1/Gwpm2hGrmYA9b/ez9+r2vKBbnUhPmC
glx5pf1IzHU9R2XyQz9Xu7FI2baOSZqJAJUDBRAyCIWZdbtuOHaj97EBAVMzA/41
VIph36l+yO9WGKkEB+NYbYOz2W/kyi74kXLvLdTXcRYFaCSZORSsQKPGNMrPZUoL
oAKxE25AoCgl5towqr/sCcu0A0MMvJddUvlQ2T+ylSpGmWchqoXCN7FdGyxrZ5zz
xzLIvtcio6kaHd76XxyJpltCASupdD53nEtxnu8sRrQxSm9lcmcgV3Vuc2NoIDxq
b2VyZ193dW5zY2hAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokAlQMFEDIIhfR1u244
dqP3sQEBWoID/RhBm+qtW+hu2fqAj9d8CVgEKJugrxZIpXuCKFvO+bCgQtogt9EX
+TJh4s8UUdcFkyEIu8CT2C3Rrr1grvckfxvrTgzSzvtYyv1072X3GkVY+SlUMBMA
rdl1qNW23oT7Q558ajnsaL065XJ5m7HacgTTikiofYG8i1s7TrsEeq6PtCJKb2Vy
ZyBXdW5zY2ggPGpAdXJpYWguaGVlcC5zYXguZGU+iQCVAwUQMaS91D4gHQUlG9CZ
AQGYOwQAhPpiobK3d/fz+jWrbQgjkoO+j39glYGXb22+6iuEprFRs/ufKYtjljNT
NK3B4DWSkyIPawcuO4Lotijp6jke2bsjFSSashGWcsJlpnwsv7EeFItT3oWTTTQQ
ItPbtNyLW6M6xB+jLGtaAvJqfOlzgO9BLfHuA2LY+WvbVW447SWJAJUDBRAxqWRs
dbtuOHaj97EBAXDBA/49rzZB5akkTSbt/gNd38OJgC+H8N5da25vV9dD3KoAvXfW
fw7OxIsxvQ/Ab+rJmukrrWxPdsC+1WU1+1rGa4PvJp/VJRDes2awGrn+iO7/cQoS
IVziC27JpcbvjLvLVcBIiy1yT/RvJ+87a3jPRHt3VFGcpFh4KykxxSNiyGygl4kA
lQMFEDGCUB31FVv7jlQtXQEB5KgD/iIJZe5lFkPr2B/Cr7BKMVBot1/JSu05NsHg
JZ3uK15w4mVtNPZcFi/dKbn+qRM6LKDFe/GF0HZD/ZD1FJt8yQjzF2w340B+F2GG
EOwnClqZDtEAqnIBzM/ECQQqH+6Bi8gpkFZrFgg5eON7ikqmusDnOlYStM/CBfgp
SbR8kDmFtCZKb2VyZyBXdW5zY2ggPGpAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokA
lQMFEDHioSdlYKmsNPn51QEByz8D/10uMrwP7MdaXnptd1XNFhpaAPYTVAOcaKlY
OGI/LLR9PiU3FbqXO+7INhaxFjBxa0Tw/p4au5Lq1+Mx81edHniJZNS8tz3I3goi
jIC3+jn2gnVAWnK5UZUTUVUn/JLVk/oSaIJNIMMDaw4J9xPVVkb+Fh1A+XqtPsVa
YESrNp0+iQCVAwUQMwXkzcdm8Q+/vPRJAQEA4QQAgNNX1HFgXrMetDb+w6yEGQDk
JCDAY9b6mA2HNeKLQAhsoZl4HwA1+iuQaCgo3lyFC+1Sf097OUTs74z5X1vCedqV
oFw9CxI3xuctt3pJCbbN68flOlnq0WdYouWWGlFwLlh5PEy//VtwX9lqgsizlhzi
t+fX6BT4BgKi5baDhrWJAJUDBRAyCKveD9eCJxX4hUkBAebMA/9mRPy6K6i7TX2R
jUKSl2p5oYrXPk12Zsw4ijuktslxzQhOCyMSCGK2UEC4UM9MXp1H1JZQxN/DcfnM
7VaUt+Ve0wZ6DC9gBSHJ1hKVxHe5XTj26mIr4rcXNy2XEDMK9QsnBxIAZnBVTjSO
LdhqqSMp3ULLOpBlRL2RYrqi27IXr4kAlQMFEDGpbnd1u244dqP3sQEBJnQD/RVS
Azgf4uorv3fpbosI0LE3LUufAYGBSJNJnskeKyudZkNkI5zGGDwVneH/cSkKT4OR
ooeqcTBxKeMaMuXPVl30QahgNwWjfuTvl5OZ8orsQGGWIn5FhqYXsKkjEGxIOBOf
vvlVQ0UbcR0N2+5F6Mb5GqrXZpIesn7jFJpkQKPU
=97h7
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
</sect1>
<sect1>
<title>Developers</title>
<sect2>
<title>&a.wosch;</title>
<programlisting>
Type Bits/KeyID Date User ID
pub 1024/2B7181AD 1997/08/09 Wolfram Schneider &lt;wosch@FreeBSD.org&gt;
Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G
Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0
vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR
tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH
AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk
pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv
2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0
JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85
jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp
bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh
sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX
b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO
sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+
U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC
xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB
UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv
Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf
CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD
/3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA
5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa
UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l
aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr
cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh
3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv
gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg=
=3V1R
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
<sect2>
<title>&a.brian;</title>
<programlisting>
Type Bits/KeyID Date User ID
pub 1024/666A7421 1997/04/30 Brian Somers &lt;brian@awfulhak.org&gt;
Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21
Brian Somers &lt;brian@uk.FreeBSD.org&gt;
Brian Somers &lt;brian@OpenBSD.org&gt;
Brian Somers &lt;brian@FreeBSD.org&gt;
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzNmogUAAAEEALdsjVsV2dzO8UU4EEo7z3nYuvB2Q6YJ8sBUYjB8/vfR5oZ9
7aEQjgY5//pXvS30rHUB9ghk4kIFSljzeMudE0K2zH5n2sxpLbBKWZRDLS7xnrDC
I3j9CNKwQBzMPs0fUT46gp96nf1X8wPiJXkDUEia/c0bRbXlLw7tvOdmanQhAAUR
tCFCcmlhbiBTb21lcnMgPGJyaWFuQGF3ZnVsaGFrLm9yZz6JAJUDBRA3Fjs4H3+p
CANY/L0BAZOxBACTZ1zPdaJzEdT4AfrebQbaU4ytEeodnVXZIkc8Il+LDlDOUAIe
k5PgnHTRM4yiwcZuYQrCDRFgdOofcFfRo0PD7mGFzd22qPGmbvHiDBCYCyhlkPXW
IDeoA1cX77JlU1NFdy0dZwuX7csaMlpjCkOPc7+856mr6pQi48zj7yZtrYkAlQMF
EDcUqZ2dZ0EADG4SFQEBEm0EAL2bBNc4vpxPrg3ATdZ/PekpL6lYj3s9pBf8f7eY
LXq438A/ywiWkrL74gXxcZ2Ey9AHZW+rbJPzUbrfMAgP3uWobeSvDyKRo1wtKnTY
Hy+OEIbBIHDmIUuK3L7KupBf7WAI46Q7fnyz0txvtRruDjvfoyl9/TSRfIKcaw2a
INh7iQCVAwUQNwyWpmdKPfFUsXG5AQEIrAQAmukv2u9ihcnO2Zaak265I+gYozu+
biAngdXNfhTGMeExFzdzQ8Qe7EJugMpIDEkJq2goY35sGitD+ogSVWECjcVbHIAP
M2u9axFGlK7fDOmmkH2ZWDMtwx2I5dZps3q2g9mY2O9Az5Yokp7GW7viSpWXHTRH
xOsuY6aze71U7RWJAHUDBRA3DAEvDuwDH3697LEBAWRHAv9XXkub6mir/DCxzKI2
AE3tek40lRfU6Iukjl/uzT9GXcL3uEjIewiPTwN+k4IL+qcCEdv8WZgv/tO45r59
IZQsicNaSAsKX/6Cxha6Hosg1jw4rjdyz13rgYRi/nreq5mJAJUDBRA2r0CM9p+f
Pnxlu7UBAYObA/40s5SwEpXTrePO78AoUFEa5Z4bgyxkpT7BVbq6m/oQtK509Xe2
M2y0XTLkd86oXpjyKzGzWq8T6ZTKNdF9+5LhS2ylJytdPq1AjDk2BocffWX4+pXn
RPiC6XcNdYGiQL8OTHvZESYQDiHeMfwA8WdMzFK1R80nJMwANYXjJJrLzYkAlQMF
EDNt51zvs7EFZlNtbQEBW0UD/jZB6UDdEFdhS0hxgahv5CxaQDWQbIEpAY9JL1yg
d1RWMKUFGXdRkWZmHEA4NvtwFFeam/HZm4yuGf8yldMyo84loTcVib7lKh4CumGx
FT5Pxeh/F8u9EeQzclRFSMhVl0BA2/HEGyjw0kbkprI/RD3pXD7ewTAUrj2O3XhE
InLgiQCVAwUQM3O9vWyr6JZzEUkFAQF9nAP9Hco0V/3Kl70N5ryPVgh41nUTd7Td
6fUjx8yPoSZLX8vVZ8XMyd8ULFmzsmA+2QG4HcKo/x/4s50O3o8c+o1qSYj0Tp+K
4Z8lneMVlgBNdrRcq4ijEgk0qGqSlsXyLElkVPEXAADBVgzf6yqvipDwXNVzl6e3
GPLE8U2TAnBFZX6JAJUDBRAzZqIFDu2852ZqdCEBATsuBACI3ofP7N3xuHSc7pWL
NsnFYVEc9utBaclcagxjLLzwPKzMBcLjNGyGXIZQNB0d4//UMUJcMS7vwZ8MIton
VubbnJVHuQvENloRRARtarF+LC7OLMCORrGtbt0FtYgvBaqtgXlNcKXD6hRT+ghR
bi3q34akA7Xw8tiFIxdVgSusALQjQnJpYW4gU29tZXJzIDxicmlhbkB1ay5GcmVl
QlNELm9yZz6JAJUDBRA3FLWcnWdBAAxuEhUBAcYYBACos9nKETuaH+z2h0Ws+IIY
mN9FEm8wpPUcQmX5GFhfBUQ+rJbflzv0jJ/f2ac9qJHgIIAlJ3pMkfMpU8UYHEuo
VCe4ZTU5sr4ZdBaF9kpm2OriFgZwIv4QAi7dCMu9ZwGRtZ3+z3DQsVSagucjZTIe
yTUR6K+7E3YXANQjOdqFZYkAlQMFEDcUpeQO7bznZmp0IQEB4HED/Ru3NjwWO1gl
xEiLTzRpU31Rh1Izw1lhVMVJkLAGBw9ieSkjvdIkuhqV1i+W4wKBClT0UOE28Kjp
WbBKPFIASRYzN4ySwpprsG5H45EFQosovYG/HPcMzXU2GMj0iwVTxnMq7I8oH588
ExHqfEN2ARD3ngmB2499ruyGl26pW/BftCBCcmlhbiBTb21lcnMgPGJyaWFuQE9w
ZW5CU0Qub3JnPokAlQMFEDcUtW6dZ0EADG4SFQEBQwsD/j9B/lkltIdnQdjOqR/b
dOBgJCtUf905y6kD+k4kbxeT1YAaA65KJ2o/Zj+i+69F2+BUJ/3kYB7prKwut2h0
ek1ZtncGxoAsQdFJ5JSeMkwUZ5qtGeCmVPb59+KPq3nU6p3RI8Bn77FzK//Qy+IW
/WFVJbf/6NCNCbyRiRjPbGl/iQCVAwUQNxSlyA7tvOdmanQhAQFzMAP/dvtsj3yB
C+seiy6fB/nS+NnKBoff3Ekv57FsZraGt4z9n4sW61eywaiRzuKlhHqrDE17STKa
fBOaV1Ntl7js7og5IFPWNlVh1cK+spDmd655D8pyshziDF6fSAsqGfTn35xl23Xj
O20MMK44j4I5V6rEyUDBDrmX49J56OFkfwa0IEJyaWFuIFNvbWVycyA8YnJpYW5A
RnJlZUJTRC5vcmc+iQCVAwUQNxS1Y51nQQAMbhIVAQHPBQP+IMUlE4DtEvSZFtG4
YK9usfHSkStIafh/F/JzSsqdceLZgwcuifbemw79Rhvqhp0Cyp7kuI2kHO3a19kZ
3ZXlDl3VDg41SV/Z5LzNw9vaZKuF/vtGaktOjac5E5aznWGIA5czwsRgydEOcd8O
VPMUMrdNWRI6XROtnbZaRSwmD8aJAJUDBRA3FKWuDu2852ZqdCEBAWVJA/4x3Mje
QKV+KQoO6mOyoIcD4GK1DjWDvNHGujJbFGBmARjr/PCm2cq42cPzBxnfRhCfyEvN
aesNB0NjLjRU/m7ziyVn92flAzHqqmU36aEdqooXUY2T3vOYzo+bM7VtInarG1iU
qw1G19GgXUwUkPvy9+dNIM/aYoI/e0Iv3P9uug==
=R3k0
-----END PGP PUBLIC KEY BLOCK-----</programlisting>
</sect2>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,391 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.9 1999-07-28 20:23:31 nik Exp $
-->
<chapter id="policies">
<title>Source Tree Guidelines and Policies</title>
<para><emphasis>Contributed by &a.phk;.</emphasis></para>
<para>This chapter documents various guidelines and policies in force for
the FreeBSD source tree.</para>
<sect1 id="policies-maintainer">
<title><makevar>MAINTAINER</makevar> on Makefiles</title>
<para>June 1996.</para>
<para>If a particular portion of the FreeBSD distribution is being
maintained by a person or group of persons, they can communicate this
fact to the world by adding a
<programlisting>
MAINTAINER= email-addresses</programlisting>
line to the <filename>Makefile</filename>s covering this portion of the
source tree.</para>
<para>The semantics of this are as follows:</para>
<para>The maintainer owns and is responsible for that code. This means
that he is responsible for fixing bugs and answer problem reports
pertaining to that piece of the code, and in the case of contributed
software, for tracking new versions, as appropriate.</para>
<para>Changes to directories which have a maintainer defined shall be sent
to the maintainer for review before being committed. Only if the
maintainer does not respond for an unacceptable period of time, to
several emails, will it be acceptable to commit changes without review
by the maintainer. However, it is suggested that you try and have the
changes reviewed by someone else if at all possible.</para>
<para>It is of course not acceptable to add a person or group as
maintainer unless they agree to assume this duty. On the other hand it
doesn't have to be a committer and it can easily be a group of
people.</para>
</sect1>
<sect1>
<title>Contributed Software</title>
<para><emphasis>Contributed by &a.phk; and &a.obrien;. </emphasis></para>
<para>June 1996.</para>
<para>Some parts of the FreeBSD distribution consist of software that is
actively being maintained outside the FreeBSD project. For historical
reasons, we call this <emphasis>contributed</emphasis> software. Some
examples are perl, gcc and patch.</para>
<para>Over the last couple of years, various methods have been used in
dealing with this type of software and all have some number of
advantages and drawbacks. No clear winner has emerged.</para>
<para>Since this is the case, after some debate one of these methods has
been selected as the &ldquo;official&rdquo; method and will be required
for future imports of software of this kind. Furthermore, it is
strongly suggested that existing contributed software converge on this
model over time, as it has significant advantages over the old method,
including the ability to easily obtain diffs relative to the
&ldquo;official&rdquo; versions of the source by everyone (even without
cvs access). This will make it significantly easier to return changes
to the primary developers of the contributed software.</para>
<para>Ultimately, however, it comes down to the people actually doing the
work. If using this model is particularly unsuited to the package being
dealt with, exceptions to these rules may be granted only with the
approval of the core team and with the general consensus of the other
developers. The ability to maintain the package in the future will be a
key issue in the decisions.</para>
<note>
<para>Because of some unfortunate design limitations with the RCS file
format and CVS's use of vendor branches, minor, trivial and/or
cosmetic changes are <emphasis>strongly discouraged</emphasis> on
files that are still tracking the vendor branch. &ldquo;Spelling
fixes&rdquo; are explicitly included here under the
&ldquo;cosmetic&rdquo; category and are to be avoided for files with
revision 1.1.x.x. The repository bloat impact from a single character
change can be rather dramatic.</para>
</note>
<para>The <application>Tcl</application> embedded programming
language will be used as example of how this model works:</para>
<para><filename>src/contrib/tcl</filename> contains the source as
distributed by the maintainers of this package. Parts that are entirely
not applicable for FreeBSD can be removed. In the case of Tcl, the
<filename>mac</filename>, <filename>win</filename> and
<filename>compat</filename> subdirectories were eliminated before the
import</para>
<para><filename>src/lib/libtcl</filename> contains only a "bmake style"
<filename>Makefile</filename> that uses the standard
<filename>bsd.lib.mk</filename> makefile rules to produce the library
and install the documentation.</para>
<para><filename>src/usr.bin/tclsh</filename> contains only a bmake style
<filename>Makefile</filename> which will produce and install the
<command>tclsh</command> program and its associated man-pages using the
standard <filename>bsd.prog.mk</filename> rules.</para>
<para><filename>src/tools/tools/tcl_bmake</filename> contains a couple of
shell-scripts that can be of help when the tcl software needs updating.
These are not part of the built or installed software.</para>
<para>The important thing here is that the
<filename>src/contrib/tcl</filename> directory is created according to
the rules: It is supposed to contain the sources as distributed (on a
proper CVS vendor-branch and without RCS keyword expansion) with as few
FreeBSD-specific changes as possible. The 'easy-import' tool on
freefall will assist in doing the import, but if there are any doubts on
how to go about it, it is imperative that you ask first and not blunder
ahead and hope it &ldquo;works out&rdquo;. CVS is not forgiving of
import accidents and a fair amount of effort is required to back out
major mistakes.</para>
<para>Because of the previously mentioned design limitations with CVS's
vendor branches, it is required that &ldquo;official&rdquo; patches from
the vendor be applied to the original distributed sources and the result
re-imported onto the vendor branch again. Official patches should never
be patched into the FreeBSD checked out version and "committed", as this
destroys the vendor branch coherency and makes importing future versions
rather difficult as there will be conflicts.</para>
<para>Since many packages contain files that are meant for compatibility
with other architectures and environments that FreeBSD, it is
permissible to remove parts of the distribution tree that are of no
interest to FreeBSD in order to save space. Files containing copyright
notices and release-note kind of information applicable to the remaining
files shall <emphasis>not</emphasis> be removed.</para>
<para>If it seems easier, the <command>bmake</command>
<filename>Makefile</filename>s can be produced from the dist tree
automatically by some utility, something which would hopefully make it
even easier to upgrade to a new version. If this is done, be sure to
check in such utilities (as necessary) in the
<filename>src/tools</filename> directory along with the port itself so
that it is available to future maintainers.</para>
<para>In the <filename>src/contrib/tcl</filename> level directory, a file
called <filename>FREEBSD-upgrade</filename> should be added and it
should states things like:</para>
<itemizedlist>
<listitem>
<para>Which files have been left out</para>
</listitem>
<listitem>
<para>Where the original distribution was obtained from and/or the
official master site.</para>
</listitem>
<listitem>
<para>Where to send patches back to the original authors</para>
</listitem>
<listitem>
<para>Perhaps an overview of the FreeBSD-specific changes that have
been made.</para>
</listitem>
</itemizedlist>
<para>However, please do not import <filename>FREEBSD-upgrade</filename>
with the contributed source. Rather you should <command>cvs add
FREEBSD-upgrade ; cvs ci</command> after the initial import. Example
wording from <filename>src/contrib/cpio</filename> is below:</para>
<programlisting>
This directory contains virgin sources of the original distribution files
on a "vendor" branch. Do not, under any circumstances, attempt to upgrade
the files in this directory via patches and a cvs commit. New versions or
official-patch versions must be imported. Please remember to import with
"-ko" to prevent CVS from corrupting any vendor RCS Ids.
For the import of GNU cpio 2.4.2, the following files were removed:
INSTALL cpio.info mkdir.c
Makefile.in cpio.texi mkinstalldirs
To upgrade to a newer version of cpio, when it is available:
1. Unpack the new version into an empty directory.
[Do not make ANY changes to the files.]
2. Remove the files listed above and any others that don't apply to
FreeBSD.
3. Use the command:
cvs import -ko -m 'Virgin import of GNU cpio v&lt;version&gt;' \
src/contrib/cpio GNU cpio_&lt;version&gt;
For example, to do the import of version 2.4.2, I typed:
cvs import -ko -m 'Virgin import of GNU v2.4.2' \
src/contrib/cpio GNU cpio_2_4_2
4. Follow the instructions printed out in step 3 to resolve any
conflicts between local FreeBSD changes and the newer version.
Do not, under any circumstances, deviate from this procedure.
To make local changes to cpio, simply patch and commit to the main
branch (aka HEAD). Never make local changes on the GNU branch.
All local changes should be submitted to "cpio@gnu.ai.mit.edu" for
inclusion in the next vendor release.
obrien@FreeBSD.org - 30 March 1997</programlisting>
</sect1>
<sect1 id="policies-encumbered">
<title>Encumbered files</title>
<para>It might occasionally be necessary to include an encumbered file in
the FreeBSD source tree. For example, if a device requires a small
piece of binary code to be loaded to it before the device will operate,
and we do not have the source to that code, then the binary file is said
to be encumbered. The following policies apply to including encumbered
files in the FreeBSD source tree.</para>
<orderedlist>
<listitem>
<para>Any file which is interpreted or executed by the system CPU(s)
and not in source format is encumbered.</para>
</listitem>
<listitem>
<para>Any file with a license more restrictive than BSD or GNU is
encumbered.</para>
</listitem>
<listitem>
<para>A file which contains downloadable binary data for use by the
hardware is not encumbered, unless (1) or (2) apply to it. It must
be stored in an architecture neutral ASCII format (file2c or
uuencoding is recommended).</para>
</listitem>
<listitem>
<para>Any encumbered file requires specific approval from the <link
linkend="staff-core">Core team</link> before it is added to the
CVS repository.</para>
</listitem>
<listitem>
<para>Encumbered files go in <filename>src/contrib</filename> or
<filename>src/sys/contrib</filename>.</para>
</listitem>
<listitem>
<para>The entire module should be kept together. There is no point in
splitting it, unless there is code-sharing with non-encumbered
code.</para>
</listitem>
<listitem>
<para>Object files are named
<filename><replaceable>arch</replaceable>/<replaceable>filename</replaceable>.o.uu></filename>.</para>
</listitem>
<listitem>
<para>Kernel files;</para>
<orderedlist>
<listitem>
<para>Should always be referenced in
<filename>conf/files.*</filename> (for build simplicity).</para>
</listitem>
<listitem>
<para>Should always be in <filename>LINT</filename>, but the <link
linkend="staff-core">Core team</link> decides per case if it
should be commented out or not. The <link
linkend="staff-core">Core team</link> can, of course, change
their minds later on.</para>
</listitem>
<listitem>
<para>The <link linkend="staff-who">Release Engineer</link>
decides whether or not it goes in to the release.</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>User-land files;</para>
<orderedlist>
<listitem>
<para>The <link linkend="staff-core">Core team</link> decides if
the code should be part of <command>make world</command>.</para>
</listitem>
<listitem>
<para>The <link linkend="staff-who">Release Engineer</link>
decides if it goes in to the release.</para>
</listitem>
</orderedlist>
</listitem>
</orderedlist>
</sect1>
<sect1 id="policies-shlib">
<title>Shared Libraries</title>
<para><emphasis>Contributed by &a.asami;, &a.peter;, and &a.obrien; 9
December 1996.</emphasis></para>
<para>If you are adding shared library support to a port or other piece of
software that doesn't have one, the version numbers should follow these
rules. Generally, the resulting numbers will have nothing to do with
the release version of the software.</para>
<para>The three principles of shared library building are:</para>
<itemizedlist>
<listitem>
<para>Start from <literal>1.0</literal></para>
</listitem>
<listitem>
<para>If there is a change that is backwards compatible, bump minor
number</para>
</listitem>
<listitem>
<para>If there is an incompatible change, bump major number</para>
</listitem>
</itemizedlist>
<para>For instance, added functions and bugfixes result in the minor
version number being bumped, while deleted functions, changed function
call syntax etc. will force the major version number to change.</para>
<para>Stick to version numbers of the form major.minor
(<replaceable>x</replaceable>.<replaceable>y</replaceable>). Our
dynamic linker does not handle version numbers of the form
<replaceable>x</replaceable>.<replaceable>y</replaceable>.<replaceable>z</replaceable>
well. Any version number after the <replaceable>y</replaceable>
(ie. the third digit) is totally ignored when comparing shared lib
version numbers to decide which library to link with. Given two shared
libraries that differ only in the &ldquo;micro&rdquo; revision,
<command>ld.so</command> will link with the higher one. Ie: if you link
with <filename>libfoo.so.3.3.3</filename>, the linker only records
<literal>3.3</literal> in the headers, and will link with anything
starting with
<replaceable>libfoo.so.3</replaceable>.<replaceable>(anything &gt;=
3)</replaceable>.<replaceable>(highest
available)</replaceable>.</para>
<note>
<para><command>ld.so</command> will always use the highest
&ldquo;minor&rdquo; revision. Ie: it will use
<filename>libc.so.2.2</filename> in preference to
<filename>libc.so.2.0</filename>, even if the program was initially
linked with <filename>libc.so.2.0</filename>.</para>
</note>
<para>For non-port libraries, it is also our policy to change the shared
library version number only once between releases. When you make a
change to a system library that requires the version number to be
bumped, check the <filename>Makefile</filename>'s commit logs. It is the
responsibility of the committer to ensure that the first such change
since the release will result in the shared library version number in
the <filename>Makefile</filename> to be updated, and any subsequent
changes will not.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,232 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.9 1999-06-15 20:24:54 mpp Exp $
-->
<chapter id="quotas">
<title>Disk Quotas</title>
<para><emphasis>Contributed by &a.mpp;. 26 February
1996</emphasis></para>
<para>Quotas are an optional feature of the operating system that allow you
to limit the amount of disk space and/or the number of files a user, or
members of a group, may allocate on a per-file system basis. This is used
most often on timesharing systems where it is desirable to limit the
amount of resources any one user or group of users may allocate. This
will prevent one user from consuming all of the available disk
space.</para>
<sect1>
<title>Configuring Your System to Enable Disk Quotas</title>
<para>Before attempting to use disk quotas it is necessary to make sure
that quotas are configured in your kernel. This is done by adding the
following line to your kernel configuration file:</para>
<programlisting>
options QUOTA</programlisting>
<para>The stock <filename>GENERIC</filename> kernel does not have this
enabled by default, so you will have to configure, build and install a
custom kernel in order to use disk quotas. Please refer to the <link
linkend="kernelconfig">Configuring the FreeBSD Kernel</link> section
for more information on kernel configuration.</para>
<para>Next you will need to enable disk quotas in
<filename>/etc/sysconfig</filename>. This is done by changing the line:
<programlisting>
quotas=NO</programlisting>
to:
<programlisting>
quotas=YES</programlisting></para>
<para>If you are running FreeBSD 2.2.2 or later, the configuration file
will be <filename>/etc/rc.conf</filename> instead and the variable name
changed to:</para>
<programlisting>
check_quotas=YES</programlisting>
<para>Finally you will need to edit <filename>/etc/fstab</filename> to
enable disk quotas on a per-file system basis. This is where you can
either enable user or group quotas or both for all of your file
systems.</para>
<para>To enable per-user quotas on a file system, add the
<literal>userquota</literal> option to the options field in the
<filename>/etc/fstab</filename> entry for the file system you want to to
enable quotas on. For example:</para>
<programlisting>
/dev/da1s2g /home ufs rw,userquota 1 2</programlisting>
<para>Similarly, to enable group quotas, use the
<literal>groupquota</literal> option instead of the
<literal>userquota</literal> keyword. To enable both user and group
quotas, change the entry as follows:</para>
<programlisting>
/dev/da1s2g /home ufs rw,userquota,groupquota 1 2</programlisting>
<para>By default the quota files are stored in the root directory of the
file system with the names <filename>quota.user</filename> and
<filename>quota.group</filename> for user and group quotas respectively.
See <command>man fstab</command> for more information. Even though that
man page says that you can specify an alternate location for the quota
files, this is not recommended since all of the various quota utilities
do not seem to handle this properly.</para>
<para>At this point you should reboot your system with your new kernel.
<filename>/etc/rc</filename> will automatically run the appropriate
commands to create the initial quota files for all of the quotas you
enabled in <filename>/etc/fstab</filename>, so there is no need to
manually create any zero length quota files.</para>
<para>In the normal course of operations you should not be required to run
the <command>quotacheck</command>, <command>quotaon</command>, or
<command>quotaoff</command> commands manually. However, you may want to
read their man pages just to be familiar with their operation.</para>
</sect1>
<sect1>
<title>Setting Quota Limits</title>
<para>Once you have configured your system to enable quotas, verify that
they really are enabled. An easy way to do this is to run</para>
<screen>&prompt.root; <userinput>quota -v</userinput></screen>
<para>You should see a one line summary of disk usage and current quota
limits for each file system that quotas are enabled on.</para>
<para>You are now ready to start assigning quota limits with the
<command>edquota</command> command.</para>
<para>You have several options on how to enforce limits on the amount of
disk space a user or group may allocate, and how many files they may
create. You may limit allocations based on disk space (block quotas) or
number of files (inode quotas) or a combination of both. Each of these
limits are further broken down into two categories: hard and soft
limits.</para>
<para>A hard limit may not be exceeded. Once a user reaches their hard
limit they may not make any further allocations on the file system in
question. For example, if the user has a hard limit of 500 blocks on a
file system and is currently using 490 blocks, the user can only
allocate an additional 10 blocks. Attempting to allocate an additional
11 blocks will fail.</para>
<para>Soft limits on the other hand can be exceeded for a limited amount
of time. This period of time is known as the grace period, which is one
week by default. If a user stays over his or her soft limit longer than
their grace period, the soft limit will turn into a hard limit and no
further allocations will be allowed. When the user drops back below the
soft limit, the grace period will be reset.</para>
<para>The following is an example of what you might see when you run
then <command>edquota</command> command. When the
<command>edquota</command> command is invoked, you are placed into the
editor specified by the <envar>EDITOR</envar> environment variable, or
in the <command>vi</command> editor if the <envar>EDITOR</envar>
variable is not set, to allow you to edit the quota limits.</para>
<screen>&prompt.root; <userinput>edquota -u test</userinput></screen>
<programlisting>
Quotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)</programlisting>
<para>You will normally see two lines for each file system that has quotas
enabled. One line for the block limits, and one line for inode limits.
Simply change the value you want updated to modify the quota limit. For
example, to raise this users block limit from a soft limit of 50 and a
hard limit of 75 to a soft limit of 500 and a hard limit of 600, change:
<programlisting> /usr: blocks in use: 65, limits (soft = 50, hard =
75)</programlisting> to: <programlisting> /usr: blocks in use: 65,
limits (soft = 500, hard = 600)</programlisting></para>
<para>The new quota limits will be in place when you exit the
editor.</para>
<para>Sometimes it is desirable to set quota limits on a range of uids.
This can be done by use of the <option>-p</option> option on the
<command>edquota</command> command. First, assign the desired quota
limit to a user, and then run <command>edquota -p protouser
startuid-enduid</command>. For example, if user
<username>test</username> has the desired quota limits, the following
command can be used to duplicate those quota limits for uids 10,000
through 19,999:</para>
<screen>&prompt.root; <userinput>edquota -p test 10000-19999</userinput></screen>
<para>The ability to specify uid ranges was added to the system after 2.1
was released. If you need this feature on a 2.1 system, you will need
to obtain a newer copy of edquota.</para>
<para>See <command>man edquota</command> for more detailed
information.</para>
</sect1>
<sect1>
<title>Checking Quota Limits and Disk Usage</title>
<para>You can use either the <command>quota</command> or the
<command>repquota</command> commands to check quota limits and disk
usage. The <command>quota</command> command can be used to check
individual user and group quotas and disk usage. Only the super-user
may examine quotas and usage for other users, or for groups that they
are not a member of. The <command>repquota</command> command can be
used to get a summary of all quotas and disk usage for file systems with
quotas enabled.</para>
<para>The following is some sample output from the <command>quota
-v</command> command for a user that has quota limits on two file
systems.</para>
<programlisting>
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60</programlisting>
<para>On the <filename>/usr</filename> file system in the above example
this user is currently 15 blocks over their soft limit of 50 blocks and
has 5 days of their grace period left. Note the asterisk
<literal>*</literal> which indicates that the user is currently over
their quota limit.</para>
<para>Normally file systems that the user is not using any disk space on
will not show up in the output from the <command>quota</command>
command, even if they have a quota limit assigned for that file system.
The <option>-v</option> option will display those file systems, such as
the <filename>/usr/var</filename> file system in the above
example.</para>
</sect1>
<sect1>
<title>* Quotas over NFS</title>
<para>This section is still under development.</para>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,933 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.55 1999-08-11 13:53:13 alfred Exp $
-->
<!--
Please try to keep the CVSROOT/avail file in sync with the list of
FreeBSD developers.
-->
<chapter id="staff">
<title>FreeBSD Project Staff</title>
<para>The FreeBSD Project is managed and operated by the following groups of
people:</para>
<sect1 id="staff-core">
<title>The FreeBSD Core Team</title>
<para>The FreeBSD core team constitutes the project's &ldquo;Board of
Directors&rdquo;, responsible for deciding the project's overall goals
and direction as well as managing <link linkend="staff-who">specific
areas</link> of the FreeBSD project landscape.</para>
<para>(in alphabetical order by last name):</para>
<itemizedlist>
<listitem>
<para>&a.asami;</para>
</listitem>
<listitem>
<para>&a.jmb;</para>
</listitem>
<listitem>
<para>&a.ache;</para>
</listitem>
<listitem>
<para>&a.bde;</para>
</listitem>
<listitem>
<para>&a.gibbs;</para>
</listitem>
<listitem>
<para>&a.dg;</para>
</listitem>
<listitem>
<para>&a.jkh;</para>
</listitem>
<listitem>
<para>&a.phk;</para>
</listitem>
<listitem>
<para>&a.rich;</para>
</listitem>
<listitem>
<para>&a.gpalmer;</para>
</listitem>
<listitem>
<para>&a.jdp;</para>
</listitem>
<listitem>
<para>&a.dfr;</para>
</listitem>
<listitem>
<para>&a.sos;</para>
</listitem>
<listitem>
<para>&a.peter;</para>
</listitem>
<listitem>
<para>&a.wollman;</para>
</listitem>
<listitem>
<para>&a.joerg;</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="staff-committers">
<title>The FreeBSD Developers</title>
<para>These are the people who have commit privileges and do the
engineering work on the FreeBSD source tree. All core team members are
also developers.</para>
<itemizedlist>
<listitem>
<para>&a.ugen;</para>
</listitem>
<listitem>
<para>&a.dbaker;</para>
</listitem>
<listitem>
<para>&a.mbarkah;</para>
</listitem>
<listitem>
<para>&a.stb;</para>
</listitem>
<listitem>
<para>&a.pb;</para>
</listitem>
<listitem>
<para>&a.abial;</para>
</listitem>
<listitem>
<para>&a.jb;</para>
</listitem>
<listitem>
<para>&a.torstenb;</para>
</listitem>
<listitem>
<para>&a.dburr;</para>
</listitem>
<listitem>
<para>&a.charnier;</para>
</listitem>
<listitem>
<para>&a.luoqi;</para>
</listitem>
<listitem>
<para>&a.ejc;</para>
</listitem>
<listitem>
<para>&a.kjc;</para>
</listitem>
<listitem>
<para>&a.gclarkii;</para>
</listitem>
<listitem>
<para>&a.archie;</para>
</listitem>
<listitem>
<para>&a.chris;</para>
</listitem>
<listitem>
<para>&a.alc;</para>
</listitem>
<listitem>
<para>&a.cracauer;</para>
</listitem>
<listitem>
<para>&a.adam;</para>
</listitem>
<listitem>
<para>&a.dillon;</para>
</listitem>
<listitem>
<para>&a.mdodd;</para>
</listitem>
<listitem>
<para>&a.dufault;</para>
</listitem>
<listitem>
<para>&a.uhclem;</para>
</listitem>
<listitem>
<para>&a.tegge;</para>
</listitem>
<listitem>
<para>&a.deischen;</para>
</listitem>
<listitem>
<para>&a.eivind;</para>
</listitem>
<listitem>
<para>&a.julian;</para>
</listitem>
<listitem>
<para>&a.rse;</para>
</listitem>
<listitem>
<para>&a.ru;</para>
</listitem>
<listitem>
<para>&a.se;</para>
</listitem>
<listitem>
<para>&a.jasone;</para>
</listitem>
<listitem>
<para>&a.sef;</para>
</listitem>
<listitem>
<para>&a.green;</para>
</listitem>
<listitem>
<para>&a.fenner;</para>
</listitem>
<listitem>
<para>&a.jfieber;</para>
</listitem>
<listitem>
<para>&a.jfitz;</para>
</listitem>
<listitem>
<para>&a.scrappy;</para>
</listitem>
<listitem>
<para>&a.lars;</para>
</listitem>
<listitem>
<para>&a.dirk;</para>
</listitem>
<listitem>
<para>&a.shige;</para>
</listitem>
<listitem>
<para>&a.billf;</para>
</listitem>
<listitem>
<para>&a.gallatin;</para>
</listitem>
<listitem>
<para>&a.tg;</para>
</listitem>
<listitem>
<para>&a.brandon;</para>
</listitem>
<listitem>
<para>&a.graichen;</para>
</listitem>
<listitem>
<para>&a.cg;</para>
</listitem>
<listitem>
<para>&a.jgreco;</para>
</listitem>
<listitem>
<para>&a.rgrimes;</para>
</listitem>
<listitem>
<para>&a.jmg;</para>
</listitem>
<listitem>
<para>&a.hanai;</para>
</listitem>
<listitem>
<para>&a.mharo;</para>
</listitem>
<listitem>
<para>&a.thepish;</para>
</listitem>
<listitem>
<para>&a.jhay;</para>
</listitem>
<listitem>
<para>&a.sheldonh;</para>
</listitem>
<listitem>
<para>&a.helbig;</para>
</listitem>
<listitem>
<para>&a.ghelmer;</para>
</listitem>
<listitem>
<para>&a.erich;</para>
</listitem>
<listitem>
<para>&a.nhibma;</para>
</listitem>
<listitem>
<para>&a.flathill;</para>
</listitem>
<listitem>
<para>&a.hosokawa;</para>
</listitem>
<listitem>
<para>&a.hsu;</para>
</listitem>
<listitem>
<para>&a.foxfair;</para>
</listitem>
<listitem>
<para>&a.tom;</para>
</listitem>
<listitem>
<para>&a.mph;</para>
</listitem>
<listitem>
<para>&a.shin;</para>
</listitem>
<listitem>
<para>&a.itojun;</para>
</listitem>
<listitem>
<para>&a.iwasaki;</para>
</listitem>
<listitem>
<para>&a.mjacob;</para>
</listitem>
<listitem>
<para>&a.gj;</para>
</listitem>
<listitem>
<para>&a.nsj;</para>
</listitem>
<listitem>
<para>&a.ljo;</para>
</listitem>
<listitem>
<para>&a.kato;</para>
</listitem>
<listitem>
<para>&a.andreas;</para>
</listitem>
<listitem>
<para>&a.motoyuki;</para>
</listitem>
<listitem>
<para>&a.jkoshy;</para>
</listitem>
<listitem>
<para>&a.kuriyama;</para>
</listitem>
<listitem>
<para>&a.grog;</para>
</listitem>
<listitem>
<para>&a.jlemon;</para>
</listitem>
<listitem>
<para>&a.truckman;</para>
</listitem>
<listitem>
<para>&a.lile;</para>
</listitem>
<listitem>
<para>&a.kevlo;</para>
</listitem>
<listitem>
<para>&a.imp;</para>
</listitem>
<listitem>
<para>&a.jmacd;</para>
</listitem>
<listitem>
<para>&a.smace;</para>
</listitem>
<listitem>
<para>&a.gehenna;</para>
</listitem>
<listitem>
<para>&a.mckay;</para>
</listitem>
<listitem>
<para>&a.mckusick;</para>
</listitem>
<listitem>
<para>&a.ken;</para>
</listitem>
<listitem>
<para>&a.hm;</para>
</listitem>
<listitem>
<para>&a.tedm;</para>
</listitem>
<listitem>
<para>&a.jim;</para>
</listitem>
<listitem>
<para>&a.marcel;</para>
</listitem>
<listitem>
<para>&a.amurai;</para>
</listitem>
<listitem>
<para>&a.markm;</para>
</listitem>
<listitem>
<para>&a.max;</para>
</listitem>
<listitem>
<para>&a.newton;</para>
</listitem>
<listitem>
<para>&a.rnordier;</para>
</listitem>
<listitem>
<para>&a.davidn;</para>
</listitem>
<listitem>
<para>&a.obrien;</para>
</listitem>
<listitem>
<para>&a.danny;</para>
</listitem>
<listitem>
<para>&a.ljo;</para>
</listitem>
<listitem>
<para>&a.fsmp;</para>
</listitem>
<listitem>
<para>&a.smpatel;</para>
</listitem>
<listitem>
<para>&a.wpaul;</para>
</listitem>
<listitem>
<para>&a.alfred;</para>
</listitem>
<listitem>
<para>&a.wes;</para>
</listitem>
<listitem>
<para>&a.cpiazza;</para>
</listitem>
<listitem>
<para>&a.steve;</para>
</listitem>
<listitem>
<para>&a.mpp;</para>
</listitem>
<listitem>
<para>&a.jraynard;</para>
</listitem>
<listitem>
<para>&a.darrenr;</para>
</listitem>
<listitem>
<para>&a.csgr;</para>
</listitem>
<listitem>
<para>&a.martin;</para>
</listitem>
<listitem>
<para>&a.paul;</para>
</listitem>
<listitem>
<para>&a.roberto;</para>
</listitem>
<listitem>
<para>&a.chuckr;</para>
</listitem>
<listitem>
<para>&a.guido;</para>
</listitem>
<listitem>
<para>&a.dima;</para>
</listitem>
<listitem>
<para>&a.sada;</para>
</listitem>
<listitem>
<para>&a.nsayer;</para>
</listitem>
<listitem>
<para>&a.wosch;</para>
</listitem>
<listitem>
<para>&a.ats;</para>
</listitem>
<listitem>
<para>&a.dick;</para>
</listitem>
<listitem>
<para>&a.jseger;</para>
</listitem>
<listitem>
<para>&a.simokawa;</para>
</listitem>
<listitem>
<para>&a.vanilla;</para>
</listitem>
<listitem>
<para>&a.msmith;</para>
</listitem>
<listitem>
<para>&a.des;</para>
</listitem>
<listitem>
<para>&a.brian;</para>
</listitem>
<listitem>
<para>&a.mks;</para>
</listitem>
<listitem>
<para>&a.stark;</para>
</listitem>
<listitem>
<para>&a.karl;</para>
</listitem>
<listitem>
<para>&a.sumikawa;</para>
</listitem>
<listitem>
<para>&a.nyan;</para>
</listitem>
<listitem>
<para>&a.tanimura;</para>
</listitem>
<listitem>
<para>&a.taoka;</para>
</listitem>
<listitem>
<para>&a.dt;</para>
</listitem>
<listitem>
<para>&a.cwt;</para>
</listitem>
<listitem>
<para>&a.pst;</para>
</listitem>
<listitem>
<para>&a.hoek;</para>
</listitem>
<listitem>
<para>&a.nectar;</para>
</listitem>
<listitem>
<para>&a.swallace;</para>
</listitem>
<listitem>
<para>&a.dwhite;</para>
</listitem>
<listitem>
<para>&a.nate;</para>
</listitem>
<listitem>
<para>&a.yokota;</para>
</listitem>
<listitem>
<para>&a.jmz;</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="staff-doc">
<title>The FreeBSD Documentation Project</title>
<para>The <ulink URL="http://www.FreeBSD.org/docproj.html">FreeBSD
Documentation Project</ulink> is responsible for a number of different
services, each service being run by an individual and his
<emphasis>deputies</emphasis> (if any):</para>
<variablelist>
<varlistentry>
<term>Documentation Project Manager</term>
<listitem>
<para>&a.nik;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Webmaster</term>
<listitem>
<para>&a.wosch;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Handbook &amp; FAQ Editor</term>
<listitem>
<para>&a.faq;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>News Editor</term>
<listitem>
<para>&a.nsj;</para>
<para><emphasis>Deputy:</emphasis> &a.john;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>In the Press Editor</term>
<listitem>
<para>&a.jkoshy</para>
</listitem>
</varlistentry>
<varlistentry>
<term>FreeBSD Really-Quick NewsLetter Editor</term>
<listitem>
<para>Chris Coleman <email>chrisc@vmunix.com</email></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Gallery Editor</term>
<listitem>
<para>&a.nsj;</para>
<para><emphasis>Deputy:</emphasis> &a.cawimm;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Commercial Editor</term>
<listitem>
<para>&a.nik;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Web Changes Editor</term>
<listitem>
<para>-</para>
</listitem>
</varlistentry>
<varlistentry>
<term>User Groups Editor</term>
<listitem>
<para>-</para>
</listitem>
</varlistentry>
<varlistentry>
<term>LinuxDoc to DocBook conversion</term>
<listitem>
<para>&a.nik;</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 id="staff-who">
<title>Who Is Responsible for What</title>
<variablelist>
<varlistentry>
<term>Principal Architect</term>
<listitem>
<para>&a.dg;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><ulink
url="http://www.FreeBSD.org/docproj/docproj.html">Documentation
Project Manager</ulink></term>
<listitem>
<para>&a.nik;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="l10n">Internationalization</link></term>
<listitem>
<para>&a.ache;</para>
</listitem>
</varlistentry>
<varlistentry><term>Networking</term>
<listitem>
<para>&a.wollman;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="eresources-mail">Postmaster</link></term>
<listitem>
<para>&a.jmb;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Release Coordinator</term>
<listitem>
<para>&a.jkh;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Public Relations &amp; Corporate Liaison</term>
<listitem>
<para>&a.jkh;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><ulink url="http://www.FreeBSD.org/security/">Security
Officer</ulink></term>
<listitem>
<para>&a.imp;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><ulink url="http://www.FreeBSD.org/support.html#cvs">Source
Repository Managers</ulink></term>
<listitem>
<para>Principal: &a.peter;</para>
<para>Assistant: &a.jdp;</para>
<para>International (Crypto): &a.markm;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><ulink url="http://www.FreeBSD.org/ports/">Ports
Manager</ulink></term>
<listitem>
<para>&a.asami;</para>
</listitem>
</varlistentry>
<varlistentry>
<term>XFree86 Project, Inc. Liaison</term>
<listitem>
<para>&a.rich;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="eresources-news">Usenet Support</link></term>
<listitem>
<para>&a.joerg;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><ulink url="http://www.FreeBSD.org/support.html#gnats">GNATS
Administrator</ulink></term>
<listitem>
<para>&a.steve;</para>
</listitem>
</varlistentry>
<varlistentry>
<term><ulink
url="http://www.FreeBSD.org/internal/">Webmaster</ulink></term>
<listitem>
<para>&a.wosch;</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->

View file

@ -1,25 +0,0 @@
<!--
The FreeBSD Documentation Project
$Id: chapter.sgml,v 1.5 1999-03-08 22:04:49 nik Exp $
-->
<chapter id="x11">
<title>The X Window System</title>
<para>Pending the completion of this section, please refer to documentation
supplied by the <ulink URL="http://www.xfree86.org/">The XFree86 Project,
Inc</ulink>.</para>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../handbook.sgml" "part" "chapter")
End:
-->