"doc/en. The time has come. Prepare yourself."
"No, wait, I don't want t--" <blam> "Goodbye".
This commit is contained in:
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
|
@ -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"
|
|
@ -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 “route” is a defined pair of addresses: a
|
||||
“destination” and a “gateway”. 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 “default”. The
|
||||
“default route” 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
|
||||
“links”), 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>=></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
|
||||
“default” 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] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [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 “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?”.</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) --> Local1 (10.20.30.1)
|
||||
Local1 (10.20.30.1, 10.9.9.30) --> 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 “Backbone” 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 “correct” 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
|
||||
“block” size of 8k (though it may do fragments of smaller
|
||||
sizes). Since the maximum Ethernet packet is around 1500 bytes, the NFS
|
||||
“block” 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 “units”. 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:
|
||||
-->
|
||||
|
|
@ -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ø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ö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ö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ø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 “Truck” 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>">
|
|
@ -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>&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>&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>“Do nothing” 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
|
||||
“Do nothing” 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>“Do nothing” 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:
|
||||
-->
|
|
@ -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 “mail” 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
|
||||
“info” 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:
|
||||
-->
|
||||
|
|
@ -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 & Magazines Specific to FreeBSD</title>
|
||||
|
||||
<para><emphasis>International books &
|
||||
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 & 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 & 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 &
|
||||
Associates, Inc., 1994. ISBN 1-56592-076-7</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><emphasis>UNIX in a Nutshell</emphasis>. O'Reilly &
|
||||
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 &
|
||||
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 & 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 & Associates,
|
||||
Inc., 1994. ISBN 1-56592-080-5</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Costales, Brian, et al. <emphasis>Sendmail</emphasis>, 2nd Ed.
|
||||
O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Frisch, Æleen. <emphasis>Essential System
|
||||
Administration</emphasis>, 2nd Ed. O'Reilly & Associates,
|
||||
Inc., 1995. ISBN 1-56592-127-5</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Hunt, Craig. <emphasis>TCP/IP Network
|
||||
Administration</emphasis>. O'Reilly & 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
|
||||
& 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 &
|
||||
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 &
|
||||
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 & 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. “Writing Serial Drivers for UNIX”.
|
||||
<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. “Porting UNIX to the 386”.
|
||||
<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 & Associates, Inc.,
|
||||
1996. ISBN 1-56592-148-8</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Garfinkel, Simson. <emphasis>PGP Pretty Good
|
||||
Privacy</emphasis> O'Reilly & 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>
|
||||
— 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&D
|
||||
Publications Inc. ISSN 1075-2838</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><emphasis>Sys Admin — 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:
|
||||
-->
|
||||
|
|
@ -1 +0,0 @@
|
|||
<!DOCTYPE chapter PUBLIC "-//FreeBSD//DTD DocBook V3.1-Based Extension//EN">
|
|
@ -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
|
@ -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
|
||||
“appropriate” 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
|
@ -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
|
@ -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
|
||||
“merged VM/buffer cache” 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
|
||||
“diskless”, 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 “Unofficial 386BSD
|
||||
Patchkit” 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 “386BSD 0.5” or
|
||||
“386BSD Interim” 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 “cleanup”
|
||||
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
|
||||
“FreeBSD”, 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
|
||||
(“Net/2”) 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
|
||||
“encumbered” code and the property of Novell, who had in
|
||||
turn acquired it from AT&T some time previously. What Berkeley got
|
||||
in return was Novell's “blessing” 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 “Lite” 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
|
||||
(“-current”) 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
|
||||
“mission” 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 “committer” 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 “commitment” should also not be
|
||||
misconstrued as meaning “guaranteed support.” The
|
||||
“board of directors” 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
|
||||
“deltas” 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 “package” 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
|
@ -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 “kernel debug mode”. 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(&frame, FALSE);
|
||||
36:<prompt>(kgdb)</prompt> <userinput>frame frame->tf_ebp frame->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->t_line].l_open)(dev, tp));
|
||||
41:<prompt>(kgdb)</prompt> <userinput>list</userinput>
|
||||
42:398
|
||||
43:399 tp->t_state |= TS_CARR_ON;
|
||||
44:400 tp->t_cflag |= CLOCAL; /* cannot be a modem (:-) */
|
||||
45:401
|
||||
46:402 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
|
||||
47:403 return ((*linesw[tp->t_line].l_open)(dev, tp));
|
||||
48:404 #else
|
||||
49:405 return ((*linesw[tp->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->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->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 “because you said to!”, 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 <g>, 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
|
||||
“tp” 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->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></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:
|
||||
-->
|
||||
|
|
@ -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 “historic” and
|
||||
“new-style” 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 “config option” 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><arch></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>.<arch></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 <xxx.h></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:
|
||||
-->
|
||||
|
|
@ -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 -> 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:
|
||||
-->
|
||||
|
|
@ -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 (“Loadable Kernel Module”)
|
||||
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 > /dev/null 2>&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 “ports” 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 “shadow root”
|
||||
<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) => /usr/X11/lib/libXt.so.3.1.0
|
||||
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
|
||||
libc.so.4 (DLL Jump 4.5pl26) => /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 -> libXt.so.3.1.0
|
||||
/compat/linux/usr/X11/lib/libX11.so.3.1.0
|
||||
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
|
||||
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> 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 -> 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) -> 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 -> 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> — 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) => /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>) =>
|
||||
<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
|
||||
“branding”. 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 “Slackware” or “Yggdrasil”. 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 “by hand” 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 “disk” 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
|
||||
“disk<replaceable>XX</replaceable>” 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 $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 “machine ID”.</para>
|
||||
|
||||
<para>Once you have installed the linux compatibility runtime libraries
|
||||
and unpacked the mathematica you can obtain the “machine
|
||||
ID” 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 “machine ID” 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 “machine ID” 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><199906020108.SAA07001@usr09.primenet.com></literal>).</para>
|
||||
|
||||
<para>FreeBSD has an abstraction called an “execution class
|
||||
loader”. 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 “whatever the current shell
|
||||
is”.</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… 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 “Linux emulation”? 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—hence “the Linux emulator”.</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:
|
||||
-->
|
||||
|
|
@ -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
|
||||
“mailhost” 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
|
||||
“mailhost” , 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 — 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 “out of the box”[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 “mailhost”.</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 < /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 “shortcut” 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
|
||||
“address test mode”; 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 <ruleset> <address>
|
||||
<prompt>></prompt> <userinput>0 foo@interface-business.de</userinput>
|
||||
rewrite: ruleset 0 input: foo @ interface-business . de
|
||||
…
|
||||
rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo < @ 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 “boundary between
|
||||
local and public administration”, 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 <user@domain.net>... Local configuration error
|
||||
|
||||
How can I solve this problem?
|
||||
|
||||
You have asked mail to the domain (e.g., domain.net) to be
|
||||
forwarded to a specific host (in this case, relay.domain.net)
|
||||
by using an MX record, but the relay machine does not recognize
|
||||
itself as domain.net. Add domain.net to /etc/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 “tweaking” 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 ) &
|
||||
/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>
|
||||
> we provide the secondary mx for a customer. The customer connects to
|
||||
> our services several times a day automatically to get the mails to
|
||||
> his primary mx (We do not call his site when a mail for his domains
|
||||
> arrived). Our sendmail sends the mailqueue every 30 minutes. At the
|
||||
> moment he has to stay 30 minutes online to be sure that all mail is
|
||||
> gone to the primary mx.
|
||||
>
|
||||
> Is there a command that would initiate sendmail to send all the mails
|
||||
> 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:
|
||||
-->
|
||||
|
|
@ -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
|
@ -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">
|
||||
|
|
@ -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 <security-officer@FreeBSD.org>
|
||||
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 <imp@village.org>
|
||||
aka <imp@FreeBSD.org>
|
||||
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 <asami@cs.berkeley.edu>
|
||||
aka <asami@FreeBSD.org>
|
||||
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 <jmb@FreeBSD.org>
|
||||
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 <ache@FreeBSD.org>
|
||||
aka <ache@nagual.pp.ru>
|
||||
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 <jkh@FreeBSD.org>
|
||||
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 <phk@FreeBSD.org>
|
||||
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 <rich@FreeBSD.org>
|
||||
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 <jdp@polstra.com>
|
||||
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 <guido@gvr.win.tue.nl>
|
||||
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 <peter@FreeBSD.org>
|
||||
aka <peter@spinner.dialix.com>
|
||||
aka <peter@haywire.dialix.com>
|
||||
aka <peter@perth.dialix.oz.au>
|
||||
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 <joerg_wunsch@uriah.heep.sax.de>
|
||||
Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E
|
||||
Joerg Wunsch <joerg_wunsch@interface-business.de>
|
||||
Joerg Wunsch <j@uriah.heep.sax.de>
|
||||
Joerg Wunsch <j@interface-business.de>
|
||||
|
||||
-----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 <wosch@FreeBSD.org>
|
||||
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 <brian@awfulhak.org>
|
||||
Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21
|
||||
Brian Somers <brian@uk.FreeBSD.org>
|
||||
Brian Somers <brian@OpenBSD.org>
|
||||
Brian Somers <brian@FreeBSD.org>
|
||||
-----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:
|
||||
-->
|
||||
|
|
@ -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 “official” 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
|
||||
“official” 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. “Spelling
|
||||
fixes” are explicitly included here under the
|
||||
“cosmetic” 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 “works out”. 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 “official” 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<version>' \
|
||||
src/contrib/cpio GNU cpio_<version>
|
||||
|
||||
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 “micro” 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 >=
|
||||
3)</replaceable>.<replaceable>(highest
|
||||
available)</replaceable>.</para>
|
||||
|
||||
<note>
|
||||
<para><command>ld.so</command> will always use the highest
|
||||
“minor” 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
|
@ -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
|
@ -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 “Board of
|
||||
Directors”, 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 & 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 & 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:
|
||||
-->
|
||||
|
|
@ -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:
|
||||
-->
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue