"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,5 +0,0 @@
|
|||
# $Id: Makefile,v 1.1 1999-03-08 21:43:32 nik Exp $
|
||||
|
||||
SUBDIR = handbook
|
||||
|
||||
.include <bsd.subdir.mk>
|
|
@ -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:
|
||||
-->
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<!--
|
||||
References to other files that can be included within a DocBook
|
||||
BookInfo element.
|
||||
|
||||
Entity names take the form "bookinfo.<element>", where <element> is
|
||||
the name of the outermost element in the entity. Examples would
|
||||
be "bookinfo.legalnotice", and "bookinfo.preface".
|
||||
|
||||
$Id: bookinfo.ent,v 1.1 1999-05-05 20:13:19 nik Exp $
|
||||
-->
|
||||
|
||||
<!ENTITY bookinfo.legalnotice SYSTEM "legalnotice.sgml">
|
|
@ -1,44 +0,0 @@
|
|||
<!--
|
||||
Standard FreeBSD Documentation Project Legal Notice.
|
||||
|
||||
$Id: legalnotice.sgml,v 1.1 1999-05-05 20:12:11 nik Exp $
|
||||
-->
|
||||
|
||||
<legalnotice>
|
||||
<para>Redistribution and use in source (SGML DocBook) and 'compiled'
|
||||
forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Redistributions of source code (SGML DocBook) must retain the
|
||||
above copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must
|
||||
reproduce the above copyright notice, this list of conditions and
|
||||
the following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
<important>
|
||||
<para>THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION
|
||||
PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
|
||||
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGE.</para>
|
||||
</important>
|
||||
</legalnotice>
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
# $Id: Makefile,v 1.18 1999-04-27 18:33:23 nik Exp $
|
||||
|
||||
DOCS?= index.sgml
|
||||
SUBDIR= devel
|
||||
SUBDIR+= diskformat
|
||||
SUBDIR+= disklessx
|
||||
SUBDIR+= fonts
|
||||
SUBDIR+= mh
|
||||
SUBDIR+= multios
|
||||
SUBDIR+= newuser
|
||||
DOCSUBDIR= docproj-primer
|
||||
DOCSUBDIR+= ddwg
|
||||
DOCSUBDIR+= ppp
|
||||
SGMLOPTS+= -links -hdr ${.CURDIR}/doc.hdr -ftr ${.CURDIR}/doc.ftr
|
||||
|
||||
|
||||
.if defined $(NEW_BUILD)
|
||||
SUBDIR=
|
||||
.endif
|
||||
.if defined(DOCBOOK_ONLY) && !empty(DOCBOOK_ONLY)
|
||||
DOCSUBDIR=
|
||||
.endif
|
||||
|
||||
WEBBASE?= /data/
|
||||
|
||||
.include "../web.mk"
|
|
@ -1,4 +0,0 @@
|
|||
# $Id: Makefile.inc,v 1.4 1997-07-01 03:52:21 max Exp $
|
||||
|
||||
WEBBASE?= /data/tutorials
|
||||
SGMLOPTS+= -hdr ${.CURDIR}/../doc.hdr -ftr ${.CURDIR}/../doc.ftr
|
|
@ -1,6 +0,0 @@
|
|||
# $Id: Makefile,v 1.3 1997-07-01 05:38:11 max Exp $
|
||||
|
||||
DOC= ddwg
|
||||
SRCS= ddwg.sgml
|
||||
|
||||
.include <bsd.sgml.mk>
|
File diff suppressed because it is too large
Load diff
|
@ -1,7 +0,0 @@
|
|||
# $Id: Makefile,v 1.4 1997-07-01 05:38:11 max Exp $
|
||||
|
||||
DOCS= devel.docb
|
||||
INDEXLINK= devel.html
|
||||
|
||||
.include "../../web.mk"
|
||||
|
File diff suppressed because it is too large
Load diff
|
@ -1,7 +0,0 @@
|
|||
# $Id: Makefile,v 1.1 1997-09-13 04:24:23 jfieber Exp $
|
||||
|
||||
DOCS= diskformat.docb
|
||||
INDEXLINK= diskformat.html
|
||||
|
||||
.include "../../web.mk"
|
||||
|
|
@ -1,464 +0,0 @@
|
|||
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
||||
<!-- $Id: diskformat.docb,v 1.5 1998-10-14 03:25:31 dwhite Exp $ -->
|
||||
<book>
|
||||
|
||||
<bookinfo>
|
||||
<bookbiblio>
|
||||
<title>Formatting Media For Use With FreeBSD 2.2-RELEASE</title>
|
||||
<subtitle>A Tutorial</subtitle>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Doug</firstname>
|
||||
<surname>White</surname>
|
||||
<affiliation>
|
||||
<address><email>dwhite@resnet.uoregon.edu</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>March 1997</pubdate>
|
||||
<abstract><para>This document describes how to slice, partition, and
|
||||
format hard disk drives and similar media for use with FreeBSD. The
|
||||
examples given have been tested under FreeBSD 2.2-GAMMA and may work
|
||||
for other releases. </para>
|
||||
</abstract>
|
||||
</bookbiblio>
|
||||
</bookinfo>
|
||||
|
||||
<chapter>
|
||||
<title>Introduction & Definitions</title>
|
||||
|
||||
<sect1>
|
||||
<title>Overview</title>
|
||||
<para>Successfully adding disks to an existing system is the mark of an
|
||||
experienced system administrator. Slicing, partitioning, and adding
|
||||
disks requires a careful dance of proper command and name syntax. One
|
||||
slipped finger and an entire disk could disappear in seconds. This
|
||||
document is written in an attempt to simplify this process and avoid
|
||||
accidents. Thankfully, enhancements to existing tools (notably
|
||||
sysinstall) have greatly improved this process in recent releases of
|
||||
FreeBSD. </para>
|
||||
|
||||
<para>There are two possible modes of disk formatting:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para><firstterm>compatibility mode</firstterm>: Arranging a
|
||||
disk so that it has a slice table for use with other operating
|
||||
systems.</para> </listitem>
|
||||
|
||||
<listitem><para><firstterm>dangerously dedicated mode</firstterm>:
|
||||
Formatting a disk with no slice table. This makes the process of
|
||||
adding disks easier, however non-FreeBSD operating systems may not
|
||||
accept the disk. </para> </listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>For most cases, dedicated mode is the easiest to set up and use
|
||||
in existing systems, as a new disk is usually dedicated entirely to
|
||||
FreeBSD. However, compatibility mode insures optimum interoperability
|
||||
with future installations at a cost of increased complexity.</para>
|
||||
|
||||
<para>In addition to selecting the mode, two methods of slicing the
|
||||
disk are available. One is using the system installation tool
|
||||
<command>/stand/sysinstall</command>. 2.1.7-RELEASE and later
|
||||
versions of <command>sysinstall</command> contain code to ease setup
|
||||
of disks during normal system operation, mainly allowing access to the
|
||||
Label and Partition editors and a Write feature which will update just
|
||||
the selected disk and slice without affecting other disks. The other
|
||||
method is running the tools manually from a root command line. For
|
||||
dangerously dedicated mode, only three or four commands are involved
|
||||
while <command>sysinstall</command> requires some manipulation.</para>
|
||||
</sect1>
|
||||
<sect1>
|
||||
<title>Definitions</title>
|
||||
|
||||
<para>UNIX disk management over the centuries has invented many new
|
||||
definitions for old words. The following glossary covers the
|
||||
definitions used in this document and (hopefully) for FreeBSD in
|
||||
general. </para>
|
||||
|
||||
<!-- I'm tempted to use GLOSSARY here but will resort to a list for
|
||||
now. -->
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>compatibility mode: Arranging a disk so that it has a slice
|
||||
table for use with other operating systems. Oppose dangerously
|
||||
dedicated mode.</para></listitem>
|
||||
|
||||
<listitem><para>dangerously dedicated mode: Formatting a disk with no slice
|
||||
table. This makes the process of adding disks easier, however
|
||||
non-FreeBSD operating systems may not accept the disk. Oppose
|
||||
compatibility mode.</para></listitem>
|
||||
|
||||
<listitem><para>disk: A circular disc, covered with magnetic or similarly
|
||||
manipulable material, spun by a motor under a head. Data is stored on
|
||||
the disk by changing the pattern of magnetism on the disc, which can
|
||||
be later read. Hard disks, CD-ROMs, Magneto-optical,and Zip/Jaz
|
||||
removables are examples of disks.</para></listitem>
|
||||
|
||||
<listitem><para>slice: A division of a disk. Up to four slices are permitted on one
|
||||
disk in the PC standard. Slices are composed of contiguous sectors.
|
||||
Slices are recorded in a <quote>slice table</quote> used by the system BIOS to
|
||||
locate bootable partitions. The slice table is usually called the
|
||||
Partition Table in DOS parlance. Maintained by the fdisk utility.</para></listitem>
|
||||
|
||||
<listitem><para>partition: A division of a slice. Usually used in reference
|
||||
to divisions of the FreeBSD slice of a disk. Each filesystem and swap
|
||||
area on a disk resides in a partition. Maintained using the disklabel
|
||||
utility.</para></listitem>
|
||||
|
||||
<listitem><para>sector: Smallest subdivision of a disk. One sector usually
|
||||
represents 512 bytes of data.</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Warnings & Pitfalls</title>
|
||||
|
||||
<para>Building disks is not something to take lightly. It is quite possible
|
||||
to destroy the contents of other disks in your system if the proper
|
||||
precautions are not taken.</para>
|
||||
|
||||
<para><emphasis>Check your work carefully.</> It is very simple to destroy
|
||||
the incorrect disk when working with these commands. When
|
||||
in doubt consult the kernel boot output for the proper device.</para>
|
||||
|
||||
<para>Needless to say, we are not responsible for any damage to any data
|
||||
or hardware that you may experience. You work at your own risk!</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Zip, Jaz, and Other Removables</title>
|
||||
|
||||
<para>Removable disks can be formatted in the same way as normal hard
|
||||
disks. It is essential to have the disk drive connected to the system
|
||||
and a disk placed in the drive during startup, so the kernel can
|
||||
determine the drive's geometry. Check the <command>dmesg</command>
|
||||
output and make sure your device and the disk's size is listed. If
|
||||
the kernel reports
|
||||
<informalexample>
|
||||
<screen>
|
||||
Can't get the size
|
||||
</screen>
|
||||
</informalexample>
|
||||
then the disk was not in the drive. In this case, you will need to restart the
|
||||
machine before attempting to format disks.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
<chapter>
|
||||
<title>Formatting Disks in Dedicated Mode</title>
|
||||
|
||||
<sect1>
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>This section details how to make disks that are totally dedicated to
|
||||
FreeBSD. Remember, dedicated mode disks cannot be booted by the PC
|
||||
architecture.</para>
|
||||
|
||||
</sect1>
|
||||
<sect1>
|
||||
<title>Making Dedicated Mode Disks using Sysinstall</title>
|
||||
|
||||
<para><command>/stand/sysinstall</command>, the system installation
|
||||
utility, has been expanded in recent versions to make the process of
|
||||
dividing disks properly a less tiring affair. The fdisk and disklabel
|
||||
editors built into sysinstall are GUI tools that remove much of the
|
||||
confusion from slicing disks. For FreeBSD versions 2.1.7 and later,
|
||||
this is perhaps the simplest way to slice disks.</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem><para>Start sysinstall as root by typing
|
||||
<informalexample>
|
||||
<screen><userinput>/stand/sysinstall</userinput></screen>
|
||||
</informalexample>
|
||||
from the command prompt.</para></listitem>
|
||||
|
||||
<listitem><para>Select <command>Index</command>.</para></listitem>
|
||||
<listitem><para>Select <command>Partition</command>.</para></listitem>
|
||||
<listitem><para>Select the disk to edit with arrow keys and
|
||||
<keycap>SPACE</keycap>.</para>
|
||||
</listitem>
|
||||
<listitem><para>If you are using this entire disk for FreeBSD, select
|
||||
<command>A</command>.</para></listitem>
|
||||
<listitem><para>When asked:
|
||||
<informalexample>
|
||||
<screen>
|
||||
Do you want to do this with a true partition entry so as to remain
|
||||
cooperative with any future possible operating systems on the
|
||||
drive(s)?
|
||||
</screen>
|
||||
</informalexample>answer <command>No</command>.</para></listitem>
|
||||
<listitem><para>When asked if you still want to do this, answer
|
||||
<command>Yes</command>.</para></listitem>
|
||||
<listitem><para>Select <command>Write</command>.</para></listitem>
|
||||
<listitem><para>When warned about Writing on installed systems, answer
|
||||
<command>Yes</command>.</para></listitem>
|
||||
<listitem><para><command>Quit</command>the FDISK Editor and
|
||||
<keycap>ESCAPE</keycap> back to the Index menu.</para></listitem>
|
||||
<listitem><para>Select <command>Label</command> from the Index
|
||||
menu.</para></listitem>
|
||||
<listitem><para>Label as desired. For a single partition, enter
|
||||
<command>C</command> to Create a partition, accept the
|
||||
default size, partition type Filesystem, and a mountpoint (which isn't
|
||||
used).</para></listitem>
|
||||
<listitem><para>Enter <command>W</command> when done and confirm to
|
||||
continue. The filesystem will be newfs'd for you, unless you select
|
||||
otherwise (for news partitions you'll want to do this!). You'll get
|
||||
the error:
|
||||
<informalexample>
|
||||
<screen>Error mounting /mnt/dev/wd2s1e on /mnt/blah : No such file or directory </screen>
|
||||
</informalexample>
|
||||
Ignore.
|
||||
</para></listitem>
|
||||
<listitem><para>Exit out by repeatedly pressing <keycap>ESCAPE</keycap>.</para></listitem>
|
||||
</orderedlist>
|
||||
|
||||
</sect1>
|
||||
<sect1>
|
||||
<title>Making Dedicated Mode Disks Using the Command Line</title>
|
||||
|
||||
|
||||
<para>Execute the following commands, replacing wd2 with the disk
|
||||
name. Lines beginning with # are comments. </para>
|
||||
<informalexample>
|
||||
<screen>
|
||||
<userinput>
|
||||
dd if=/dev/zero of=/dev/rwd2 count=2
|
||||
disklabel /dev/rwd2 | disklabel -B -R -r wd2 /dev/stdin
|
||||
# We only want one partition, so using slice 'c' should be fine:
|
||||
newfs /dev/rwd2c
|
||||
</userinput>
|
||||
</screen>
|
||||
</informalexample>
|
||||
|
||||
<para> If you need to edit the disklabel to create multiple
|
||||
partitions (such as swap), use the following: </para>
|
||||
|
||||
<informalexample>
|
||||
<screen>
|
||||
<userinput>
|
||||
dd if=/dev/zero of=/dev/rwd2 count=2
|
||||
disklabel /dev/r$d > /tmp/label
|
||||
# Edit disklabel to add partitions:
|
||||
vi /tmp/label
|
||||
disklabel -B -R -r wd2 /tmp/label
|
||||
# newfs partitions appropriately
|
||||
</userinput>
|
||||
</screen>
|
||||
</informalexample>
|
||||
|
||||
<para>Your disk is now ready for use.</para>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Making Compatibility Mode Disks</title>
|
||||
|
||||
<sect1>
|
||||
<title>Introduction</title>
|
||||
<para>The command line is the easiest way to make dedicated disks, and
|
||||
the worst way to make compatibility disks. The command-line fdisk
|
||||
utility requires higher math skills and an in-depth understanding of
|
||||
the slice table, which is more than most people want to deal with.
|
||||
Use sysinstall for compatibility disks, as described below.</para>
|
||||
|
||||
</sect1>
|
||||
<sect1>
|
||||
|
||||
<title>Making Compatibility Mode Disks Using Sysinstall</title>
|
||||
|
||||
<orderedlist>
|
||||
<listitem><para>Start sysinstall as root by typing
|
||||
<informalexample>
|
||||
<screen><userinput>/stand/sysinstall</></screen>
|
||||
</informalexample>
|
||||
from the command prompt.</para></listitem>
|
||||
|
||||
<listitem><para>Select <command>Index</command>.</para> </listitem>
|
||||
<listitem><para>Select <command>Partition</command>.</para></listitem>
|
||||
<listitem><para>Select the disk to edit with arrow keys and
|
||||
<keycap>SPACE</keycap>.
|
||||
</para></listitem>
|
||||
<listitem><para>If you are using this entire disk for FreeBSD, select
|
||||
<command>A</command>.</para></listitem>
|
||||
|
||||
<listitem><para>When asked:
|
||||
<informalexample>
|
||||
<screen>
|
||||
Do you want to do this with a true partition entry so as to remain
|
||||
cooperative with any future possible operating systems on the
|
||||
drive(s)?
|
||||
</screen>
|
||||
</informalexample> answer <command>yes</command>.</para></listitem>
|
||||
<listitem><para>Select <command>Write</command>.</para></listitem>
|
||||
<listitem><para>When asked to install the boot manager, select None with
|
||||
<keycap>SPACE</keycap> then hit <keycap>ENTER</keycap> for OK.</para></listitem>
|
||||
<listitem><para><command>Quit</command> the FDISK Editor.</para></listitem>
|
||||
<listitem><para>You'll be asked about the boot manager, select
|
||||
<command>None</command>
|
||||
again. </para></listitem>
|
||||
<listitem><para>Select <command>Label</command> from the Index
|
||||
menu.</para></listitem>
|
||||
<listitem><para>Label as desired. For a single partition, accept the
|
||||
default size, type filesystem, and a mountpoint (which isn't
|
||||
used).</para></listitem>
|
||||
<listitem><para>The filesystem will be newfs'd for you, unless you select otherwise (for news partitions you'll want to do this!). You'll get the error:
|
||||
<informalexample>
|
||||
<screen>
|
||||
Error mounting /mnt/dev/wd2s1e on /mnt/blah : No such file or directory </screen>
|
||||
</informalexample>
|
||||
Ignore.
|
||||
</para></listitem>
|
||||
<listitem><para>Exit out by repeatedly pressing <keycap>ESCAPE</keycap>.</para></listitem>
|
||||
</orderedlist>
|
||||
|
||||
<para>Your new disk is now ready for use.</para>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Other Disk Operations</title>
|
||||
<sect1>
|
||||
<title>Adding Swap Space</title>
|
||||
|
||||
<para>As a system grows, it's need for swap space can also grow.
|
||||
Although adding swap space to existing disks is very difficult, a new
|
||||
disk can be partitioned with additional swap space. </para>
|
||||
|
||||
<para>To add swap space when adding a disk to a system:
|
||||
<orderedlist>
|
||||
<listitem><para>When partitioning the disk, edit the disklabel and
|
||||
allocate the amount of swap space to add in partition `b' and the
|
||||
remainder in another partition, such as `a' or `e'. The size is given
|
||||
in 512 byte blocks. </para></listitem>
|
||||
<listitem><para>When newfsing the drive, do NOT newfs the `c'
|
||||
partition. Instead, newfs the partition where the non-swap space
|
||||
lies.</para></listitem>
|
||||
<listitem><para>Add an entry to <filename>/etc/fstab</filename> as follows:
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
/dev/wd0b none swap sw 0 0
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
Change /dev/wd0b to the device of the newly added
|
||||
space.</para></listitem>
|
||||
<listitem><para>To make the new space immediately available, use the
|
||||
<command>swapon</command> command.
|
||||
<informalexample>
|
||||
<screen>
|
||||
<userinput>
|
||||
$ swapon /dev/sd0b
|
||||
</userinput>
|
||||
swapon: added /dev/sd0b as swap space
|
||||
</screen>
|
||||
</informalexample>
|
||||
</para></listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Copying the Contents of Disks</title>
|
||||
<!-- Should have specific tag -->
|
||||
<para>Submitted By: Renaud Waldura (<email>renaud@softway.com</email>) </para>
|
||||
|
||||
<para>To move file from your original base disk to the fresh new one,
|
||||
do:
|
||||
<informalexample>
|
||||
<screen>
|
||||
<userinput>
|
||||
mount /dev/wd2 /mnt
|
||||
pax -r -w -p e /usr/home /mnt
|
||||
umount /mnt
|
||||
rm -rf /usr/home/*
|
||||
mount /dev/wd2 /usr/home
|
||||
</userinput>
|
||||
</screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Creating Striped Disks using CCD</title>
|
||||
<para>Commands Submitted By: Stan Brown (<email>stanb@awod.com</email>) </para>
|
||||
|
||||
<para>
|
||||
The Concatenated Disk Driver, or CCD, allows you to treat several identical disks as a single disk.
|
||||
Striping can result in increased disk performance by distributing reads and
|
||||
writes across the disks. See the ccd(4) and ccdconfig(4) man pages or the
|
||||
<ulink URL="http://stampede.cs.berkeley.edu/ccd/">CCD Homepage</ulink> for further details.</para>
|
||||
|
||||
<para>To create a new CCD, execute the following commands. This describes
|
||||
how to add three disks together; simply add or remove devices as
|
||||
necessary. Remember that the disks to be striped must be <emphasis>identical.</></para>
|
||||
|
||||
<para>Before executing these commands, make sure you add the line
|
||||
<userinput>
|
||||
pseudo-device ccd 4
|
||||
</userinput>
|
||||
|
||||
to your kernel.</para>
|
||||
|
||||
<informalexample>
|
||||
<screen>
|
||||
<userinput>
|
||||
cd /dev ; sh MAKDEV ccd0
|
||||
|
||||
disklabel -r -w sd0 auto
|
||||
disklabel -r -w sd1 auto
|
||||
disklabel -r -w sd2 auto
|
||||
|
||||
disklabel -e sd0c # change type to 4.2BSD
|
||||
disklabel -e sd1c # change type to 4.2BSD
|
||||
disklabel -e sd2c # change type to 4.2BSD
|
||||
|
||||
ccdconfig ccd0 32 0 /dev/sd0c /dev/sd1c /dev/sd2c
|
||||
|
||||
newfs /dev/rccd0c
|
||||
</userinput>
|
||||
</screen>
|
||||
</informalexample>
|
||||
|
||||
<para>Now you can mount and use your CCD by referencing device /dev/ccd0c.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Credits</title>
|
||||
|
||||
|
||||
|
||||
<para>The author would like to thank the following individuals for
|
||||
their contributions to this project:
|
||||
<itemizedlist>
|
||||
<listitem><para>Darryl Okahata
|
||||
(<email>darrylo@hpnmhjw.sr.hp.com</email>) for his
|
||||
simple dedicated mode setup documentation which I have used repeatedly
|
||||
on freebsd-questions.</para></listitem>
|
||||
<listitem><para>Jordan Hubbard
|
||||
(<email>jkh@freebsd.org</email>) for making
|
||||
sysinstall useful for this type of task.</para></listitem>
|
||||
<listitem><para>John Fieber
|
||||
(<email>jfieber@indiana.edu</email>) for making
|
||||
information and examples of the DocBook DTD on which this document is
|
||||
based.</para></listitem>
|
||||
<listitem><para>Greg Lehey (<email>grog@freebsd.org</email>) for checking my
|
||||
work and pointing out inaccuracies, as well as miscellaneous support.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
|
||||
</book>
|
|
@ -1,5 +0,0 @@
|
|||
# $Id: Makefile,v 1.3 1998-08-24 23:43:17 wosch Exp $
|
||||
|
||||
DOCS= disklessx.docb
|
||||
|
||||
.include "../../web.mk"
|
|
@ -1,287 +0,0 @@
|
|||
<!-- $Id: disklessx.docb,v 1.1 1998-08-24 23:43:17 wosch Exp $ -->
|
||||
<!-- The FreeBSD Documentation Project -->
|
||||
|
||||
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
||||
<book>
|
||||
<bookinfo>
|
||||
<bookbiblio>
|
||||
|
||||
<title>Diskless X Server: a how to guide</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname> Jerry</firstname>
|
||||
<surname>Kendall</surname>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>jerry@kcis.com</email>
|
||||
</address>
|
||||
</affiliation>
|
||||
</author></authorgroup>
|
||||
|
||||
<pubdate>28-December-1996</pubdate>
|
||||
|
||||
<copyright>
|
||||
<year>1996</year>
|
||||
<holder>Jerry Kendall</holder>
|
||||
</copyright>
|
||||
|
||||
|
||||
<abstract><para>
|
||||
With the help of some 'friends' on the FreeBSD-hackers list, I have
|
||||
been able to create a diskless X terminal... The creation of the X terminal
|
||||
required first creating a diskless system with minimal utilities mounted
|
||||
via NFS. These same steps were used to create 2 separate diskless systems.
|
||||
The first is 'altair.kcis.com'. A diskless X terminal that I run on my
|
||||
old 386DX-40. It has a 340Meg hard disk but, I did not want to change it.
|
||||
So, it boots from 'antares.kcis.com' across a Ethernet. The second system
|
||||
is a 486DX2-66. I setup a diskless FreeBSD (complete) that uses no local
|
||||
disk. The server in that case is a Sun 670MP running
|
||||
SunOS 4.1.3. The same setup configuration was needed for both.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
NOTE: I am sure that there is stuff that needs to be added to this. Please send me any comments....
|
||||
</para>
|
||||
|
||||
</abstract>
|
||||
|
||||
|
||||
</bookbiblio>
|
||||
</bookinfo>
|
||||
|
||||
|
||||
<chapter><title>Creating the boot floppy (On the diskless system)</title>
|
||||
|
||||
<para>Since the network boot loaders will not work with some of
|
||||
the TSR's and such that MS-DOS uses, it is best to create
|
||||
a dedicated boot floppy OR, if you can, create an MS-DOS menu
|
||||
that will (via the config.sys/autoexec.bat files) ask what
|
||||
configuration to load when the system starts. The later is the
|
||||
method that I use and it works great. My MS-DOS (6.x) menu is below.</para>
|
||||
<informalexample><screen>
|
||||
---- config.sys ----
|
||||
[menu]
|
||||
menuitem=normal, normal
|
||||
menuitem=unix, unix
|
||||
[normal]
|
||||
....
|
||||
normal config.sys stuff
|
||||
...
|
||||
[unix]
|
||||
----
|
||||
|
||||
---- autoexec.bat ----
|
||||
@ECHO OFF
|
||||
goto %config%
|
||||
|
||||
:normal
|
||||
...
|
||||
normal autoexec.bat stuff
|
||||
...
|
||||
goto end
|
||||
|
||||
:unix
|
||||
cd \netboot
|
||||
nb8390.com
|
||||
|
||||
:end
|
||||
----
|
||||
</screen></informalexample>
|
||||
</chapter>
|
||||
|
||||
<chapter><title>Getting the network boot programs (On the server)</title>
|
||||
|
||||
<para>Compile the 'net-boot' programs that are located in
|
||||
/usr/src/sys/i386/boot/netboot. You should read the comments
|
||||
at the top of the makefile. Adjust as required. !!!! make a
|
||||
backup of the original in case it gets fobar'd !!! When the build
|
||||
is done, there should be 2 MS-DOS executables, 'nb8390.com' and
|
||||
'nb3c509.com'. One of these two programs will be what you need
|
||||
to run on the diskless server. It will load the kernel from the
|
||||
boot server. At this point, put both programs on the MS-DOS
|
||||
boot floppy created earlier.</para>
|
||||
</chapter>
|
||||
|
||||
<chapter><title>Determine which program to run (On the diskless system)</title>
|
||||
|
||||
<para>If you know the chipset that your Ethernet adapter uses, this is
|
||||
easy. If you have the NS8390 chipset, or a NS8390 based chipset,
|
||||
use NB8390.COM. If you have a 3Com 509 based chipset, use the
|
||||
NB3C509.COM boot program. If you are not sure which you have,
|
||||
try using one, if it says 'No adapter found', try the other.
|
||||
Beyond that, you are pretty much on your own.</para>
|
||||
</chapter>
|
||||
|
||||
<chapter><title>Booting across the network</title>
|
||||
|
||||
<para>Boot the diskless system with out any config.sys/autoexec.bat
|
||||
files. try running the boot program for your Ethernet adapter.</para>
|
||||
<informalexample><screen>
|
||||
My Ethernet adapter is running in WD8013 16bit mode so
|
||||
I run NB8390.COM
|
||||
|
||||
C:> cd \netboot
|
||||
C:> nb8390
|
||||
|
||||
Boot from Network (Y/N) ? Y
|
||||
|
||||
BOOTP/TFTP/NFS bootstrap loader ESC for menu
|
||||
|
||||
Searching for adapter..
|
||||
WD8013EBT base 0x0300, memory 0x000D8000, addr 00:40:01:43:26:66
|
||||
|
||||
Searching for server..</screen></informalexample>
|
||||
|
||||
<para>At this point, my diskless system is trying to find a machine to act
|
||||
as a boot server. Make note of the addr line above, you will need this
|
||||
number later. Reset the diskless system and modify your config.sys and
|
||||
autoexec.bat files to do these steps automatically for you. Perhaps in
|
||||
a menu. If you had to run 'nb3c509.com' instead of 'nb8390.com' the
|
||||
output is the same as above. If you got 'No adapter found' at the
|
||||
'Searching for adapter..' message, verify that you did indeed set the
|
||||
compile time defines in the makefile correctly.</para>
|
||||
|
||||
</chapter>
|
||||
<chapter><title>Allowing systems to boot across the network (On the
|
||||
server)</title>
|
||||
|
||||
<para>Make sure the /etc/inetd.conf file has entries for tftp and bootps.
|
||||
Mine are listed below:</para>
|
||||
<informalexample><screen>
|
||||
---- /etc/inetd.conf ----
|
||||
tftp dgram udp wait nobody /usr/libexec/tftpd tftpd
|
||||
#
|
||||
# Additions by who ever you are
|
||||
bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab
|
||||
----
|
||||
</screen></informalexample>
|
||||
<para>If you have to change the /etc/inetd.conf file, send a HUP signal to
|
||||
inetd. To do this, get the process ID of inetd with 'ps -ax | grep
|
||||
inetd | grep -v grep'. Once you have it, send it a HUP signal. Do this
|
||||
by 'kill -HUP <pid>'. This will force inetd to re-read its config file.</para>
|
||||
|
||||
<para>Did you remember to note the 'addr' line from the output of the boot
|
||||
loader on the diskless system???? Guess what, here is where you need it.</para>
|
||||
|
||||
<para>Add an entry to /etc/bootptab (maybe creating the file). It should be
|
||||
laid out identical to this:</para>
|
||||
|
||||
<informalexample><screen>
|
||||
altair:\
|
||||
:ht=ether:\
|
||||
:ha=004001432666:\
|
||||
:sm=255.255.255.0:\
|
||||
:hn:\
|
||||
:ds=199.246.76.1:\
|
||||
:ip=199.246.76.2:\
|
||||
:gw=199.246.76.1:\
|
||||
:vm=rfc1048:
|
||||
|
||||
The lines are as follows:
|
||||
'altair' the diskless systems name without the domain name.
|
||||
'ht=ether' the hardware type of 'ethernet'.
|
||||
'ha=004001432666' the hardware address (the number noted above).
|
||||
'sm=255.255.255.0' the subnet mask.
|
||||
'hn' tells server to send client's hostname to the client.
|
||||
'ds=199.246.76.1' tells the client who the domain server is.
|
||||
'ip=199.246.76.2' tells the client what it's IP address is.
|
||||
'gw=199.246.76.1' tells the client what the default gateway is.
|
||||
'vm=...' just leave it there...
|
||||
</screen></informalexample>
|
||||
<para>NOTE:
|
||||
****** Be sure to setup the IP addresses correctly, the addresses
|
||||
above are my own......</para>
|
||||
|
||||
<para>Create the directory '/tftpboot' on the server it will contain the
|
||||
configuration files for the diskless systems that the server will
|
||||
serve. These files will be named 'cfg.<ip>' where <ip> is the IP
|
||||
address of the diskless system. The config file for 'altair' is
|
||||
/tftpboot/cfg.199.246.76.2. The contents is:</para>
|
||||
|
||||
<informalexample><screen>
|
||||
---- /tftpboot/cfg.199.246.76.2 ----
|
||||
rootfs 199.246.76.1:/DiskLess/rootfs/altair
|
||||
hostname altair.kcis.com
|
||||
----
|
||||
</screen></informalexample>
|
||||
<para>The line 'hostname altair.kcis.com' simply tells the diskless
|
||||
system what its fully qualified domain name is.</para>
|
||||
|
||||
<para>The line 'rootfs 199.246.76.1:/DiskLess/rootfs/altair' tells the
|
||||
diskless system where its NFS mountable root filesystem is located.</para>
|
||||
|
||||
<para>NOTE:!!!!! The NFS mounted root filesystem will be mounted READ ONLY.</para>
|
||||
|
||||
<para>The hierarchy for the diskless system can be re-mounted allowing
|
||||
read-write operations if required.</para>
|
||||
|
||||
<para>I use my spare 386DX-40 as a dedicated X terminal...</para>
|
||||
|
||||
<para>The hierarchy for 'altair' is:</para>
|
||||
|
||||
<informalexample><screen>
|
||||
/
|
||||
/bin
|
||||
/etc
|
||||
/tmp
|
||||
/sbin
|
||||
/dev
|
||||
/dev/fd
|
||||
/usr
|
||||
/var
|
||||
/var/run
|
||||
</screen></informalexample>
|
||||
|
||||
<para>The actual list of files is:</para>
|
||||
|
||||
<informalexample><screen>
|
||||
-r-xr-xr-x 1 root wheel 779984 Dec 11 23:44 ./kernel
|
||||
-r-xr-xr-x 1 root bin 299008 Dec 12 00:22 ./bin/sh
|
||||
-rw-r--r-- 1 root wheel 499 Dec 15 15:54 ./etc/rc
|
||||
-rw-r--r-- 1 root wheel 1411 Dec 11 23:19 ./etc/ttys
|
||||
-rw-r--r-- 1 root wheel 157 Dec 15 15:42 ./etc/hosts
|
||||
-rw-r--r-- 1 root bin 1569 Dec 15 15:26 ./etc/XF86Config.altair
|
||||
-r-x------ 1 bin bin 151552 Jun 10 1995 ./sbin/init
|
||||
-r-xr-xr-x 1 bin bin 176128 Jun 10 1995 ./sbin/ifconfig
|
||||
-r-xr-xr-x 1 bin bin 110592 Jun 10 1995 ./sbin/mount_nfs
|
||||
-r-xr-xr-x 1 bin bin 135168 Jun 10 1995 ./sbin/reboot
|
||||
-r-xr-xr-x 1 root bin 73728 Dec 13 22:38 ./sbin/mount
|
||||
-r-xr-xr-x 1 root wheel 1992 Jun 10 1995 ./dev/MAKEDEV.local
|
||||
-r-xr-xr-x 1 root wheel 24419 Jun 10 1995 ./dev/MAKEDEV
|
||||
</screen></informalexample>
|
||||
<para>Don't forget to 'MAKEDEV all' in the 'dev' directory.</para>
|
||||
|
||||
<para>My /etc/rc for 'altair' is:</para>
|
||||
|
||||
<informalexample><screen>
|
||||
#!/bin/sh
|
||||
#
|
||||
PATH=/bin:/sbin
|
||||
export PATH
|
||||
#
|
||||
# configure the localhost
|
||||
/sbin/ifconfig lo0 127.0.0.1
|
||||
#
|
||||
# configure the ethernet card
|
||||
/sbin/ifconfig ed0 199.246.76.2 netmask 0xffffff00
|
||||
#
|
||||
# mount the root filesystem via NFS
|
||||
/sbin/mount antares:/DiskLess/rootfs/altair /
|
||||
#
|
||||
# mount the /usr filesystem via NFS
|
||||
/sbin/mount antares:/DiskLess/usr /usr
|
||||
#
|
||||
/usr/X11R6/bin/XF86_SVGA -query antares -xf86config /etc/XF86Config.altair > /dev/null 2>&1
|
||||
#
|
||||
# Reboot after X exits
|
||||
/sbin/reboot
|
||||
#
|
||||
# We blew up....
|
||||
exit 1
|
||||
</screen></informalexample>
|
||||
|
||||
<para>Any comments and ALL questions welcome....</para>
|
||||
|
||||
</chapter>
|
||||
</book>
|
|
@ -1,5 +0,0 @@
|
|||
<hr>
|
||||
<address>
|
||||
<a href="../../mailto.html">freebsd-questions@freebsd.org</a>
|
||||
</address>
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<IMG SRC="../../gifs/bar.gif" ALT="" WIDTH="565" HEIGHT="33" BORDER=0 usemap="#bar">
|
||||
<map name="bar">
|
||||
<area shape="rect" coords="1,1,111,31" href="../../index.html" ALT="">
|
||||
<area shape="rect" coords="112,11,196,31" href="../../ports/index.html" ALT="">
|
||||
<area shape="rect" coords="196,12,257,33" href="../../support.html" ALT="">
|
||||
<area shape="rect" coords="256,12,365,33" href="../../docs.html" ALT="">
|
||||
<area shape="rect" coords="366,13,424,32" href="../../commercial/commercial.html" ALT="">
|
||||
<area shape="rect" coords="425,16,475,32" href="../../search/search.html" ALT="">
|
||||
<area shape="rect" coords="477,16,516,33" href="../../search/index-site.html" ALT="">
|
||||
<area shape="rect" coords="516,15,562,33" href="../../index.html" ALT="">
|
||||
<area shape="rect" href="../../index.html" coords="0,0,564,32" ALT="">
|
||||
</map>
|
||||
|
||||
<br clear=all>
|
|
@ -1,41 +0,0 @@
|
|||
#
|
||||
# $Id: Makefile,v 1.3 1999-07-14 22:31:29 nik Exp $
|
||||
#
|
||||
# Build the FreeBSD Documentation Project Primer.
|
||||
#
|
||||
|
||||
MAINTAINER=nik@FreeBSD.ORG
|
||||
|
||||
DOC?= book
|
||||
|
||||
FORMATS?= html-split html
|
||||
|
||||
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= book.sgml
|
||||
SRCS+= overview/chapter.sgml
|
||||
SRCS+= psgml-mode/chapter.sgml
|
||||
SRCS+= see-also/chapter.sgml
|
||||
SRCS+= sgml-markup/chapter.sgml
|
||||
SRCS+= sgml-primer/chapter.sgml
|
||||
SRCS+= stylesheets/chapter.sgml
|
||||
SRCS+= the-faq/chapter.sgml
|
||||
SRCS+= the-handbook/chapter.sgml
|
||||
SRCS+= the-website/chapter.sgml
|
||||
SRCS+= tools/chapter.sgml
|
||||
SRCS+= translations/chapter.sgml
|
||||
SRCS+= writing-style/chapter.sgml
|
||||
|
||||
# Entities
|
||||
SRCS+= chapters.ent
|
||||
|
||||
DOC_PREFIX?= ../../..
|
||||
|
||||
.include "../../../share/mk/docproj.docbook.mk"
|
|
@ -1,281 +0,0 @@
|
|||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML, HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: book.sgml,v 1.5 1999-07-14 22:31:28 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 % chapters SYSTEM "chapters.ent"> %chapters;
|
||||
]>
|
||||
|
||||
<book>
|
||||
<bookinfo>
|
||||
<title>FreeBSD Documentation Project Primer for New Contributors</title>
|
||||
|
||||
<author>
|
||||
<firstname>Nik</firstname>
|
||||
<surname>Clayton</surname>
|
||||
<affiliation>
|
||||
<address><email>nik@FreeBSD.ORG</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
|
||||
<copyright>
|
||||
<year>1998</year>
|
||||
<year>1999</year>
|
||||
<holder role="mailto:nik@FreeBSD.ORG">Nik Clayton</holder>
|
||||
</copyright>
|
||||
|
||||
<pubdate role="rcs">$Date: 1999-07-14 22:31:28 $</pubdate>
|
||||
|
||||
<releaseinfo>$Id: book.sgml,v 1.5 1999-07-14 22:31:28 nik Exp $</releaseinfo>
|
||||
|
||||
<legalnotice>
|
||||
<para>Redistribution and use in source (SGML DocBook) and 'compiled'
|
||||
forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Redistributions of source code (SGML DocBook) must retain the
|
||||
above copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must
|
||||
reproduce the above copyright notice, this list of conditions and
|
||||
the following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
<important>
|
||||
<para>THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGE.</para>
|
||||
</important>
|
||||
</legalnotice>
|
||||
|
||||
<abstract>
|
||||
<para>Thank you for becoming a part of the FreeBSD Documentation
|
||||
Project. Your contribution is extremely valuable.</para>
|
||||
|
||||
<para>This primer covers everything you will need to know in order
|
||||
to start contributing to the FreeBSD Documentation Project, from
|
||||
the tools and software you will be using (both mandatory and
|
||||
recommended) to the philosophy behind the Documentation
|
||||
Project.</para>
|
||||
|
||||
<para>This document is a work in progress, and is not complete. Sections
|
||||
that are known to be incomplete are indicated with a
|
||||
<literal>*</literal> in their name.</para>
|
||||
</abstract>
|
||||
</bookinfo>
|
||||
|
||||
<preface>
|
||||
<title>Preface</title>
|
||||
|
||||
<sect1>
|
||||
<title>Shell Prompts</title>
|
||||
|
||||
<para>The following table shows the default system prompt and superuser
|
||||
prompt. The examples will use this prompt to indicate which user you
|
||||
should be running the example as.</para>
|
||||
|
||||
<informaltable frame="none">
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>User</entry>
|
||||
<entry>Prompt</entry>
|
||||
</row>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>Normal user</entry>
|
||||
<entry>&prompt.user;</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><username>root</username></entry>
|
||||
<entry>&prompt.root;</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Typographic Conventions</title>
|
||||
|
||||
<para>The following table describes the typographic conventions used in
|
||||
this book.</para>
|
||||
|
||||
<informaltable frame="none">
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Meaning</entry>
|
||||
<entry>Examples</entry>
|
||||
</row>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>The name of commands, files, and directories. On screen
|
||||
computer output.</entry>
|
||||
<entry><para>Edit your <filename>.login</filename>
|
||||
file.</para><para>Use <command>ls -a</command> to list all
|
||||
files.</para><para><screen>You have mail.</screen>
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>What you type, when contrasted with on-screen computer
|
||||
output.</entry>
|
||||
|
||||
<entry><screen>&prompt.user; <userinput>su</userinput>
|
||||
Password:</screen></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Manual page references.</entry>
|
||||
|
||||
<entry>Use <citerefentry>
|
||||
<refentrytitle>su</refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
</citerefentry> to change user names.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>User and group names</entry>
|
||||
|
||||
<entry>Only <username>root</username> can do this.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Emphasis</entry>
|
||||
|
||||
<entry>You <emphasis>must</emphasis> do this.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Command line variables; replace with the real name or
|
||||
variable.</entry>
|
||||
|
||||
<entry>To delete a file, type <command>rm <filename><replaceable>filename</replaceable></filename></command></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Environment variables</entry>
|
||||
|
||||
<entry><envar>$HOME</envar> is your home directory.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Notes, warnings, and examples</title>
|
||||
|
||||
<para>Within the text appear notes, warnings, and examples.</para>
|
||||
|
||||
<note>
|
||||
<para>Notes are represented like this, and contain information that
|
||||
you should take note of, as it may affect what you do.</para>
|
||||
</note>
|
||||
|
||||
<warning>
|
||||
<para>Warnings are represented like this, and contain information
|
||||
warning you about possible damage if you do not follow the
|
||||
instructions. This damage may be physical, to your hardware or to
|
||||
you, or it may be non-physical, such as the inadvertant deletion of
|
||||
important files.</para>
|
||||
</warning>
|
||||
|
||||
<example>
|
||||
<title>A sample example</title>
|
||||
|
||||
<para>Examples are represented like this, and typically contain
|
||||
examples you should walk through, or show you what the results of a
|
||||
particular action should be.</para>
|
||||
</example>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Acknowledgments</title>
|
||||
|
||||
<para>My thanks to Sue Blake, Patrick Durusau, Jon Hamilton, Peter
|
||||
Flynn, and Christopher Maden, who took the time to read early drafts
|
||||
of this document and offer many valuable comments and
|
||||
criticisms.</para>
|
||||
</sect1>
|
||||
</preface>
|
||||
|
||||
&chap.overview;
|
||||
&chap.tools;
|
||||
&chap.sgml-primer;
|
||||
&chap.sgml-markup;
|
||||
&chap.stylesheets;
|
||||
&chap.the-faq;
|
||||
&chap.the-handbook;
|
||||
&chap.the-website;
|
||||
&chap.translations;
|
||||
&chap.writing-style;
|
||||
&chap.psgml-mode;
|
||||
&chap.see-also;
|
||||
|
||||
</book>
|
||||
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-indent-data: t
|
||||
sgml-omittag: nil
|
||||
sgml-always-quote-attributes: t
|
||||
End:
|
||||
-->
|
|
@ -1 +0,0 @@
|
|||
<!DOCTYPE chapter PUBLIC "-//FreeBSD//DTD DocBook V3.1-Based Extension//EN">
|
|
@ -1,23 +0,0 @@
|
|||
<!--
|
||||
Creates entities for each chapter in the Documentation Project Primer.
|
||||
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.2 1999-07-14 22:31:29 nik Exp $
|
||||
-->
|
||||
|
||||
<!ENTITY chap.overview SYSTEM "overview/chapter.sgml">
|
||||
<!ENTITY chap.sgml-primer SYSTEM "sgml-primer/chapter.sgml">
|
||||
<!ENTITY chap.tools SYSTEM "tools/chapter.sgml">
|
||||
<!ENTITY chap.sgml-markup SYSTEM "sgml-markup/chapter.sgml">
|
||||
<!ENTITY chap.stylesheets SYSTEM "stylesheets/chapter.sgml">
|
||||
<!ENTITY chap.the-faq SYSTEM "the-faq/chapter.sgml">
|
||||
<!ENTITY chap.the-handbook SYSTEM "the-handbook/chapter.sgml">
|
||||
<!ENTITY chap.the-website SYSTEM "the-website/chapter.sgml">
|
||||
<!ENTITY chap.translations SYSTEM "translations/chapter.sgml">
|
||||
<!ENTITY chap.writing-style SYSTEM "writing-style/chapter.sgml">
|
||||
<!ENTITY chap.psgml-mode SYSTEM "psgml-mode/chapter.sgml">
|
||||
<!ENTITY chap.see-also SYSTEM "see-also/chapter.sgml">
|
|
@ -1,179 +0,0 @@
|
|||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.2 1999-07-14 19:25:40 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="overview">
|
||||
<title>Overview</title>
|
||||
|
||||
<para>Welcome to the FreeBSD Documentation Project. Good quality
|
||||
documentation is very important to the success of FreeBSD, and the
|
||||
FreeBSD Documentation Project (FDP) is how a lot of that documentation
|
||||
is produced. Your contributions are very valuable.</para>
|
||||
|
||||
<para>This document's main purpose is to clearly explain <emphasis>how
|
||||
the FDP is organised</emphasis>, <emphasis>how to write and submit
|
||||
documentation to the FDP</emphasis>, and <emphasis>how to
|
||||
effectively use the tools available to you when writing
|
||||
documentation</emphasis>.</para>
|
||||
|
||||
<para>Every one is welcome to join the FDP. There is no minimum
|
||||
membership requirements, no quota of documentation you need to
|
||||
produce per month. All you need to do is subscribe to the
|
||||
<email>freebsd-doc@freebsd.org</email> mailing list.</para>
|
||||
|
||||
<para>After you have finished reading this document you should:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Know which documentation is maintained by the FDP.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Be able to read and understand the SGML source code for the
|
||||
documentation maintained by the FDP.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Be able to make changes to the documentation.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Be able to submit your changes back for review and eventual
|
||||
inclusion in the FreeBSD documentation.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<sect1>
|
||||
<title>The FreeBSD Documentation Set</title>
|
||||
|
||||
<para>The FDP is responsible for four categories of FreeBSD
|
||||
documentation.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>Manual pages</term>
|
||||
|
||||
<listitem>
|
||||
<para>The English language system manual pages are not written by
|
||||
the FDP, as they are part of the base system. However, the FDP can
|
||||
(and has) re-worded parts of existing manual pages to make them
|
||||
clearer, or to correct inaccuracies.</para>
|
||||
|
||||
<para>The translation teams are responsible for translating the
|
||||
system manual pages in to different languages. These translations
|
||||
are kept within the FDP.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>FAQ</term>
|
||||
|
||||
<listitem>
|
||||
<para>The FAQ aims to address (in short question and answer format)
|
||||
questions that are asked, or should be asked, on the various
|
||||
mailing lists and newsgroups devoted to FreeBSD. The format does
|
||||
not permit long and comprehensive answers.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Handbook</term>
|
||||
|
||||
<listitem>
|
||||
<para>The Handbook aims to be the comprehensive on-line resource and
|
||||
reference for FreeBSD users.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Web site</term>
|
||||
|
||||
<listitem>
|
||||
<para>This is the main FreeBSD presence on the World Wide Web,
|
||||
visible at <ulink
|
||||
url="http://www.freebsd.org/">http://www.freebsd.org/</ulink>
|
||||
and many mirrors around the world. The web site is many people's
|
||||
first exposure to FreeBSD.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>These four groups of documentation are all available in the
|
||||
FreeBSD CVS tree. This means that the logs and changes to these
|
||||
files are visible to anyone, and anyone can use a program such as
|
||||
<application>CVSup</application> or
|
||||
<application>CTM</application> to keep their own local copies of
|
||||
this documentation.</para>
|
||||
|
||||
<para>In addition, many people have written tutorials or other web
|
||||
sites relating to FreeBSD. Some of these are stored in the CVS
|
||||
repository as well (where the author has agreed to this). In
|
||||
other cases the author has decided to keep their documentation
|
||||
separate from the main FreeBSD repository. The FDP endeavours to
|
||||
provide links to as much of this documentation as
|
||||
possible.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Before you start</title>
|
||||
|
||||
<para>This document assumes that you already know:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>How to maintain an up-to-date local copy of the FreeBSD
|
||||
documentation. Either by maintaining a local copy of the
|
||||
FreeBSD CVS repository (using <application>CVS</application>
|
||||
and either <application>CVSup</application> or
|
||||
<application>CTM</application>) or by using
|
||||
<application>CVSup</application> to download just a
|
||||
<emphasis>checked-out</emphasis> copy.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>How to download and install new software using either the
|
||||
FreeBSD Ports system or &man.pkg.add.1;.</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: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
||||
|
|
@ -1,150 +0,0 @@
|
|||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.2 1999-07-14 19:17:50 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="psgml-mode">
|
||||
<title>Using <literal>sgml-mode</literal> with
|
||||
<application>Emacs</application></title>
|
||||
|
||||
<para>Recent versions of Emacs or Xemacs (available from the ports
|
||||
collection) contain a very useful package called PSGML. Automatically
|
||||
invoked when a file with <filename>.sgml</filename> extension is loaded,
|
||||
or by typing <command>M-x sgml-mode</command>, it is a major mode for
|
||||
dealing with SGML files, elements and attributes.</para>
|
||||
|
||||
<para>An understanding of some of the commands provided by this mode can
|
||||
make working with SGML documents such as the Handbook much easier.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><command>C-c C-e</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Runs <literal>sgml-insert-element</literal>. You will be
|
||||
prompted for the name of the element to insert at the current point.
|
||||
You can use the TAB key to complete the element. Elements that are
|
||||
not valid at the current point will be disallowed.</para>
|
||||
|
||||
<para>The start and end tags for the element will be inserted. If the
|
||||
element contains other, mandatory, elements then these will be
|
||||
inserted as well.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>C-c =</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Runs <literal>sgml-change-element-name</literal>. Place the
|
||||
point within an element and run this command. You will be prompted
|
||||
for the name of the element to change to. Both the start and end
|
||||
tags of the current element will be changed to the new
|
||||
element.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>C-c C-r</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Runs <literal>sgml-tag-region</literal>. Select some text (move
|
||||
to start of text, C-space, move to end of text, C-space) and then
|
||||
run this command. You will be prompted for the element to use. This
|
||||
element will then be inserted immediately before and after your
|
||||
marked region.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>C-c -</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Runs <literal>sgml-untag-element</literal>. Place the point
|
||||
within the start or end tag of an element you want to remove, and
|
||||
run this command. The element's start and end tags will be
|
||||
removed.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>C-c C-q</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Runs <literal>sgml-fill-element</literal>. Will recursively fill
|
||||
(i.e., reformat) content from the current element in. The filling
|
||||
<emphasis>will</emphasis> affect content in which whitespace is
|
||||
significant, such as within <sgmltag>programlisting</sgmltag>
|
||||
elements, so run this command with care.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>C-c C-a</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Runs <literal>sgml-edit-attributes</literal>. Opens a second
|
||||
buffer containing a list of all the attributes for the closest
|
||||
enclosing element, and their current values. Use TAB to navigate
|
||||
between attributes, <command>C-k</command> to remove an existing
|
||||
value and replace it with a new one, <command>C-c</command> to close
|
||||
this buffer and return to the main document.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>C-c C-v</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Runs <literal>sgml-validate</literal>. Prompts you to save the
|
||||
current document (if necessary) and then runs an SGML validator. The
|
||||
output from the validator is captured into a new buffer, and you can
|
||||
then navigate from one troublespot to the next, fixing markup errors
|
||||
as you go.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>Doubtless there are other useful functions of this mode, but those are
|
||||
the ones I use most often.</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: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
||||
|
|
@ -1,121 +0,0 @@
|
|||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.2 1999-07-14 19:27:14 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="see-also">
|
||||
<title>See Also</title>
|
||||
|
||||
<para>This document is deliberately not an exhaustive discussion of SGML,
|
||||
the DTDs listed, and the FreeBSD Documentation Project. For more
|
||||
information about these, you are encouraged to see the following web
|
||||
sites.</para>
|
||||
|
||||
<sect1>
|
||||
<title>The FreeBSD Documentation Project</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><ulink url="http://www.freebsd.org/docproj/">The FreeBSD
|
||||
Documentation Project web pages</ulink></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><ulink url="http://www.freebsd.org/handbook/">The FreeBSD Handbook</ulink></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>SGML</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><ulink url="http://www.oasis-open.org/cover/">The SGML/XML web
|
||||
page</ulink>, a comprehensive SGML resource</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><ulink
|
||||
url='http://etext.virginia.edu/bin/tei-tocs?div=DIV1&id=SG">http://etext.virginia.edu/bin/tei-tocs?div=DIV1&id=SG'>Gentle introduction to SGML</ulink></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>HTML</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><ulink url="http://www.w3.org/">The World Wide Web
|
||||
organisation</ulink></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><ulink url="http://www.w3.org/TR/REC-html40/">The HTML 4.0
|
||||
specification</ulink></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>DocBook</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><ulink url="http://www.oreilly.com/davenport/">The Davenport
|
||||
Group</ulink>, maintainers of the DocBook DTD</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>The Linux Documentation Project</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><ulink url="http://metalab.unc.edu/LDP/">The Linux Documentation
|
||||
Project web pages</ulink></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: ("../book.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,70 +0,0 @@
|
|||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.2 1999-07-14 19:22:45 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="stylesheets">
|
||||
<title>* Stylesheets</title>
|
||||
|
||||
<para>SGML says nothing about how a document should be displayed to the
|
||||
user, or rendered on paper. To do that, various languages have been
|
||||
developed to describe stylesheets, including DynaText, Panorama, SPICE,
|
||||
JSSS, FOSI, CSS, and DSSSL.</para>
|
||||
|
||||
<para>For DocBook, we are using stylesheets written in DSSSL. For HTML we
|
||||
are using CSS.</para>
|
||||
|
||||
<sect1>
|
||||
<title>* DSSSL</title>
|
||||
|
||||
<para>The Documentation Project uses a slightly customised version of
|
||||
Norm Walsh's modular DocBook stylesheets.</para>
|
||||
|
||||
<para>These can be found in
|
||||
<filename>textproc/dsssl-docbook-modular</filename>.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>* CSS</title>
|
||||
|
||||
<para></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: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
|
@ -1,49 +0,0 @@
|
|||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.2 1999-07-14 19:20:30 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="the-faq">
|
||||
<title>* The FAQ</title>
|
||||
|
||||
<para></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: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
||||
|
|
@ -1,282 +0,0 @@
|
|||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.5 1999-07-30 20:51:00 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="the-handbook">
|
||||
<title>* The Handbook</title>
|
||||
|
||||
<sect1>
|
||||
<title>Logical structure</title>
|
||||
|
||||
<para>The Handbook is written to comply with the FreeBSD DocBook extended
|
||||
DTD.</para>
|
||||
|
||||
<para>The Handbook is organised as a DocBook <sgmltag>book</sgmltag>. It
|
||||
is then divided into <sgmltag>part</sgmltag>s, each of which may contain
|
||||
several <sgmltag>chapter</sgmltag>s. <sgmltag>chapter</sgmltag>s are
|
||||
further subdivided into sections (<sgmltag>sect1</sgmltag>) and
|
||||
subsections (<sgmltag>sect2</sgmltag>, <sgmltag>sect3</sgmltag>) and so
|
||||
on.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Physical organisation</title>
|
||||
|
||||
<para>The Handbook (and its translations) are in the
|
||||
<filename>doc/<replaceable>language</replaceable>/handbook</filename>
|
||||
subdirectory of the main CVS
|
||||
repository. <replaceable>language</replaceable> corresponds to the ISO
|
||||
language code for that translation, <literal>en</literal> for English,
|
||||
<literal>ja</literal> for Japanese, and so on.</para>
|
||||
|
||||
<para>There are a number of files and directories within the
|
||||
<filename>handbook</filename> directory.</para>
|
||||
|
||||
<note>
|
||||
<para>The Handbook's organisation may change over time, and this
|
||||
document may lag in detailing the organisational changes. If you have
|
||||
any questions about how the Handbook is organised, please contact the
|
||||
FreeBSD Documentation Project, <email>doc@FreeBSD.ORG</email>.</para>
|
||||
</note>
|
||||
|
||||
<sect2>
|
||||
<title><filename>Makefile</filename></title>
|
||||
|
||||
<para>The <filename>Makefile</filename> defines the rules that are used
|
||||
to convert the Handbook from its source form (DocBook) to a number of
|
||||
other target formats (including HTML, PostScript, and plain
|
||||
text).</para>
|
||||
|
||||
<para>A more detailed description of the <filename>Makefile</filename>
|
||||
is in <xref linkend="the-handbook-converting">.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title><filename>handbook.sgml</filename></title>
|
||||
|
||||
<para>This is the top level document in the Handbook. It contains the
|
||||
Handbook's <link linkend="sgml-primer-doctype-declaration">DOCTYPE
|
||||
declaration</link>, as well as the elements that describe the
|
||||
Handbook's structure.</para>
|
||||
|
||||
<para><filename>handbook.sgml</filename> uses <link
|
||||
linkend="sgml-primer-parameter-entities">parameter entities</link>
|
||||
to load in the files with the <filename>.ent</filename> extension.
|
||||
These files (described later) then define <link
|
||||
linkend="sgml-primer-general-entities">general entities</link> that
|
||||
are used throughout the rest of the Handbook.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title><filename><replaceable>directory</replaceable>/chapter.sgml</filename></title>
|
||||
|
||||
<para>Each chapter in the Handbook is stored in a file called
|
||||
<filename>chapter.sgml</filename> in a separate directory from the
|
||||
other chapters. Each directory is named after the value of the
|
||||
<literal>id</literal> attribute on the <sgmltag>chapter</sgmltag>
|
||||
element.</para>
|
||||
|
||||
<para>For example, if one of the chapter files contains:</para>
|
||||
|
||||
<programlisting><![ CDATA [
|
||||
<chapter id="kernelconfiguration">
|
||||
...
|
||||
</chapter>]]></programlisting>
|
||||
|
||||
<para>then it will be called <filename>chapter.sgml</filename> in the
|
||||
<filename>kernelconfiguration</filename> directory. In general, the
|
||||
entire contents of the chapter will be held in this file.</para>
|
||||
|
||||
<para>When the HTML version of the Handbook is produced, this will yield
|
||||
<filename>kernelconfiguration.html</filename>. This is because of the
|
||||
<literal>id</literal> value, and is not related to the name of the
|
||||
directory.</para>
|
||||
|
||||
<para>In earlier versions of the Handbook the files were stored in the
|
||||
same directory as <filename>handbook.sgml</filename>, and named after
|
||||
the value of the <literal>id</literal> attribute on the file's
|
||||
<sgmltag>chapter</sgmltag> element. Moving them in to separate
|
||||
directories prepares for future plans for the Handbook. Specifically,
|
||||
it will soon be possible to include images in each chapter. It
|
||||
makes more sense for each image to be stored in a directory with the
|
||||
text for the chapter than to try and keep the text for all the
|
||||
chapters, and all the images, in one large directory. Namespace
|
||||
collisions would be inevitable, and it is easier to work with several
|
||||
directories with a few files in them than it is to work with one
|
||||
directory that has many files in it.</para>
|
||||
|
||||
<para>A brief look will show that there are many directories with
|
||||
individual <filename>chapter.sgml</filename> files, including
|
||||
<filename>basics/chapter.sgml</filename>,
|
||||
<filename>introduction/chapter.sgml</filename>, and
|
||||
<filename>printing/chapter.sgml</filename>.</para>
|
||||
|
||||
<important>
|
||||
<para>Chapters and/or directories should not be named in a fashion
|
||||
that reflects their ordering within the Handbook. This ordering
|
||||
might change as the content within the Handbook is reorganised; this
|
||||
sort of reorganistion should not (generally) include the need to
|
||||
rename files (unless entire chapters are being promoted or demoted
|
||||
within the hierarchy).</para>
|
||||
</important>
|
||||
|
||||
<para>Each <filename>chapter.sgml</filename> file will not be a complete
|
||||
SGML document. In particular, they will not have their own DOCTYPE
|
||||
line at the start of the file.</para>
|
||||
|
||||
<para>This is unfortunate for two reasons;</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>It makes it impossible to treat these as generic SGML files
|
||||
and simply convert them to HTML, RTF, PS, and other formats in the
|
||||
same way the main Handbook is generated. This
|
||||
<emphasis>would</emphasis> force you to rebuild the Handbook every
|
||||
time you want to see the effect a change as had on just one
|
||||
chapter.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Emacs' <literal>sgml-mode</literal> can not use it to
|
||||
determine the DTD to use, losing useful benefits of
|
||||
<literal>sgml-mode</literal> (element completion, automatic
|
||||
validation, and so on).</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Style guide</title>
|
||||
|
||||
<para>To keep the source for the Handbook consistent when many different
|
||||
people are editing it, please follow these style conventions.</para>
|
||||
|
||||
<sect2>
|
||||
<title>Letter case</title>
|
||||
|
||||
<para>Tags are entered in lower case, <literal><para></literal>,
|
||||
<emphasis>not</emphasis> <literal><PARA></literal>.</para>
|
||||
|
||||
<para>Text that appears in SGML contexts is generally written in upper
|
||||
case, <literal><!ENTITY…></literal>, and
|
||||
<literal><!DOCTYPE…></literal>, <emphasis>not</emphasis>
|
||||
<literal><!entity…></literal> and
|
||||
<literal><!doctype…></literal>.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Indentation</title>
|
||||
|
||||
<para>Each file starts with indentation set at column 0,
|
||||
<emphasis>regardless</emphasis> of the indentation level of the file
|
||||
which might contain this one.</para>
|
||||
|
||||
<para>Every start tag increases the indentation level by 2 spaces, and
|
||||
every end tag decreases the indentation level by 2 spaces. Content
|
||||
within elements should be indented by two spaces if the content runs
|
||||
over more than one line.</para>
|
||||
|
||||
<para>For example, the source for this section looks something
|
||||
like;</para>
|
||||
|
||||
<programlisting>
|
||||
<![ CDATA [+--- This is column 0
|
||||
V
|
||||
<chapter>
|
||||
<title>...</title>
|
||||
|
||||
<sect1>
|
||||
<title>...</title>
|
||||
|
||||
<sect2>
|
||||
<title>Indentation</title>
|
||||
|
||||
<para>Each file starts with indentation set at column 0,
|
||||
<emphasis>regardless</emphasis> of the indentation level of the file
|
||||
which might contain this one.</para>
|
||||
|
||||
<para>Every start tag increases the indentation level by 2 spaces, and
|
||||
every end tag decreases the indentation level by 2 spaces. Content
|
||||
within elements should be indented by two spaces if the content runs
|
||||
over more than one line.</para>
|
||||
|
||||
...
|
||||
</sect2>
|
||||
</sect1>
|
||||
</chapter>]]></programlisting>
|
||||
|
||||
<para>If you use <application>Emacs</application> or
|
||||
<application>Xemacs</application> to edit the files then
|
||||
<literal>sgml-mode</literal> should be loaded automatically, and the
|
||||
Emacs local variables at the bottom of each file should enforce these
|
||||
styles.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>White space changes</title>
|
||||
|
||||
<para>When committing changes, <emphasis>do not commit changes to the
|
||||
content at the same time as changes to the
|
||||
formatting</emphasis>.</para>
|
||||
|
||||
<para>This is so that the teams that convert the Handbook to other
|
||||
languages can quickly see what content has actually changed in your
|
||||
commit, without having to decide whether a line has changed because of
|
||||
the content, or just because it has been refilled.</para>
|
||||
|
||||
<para>For example, if you have added two sentances to a paragraph, such
|
||||
that the line lengths on the paragraph now go over 80 columns, first
|
||||
commit your change with the too-long line lengths. Then fix the line
|
||||
wrapping, and commit this second change. In the commit message for
|
||||
the second change, be sure to indicate that this is a whitespace-only
|
||||
change, and that the translation team can ignore it.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="the-handbook-converting">
|
||||
<title>Converting the Handbook to other formats</title>
|
||||
|
||||
<para></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: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.2 1999-07-14 19:22:46 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="the-website">
|
||||
<title>* The Website</title>
|
||||
|
||||
<para></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: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
||||
|
|
@ -1,284 +0,0 @@
|
|||
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML, HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.4 1999-07-14 19:19:24 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="tools">
|
||||
<title>Tools</title>
|
||||
|
||||
<para>The FDP uses a number of different software tools to help
|
||||
manage the FreeBSD documentation, convert it to different output
|
||||
formats, and so on. You will need to use these tools yourself if
|
||||
you are to work with the FreeBSD documentation.</para>
|
||||
|
||||
<para>All these tools are available as FreeBSD Ports and Packages,
|
||||
greatly simplifying the work you have to do to install
|
||||
them.</para>
|
||||
|
||||
<para>You will need to install these tools before you work through
|
||||
any of the examples in later chapters. The actual usage of these
|
||||
tools is covered in these later chapters.</para>
|
||||
|
||||
<important>
|
||||
<title>Use <filename>textproc/docproj</filename> if possible</title>
|
||||
|
||||
<para>You can save yourself a lot of time if you install the
|
||||
<filename>textproc/docproj</filename> port. This is a
|
||||
<emphasis>meta-port</emphasis> which does not contain any software
|
||||
itself. Instead, it depends on various other ports being installed
|
||||
correctly. Installing this port <emphasis>should</emphasis>
|
||||
automatically download and install all of the packages listed in this
|
||||
chapter that you need that are missing from your system.</para>
|
||||
|
||||
<para>One of the packages that you might need is the JadeTeX macro set.
|
||||
In turn, this macro set requires that TeX is installed. TeX is a large
|
||||
package, and you only need it if you want to produce Postscript or PDF
|
||||
output.</para>
|
||||
|
||||
<para>To save yourself time and space you must specify whether or not you
|
||||
want JadeTeX (and therefore TeX) installed when you install this port.
|
||||
Either do;
|
||||
|
||||
<screen>&prompt.root; <userinput>make JADETEX=yes install</userinput></screen>
|
||||
|
||||
or
|
||||
|
||||
<screen>&prompt.root; <userinput>make JADETEX=no install</userinput></screen>
|
||||
|
||||
as necessary.</para>
|
||||
</important>
|
||||
|
||||
<sect1>
|
||||
<title>Mandatory tools</title>
|
||||
|
||||
<sect2>
|
||||
<title>Software</title>
|
||||
|
||||
<para>These programs are required before you can usefully work with
|
||||
the FreeBSD documentation. They are all included in
|
||||
<filename>textproc/docproj</filename>.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><application>SP</application>
|
||||
(<filename>textproc/sp</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>A suite of applications, including a validating SGML parser,
|
||||
and an SGML normaliser.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><application>Jade</application>
|
||||
(<filename>textproc/jade</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>A DSSSL implementation. Used for converting marked up
|
||||
documents to other formats, including HTML and TeX.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><application>Tidy</application>
|
||||
(<filename>www/tidy</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>An HTML 'pretty printer', used to reformat some of the
|
||||
automatically generated HTML so that it is easier to
|
||||
follow.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><application>Lynx</application>
|
||||
(<filename>www/lynx-current</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>A text-mode WWW browser, &man.lynx.1; can also convert
|
||||
HTML files to plain text.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>DTDs and Entities</title>
|
||||
|
||||
<para>These are the DTDs and entity sets used by the FDP. They need to
|
||||
be installed before you can work with any of the documentation.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>HTML DTD (<filename>textproc/html</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>HTML is the markup language of choice for the World Wide
|
||||
Web, and is used throughout the FreeBSD web site.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>LinuxDoc DTD (<filename>textproc/linuxdoc</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>Some FreeBSD documentation is marked up in LinuxDoc. The
|
||||
FDP is actively migrating from LinuxDoc to DocBook.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>DocBook DTD (<filename>textproc/docbook</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>DocBook is designed for marking up technical documentation,
|
||||
and the FDP is migrating from LinuxDoc to DocBook. At the time
|
||||
of writing, this document, and the FreeBSD Handbook are marked
|
||||
up in DocBook.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>ISO 8879 entities
|
||||
(<filename>textproc/iso8879</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>19 of the ISO 8879:1986 character entity sets used by many
|
||||
DTDs. Includes named mathematical symbols, additional
|
||||
characters in the 'latin' character set (accents, diacriticals,
|
||||
and so on), and greek symbols.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Stylesheets</title>
|
||||
|
||||
<para>The stylesheets are used when converting and formatting the
|
||||
documentation for display on screen, printing, and so on.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>Modular DocBook Stylesheets
|
||||
(<filename>textproc/dsssl-docbook-modular</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>The Modular DocBook Stylesheets are used when converting
|
||||
documentation marked up in DocBook to other formats, such as
|
||||
HTML, or RTF.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Optional tools</title>
|
||||
|
||||
<para>You do not need to have any of the following installed. However,
|
||||
you may find it easier to work with the documentation if you do, and
|
||||
they may give you more flexibility in the output formats that can be
|
||||
generated.</para>
|
||||
|
||||
<sect2>
|
||||
<title>Software</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><application>JadeTeX</application> and
|
||||
<application>teTeX</application>
|
||||
(<filename>print/jadetex</filename> and
|
||||
<filename>print/teTeX-beta</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para><application>Jade</application> and
|
||||
<application>teTeX</application> are used to convert DocBook
|
||||
documents to DVI, Postscript, and PDF formats. The
|
||||
<application>JadeTeX</application> macros are needed in order to
|
||||
do this.</para>
|
||||
|
||||
<para>If you do not intend to convert your documentation to one of
|
||||
these formats (i.e., HTML, plain text, and RTF are sufficient)
|
||||
then you do not need to install
|
||||
<application>JadeTeX</application> and
|
||||
<application>teTeX</application>. This can be a significant
|
||||
space and time saver, as <application>teTeX</application> is
|
||||
over 30MB in size.</para>
|
||||
|
||||
<important>
|
||||
<para>If you decide to install
|
||||
<application>JadeTeX</application> and
|
||||
<application>teTeX</application> then you will need to
|
||||
configure <application>teTeX</application> after
|
||||
<application>JadeTeX</application> has been installed.
|
||||
<filename>print/jadetex/pkg/MESSAGE</filename> contains
|
||||
detailed instructions explaining what you need to do.</para>
|
||||
</important>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><application>Emacs</application> or
|
||||
<application>xemacs</application>
|
||||
(<filename>editors/emacs</filename> or
|
||||
<filename>editors/xemacs</filename>)</term>
|
||||
|
||||
<listitem>
|
||||
<para>Both these editors include a special mode for editing
|
||||
documents marked up according to an SGML DTD. This mode
|
||||
includes commands to reduce the amount of typing you need, and
|
||||
help reduce the possibility of errors.</para>
|
||||
|
||||
<para>You do not need to use them, any text editor can be used to
|
||||
edit marked up documents. You may find they make you
|
||||
efficient.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>If anyone has recommendations for other software that is useful
|
||||
when manipulating SGML documents, please let Nik Clayton
|
||||
(<email>nik@freebsd.org</email>) know, so they can be added to this
|
||||
list.</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: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
|
@ -1,474 +0,0 @@
|
|||
<!-- Copyright (c) 1999 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.1 1999-07-14 22:30:26 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="translations">
|
||||
<title>Translations</title>
|
||||
|
||||
<para>This is the FAQ for people translating the FreeBSD documentation
|
||||
(FAQ, Handbook, tutorials, man pages, and others) to different
|
||||
languages.</para>
|
||||
|
||||
<para>It is <emphasis>very</emphasis> heavily based on the translation FAQ
|
||||
from the FreeBSD German Documentation Project, originally written by Frank
|
||||
Grnder <email>elwood@mc5sys.in-berlin.de</email> and translated back to
|
||||
English by Bernd Warken <email>bwarken@mayn.de</email>.</para>
|
||||
|
||||
<para>The FAQ maintainer is Nik Clayton
|
||||
<email>nik@FreeBSD.org</email>.</para>
|
||||
|
||||
<qandaset>
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>Why a FAQ?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>More and more people are approaching the freebsd-doc mailing
|
||||
list and volunteering to translate FreeBSD documentation to other
|
||||
languages. This FAQ aims to answer their questions so they can start
|
||||
translating documentation as quickly as possible.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>What do <phrase>i18n</phrase> and <phrase>l10n</phrase>
|
||||
mean?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para><phrase>i18n</phrase> means
|
||||
<phrase>internationalisation</phrase> and <phrase>l10n</phrase>
|
||||
means <phrase>localisation</phrase>. They are just a convenient
|
||||
shorthand.</para>
|
||||
|
||||
<para><phrase>i18n</phrase> can be read as “i” followed by
|
||||
18 letters, followed by “n”. Similarly,
|
||||
<phrase>l10n</phrase> is “l” followed by 10 letters,
|
||||
followed by “n”.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>Is there a mailing list for translators?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>Yes, <email>freebsd-translate@ngo.org.uk</email>. Subscribe by
|
||||
sending a message to
|
||||
<email>freebsd-translate-request@ngo.org.uk</email> with the word
|
||||
<literal>subscribe</literal> in the body of the message.</para>
|
||||
|
||||
<para>You will receive a reply asking you to confirm your subscription
|
||||
(in exactly the same manner as the the FreeBSD lists at <hostid
|
||||
role="domainname">FreeBSD.org</hostid>).</para>
|
||||
|
||||
<para>The primary language of the mailing list is English. However,
|
||||
posts in other languages will be accepted. The mailing list is not
|
||||
moderated, but you need to be a member of the list before you can
|
||||
post to it.</para>
|
||||
|
||||
<para>The mailing list is archived, but they are not currently
|
||||
searchable. Sending the message <literal>help</literal> to
|
||||
<email>majordomo@ngo.org.uk</email> will send back instructions on
|
||||
how to access the archive.</para>
|
||||
|
||||
<para>It is expected that the mailing list will transfer to <hostid
|
||||
role="domainname">FreeBSD.org</hostid> and therefore become
|
||||
<emphasis>official</emphasis> in the near future.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>Are more translators needed?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>Yes. The more people work on translation the faster it gets
|
||||
done, and the faster changes to the English documentation are
|
||||
mirrored in the translated documents.</para>
|
||||
|
||||
<para>You do not have to be a professional translator to be able to
|
||||
help.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>What languages do I need to know?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>Ideally, you will have a good knowledge of written English, and
|
||||
obviously you will need to be fluent in the language you are
|
||||
translating to.</para>
|
||||
|
||||
<para>English is not strictly necessary. For example, you could do a
|
||||
Hungarian translation of the FAQ from the Spanish
|
||||
translation.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>What software do I need to know?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>It is strongly recommended that you maintain a local copy of the
|
||||
FreeBSD CVS repository (at least the documentation part) either
|
||||
using <application>CTM</application> or
|
||||
<application>CVSup</application>. The "Staying current with FreeBSD"
|
||||
chapter in the Handbook explains how to use these
|
||||
applications.</para>
|
||||
|
||||
<para>You should be comfortable using <application>CVS</application>.
|
||||
This will allow you to see what has changed between different
|
||||
versions of the files that make up the documentation.</para>
|
||||
|
||||
<para>[XXX To Do -- write a tutorial that shows how to use CVSup to
|
||||
get just the documentation, check it out, and see what's changed
|
||||
between two arbitrary revisions]</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>How do I find out who else might be translating to the same
|
||||
language?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>The <ulink
|
||||
url="http://www.freebsd.org/docproj/translations.html">Documentation
|
||||
Project translations page</ulink> lists the translation efforts
|
||||
that are currently known about. If someone else is already working
|
||||
on translating documentation to your language, please don't
|
||||
duplicate their efforts. Instead, contact them to see how you can
|
||||
help.</para>
|
||||
|
||||
<para>If no one is listed on that page as translating for your
|
||||
language then send a message to
|
||||
<email>freebsd-doc@freebsd.org</email> in case someone else is
|
||||
thinking of doing a translation, but hasn't announced it yet.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>No one else is translating to my language. What do I do?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>Congratulations, you have just started the “FreeBSD
|
||||
<replaceable>your-language-here</replaceable> Documentation
|
||||
Translation Project”. Welcome aboard.</para>
|
||||
|
||||
<para>First, decide whether or not you've got the time to spare. Since
|
||||
you are the only person working on your language at the moment it is
|
||||
going to be your responsibility to publicise your work and
|
||||
coordinate any volunteers that might want to help you.</para>
|
||||
|
||||
<para>Write an e-mail to the Documentation Project mailing list,
|
||||
announcing that you are going to translate the documentation, so the
|
||||
Documentation Project translations page can be maintained.</para>
|
||||
|
||||
<para>You should subscribe to the
|
||||
<email>freebsd-translate@ngo.org.uk</email> mailing list (as
|
||||
described earlier).</para>
|
||||
|
||||
<para>If there is already someone in your country providing FreeBSD
|
||||
mirroring services you should contact them and ask if they can
|
||||
provide some webspace for your project, and possibly an e-mail
|
||||
address or mailing list services.</para>
|
||||
|
||||
<para>Then pick a document and start translating. It is best to start
|
||||
with something fairly small—either the FAQ, or one of the
|
||||
tutorials.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>I've translated some documentation, where do I send it?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>That depends. If you are already working with a translation team
|
||||
(such as the Japanese team, or the German team) then they will have
|
||||
their own procedures for handling submitted documentation, and these
|
||||
will be outlined on their web pages.</para>
|
||||
|
||||
<para>If you are the only person working on a particular language (or
|
||||
you are responsible for a translation project and want to submit
|
||||
your changes back to the FreeBSD project) then you should send your
|
||||
translation to the FreeBSD project (see the next question).</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>I'm the only person working on translating to this language, how
|
||||
do I submit my translation?</para>
|
||||
|
||||
<para>or</para>
|
||||
|
||||
<para>We're a translation team, and want to submit documentation that
|
||||
our members have translated for us?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>First, make sure your translation is organised properly. This
|
||||
means that it should drop in to the existing documentation tree and
|
||||
build straight away.</para>
|
||||
|
||||
<para>Currently, the FreeBSD documentation is stored in a top level
|
||||
directory called <filename>doc/</filename>. Directories below this
|
||||
are named according to the language code they are written in, as
|
||||
defined in ISO639 (<filename>/usr/share/misc/iso639</filename> on a
|
||||
version of FreeBSD newer than 20th January 1999).</para>
|
||||
|
||||
<para>If your language can be encoded in different ways (for example,
|
||||
Chinese) then there should be directories below this, one for each
|
||||
encoding format you have provided.</para>
|
||||
|
||||
<para>Finally, you should have directories for each document.</para>
|
||||
|
||||
<para>For example, a hypothetical Swedish translation might look
|
||||
like</para>
|
||||
|
||||
<programlisting> doc/
|
||||
sv/
|
||||
Makefile
|
||||
FAQ/
|
||||
Makefile
|
||||
*.sgml</programlisting>
|
||||
|
||||
<para><literal>sv</literal> is the ISO639 code for Swedish. Note the
|
||||
two Makefiles, which will be used to build the documentation. There
|
||||
is no separate language code for Swedish, so there is no
|
||||
intermittent directory between the "sv" and "FAQ"
|
||||
directories<footnote>
|
||||
<para>This directory structure is going to change radically quite
|
||||
soon. Please see the on-going discussions on the
|
||||
<email>doc@FreeBSD.org</email> mailing list for more
|
||||
information.</para>
|
||||
</footnote>.</para>
|
||||
|
||||
<para>Use &man.tar.1; and &man.gzip.1; to compress up your
|
||||
documentation, and send it to the project.</para>
|
||||
|
||||
<screen>&prompt.user; <userinput>cd doc</userinput>
|
||||
&prompt.user; <userinput>tar cf swedish-docs.tar sv</userinput>
|
||||
&prompt.user; <userinput>gzip -9 swedish-docs.tar</userinput></screen>
|
||||
|
||||
<para>Put <filename>swedish-docs.tar.gz</filename> somewhere. If you
|
||||
do not have access to your own webspace (perhaps your ISP does not
|
||||
let you have any) then you can e-mail Nik Clayton
|
||||
<email>nik@FreeBSD.org</email>, and arrange to e-mail the files
|
||||
when it is convenient.</para>
|
||||
|
||||
<para>Either way, you should use &man.send-pr.1; to submit a report
|
||||
indicating that you have submitted the documentation. It would be
|
||||
very helpful if you could get other people to look over your
|
||||
translation and double check it first, since it is unlikely that the
|
||||
person committing it will be fluent in the language.</para>
|
||||
|
||||
<para>Someone (probably the Documentation Project Manager, currently
|
||||
Nik Clayton <email>nik@FreeBSD.org</email>) will then take your
|
||||
translation and confirm that it builds. In particular, the
|
||||
following things will be looked at:</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Do all your files use RCS strings (such as "ID").</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Does <command>make all</command> in the
|
||||
<filename>sv</filename> directory work correctly.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Does <command>make install</command> work correctly.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
<para>If there are any problems then whoever is looking at the
|
||||
submission will get back to you to try and work them out.</para>
|
||||
|
||||
<para>If there are no problems then your translation will be committed
|
||||
as soon as possible.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>Can I include language or country specific text in my
|
||||
translation?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>We would prefer that you did not.</para>
|
||||
|
||||
<para>For example, suppose that you are translating the Handbook to
|
||||
Korean, and want to include a section about retailers in Korea in
|
||||
your Handbook.</para>
|
||||
|
||||
<para>There's no real reason why that information should not be in the
|
||||
English (or German, or Spanish, or Japanese, or …) versions
|
||||
as well. It is feasible that an English speaker in Korea might try
|
||||
and pick up a copy of FreeBSD whilst over there. It also helps
|
||||
increase FreeBSD's perceived presence around the globe, which is not
|
||||
a bad thing.</para>
|
||||
|
||||
<para>If you have country specific information, please submit it as a
|
||||
change to the English Handbook (using &man.send-pr.1;) and then
|
||||
translate the change back to your language in the translated
|
||||
Handbook.</para>
|
||||
|
||||
<para>Thanks.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>How should language specific characters be included?</para>
|
||||
|
||||
<para>Non-ASCII characters in the documentation should be included
|
||||
using SGML entities.</para>
|
||||
|
||||
<para>Briefly, these look like an ampersand (&), the name of the
|
||||
entity, and a semi-colon (;).</para>
|
||||
|
||||
<para>The entity names are defined in ISO8879, which is in the ports
|
||||
tree as <filename>textproc/iso8879</filename>.</para>
|
||||
|
||||
<para>A few examples include</para>
|
||||
|
||||
<segmentedlist>
|
||||
<seglistitem>
|
||||
<seg>&eacute;</seg>
|
||||
<seg>é</seg>
|
||||
<seg>Small “e” with an acute accent</seg>
|
||||
</seglistitem>
|
||||
|
||||
<seglistitem>
|
||||
<seg>&Eacute;</seg>
|
||||
<seg>É</seg>
|
||||
<seg>Large “E” with an acute accent</seg>
|
||||
</seglistitem>
|
||||
|
||||
<seglistitem>
|
||||
<seg>&uuml;</seg>
|
||||
<seg>ü</seg>
|
||||
<seg>Small “u” with an umlaut</seg>
|
||||
</seglistitem>
|
||||
</segmentedlist>
|
||||
|
||||
<para>After you have installed the iso8879 port, the files in
|
||||
<filename>/usr/local/share/sgml/iso8879</filename> contain the
|
||||
complete list.</para>
|
||||
</question>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>Addressing the reader</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>In the English documents, the reader is addressed as
|
||||
“you”, there is no formal/informal distinction as there
|
||||
is in some languages.</para>
|
||||
|
||||
<para>If you are translating to a language which does distinguish, use
|
||||
whichever form is typically used in other technical documentation in
|
||||
your language. If in doubt, use a mildly polite form.</para>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
|
||||
<qandaentry>
|
||||
<question>
|
||||
<para>Do I need to include any additional information in my
|
||||
translations?</para>
|
||||
</question>
|
||||
|
||||
<answer>
|
||||
<para>Yes.</para>
|
||||
|
||||
<para>The header of the English version of each document will look
|
||||
something like this;</para>
|
||||
|
||||
<programlisting><![ CDATA [<!--
|
||||
The FreeBSD Documentation Project
|
||||
|
||||
$Id: chapter.sgml,v 1.11 1999/06/20 21:18:57 billf Exp $
|
||||
-->]]></programlisting>
|
||||
|
||||
<para>The exact boilerplate may change, but it will always include an
|
||||
Id line and the phrase <literal>The FreeBSD Documentation
|
||||
Project</literal>.</para>
|
||||
|
||||
<para>Your translated documents should include their own Id line, and change the
|
||||
<literal>FreeBSD Documentation Project</literal> line to
|
||||
<literal>The FreeBSD <replaceable>language</replaceable>
|
||||
Documentation Project</literal>.</para>
|
||||
|
||||
<para>In addition, you should add a third line which indicates which
|
||||
revision of the English text this is based on.</para>
|
||||
|
||||
<para>So, the Spanish version of this file might start</para>
|
||||
|
||||
<programlisting><![ CDATA [<!--
|
||||
The FreeBSD Spanish Documentation Project
|
||||
|
||||
$Id: chapter.sgml,v 1.3 1999/06/24 19:12:32 jesusr Exp $
|
||||
Original revision: 1.11
|
||||
-->]]></programlisting>
|
||||
</answer>
|
||||
</qandaentry>
|
||||
</qandaset>
|
||||
</chapter>
|
||||
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-declaration: "../chapter.decl"
|
||||
sgml-indent-data: t
|
||||
sgml-omittag: nil
|
||||
sgml-always-quote-attributes: t
|
||||
sgml-parent-document: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
|
@ -1,143 +0,0 @@
|
|||
<!-- Copyright (c) 1998 Nik Clayton, All rights reserved.
|
||||
|
||||
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in compiled form (transformed to other DTDs,
|
||||
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||
the above copyright notice, this list of conditions and the
|
||||
following disclaimer in the documentation and/or other materials
|
||||
provided with the distribution.
|
||||
|
||||
THIS DOCUMENTATION IS PROVIDED BY NIK CLAYTON "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
$Id: chapter.sgml,v 1.3 1999-07-30 21:09:07 nik Exp $
|
||||
-->
|
||||
|
||||
<chapter id="writing-style">
|
||||
<title>Writing style</title>
|
||||
|
||||
<para>In order to promote consistency between the myriad authors of the
|
||||
FreeBSD documentation, some guidelines have been drawn up for authors to
|
||||
follow.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>Do not use contractions</term>
|
||||
|
||||
<listitem>
|
||||
<para>Do not use contractions. Always spell the phrase out in full.
|
||||
“Don't use contractions” would be wrong.</para>
|
||||
|
||||
<para>Avoiding contractions makes for a more formal tone, is more
|
||||
precise, and slightly easier for translators.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Use the serial comma</term>
|
||||
|
||||
<listitem>
|
||||
<para>In a list of items within a paragraph, seperate each item from
|
||||
the others with a comma. Seperate the last item from the others with
|
||||
a comma and the word “and”.</para>
|
||||
|
||||
<para>For example, look at the following quote;</para>
|
||||
|
||||
<blockquote>
|
||||
<para>This is a list of one, two and three items.</para>
|
||||
</blockquote>
|
||||
|
||||
<para>Is this a list of three items, “one”,
|
||||
“two”, and “three”, or a list of two items,
|
||||
“one” and “two and three”?</para>
|
||||
|
||||
<para>It is better to be explicit and include a serial comma;</para>
|
||||
|
||||
<blockquote>
|
||||
<para>This is a list of one, two, and three items.</para>
|
||||
</blockquote>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Avoid redundant phrases</term>
|
||||
|
||||
<listitem>
|
||||
<para>Try not to use redundant phrases. In particular, “the
|
||||
command”, “the file”, and “man
|
||||
command” are probably redundant.</para>
|
||||
|
||||
<para>These two examples show this for commands. The second example
|
||||
is preferred.</para>
|
||||
|
||||
<informalexample>
|
||||
<para>Use the command <command>cvsup</command> to update your
|
||||
sources</para>
|
||||
</informalexample>
|
||||
|
||||
<informalexample>
|
||||
<para>Use <command>cvsup</command> to update your sources</para>
|
||||
</informalexample>
|
||||
|
||||
<para>These two examples show this for filenames. The second example
|
||||
is preferred.</para>
|
||||
|
||||
<informalexample>
|
||||
<para>… in the filename
|
||||
<filename>/etc/rc.local</filename>…</para>
|
||||
</informalexample>
|
||||
|
||||
<informalexample>
|
||||
<para>… in
|
||||
<filename>/etc/rc.local</filename>…</para>
|
||||
</informalexample>
|
||||
|
||||
<para>These two examples show this for manual references. The second
|
||||
example is preferred (the second example uses
|
||||
<sgmltag>citerefentry</sgmltag>).</para>
|
||||
|
||||
<informalexample>
|
||||
<para>See <command>man csh</command> for more
|
||||
information.</para>
|
||||
</informalexample>
|
||||
|
||||
<informalexample>
|
||||
<para>See &man.csh.1;</para>
|
||||
</informalexample>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>For more information about writing style, see <ulink
|
||||
url="http://www.columbia.edu/acis/bartleby/strunk/">Elements of
|
||||
Style</ulink>, by William Strunk.</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: ("../book.sgml" "part" "chapter")
|
||||
End:
|
||||
-->
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
# $Id: Makefile,v 1.4 1997-07-01 05:38:13 max Exp $
|
||||
|
||||
DOCS= fonts.docb
|
||||
INDEXLINK= fonts.html
|
||||
|
||||
.include "../../web.mk"
|
|
@ -1,951 +0,0 @@
|
|||
<!-- $Id: fonts.docb,v 1.3 1999-08-06 17:35:18 nik Exp $ -->
|
||||
<!-- The FreeBSD Documentation Project -->
|
||||
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
||||
|
||||
<!-- Recently, I wanted to figure out how to use some additional fonts that
|
||||
I had accumulated. I finally figured out *how to do it* from the various
|
||||
man pages and documentation. Since it might be of use to other users,
|
||||
and I didn't see any reference to this topic in the FAQ or handbook, I
|
||||
thought I'd try my hand at a simple cookbook tutorial addressing the
|
||||
use of fonts. I have included my unanswered questions at the end of
|
||||
the document.
|
||||
|
||||
Anyway, here's what I put together. This is my present understanding of
|
||||
fonts and how to use them with FreeBSD. I am sure that there are errors or
|
||||
misunderstandings, but it contains enough valid information to allow the
|
||||
use of additional fonts with Ghostscript, X11 and Groff. This is my first
|
||||
attempt to write anything along the lines of a tutorial/FAQ, so I am sure
|
||||
it is pretty raw. There are probably better ways to do some of this stuff,
|
||||
and I would welcome being corrected.
|
||||
-->
|
||||
|
||||
<book>
|
||||
|
||||
<bookinfo>
|
||||
<bookbiblio>
|
||||
<title>Fonts and FreeBSD</title>
|
||||
<subtitle>A Tutorial</subtitle>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Dave</firstname>
|
||||
<surname>Bodenstab</surname>
|
||||
<affiliation>
|
||||
<address><email>imdave@synet.net</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>Wed Aug 7, 1996</pubdate>
|
||||
|
||||
<abstract><para>This document contains a description of the various
|
||||
font files that may be used with FreeBSD and the syscons driver, X11,
|
||||
Ghostscript and Groff. Cookbook examples are provided for switching
|
||||
the syscons display to 80x60 mode, and for using type 1 fonts with
|
||||
the above application programs.</para></abstract>
|
||||
|
||||
</bookbiblio>
|
||||
</bookinfo>
|
||||
|
||||
<chapter>
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>There are many sources of fonts available, and one might ask
|
||||
how they might be used with FreeBSD. The answer can be found by
|
||||
carefully searching the documentation for the component that one
|
||||
would like to use. This is very time consuming, so this tutorial is
|
||||
an attempt to provide a shortcut for others who might be
|
||||
interested.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Basic terminology</title>
|
||||
|
||||
<para>There are many different font formats and associated font file
|
||||
suffixes. A few that will be addressed here are:
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><filename>.pfa</>, <filename>.pfb</></term>
|
||||
|
||||
<listitem><para>Postscript type 1 fonts. The <filename>.pfa</filename> is the
|
||||
<emphasis>A</emphasis>scii form and <filename>.pfb</filename> the
|
||||
<emphasis>B</emphasis>inary form.</para></listitem>
|
||||
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><filename>.afm</></term>
|
||||
|
||||
<listitem><para>The font metrics associated with a type 1
|
||||
font.</para></listitem>
|
||||
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><filename>.pfm</></term>
|
||||
|
||||
<listitem><para>The printer font metrics associated with a type 1
|
||||
font.</para></listitem>
|
||||
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><filename>.ttf</></term>
|
||||
|
||||
<listitem><para>A TrueType font</para></listitem>
|
||||
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><filename>.fot</></term>
|
||||
|
||||
<listitem><para>An indirect reference to a TrueType font (not an
|
||||
actual font)</para></listitem>
|
||||
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><filename>.fon</>, <filename>.fnt</></term>
|
||||
|
||||
<listitem><para>Bitmapped screen fonts</para></listitem>
|
||||
|
||||
</varlistentry>
|
||||
</variablelist></para>
|
||||
|
||||
<para>The <filename>.fot</filename> file is used by Windows as sort
|
||||
of a symbolic link to the actual TrueType font
|
||||
(<filename>.ttf</filename>) file. The <filename>.fon</filename> font
|
||||
files are also used by Windows. I know of no way to use this font
|
||||
format with FreeBSD.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>What font formats can I use?</title>
|
||||
|
||||
<para>Which font file format is useful depends on the application
|
||||
being used. FreeBSD by itself uses no fonts. Application programs
|
||||
and/or drivers may make use of the font files. Here is a small cross
|
||||
reference of application/driver to the font type suffixes:</para>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry><term>Driver</term>
|
||||
<listitem>
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry><term>syscons</term>
|
||||
<listitem>
|
||||
<para><filename>.fnt</></para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Application</term>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry><term>Ghostscript</term>
|
||||
<listitem>
|
||||
<para><filename>.pfa</filename>, <filename>.pfb</filename>, <filename>.ttf</filename></para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>X11</term>
|
||||
|
||||
<listitem>
|
||||
<para><filename>.pfa</filename>, <filename>.pfb</filename></para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Groff</term>
|
||||
|
||||
<listitem>
|
||||
<para><filename>.pfa</filename>, <filename>.afm</filename></para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Povray</term>
|
||||
|
||||
<listitem>
|
||||
<para><filename>.ttf</filename></para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>The <filename>.fnt</filename> suffix is used quite frequently.
|
||||
I suspect that whenever someone wanted to create a specialized font
|
||||
file for their application, more often than not they chose this
|
||||
suffix. Therefore, it is likely that files with this suffix are not
|
||||
all the same format; specifically, the <filename>.fnt</filename>
|
||||
files used by syscons under FreeBSD may not be the same format as a
|
||||
<filename>.fnt</filename> file one encounters in the MSDOS/Windows
|
||||
environment. I have not made any attempt at using other
|
||||
<filename>.fnt</filename> files other than those provided with
|
||||
FreeBSD.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Setting a virtual console to 80x60 line mode</title>
|
||||
|
||||
<para>First, a 8x8 font must be loaded.
|
||||
<filename>/etc/sysconfig</filename> should contain the lines:
|
||||
<informalexample>
|
||||
<programlisting># Choose font 8x8 from /usr/share/syscons/fonts/* (or NO for default)
|
||||
font8x8=/usr/share/syscons/fonts/cp437-8x8.fnt</programlisting>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>The command to actually switch the mode is
|
||||
<citerefentry><refentrytitle>vidcontrol</><manvolnum>1</></>:
|
||||
<informalexample>
|
||||
<screen>bash$ <userinput>vidcontrol VGA_80x60</userinput></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>Various screen orientated programs, such as
|
||||
<citerefentry><refentrytitle>vi</><manvolnum>1</></>, must be able to
|
||||
determine the current screen dimensions. These can be set with
|
||||
<citerefentry><refentrytitle>stty</><manvolnum>1</></>:
|
||||
<informalexample>
|
||||
<screen>bash$ <userinput>stty crt rows 60 columns 80</userinput></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>To make this more seamless, one can embed these commands in the
|
||||
startup scripts so it takes place when the system boots. One way to
|
||||
do this is:
|
||||
<orderedlist>
|
||||
|
||||
<listitem>
|
||||
<para>Modify <filename>/etc/sysconfig</filename> as above</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Add to <filename>/etc/rc.local</filename>:
|
||||
<informalexample>
|
||||
<programlisting>for tty in /dev/ttyv?
|
||||
do
|
||||
vidcontrol VGA_80x60 <$tty >/dev/null 2>&1
|
||||
done</programlisting>
|
||||
</informalexample></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Add to <filename>/etc/profile</filename>:
|
||||
<informalexample>
|
||||
<programlisting>TTYNAME=`basename \`tty\``
|
||||
if expr "$TTYNAME" : 'ttyv' >/dev/null
|
||||
then
|
||||
stty crt rows 60 columns 80
|
||||
fi</programlisting>
|
||||
</informalexample>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
</orderedlist>
|
||||
</para>
|
||||
|
||||
<para>References:
|
||||
<citerefentry><refentrytitle>stty</><manvolnum>1</></>,
|
||||
<citerefentry><refentrytitle>vidcontrol</><manvolnum>1</></>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Using type 1 fonts with X11</title>
|
||||
|
||||
<para>X11 can use either the <filename>.pfa</filename> or the
|
||||
<filename>.pfb</filename> format fonts. The X11 fonts are located in
|
||||
various subdirectories under
|
||||
<filename>/usr/X11R6/lib/X11/fonts</filename>. Each font file is
|
||||
cross referenced to its X11 name by the contents of the
|
||||
<filename>fonts.dir</filename> file in each directory.</para>
|
||||
|
||||
<para>There is already a directory named <filename>Type1</>. The most
|
||||
straight forward way to add a new font is to put it into this
|
||||
directory. A better way is to keep all new fonts in a separate
|
||||
directory and use a symbolic link to the additional font. This
|
||||
allows one to more easily keep track of ones fonts without confusing
|
||||
them with the fonts that were originally provided. For
|
||||
example:
|
||||
<informalexample>
|
||||
<screen><lineannotation>Create a directory to contain the font files</>
|
||||
bash$ <userinput>mkdir -p /usr/local/share/fonts/type1</>
|
||||
bash$ <userinput>cd /usr/local/share/fonts/type1</>
|
||||
|
||||
<lineannotation>Place the .pfa, .pfb and .afm files here</>
|
||||
<lineannotation>One might want to keep readme files, and other documentation</>
|
||||
<lineannotation>for the fonts here also</>
|
||||
bash$ <userinput>cp /cdrom/fonts/atm/showboat/showboat.pfb .</>
|
||||
bash$ <userinput>cp /cdrom/fonts/atm/showboat/showboat.afm .</>
|
||||
|
||||
<lineannotation>Maintain an index to cross reference the fonts</>
|
||||
bash$ <userinput>echo showboat - InfoMagic CICA, Dec 1994, /fonts/atm/showboat >>INDEX</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>Now, to use a new font with X11, one must make the font file
|
||||
available and update the font name files. The X11 font names look
|
||||
like:
|
||||
<informalexample>
|
||||
<screen>-bitstream-charter-medium-r-normal-xxx-0-0-0-0-p-0-iso8859-1
|
||||
| | | | | | | | | | | | \ \
|
||||
| | | | | \ \ \ \ \ \ \ +----+- character set
|
||||
| | | | \ \ \ \ \ \ \ +- average width
|
||||
| | | | \ \ \ \ \ \ +- spacing
|
||||
| | | \ \ \ \ \ \ +- vertical res.
|
||||
| | | \ \ \ \ \ +- horizontal res.
|
||||
| | | \ \ \ \ +- points
|
||||
| | | \ \ \ +- pixels
|
||||
| | | \ \ \
|
||||
foundry family weight slant width additional style</screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>A new name needs to be created for each new font. If you have
|
||||
some information from the documentation that accompanied the font,
|
||||
then it could serve as the basis for creating the name. If there is
|
||||
no information, then you can get some idea by using
|
||||
<citerefentry><refentrytitle>strings</><manvolnum>1</></> on the font
|
||||
file. For example:
|
||||
<informalexample>
|
||||
<screen>bash$ <userinput>strings showboat.pfb | more</>
|
||||
%!FontType1-1.0: Showboat 001.001
|
||||
%%CreationDate: 1/15/91 5:16:03 PM
|
||||
%%VMusage: 1024 45747
|
||||
% Generated by Fontographer 3.1
|
||||
% Showboat
|
||||
1991 by David Rakowski. Alle Rechte Vorbehalten.
|
||||
FontDirectory/Showboat known{/Showboat findfont dup/UniqueID known{dup
|
||||
/UniqueID get 4962377 eq exch/FontType get 1 eq and}{pop false}ifelse
|
||||
{save true}{false}ifelse}{false}ifelse
|
||||
12 dict begin
|
||||
/FontInfo 9 dict dup begin
|
||||
/version (001.001) readonly def
|
||||
/FullName (Showboat) readonly def
|
||||
/FamilyName (Showboat) readonly def
|
||||
/Weight (Medium) readonly def
|
||||
/ItalicAngle 0 def
|
||||
/isFixedPitch false def
|
||||
/UnderlinePosition -106 def
|
||||
/UnderlineThickness 16 def
|
||||
/Notice (Showboat
|
||||
1991 by David Rakowski. Alle Rechte Vorbehalten.) readonly def
|
||||
end readonly def
|
||||
/FontName /Showboat def
|
||||
--stdin--</screen>
|
||||
</informalexample></para>
|
||||
|
||||
<para>Using this information, a possible name might be:
|
||||
<informalexample>
|
||||
<screen>-type1-Showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1</screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>The components of our name are:
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Foundry</term>
|
||||
<listitem>
|
||||
<para>Lets just name all the new fonts <literal>type1</>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Family</term>
|
||||
<listitem>
|
||||
<para>The name of the font.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Weight</term>
|
||||
<listitem>
|
||||
<para>Normal, bold, medium, semibold, etc. From the
|
||||
<citerefentry><refentrytitle>strings</><manvolnum>1</></> output
|
||||
above, it appears that this font has a weight of
|
||||
<emphasis>medium</emphasis>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Slant</term>
|
||||
<listitem>
|
||||
<para><emphasis remap=bf>r</emphasis>oman, <emphasis
|
||||
remap=bf>i</emphasis>talic, <emphasis remap=bf>o</emphasis>blique,
|
||||
etc. Since the <emphasis>ItalicAngle</emphasis> is zero,
|
||||
<emphasis>roman</emphasis> will be used.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Width</term>
|
||||
<listitem>
|
||||
<para>Normal, wide, condensed, extended, etc. Until it can be examined,
|
||||
the assumption will be <emphasis>normal</emphasis>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Additional style</term>
|
||||
<listitem>
|
||||
<para>Usually omitted, but this will indicate that
|
||||
the font contains decorative capital letters.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Spacing</term>
|
||||
<listitem>
|
||||
<para>proportional or monospaced. <emphasis>Proportional</emphasis>
|
||||
is used since <emphasis>isFixedPitch</emphasis> is false.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>All of these names are arbitrary, but one should strive to be
|
||||
compatible with the existing conventions. A font is referenced by
|
||||
name with possible wild cards by an X11 program, so the name chosen
|
||||
should make some sense. One might begin by simply using
|
||||
<informalexample>
|
||||
<screen>…-normal-r-normal-…-p-…</screen>
|
||||
</informalexample>
|
||||
as the name, and then use
|
||||
<citerefentry><refentrytitle>xfontsel</><manvolnum>1</></> to examine it
|
||||
and adjust the name based on the appearance of the font.</para>
|
||||
|
||||
<para>So, to complete our example:
|
||||
<informalexample>
|
||||
<screen><lineannotation>Make the font accessible to X11</>
|
||||
bash$ <userinput>cd /usr/X11R6/lib/X11/fonts/Type1</>
|
||||
bash$ <userinput>ln -s /usr/local/share/fonts/type1/showboat.pfb .</>
|
||||
|
||||
<lineannotation>Edit fonts.dir and fonts.scale, adding the line describing the font
|
||||
and incrementing the number of fonts which is found on the first line.</>
|
||||
bash$ <userinput>ex fonts.dir
|
||||
:1p
|
||||
25
|
||||
:1c
|
||||
26
|
||||
.
|
||||
:$a
|
||||
showboat.pfb -type1-showboat-medium-r-normal-decorative-0-0-0-0-p-0-iso8859-1
|
||||
.
|
||||
:wq</>
|
||||
|
||||
<lineannotation><filename>fonts.scale</> seems to be identical to <filename>fonts.dir</>…</>
|
||||
bash$ <userinput>cp fonts.dir fonts.scale</>
|
||||
|
||||
<lineannotation>Tell X11 that things have changed</>
|
||||
bash$ <userinput>xset fp rehash</>
|
||||
|
||||
<lineannotation>Examine the new font</>
|
||||
bash$ <userinput>xfontsel -pattern -type1-*</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>References:
|
||||
<citerefentry><refentrytitle>xfontsel</><manvolnum>1</></>,
|
||||
<citerefentry><refentrytitle>xset</><manvolnum>1</></>,
|
||||
<citetitle>The X Windows System in a Nutshell</>, <ulink
|
||||
URL="http://www.ora.com/">O'Reilly & Associates</ulink>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Using type 1 fonts with Ghostscript</title>
|
||||
|
||||
<para>Ghostscript references a font via its <filename>Fontmap</>
|
||||
file. This must be modified in a similar way to the X11
|
||||
<filename>fonts.dir</filename> file. Ghostscript can use either the
|
||||
<filename>.pfa</filename> or the <filename>.pfb</filename> format
|
||||
fonts. Using the font from the previous example, here is how to use
|
||||
it with Ghostscript:
|
||||
<informalexample>
|
||||
<screen><lineannotation>Put the font in Ghostscript's font directory</>
|
||||
bash$ <userinput>cd /usr/local/share/ghostscript/fonts</>
|
||||
bash$ <userinput>ln -s /usr/local/share/fonts/type1/showboat.pfb .</>
|
||||
|
||||
<lineannotation>Edit Fontmap so Ghostscript knows about the font</>
|
||||
bash$ <userinput>cd /usr/local/share/ghostscript/4.01</>
|
||||
bash$ <userinput>ex Fontmap
|
||||
:$a
|
||||
/Showboat (showboat.pfb) ; % From CICA /fonts/atm/showboat
|
||||
.
|
||||
:wq</>
|
||||
|
||||
<lineannotation>Use Ghostscript to examine the font</>
|
||||
bash$ <userinput>gs prfont.ps</>
|
||||
Aladdin Ghostscript 4.01 (1996-7-10)
|
||||
Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights
|
||||
reserved.
|
||||
This software comes with NO WARRANTY: see the file PUBLIC for details.
|
||||
Loading Times-Roman font from /usr/local/share/ghostscript/fonts/tir_____.pfb...
|
||||
/1899520 581354 1300084 13826 0 done.
|
||||
GS><userinput>Showboat DoFont</>
|
||||
Loading Showboat font from /usr/local/share/ghostscript/fonts/showboat.pfb...
|
||||
1939688 565415 1300084 16901 0 done.
|
||||
>>showpage, press <return> to continue<<
|
||||
>>showpage, press <return> to continue<<
|
||||
>>showpage, press <return> to continue<<
|
||||
GS><userinput>quit</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>References: <filename>fonts.txt</filename> in the Ghostscript
|
||||
4.01 distribution</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Using type 1 fonts with Groff</title>
|
||||
|
||||
<para>Now that the new font can be used by both X11 and Ghostscript,
|
||||
how can one use the new font with groff? First of all, since we are
|
||||
dealing with type 1 postscript fonts, the groff device that is
|
||||
applicable is the <emphasis>ps</emphasis> device. A font file must be
|
||||
created for each font that groff can use. A groff font name is just
|
||||
a file in <filename>/usr/share/groff_font/devps</filename>. With our
|
||||
example, the font file could be
|
||||
<filename>/usr/share/groff_font/devps/SHOWBOAT</filename>. The file
|
||||
must be created using tools provided by groff.</para>
|
||||
|
||||
<para>The first tool is <command>afmtodit</>. This is not normally
|
||||
installed, so it must be retrieved from the source distribution. I
|
||||
found I had to change the first line of the file, so I did:
|
||||
<informalexample>
|
||||
<screen>bash$ <userinput>cp /usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.pl /tmp</>
|
||||
bash$ <userinput>ex /tmp/afmtodit.pl
|
||||
:1c
|
||||
#!/usr/bin/perl -P-
|
||||
.
|
||||
:wq</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>This tool will create the groff font file from the metrics file
|
||||
(<filename>.afm</filename> suffix.) Continuing with our
|
||||
example:
|
||||
<informalexample>
|
||||
<screen><lineannotation>Many <filename>.afm</> files are in Mac format&hellip ^M delimited lines
|
||||
We need to convert them to unix style ^J delimited lines</>
|
||||
bash$ <userinput>cd /tmp</>
|
||||
bash$ <userinput>cat /usr/local/share/fonts/type1/showboat.afm |
|
||||
tr '\015' '\012' >showboat.afm</>
|
||||
|
||||
<lineannotation>Now create the groff font file</>
|
||||
bash$ <userinput>cd /usr/share/groff_font/devps</>
|
||||
bash$ <userinput>/tmp/afmtodit.pl -d DESC -e text.enc /tmp/showboat.afm generate/textmap SHOWBOAT</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>The font can now be referenced with the name SHOWBOAT.</para>
|
||||
|
||||
<para>If ghostscript is used to drive the printers on the system,
|
||||
then nothing more needs to be done. However, if true postscript
|
||||
printers are used, then the font must be down loaded to the printer
|
||||
in order for the font to be used (unless the printer happens to have
|
||||
the showboat font built in or on an accessible font disk.) The final
|
||||
step is to create a down loadable font. The <command>pfbtops</> tool
|
||||
is used to create the <filename>.pfa</filename> format of the font,
|
||||
and the <filename>download</> file is modified to reference the new
|
||||
font. The <filename>download</> file must reference the internal
|
||||
name of the font. This can easily be determined from the groff font
|
||||
file as illustrated:
|
||||
<informalexample>
|
||||
<screen><lineannotation>Create the <filename>.pfa</> font file</>
|
||||
bash$ <userinput>pfbtops /usr/local/share/fonts/type1/showboat.pfb >showboat.pfa</></screen>
|
||||
</informalexample>
|
||||
Of course, if the <filename>.pfa</filename> file is already
|
||||
available, just use a symbolic link to reference it.
|
||||
<informalexample>
|
||||
<screen><lineannotation>Get the internal font name</>
|
||||
bash$ <userinput>fgrep internalname SHOWBOAT</>
|
||||
internalname Showboat
|
||||
|
||||
<lineannotation>Tell groff that the font must be down loaded</>
|
||||
bash$ <userinput>ex download
|
||||
:$a
|
||||
Showboat showboat.pfa
|
||||
.
|
||||
:wq</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>To test the font:
|
||||
<informalexample>
|
||||
<screen>bash$ <userinput>cd /tmp</>
|
||||
bash$ <userinput>cat >example.t <<EOF
|
||||
.sp 5
|
||||
.ps 16
|
||||
This is an example of the Showboat font:
|
||||
.br
|
||||
.ps 48
|
||||
.vs (\n(.s+2)p
|
||||
.sp
|
||||
.ft SHOWBOAT
|
||||
ABCDEFGHI
|
||||
.br
|
||||
JKLMNOPQR
|
||||
.br
|
||||
STUVWXYZ
|
||||
.sp
|
||||
.ps 16
|
||||
.vs (\n(.s+2)p
|
||||
.fp 5 SHOWBOAT
|
||||
.ft R
|
||||
To use it for the first letter of a paragraph, it will look like:
|
||||
.sp 50p
|
||||
\s(48\f5H\s0\fRere is the first sentence of a paragraph that uses the
|
||||
showboat font as its first letter.
|
||||
Additional vertical space must be used to allow room for the larger
|
||||
letter.
|
||||
EOF</>
|
||||
bash$ <userinput>groff -Tps example.t >example.ps</>
|
||||
|
||||
<lineannotation>To use ghostscript/ghostview</>
|
||||
bash$ <userinput>ghostview example.ps</>
|
||||
|
||||
<lineannotation>To print it</>
|
||||
bash$ <userinput>lpr -Ppostscript example.ps</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>References:
|
||||
<filename>/usr/src/gnu/usr.bin/groff/afmtodit/afmtodit.man</filename>,
|
||||
<citerefentry><refentrytitle>groff_font</><manvolnum>5</></>,
|
||||
<citerefentry><refentrytitle>groff_char</><manvolnum>5</></>,
|
||||
<citerefentry><refentrytitle>pfbtops</><manvolnum>1</></>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Converting TrueType fonts to a groff/postscript format for
|
||||
groff</title>
|
||||
|
||||
<para>This potentially requires a bit of work, simply because it
|
||||
depends on some utilities that are not installed as part of the
|
||||
base system. They are:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><command>ttf2pf</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>TrueType to postscript convertsion utilities. This
|
||||
allows conversion of a TrueType font to an ascii font
|
||||
metric (<filename>.afm</filename>) file.</para>
|
||||
|
||||
<para>Currently available at <ulink
|
||||
url="http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf/">http://sunsite.icm.edu.pl/pub/GUST/contrib/BachoTeX98/ttf2pf</ulink>.
|
||||
Note: These files are postscript programs and must be
|
||||
downloaded to disk by holding down the
|
||||
<keycap>Shift</keycap> key when clicking on the
|
||||
link. Otherwise, your browser may try to launch
|
||||
<application>ghostview</application> to view them.</para>
|
||||
|
||||
<para>The files of interest are:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><filename>GS_TTF.PS</filename></para
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>PF2AFM.PS</filename></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>ttf2pf.ps</filename></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>The funny upper/lower case is due to their being
|
||||
intended also for DOS shells.
|
||||
<filename>ttf2pf.ps</filename> makes use of the others as
|
||||
upper case, so any renaming must be consistent with
|
||||
this. (Actually, <filename>GS_TTF.PS</filename> and
|
||||
<filename>PFS2AFM.PS</filename> are supposedly part of the
|
||||
ghostscript distribution, but it's just as easy to use
|
||||
these as an isolated utility. FreeBSD doesn't seem to
|
||||
include the latter.) You also may want to have these
|
||||
installed to
|
||||
<filename>/usr/local/share/groff_font/devps</filename>(?).</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>afmtodit</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Creates font files for use with groff from ascii font
|
||||
metrics file. This usually resides in the directory,
|
||||
<filename>/usr/src/contrib/groff/afmtodit</filename>, and
|
||||
requires some work to get going.</para>
|
||||
|
||||
<note>
|
||||
<para> If you're paranoid about working in the
|
||||
<filename>/usr/src</filename> tree, simply copy the
|
||||
contents of the above directory to a work
|
||||
location.</para>
|
||||
</note>
|
||||
|
||||
<para>In the work area, you'll need to make the
|
||||
utility. Just type:</para>
|
||||
|
||||
<screen>
|
||||
<prompt>#</prompt> <userinput>make -f Makefile.sub afmtodit</userinput>
|
||||
</screen>
|
||||
|
||||
<para>You may also need to copy
|
||||
<filename>/usr/contrib/groff/devps/generate/textmap</filename>
|
||||
to
|
||||
<filename>/usr/share/groff_font/devps/generate</filename>
|
||||
if it doesn't already exist.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>Once all these utilities are in place, you're ready to
|
||||
commence:</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Create the <filename>.afm</filename> file by
|
||||
typing:</para>
|
||||
|
||||
<screen>
|
||||
<prompt>%</prompt> <userinput>gs <optional>-dNODISPLAY</optional> <optional>-q</optional> -- ttf2pf.ps <replaceable>TTF_name</replaceable> <optional><replaceable>PS_font_name</replaceable> <optional><replaceable>AFM_name</replaceable></optional></optional></userinput>
|
||||
</screen>
|
||||
|
||||
<para>Where, <replaceable>TTF_name</replaceable> is your
|
||||
TrueType font file, <replaceable>PS_font_name</replaceable>
|
||||
is the file name for the <filename>.pfa</filename> file,
|
||||
<replaceable>AFM_name</replaceable> is the name you wish for
|
||||
the <filename>.afm</filename> file. If you do not specify
|
||||
output file names for the <filename>.pfa</filename> or
|
||||
<filename>.afm</filename> files, then default names will be
|
||||
generated from the TrueType font file name.</para>
|
||||
|
||||
<para>This also produces a <filename>.pfa</filename> file, the
|
||||
ascii postscript font metrics file
|
||||
(<filename>.pfb</filename> is for the binrary form). This
|
||||
won't be needed, but could (I think) be useful for a
|
||||
fontserver.</para>
|
||||
|
||||
<para>For example, to convert the 30f9 Barcode font using the
|
||||
default file names, use the following command:</para>
|
||||
|
||||
<screen>
|
||||
<prompt>%</prompt> <userinput>gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf</userinput>
|
||||
Aladdin Ghostscript 5.10 (1997-11-23)
|
||||
Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
|
||||
This software comes with NO WARRANTY: see the file PUBLIC for details.
|
||||
Converting 3of9.ttf to 3of9.pfa and 3of9.afm.
|
||||
</screen>
|
||||
|
||||
<para>If you want the converted fonts to be stored in
|
||||
<filename>A.pfa</filename> and <filename>B.afm</filename>,
|
||||
then use this command:</para>
|
||||
|
||||
<screen>
|
||||
<prompt>%</prompt> <userinput>gs -dNODISPLAY -- ttf2pf.ps 3of9.ttf A B</userinput>
|
||||
Aladdin Ghostscript 5.10 (1997-11-23)
|
||||
Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
|
||||
This software comes with NO WARRANTY: see the file PUBLIC for details.
|
||||
Converting 3of9.ttf to A.pfa and B.afm.
|
||||
</screen>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Create the groff postscript file:</para>
|
||||
|
||||
<para>Change directories to
|
||||
<filename>/usr/share/groff_font/devps</filename> so as to
|
||||
make the following command easier to execute. You'll
|
||||
probably need root priviledges for this. (Or, if you're
|
||||
paranoid about working there, make sure you reference the
|
||||
files <filename>DESC</filename>,
|
||||
<filename>text.enc</filename> and
|
||||
<filename>generate/textmap</filename> as being in this
|
||||
directory.)</para>
|
||||
|
||||
<screen>
|
||||
<prompt>%</prompt> <userinput>afmtodit -d DESC -e text.enc file.afm \
|
||||
generate/textmap <replaceable>PS_font_name</replaceable></userinput>
|
||||
</screen>
|
||||
|
||||
<para>Where, <filename>file.afm</filename> is the
|
||||
<replaceable>AFM_name</replaceable> created by
|
||||
<command>ttf2pf.ps</command> above, and
|
||||
<replaceable>PS_font_name</replaceable> is the font name
|
||||
used from that command, as well as the name that
|
||||
<citerefentry> <refentrytitle>groff</><manvolnum>1</></>
|
||||
will use for references to this font. For example, assuming
|
||||
you used the first <command>tiff2pf.ps</command> command
|
||||
above, then the 3of9 Barcode font can be created using the
|
||||
command:</para>
|
||||
|
||||
<screen>
|
||||
<prompt>%</prompt> <userinput>afmtodit -d DESC -e text.enc 3of9.afm \
|
||||
generate/textmap 3of9</userinput>
|
||||
</screen>
|
||||
|
||||
<para>Ensure that the resulting
|
||||
<replaceable>PS_font_name</replaceable> file (e.g.,
|
||||
<filename>3of9</filename> in the example above) is located
|
||||
in the directory
|
||||
<filename>/usr/share/groff_font/devps</filename> by copying
|
||||
or moving it there.</para>
|
||||
|
||||
<para>Note that if <filename>ttf2pf.ps</filename> assigns a
|
||||
font name using the one it finds in the TrueType font file
|
||||
and you want to use a different name, you must edit the
|
||||
<filename>.afm</filename> file prior to running
|
||||
<command>afmtodit</command>. This name must also match the
|
||||
one used in the Fontmap file if you wish to pipe
|
||||
<citerefentry><refentrytitle>groff</><manvolnum>1</></> into
|
||||
<citerefentry><refentrytitle>gs</><manvolnum>1</></>.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Can TrueType fonts be used with other programs?</title>
|
||||
|
||||
<para>The TrueType font format is used by Windows, Windows 95, and
|
||||
Mac's. It is quite popular and there are a great number of
|
||||
fonts available in this format.</para>
|
||||
|
||||
<para>Unfortunately, there are few applications that I am aware of
|
||||
that can use this format: Ghostscript and Povray come to mind.
|
||||
Ghostscript's support, according to the documentation, is rudimentary
|
||||
and the results are likely to be inferior to type 1 fonts.
|
||||
Povray version 3 also has the ability to use TrueType fonts, but
|
||||
I rather doubt many people will be creating documents as a series of
|
||||
raytraced pages :-).</para>
|
||||
|
||||
<para>This rather dismal situation may soon change.
|
||||
The <ulink url="http://www.freetype.org/">FreeType Project</ulink>
|
||||
is currently developing a useful set of FreeType tools:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>The <command>xfsft</command> font server for X11 can serve
|
||||
TrueType fonts in addition to regular fonts. Though currently in
|
||||
beta, it is said to be quite useable. See <ulink
|
||||
url="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/">Juliusz
|
||||
Chroboczek's page</ulink> for further information. Porting instructions
|
||||
for FreeBSD can be found at <ulink
|
||||
url="http://math.missouri.edu/~stephen/software/">Stephen Montgomery's
|
||||
software page</ulink>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara><command>xfstt</command> is another font
|
||||
server for X11, available under <ulink
|
||||
url=" ftp://sunsite.unc.edu/pub/Linux/X11/fonts">
|
||||
ftp://sunsite.unc.edu/pub/Linux/X11/fonts</ulink>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem><simpara>A program called <command>ttf2bdf</command> can produce
|
||||
BDF files suitable for use in an X environment from TrueType files. Linux
|
||||
binaries are said to be available from <ulink
|
||||
url="ftp://crl.nmsu.edu/CLR/multiling/General">ftp://crl.nmsu.edu/CLR/multiling/General/</ulink>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
For people requiring the use of Asian TrueType fonts, the
|
||||
<command>XTT</command> font server may be worth a look. Information about
|
||||
<command>XTT</command> can be found at URL: <ulink
|
||||
url="http://hawk.ise.chuo-u.ac.jp/student/person/tshiozak/study/freebsd-at-random/x-tt/index-en.html">http://hawk.ise.chuo-u.ac.jp/student/person/tshiozak/study/freebsd-at-random/x-tt/index-en.html</ulink>.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>and others …</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>
|
||||
The
|
||||
<ulink url="http://www.freetype.org/projects.htm">FreeType Projects page
|
||||
</ulink> is a good starting point for information on these and other
|
||||
free TrueType projects.
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Where can additional fonts be obtained?</title>
|
||||
|
||||
<para>Many fonts are available on the Internet. They are either
|
||||
entirely free, or are share-ware. In addition, there are many
|
||||
inexpensive CDROMs available that contain many fonts. Some Internet
|
||||
locations (as of August 1996) are:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para><ulink
|
||||
url="ftp://ftp.winsite.com">ftp://ftp.winsite.com</ulink> (Formerly
|
||||
CICA)</para></listitem>
|
||||
|
||||
<listitem><para><ulink
|
||||
url="http://www.simtel.net/simcgi-bin/dosfind.cgi">http://www.simtel.net/simcgi-bin/dosfind.cgi</ulink></para></listitem>
|
||||
|
||||
<listitem><para><ulink
|
||||
url="ftp://ftp.coast.net/">ftp://ftp.coast.net/</ulink></para></listitem>
|
||||
|
||||
<listitem><para><ulink
|
||||
url="http://af-pc-plloyd.ecel.uwa.edu.au/fonts/index.html">http://af-pc-plloyd.ecel.uwa.edu.au/fonts/index.html</ulink></para></listitem>
|
||||
|
||||
<listitem><para><ulink
|
||||
url="http://www.esselte.com/letraset/index.html">http://www.esselte.com/letraset/index.html</ulink></para></listitem>
|
||||
|
||||
<listitem><para><ulink
|
||||
url="http://www.inil.com/users/elfring/esf.htm">http://www.inil.com/users/elfring/esf.htm</ulink></para></listitem>
|
||||
|
||||
</itemizedlist></para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Additional questions</title>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>What use are the <filename>.pfm</filename> files?</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Can one generate the <filename>.afm</filename> file from a <filename>.pfa</filename> or <filename>.pfb</filename>?</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>How to generate the groff character mapping files for postscript fonts
|
||||
with non-standard character names?</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Can xditview and devX?? devices be setup to access all the new fonts?</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>It would be good to have examples of using TrueType fonts with povray and
|
||||
ghostscript.</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
</book>
|
|
@ -1,58 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
||||
<!ENTITY base CDATA "..">
|
||||
<!ENTITY date "$Date: 1999-04-26 21:50:42 $">
|
||||
<!ENTITY title "FreeBSD Tutorials">
|
||||
<!ENTITY % includes SYSTEM "../includes.sgml"> %includes;
|
||||
]>
|
||||
<!-- $Id: index.sgml,v 1.20 1999-04-26 21:50:42 nik Exp $ -->
|
||||
|
||||
<html>
|
||||
&header;
|
||||
|
||||
<p>Here lie assorted documents on various aspects of FreeBSD,
|
||||
FreeBSD software, and hardware. If you have comments or
|
||||
would like to contribute a document, please contact us at
|
||||
<a href="mailto:freebsd-doc@FreeBSD.ORG">freebsd-doc@FreeBSD.org</a>.</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="newuser/newuser.html">For People New to Both FreeBSD
|
||||
<em>and</em> Unix</a></li>
|
||||
|
||||
<li><a href="mh/mh.html">An introduction to the MH mail software</a></li>
|
||||
|
||||
<li><a href="devel/devel.html">A User's Guide to FreeBSD Programming
|
||||
Tools</a></li>
|
||||
|
||||
<li><a href="ddwg/ddwg.html">Writing device drivers for FreeBSD</a>
|
||||
(<a href="ddwg/ddwg.ps">postscript</a>,
|
||||
<a href="ddwg/ddwg-html.tar.gz">gzipd tar file</a>)</li>
|
||||
|
||||
<li><a href="ppp/ppp.html">Pedantic PPP primer - IP Aliasing</a>
|
||||
(<a href="ppp/ppp.ps">postscript</a>,
|
||||
<a href="ppp/ppp-html.tar.gz">gzipd tar file</a>)</li>
|
||||
|
||||
<li><a href="multios/multios.html">Using FreeBSD with other operating systems</a></li>
|
||||
|
||||
<li><a href="fonts/fonts.html">Fonts and FreeBSD</a></li>
|
||||
|
||||
<li><a href="http://www.cypher.net/~black/ipalias.html">IP Aliasing</a></li>
|
||||
<li><a href="http://www.nothing-going-on.demon.co.uk/FreeBSD/make-world/make-world.html">Upgrading FreeBSD from source (using <b><tt>make world</tt></b>)</a></li>
|
||||
<li><a href="diskformat/diskformat.html">Formatting Media For Use With FreeBSD
|
||||
2.2-RELEASE</a></li>
|
||||
|
||||
<li><a href="http://www.users.globalnet.co.uk/~markov/ntfs_install.html">Installing the FreeBSD NTFS (NT Filesystem) driver</a></li>
|
||||
|
||||
<li><a href="http://www.freebsd.org/~rpratt/227/">FreeBSD 2.2.7 Installation Details for Newbies</a>
|
||||
|
||||
<li><a href="&base;/tutorials/docproj-primer/">FreeBSD Documentation
|
||||
Project Primer</a> (many small HTML files)</li>
|
||||
|
||||
<li><a href="&base;/tutorials/docproj-primer/book.html">FreeBSD
|
||||
Documentation Project Primer</a> (one large HTML file)</li>
|
||||
</ul>
|
||||
|
||||
|
||||
&footer;
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
# $Id: Makefile,v 1.4 1997-07-01 05:38:13 max Exp $
|
||||
|
||||
DOCS= mh.docb
|
||||
INDEXLINK= mh.html
|
||||
|
||||
.include "../../web.mk"
|
||||
|
|
@ -1,704 +0,0 @@
|
|||
<!-- $Id: mh.docb,v 1.2 1997-07-01 21:38:44 max Exp $ -->
|
||||
<!-- FreeBSD Documentation Project -->
|
||||
|
||||
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
||||
<book>
|
||||
|
||||
<bookinfo>
|
||||
<bookbiblio>
|
||||
<title>An MH Primer</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Matt</firstname>
|
||||
<surname>Midboe</surname>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>matt@garply.com</email>
|
||||
</address>
|
||||
</affiliation>
|
||||
</author></authorgroup>
|
||||
|
||||
<pubdate>v1.0, 16 January 1996</pubdate>
|
||||
|
||||
<abstract><para>This document contains an introduction to using MH on
|
||||
FreeBSD</para></abstract>
|
||||
|
||||
</bookbiblio>
|
||||
</bookinfo>
|
||||
|
||||
<chapter id="mhintro">
|
||||
<title>Introduction</title>
|
||||
|
||||
<para>MH started back in 1977 at the RAND Corporation, where the
|
||||
initial philosophies behind MH were developed. MH isn't so much a
|
||||
monolithic email program but a philosophy about how best to develop
|
||||
tools for reading email. The MH developers have done a great job
|
||||
adhering to the <acronym>KISS</> principle: Keep It Simple Stupid.
|
||||
Rather than have one large program for reading, sending and handling
|
||||
email they have written specialized programs for each part of your
|
||||
email life. One might liken MH to the specialization that one finds
|
||||
in insects and nature. Each tool in MH does one thing, and does it
|
||||
very well.</para>
|
||||
|
||||
<para>Beyond just the various tools that one uses to handle their
|
||||
email MH has done an excellent job keeping the configuration of each
|
||||
of these tools consistent and uniform. In fact, if you are not quite
|
||||
sure how something is supposed to work or what the arguments for some
|
||||
command are supposed to be then you can generally guess and be right.
|
||||
Each MH command is consistent about how it handles reading the
|
||||
configuration files and how it takes arguments on the command line.
|
||||
One useful thing to remember is that you can always add a
|
||||
<option>-help</option> to the command to have it display the options
|
||||
for that command.</para>
|
||||
|
||||
<para>The first thing that you need to do is to make sure that you have
|
||||
installed the MH package on your FreeBSD machine. If you installed
|
||||
from CDROM you should be able to execute the following to load mh:
|
||||
<informalexample>
|
||||
<screen># <userinput>pkg_add /cdrom/packages/mh-6.8.3.tgz</></screen>
|
||||
</informalexample>
|
||||
You will notice that it created a <filename>/usr/local/lib/mh</>
|
||||
directory for you as well as adding several binaries to the
|
||||
<filename>/usr/local/bin</> directory. If you would prefer to compile
|
||||
it yourself then you can anonymous ftp it from <ulink
|
||||
URL="ftp://ftp.ics.uci.edu/">ftp.ics.uci.edu</ulink> or <ulink
|
||||
URL="ftp://louie.udel.edu/">louie.udel.edu</ulink>.</para>
|
||||
|
||||
<para>This primer is not a full comprehensive explanation of how MH
|
||||
works. This is just intended to get you started on the road to
|
||||
happier, faster mail reading. You should read the man pages for the
|
||||
various commands. Also you might want to read the <ulink
|
||||
URL="news:comp.mail.mh">comp.mail.mh</ulink> newsgroup. Also you can
|
||||
read the <ulink
|
||||
URL="http://www.cis.ohio-state.edu/hypertext/faq/usenet/mh-faq/part1/faq.html">FAQ
|
||||
for MH</ulink>. The best resource for MH is the O'Reilly and Associates book
|
||||
written by Jerry Peek.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Reading Mail</title>
|
||||
|
||||
<para>This section covers how to use <command>inc</>,
|
||||
<command>show</>, <command>scan</>, <command>next</>,
|
||||
<command>prev</>, <command>rmm</>, <command>rmf</>, and
|
||||
<command>msgchk</>. One of the best things about MH is the
|
||||
consistent interface between programs. A few things to keep in mind
|
||||
when using these commands is how to specify message lists. In the
|
||||
case of <command>inc</> this doesn't really make any sense but with
|
||||
commands like <command>show</> it is useful to know. </para>
|
||||
|
||||
<para>A message list can consist of something like <parameter>23 20
|
||||
16</> which will act on messages 23, 20 and 16. This is fairly simple
|
||||
but you can do more useful things like <parameter>23-30</> which will
|
||||
act on all the messages between 23 and 30. You can also specify
|
||||
something like <parameter>cur:10</> which will act on the current
|
||||
message and the next 9 messages. The <parameter>cur</>,
|
||||
<parameter>last</>, and <parameter>first</> messages are special
|
||||
messages that refer to the current, last or first message in the
|
||||
folder.</para>
|
||||
|
||||
|
||||
<sect1 id="inc">
|
||||
<title><command>inc</>, <command>msgchk</>—read in your new email or check it</title>
|
||||
|
||||
<para>If you just type in <userinput>inc</> and hit <keycap>return</>
|
||||
you will be well on your way to getting started with MH. The first
|
||||
time you run <command>inc</> it will setup your account to use all
|
||||
the MH defaults and ask you about creating a Mail directory. If you
|
||||
have mail waiting to be downloaded you will see something that looks
|
||||
like:
|
||||
<informalexample>
|
||||
<screen> 29 01/15 Doug White Re: Another Failed to boot problem<<On Mon, 15 J
|
||||
30 01/16 "Jordan K. Hubbar Re: FBSD 2.1<<> Do you want a library instead of
|
||||
31 01/16 Bruce Evans Re: location of bad144 table<<>> >It would appea
|
||||
32 01/16 "Jordan K. Hubbar Re: video is up<<> Anyway, mrouted won't run, ev
|
||||
33 01/16 Michael Smith Re: FBSD 2.1<<Nate Williams stands accused of sa</screen>
|
||||
</informalexample>
|
||||
This is the same thing you will see from a <command>scan</> (see
|
||||
<xref linkend="scan">). If you just run <command>inc</> with no
|
||||
arguments it will look on your computer for email that is supposed to
|
||||
be coming to you.</para>
|
||||
|
||||
<para>A lot of people like to use POP for grabbing their email. MH can do
|
||||
POP to grab your email. You will need to give <command>inc</> a few command
|
||||
line arguments.
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>inc -host mail.pop.org -user <replaceable>username</> -norpop</></screen>
|
||||
</informalexample>
|
||||
That tells <command>inc</> to go to <parameter>mail.pop.org</> to
|
||||
download your email, and that your username on their system is
|
||||
<replaceable>username</>. The <option>-norpop</option> option tells
|
||||
<command>inc</> to use plain POP3 for downloading your email. MH has
|
||||
support for a few different dialects of POP. More than likely you
|
||||
will never ever need to use them though. While you can do more
|
||||
complex things with inc such as audit files and scan format files
|
||||
this will get you going.</para>
|
||||
|
||||
<para>The <command>msgchk</> command is used to get information on
|
||||
whether or not you have new email. <command>msgchk</> takes the same
|
||||
<option>-host</option> and <option>-user</option> options that
|
||||
<command>inc</> takes.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="show">
|
||||
<title><command>show</>, <command>next</> and <command>prev</>—displaying and moving through email</title>
|
||||
|
||||
<para><command>show</> is to show a letter in your current folder.
|
||||
Like <command>inc</>, <command>show</> is a fairly straightforward
|
||||
command. If you just type <userinput>show</> and hit <keycap>return</>
|
||||
then it displays the current message. You can also give specific
|
||||
message numbers to show:
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>show 32 45 56</></screen>
|
||||
</informalexample>
|
||||
This would display message numbers 32, 45 and 56 right after each
|
||||
other. Unless you change the default behavior <command>show</>
|
||||
basically just does a <command>more</> on the email message.</para>
|
||||
|
||||
<para><command>next</> is used to move onto the next message and
|
||||
<command>prev</> will go to the previous message. Both commands have
|
||||
an implied <command>show</> command so that when you go to the next
|
||||
message it automatically displays it.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="scan">
|
||||
<title><command>scan</>—shows you a scan of your messages</title>
|
||||
|
||||
<para><command>scan</> will display a brief listing of the messages
|
||||
in your current folder. This is an example of what the
|
||||
<command>scan</> command will give you.
|
||||
<informalexample>
|
||||
<screen> 30+ 01/16 "Jordan K. Hubbar Re: FBSD 2.1<<> Do you want a library instead of
|
||||
31 01/16 Bruce Evans Re: location of bad144 table<<>> >It would appea
|
||||
32 01/16 "Jordan K. Hubbar Re: video is up<<> Anyway, mrouted won't run, ev
|
||||
33 01/16 Michael Smith Re: FBSD 2.1<<Nate Williams stands accused of sa</screen>
|
||||
</informalexample>
|
||||
Like just about everything in MH this display is very configurable.
|
||||
This is the typical default display. It gives you the message number,
|
||||
the date on the email, the sender, the subject line, and a sentence
|
||||
fragment from the very beginning of the email if it can fit it. The
|
||||
<literal>+</> means that message is the current message, so if you do
|
||||
a <command>show</> it will display that message.</para>
|
||||
|
||||
<para>One useful option for scan is the <option>-reverse</option>
|
||||
option. This will list your messages with the highest message number
|
||||
first and lowest message number last. Another useful option with
|
||||
<command>scan</> is to have it read from a file. If you want to scan
|
||||
your incoming mailbox on FreeBSD without having to <command>inc</> it
|
||||
you can do <command>scan -file
|
||||
/var/mail/<replaceable>username</></command>. This can be used with
|
||||
any file that is in the <database>mbox</> format.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="rmm">
|
||||
<title><command>rmm</> and <command>rmf</>—remove the current message or folder</title>
|
||||
|
||||
<para><command>rmm</> is used to remove a mail message. The default
|
||||
is typically to not actually remove the message but to rename the
|
||||
file to one that is ignored by the MH commands. You will need to
|
||||
through periodically and physically delete the <quote>removed</>
|
||||
messages.</para>
|
||||
|
||||
<para>The <command>rmf</> command is used to remove folders. This
|
||||
doesn't just rename the files but actually removes the from the hard
|
||||
drive so you should be careful when you use this command.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="samplereading">
|
||||
<title>A typical session of reading with MH</title>
|
||||
|
||||
<para>The first thing that you will want to do is <command>inc</>
|
||||
your new mail. So at a shell prompt just type in <command>inc</> and
|
||||
hit <keycap>return</>.
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>inc</>
|
||||
Incorporating new mail into inbox...
|
||||
|
||||
36+ 01/19 "Stephen L. Lange Request...<<Please remove me as contact for pind
|
||||
37 01/19 Matt Thomas Re: kern/950: Two PCI bridge chips fail (multipl
|
||||
38 01/19 "Amancio Hasty Jr Re: FreeBSD and VAT<<>>> Bill Fenner said: > In
|
||||
tempest%</screen>
|
||||
</informalexample>
|
||||
This shows you the new email that has been added to your mailbox. So
|
||||
the next thing to do is <command>show</> the email and move around.
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>show</>
|
||||
Received: by sashimi.wwa.com (Smail3.1.29.1 #2)
|
||||
id m0tdMZ2-001W2UC; Fri, 19 Jan 96 13:33 CST
|
||||
Date: Fri, 19 Jan 1996 13:33:31 -0600 (CST)
|
||||
From: "Stephen L. Lange" <stvlange@wwa.com>
|
||||
To: matt@garply.com
|
||||
Subject: Request...
|
||||
Message-Id: <Pine.BSD.3.91.960119133211.824A-100000@sashimi.wwa.com>
|
||||
Mime-Version: 1.0
|
||||
Content-Type: TEXT/PLAIN; charset=US-ASCII
|
||||
|
||||
|
||||
Please remove me as contact for pindat.com
|
||||
|
||||
tempest% <userinput>rmm</>
|
||||
tempest% <userinput>next</>
|
||||
Received: from localhost (localhost [127.0.0.1]) by whydos.lkg.dec.com (8.6.11/8
|
||||
.6.9) with SMTP id RAA24416; Fri, 19 Jan 1996 17:56:48 GMT
|
||||
Message-Id: <199601191756.RAA24416@whydos.lkg.dec.com>
|
||||
X-Authentication-Warning: whydos.lkg.dec.com: Host localhost didn't use HELO pro
|
||||
tocol
|
||||
To: hsu@clinet.fi
|
||||
Cc: hackers@FreeBSD.org
|
||||
Subject: Re: kern/950: Two PCI bridge chips fail (multiple multiport ethernet
|
||||
boards)
|
||||
In-Reply-To: Your message of "Fri, 19 Jan 1996 00:18:36 +0100."
|
||||
<199601182318.AA11772@Sysiphos>
|
||||
X-Mailer: exmh version 1.5omega 10/6/94
|
||||
Date: Fri, 19 Jan 1996 17:56:40 +0000
|
||||
From: Matt Thomas <matt@lkg.dec.com>
|
||||
Sender: owner-hackers@FreeBSD.org
|
||||
Precedence: bulk
|
||||
|
||||
|
||||
This is due to a typo in pcireg.h (to
|
||||
which I am probably the guilty party).</screen>
|
||||
</informalexample></para>
|
||||
|
||||
<para>The <command>rmm</> removed the current message and the
|
||||
<command>next</> command moved me on to the next message.
|
||||
Now if I wanted to look at ten most recent messages so I could read
|
||||
one of them here is what I would do:
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>scan last:10</>
|
||||
26 01/16 maddy Re: Testing some stuff<<yeah, well, Trinity has
|
||||
27 01/17 Automatic digest NET-HAPPENINGS Digest - 16 Jan 1996 to 17 Jan 19
|
||||
28 01/17 Evans A Criswell Re: Hey dude<<>From matt@tempest.garply.com Tue
|
||||
29 01/16 Karl Heuer need configure/make volunteers<<The FSF is looki
|
||||
30 01/18 Paul Stephanouk Re: [alt.religion.scientology] Raw Meat (humor)<
|
||||
31 01/18 Bill Lenherr Re: Linux NIS Solaris<<--- On Thu, 18 Jan 1996 1
|
||||
34 01/19 John Fieber Re: Stuff for the email section?<<On Fri, 19 Jan
|
||||
35 01/19 support@foo.garpl [garply.com #1138] parlor<<Hello. This is the Ne
|
||||
37+ 01/19 Matt Thomas Re: kern/950: Two PCI bridge chips fail (multipl
|
||||
38 01/19 "Amancio Hasty Jr Re: FreeBSD and VAT<<>>> Bill Fenner said: > In
|
||||
tempest%</screen>
|
||||
</informalexample>
|
||||
Then if I wanted to read message number 27 I would do a
|
||||
<userinput>show 27</> and it would be displayed. As you can probably
|
||||
tell from this sample session MH is pretty easy to use and looking
|
||||
through emails and displaying them is fairly intuitive and easy.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Folders and Mail Searching</title>
|
||||
|
||||
<para>Anybody who gets lots of email definitely wants to be able to
|
||||
prioritize, stamp, brief, de-brief, and number their emails in a
|
||||
variety of different ways. MH can do this better than just about
|
||||
anything. One thing that we haven't really talked about is the
|
||||
concept of folders. You have undoubtedly come across the folders
|
||||
concept using other email programs. MH has folders too. MH can even
|
||||
do sub-folders of a folder. One thing you should keep in mind with MH
|
||||
is that when you ran <command>inc</> for the first time and it asked
|
||||
you if it could create a <filename>Mail</> directory it began storing
|
||||
everything in that directory. If you look at that directory you will
|
||||
find a directory named <filename>inbox</>. The <filename>inbox</>
|
||||
directory houses all of your incoming mail that hasn't been thrown
|
||||
anywhere else.</para>
|
||||
|
||||
<para>Whenever you create a new folder a new directory is going to be
|
||||
created underneath your MH <filename>Mail</> directory, and messages
|
||||
in that folder are going to be stored in that directory. When new
|
||||
email comes in that new email is thrown into your <filename>inbox</>
|
||||
directory with a file name that is equivalent to the message number.
|
||||
So even if you didn't have any of the MH tools to read your email you
|
||||
could still use standard UNIX commands to munge around in those
|
||||
directories and just more your files. It's this simplicity that
|
||||
really gives you a lot of power with what you can do with your
|
||||
email.</para>
|
||||
|
||||
<para>Just as you can use message lists like <parameter>23 16 42</>
|
||||
with most MH commands there is a folder option you can specify with
|
||||
just about every MH command. If you do a <command>scan +freebsd</> it
|
||||
will scan your <filename>freebsd</> folder, and your current folder
|
||||
will be changed to <filename>freebsd</>. If you do a <command>show
|
||||
+freebsd 23 16 42</>, <command>show</> is going to switch to your
|
||||
<filename>freebsd</> folder and display messages 23, 16 and 42. So
|
||||
remember that <option>+<replaceable>folder</></> syntax. You will
|
||||
need to make sure you use it to make commands process different
|
||||
folders. Remember you default folder for mail is <filename>inbox</>
|
||||
so doing a <command>folder +inbox</> should always get you back to
|
||||
your mail. Of course, in MH's infinite flexibility this can be
|
||||
changed but most places have probably left it as
|
||||
<command>inbox</>.</para>
|
||||
|
||||
|
||||
<sect1>
|
||||
<title><command>pick</>—search email that matches certain criteria</title>
|
||||
|
||||
<para><command>pick</> is one of the more complex commands in the MH
|
||||
system. So you might want to read the
|
||||
<citerefentry><refentrytitle>pick</><manvolnum>1</></> man page for a
|
||||
more thorough understanding. At its simplest level you can do
|
||||
something like
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>pick -search pci</>
|
||||
15
|
||||
42
|
||||
55
|
||||
56
|
||||
57</screen>
|
||||
</informalexample>
|
||||
|
||||
This will tell <command>pick</> to look through every single line in
|
||||
every message in your current folder and tell you which message
|
||||
numbers it found the word <literal>pci</> in. You can then
|
||||
<command>show</> those messages and read them if you wish or
|
||||
<command>rmm</> them. You would have to specify something like
|
||||
<command>show 15 42 55-57</> to display them though. A slightly more
|
||||
useful thing to do is this:
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>pick -search pci -seq pick</>
|
||||
5 hits
|
||||
tempest% <userinput>show pick</></screen>
|
||||
</informalexample>
|
||||
This will show you the same messages you just didn't have to work as
|
||||
hard to do it. The <option>-seq</option> option is really an
|
||||
abbreviation of <option>-sequence</option> and <command>pick</> is
|
||||
just a sequence which contains the message numbers that matched. You
|
||||
can use sequences with just about any MH command. So you could have
|
||||
done an <command>rmm pick</> and all those messages would be removed
|
||||
instead. You sequence can be named anything. If you run pick again it
|
||||
will overwrite the old sequence if you use the same name.</para>
|
||||
|
||||
<para>Doing a <command>pick -search</command> can be a bit more time
|
||||
consuming than just searching for message from someone, or to
|
||||
someone. So <command>pick</> allows you to use the following
|
||||
predefined search criteria:
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-to</option></term>
|
||||
<listitem>
|
||||
<para>search based upon who the message is to</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-cc</option></term>
|
||||
<listitem>
|
||||
<para>search based on who is in the cc list</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-from</option></term>
|
||||
<listitem>
|
||||
<para>search for who sent the message</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-subject</option></term>
|
||||
<listitem>
|
||||
<para>search for emails with this subject</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-date</option></term>
|
||||
<listitem>
|
||||
<para>find emails with a matching dat</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--<replaceable>component</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>search for any other component in the header. (i.e.
|
||||
<option>--reply-to</> to find all emails with a certain reply-to in
|
||||
the header)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist></para>
|
||||
|
||||
<para>This allows you to do things like
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>pick -to freebsd-hackers@freebsd.org -seq hackers</></screen>
|
||||
</informalexample>
|
||||
to get a list of all the email send to the FreeBSD hackers mailing
|
||||
list. <command>pick</> also allows you to group these criteria in
|
||||
different ways using the following options:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>… <option>-and</option> …</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>… <option>-or</option> &hellip</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><option>-not</option> …</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><option>-lbrace</option> … <option>-rbrace</option></para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
These commands allow you to do things like
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>pick -to freebsd-hackers -and -cc freebsd-hackers</></screen>
|
||||
</informalexample>
|
||||
That will grab all the email in your inbox that was sent to
|
||||
freebsd-hackers or cc'd to that list. The brace options allow you to
|
||||
group search criteria together. This is sometimes very necessary as
|
||||
in the following example
|
||||
<informalexample>
|
||||
<screen>tempest% <userinput>pick -lbrace -to freebsd-hackers -and
|
||||
-not -cc freebsd-questions -rbrace -and -subject pci</></screen>
|
||||
</informalexample></para>
|
||||
|
||||
<para>Basically this says <quote>pick (to freebsd-hackers and not cc'd on
|
||||
freebsd-questions) and the subject is pci</quote>. It should look through your
|
||||
folder and find all messages sent to the freebsd-hackers list that
|
||||
aren't cc'd to the freebsd-questions list that contain something on
|
||||
pci in the subject line. Ordinarily you might have to worry about
|
||||
something called operator precedence. Remember in math how you
|
||||
evaluate from left to right and you do multiplication and division
|
||||
first and addition and subtraction second? MH has the same type of
|
||||
rules for <command>pick</>. It's fairly complex so you might want to study
|
||||
the man page. This document is just to help you get acquainted with
|
||||
MH.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title><command>folder</>, <command>folders</>, <command>refile</>—three useful programs for folder maintenance</title>
|
||||
|
||||
<para>There are three programs which are primarily just for
|
||||
manipulating your folders. The <command>folder</> program is used to
|
||||
switch between folders, pack them, and list them. At its simplest
|
||||
level you can do a <command>folder +<replaceable>newfolder</></> and
|
||||
you will be switched into <replaceable>newfolder</>. From there on
|
||||
out all your MH commands like <command>comp</>, <command>repl</>,
|
||||
<command>scan</>, and <command>show</> will act on that
|
||||
<command>newfolder</> folder.</para>
|
||||
|
||||
<para>Sometimes when you are reading and deleting messages you will
|
||||
develop <quote>holes</> in your folders. If you do a <command>scan</>
|
||||
you might just see messages 34, 35, 36, 43, 55, 56, 57, 80. If you do
|
||||
a <command>folder -pack</command> this will renumber all your
|
||||
messages so that there are no holes. It doesn't actually delete any
|
||||
messages though. So you may need to periodically go through and
|
||||
physically delete <command>rmm</>'d messages.</para>
|
||||
|
||||
<para>If you need statistics on your folders you can do a
|
||||
<command>folders</> or <command>folder -all</command> to list all
|
||||
your folders, how many messages they have, what the current message
|
||||
is in each one and so on. This line of stats it displays for all your
|
||||
folders is the same one you get when you change to a folder with
|
||||
<command>folder +foldername</>. A <command>folders</> command looks
|
||||
like this:
|
||||
<informalexample>
|
||||
<screen> Folder # of messages ( range ); cur msg (other files)
|
||||
announce has 1 message ( 1- 1).
|
||||
drafts has no messages.
|
||||
f-hackers has 43 messages ( 1- 43).
|
||||
f-questions has 16 messages ( 1- 16).
|
||||
inbox+ has 35 messages ( 1- 38); cur= 37.
|
||||
lists has 8 messages ( 1- 8).
|
||||
netfuture has 1 message ( 1- 1).
|
||||
out has 31 messages ( 1- 31).
|
||||
personal has 6 messages ( 1- 6).
|
||||
todo has 58 messages ( 1- 58); cur= 1.
|
||||
|
||||
TOTAL= 199 messages in 13 folders.
|
||||
</screen>
|
||||
</informalexample></para>
|
||||
|
||||
<para>The <command>refile</> command is what you use to move messages
|
||||
between folders. When you do something like <command>refile 23
|
||||
+netfuture</> message number 23 is moved into the
|
||||
<filename>netfuture</> folder. You could also do something like
|
||||
<command>refile 23 +netfuture/latest</> which would put message
|
||||
number 23 in a subfolder called <filename>latest</> under the
|
||||
<filename>netfuture</> folder. If you want to keep a message in the
|
||||
current folder and link it you can do a <command>refile -link 23
|
||||
+netfuture</command> which would keep 23 in your current
|
||||
<filename>inbox</> but also list in your <filename>netfuture</>
|
||||
folder. You are probably beginning to realize some of the really
|
||||
powerful things you can do with MH.</para>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Sending Mail</title>
|
||||
|
||||
<para>Email is a two way street for most people so you want to be
|
||||
able to send something back. The way MH handles sending mail can be a
|
||||
bit difficult to follow at first, but it allows for incredible
|
||||
flexibility. The first thing MH does is to copy a components file
|
||||
into your outgoing email. A components file is basically a skeleton
|
||||
email letter with stuff like the To: and Subject: headers already in
|
||||
it. You are then sent into your editor where you fill in the header
|
||||
information and then type the body of your message below the dashed
|
||||
lines in the message. Then to the <command>whatnow</> program. When
|
||||
you are at the <prompt>What now?</prompt> prompt you can tell it to
|
||||
<command>send</>, <command>list</>, <command>edit</>,
|
||||
<command>edit</>, <command>push</>, and <command>quit</>. Most of
|
||||
these commands are self-explanatory. So the message sending process
|
||||
involves copying a component file, editing your email, and then
|
||||
telling the <command>whatnow</> program what to do with your
|
||||
email.</para>
|
||||
|
||||
|
||||
<sect1>
|
||||
<title><command>comp</>, <command>forw</>, <command>reply</>—compose, forward or reply to a message to someone</title>
|
||||
|
||||
<para>The <command>comp</> program has a few useful command line
|
||||
options. The most important one to know right now is the
|
||||
<option>-editor</option> option. When MH is installed the default
|
||||
editor is usually a program called <command>prompter</> which comes
|
||||
with MH. It's not a very exciting editor and basically just gets the
|
||||
job done. So when you go to compose a message to someone you might
|
||||
want to use <command>comp -editor /usr/bin/vi/</> or <command>comp
|
||||
-editor /usr/local/bin/pico/</> instead. Once you have run
|
||||
<emphasis>comp</emphasis> you are in your editor and you see
|
||||
something that looks like this:
|
||||
<informalexample>
|
||||
<screen>To:
|
||||
cc:
|
||||
Subject:
|
||||
--------
|
||||
</screen>
|
||||
</informalexample></para>
|
||||
|
||||
<para>You need to put the person you are sending the mail to after the
|
||||
<literal>To:</> line. It works the same way for the other headers
|
||||
also, so you would need to put your subject after the
|
||||
<literal>Subject:</> line. Then you would just put the body of your
|
||||
message after the dashed lines. It may seem a bit simplistic since a
|
||||
lot of email programs have special requesters that ask you for this
|
||||
information but there really isn't any point to that. Plus this
|
||||
really gives you excellent flexibility.
|
||||
<informalexample>
|
||||
<screen>To:<userinput>freebsd-rave@freebsd.org</>
|
||||
cc:
|
||||
Subject:<userinput>And on the 8th day God created the FreeBSD core team</>
|
||||
--------
|
||||
<userinput>Wow this is an amazing operating system. Thanks!</></screen>
|
||||
</informalexample>
|
||||
You can now save this message and exit your editor. You will see the
|
||||
<prompt>What now?</> prompt and you can type in
|
||||
<userinput>send</> or <userinput>s</> and hit
|
||||
<keycap>return</>. Then the freebsd core team will receive their just
|
||||
rewards. As I mentioned earlier you can also use other commands, for
|
||||
example <command>quit</> if you don't want to send the
|
||||
message.</para>
|
||||
|
||||
<para>The <command>forw</> command is stunningly similar. The big
|
||||
difference being that the message you are forwarding is automatically
|
||||
included in the outgoing message. When you run <command>forw</> it
|
||||
will forward your current message. You can always tell it to forward
|
||||
something else by doing something like <command>forw 23</> and then
|
||||
message number 23 will be put in your outgoing message instead of the
|
||||
current message. Beyond those small differences <command>forw</>
|
||||
functions exactly the same as <command>comp</>. You go through the
|
||||
exact same message sending process.</para>
|
||||
|
||||
<para>The <command>repl</> command will reply to whatever your
|
||||
current message is, unless you give it a different message to reply
|
||||
to. <command>repl</> will do its best to go ahead and fill in some of
|
||||
the email headers already. So you will notice that the
|
||||
<literal>To:</> header already has the address of the recipient in
|
||||
there. Also the <literal>Subject:</> line will already be filled in.
|
||||
You then go about the normal message composition process and you are
|
||||
done. One useful command line option to know here is the
|
||||
<option>-cc</option> option. You can use <parameter>all</>,
|
||||
<parameter>to</>, <parameter>cc</>, <parameter>me</> after the
|
||||
<option>-cc</option> option to have <command>repl</> automatically
|
||||
add the various addresses to the cc list in the message. You have
|
||||
probably noticed that the original message isn't included. This is
|
||||
because most MH setups are configured to do this from the
|
||||
start.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title><filename>components</>, and <filename>replcomps</>—components files for <command>comp</> and <command>repl</></title>
|
||||
|
||||
<para>The <filename>components</> file is usually in
|
||||
<filename>/usr/local/lib/mh</filename>. You can copy that file into
|
||||
your MH Mail directory and edit to contain what you want it to
|
||||
contain. It is a fairly basic file. You have various email headers at
|
||||
the top, a dashed line and then nothing. The
|
||||
<command>comp</command> command just copies this
|
||||
<filename>components</> file and then edits it. You can add any
|
||||
kind of valid RFC822 header you want. For instance you could have
|
||||
something like this in your <filename>components</> file:
|
||||
<informalexample>
|
||||
<screen>To:
|
||||
Fcc: out
|
||||
Subject:
|
||||
X-Mailer: MH 6.8.3
|
||||
X-Home-Page: http://www.freebsd.org/
|
||||
-------</screen>
|
||||
</informalexample>
|
||||
|
||||
MH would then copy this components file and throw you into your
|
||||
editor. The <filename>components</> file is fairly simple. If you
|
||||
wanted to have a signature on those messages you would just put your
|
||||
signature in that <filename>components</> file.</para>
|
||||
|
||||
<para>The <filename>replcomps</> file is a bit more complex. The default
|
||||
<filename>replcomps</> looks like this:
|
||||
<informalexample>
|
||||
<screen>%(lit)%(formataddr %<{reply-to}%?{from}%?{sender}%?{return-path}%>)\
|
||||
%<(nonnull)%(void(width))%(putaddr To: )\n%>\
|
||||
%(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\
|
||||
%<(nonnull)%(void(width))%(putaddr cc: )\n%>\
|
||||
%<{fcc}Fcc: %{fcc}\n%>\
|
||||
%<{subject}Subject: Re: %{subject}\n%>\
|
||||
%<{date}In-reply-to: Your message of "\
|
||||
%<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id}
|
||||
%{message-id}%>\n%>\
|
||||
--------
|
||||
</screen>
|
||||
</informalexample></para>
|
||||
|
||||
<para>It's in the same basic format as the <filename>components</> file but
|
||||
it contains quite a few extra formatting codes. The
|
||||
<literal>%(lit)</> command makes room for the address. The
|
||||
<literal>%(formataddr</> is a function that returns a proper email
|
||||
address. The next part is <literal>%<</literal> which means if and
|
||||
the <literal>{reply-to}</> means the reply-to field in the original
|
||||
message. So that might be translated this way:
|
||||
<informalexample>
|
||||
<screen>%<<emphasis remap=bf>if</emphasis> {reply-to} <emphasis remap=bf>the original message has a reply-to</emphasis>
|
||||
then give that to formataddr, %? <emphasis remap=bf>else</emphasis> {from} <emphasis remap=bf>take the
|
||||
from address</emphasis>, %? <emphasis remap=bf>else</emphasis> {sender} <emphasis remap=bf>take the sender address</emphasis>, %?
|
||||
<emphasis remap=bf>else</emphasis> {return-path} <emphasis remap=bf>take the return-path from the original
|
||||
message</emphasis>, %> <emphasis remap=bf>endif</emphasis>.</screen>
|
||||
</informalexample></para>
|
||||
|
||||
<para>As you can tell MH formatting can get rather involved. You can
|
||||
probably decipher what most of the other functions and variables
|
||||
mean. All of the information on writing these format strings is in the
|
||||
MH-Format man page. The really nice thing is that once you have built
|
||||
your customized <filename>replcomps</> file you won't need to touch it
|
||||
again. No other email program really gives you the power and
|
||||
flexibility that MH gives you.</para>
|
||||
|
||||
</sect1>
|
||||
</chapter>
|
||||
</book>
|
|
@ -1,7 +0,0 @@
|
|||
# $Id: Makefile,v 1.4 1997-07-01 05:38:14 max Exp $
|
||||
|
||||
DOCS= multios.docb
|
||||
INDEXLINK= multios.html
|
||||
|
||||
.include "../../web.mk"
|
||||
|
|
@ -1,682 +0,0 @@
|
|||
<!-- $Id: multios.docb,v 1.4 1998-11-30 23:14:55 billf Exp $ -->
|
||||
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
||||
<book>
|
||||
|
||||
<bookinfo>
|
||||
<bookbiblio>
|
||||
<title>Installing and Using FreeBSD With Other Operating Systems</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Jay</firstname>
|
||||
<surname>Richmond</surname>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>jayrich@sysc.com</email>
|
||||
</address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>6 August 1996</pubdate>
|
||||
|
||||
<abstract><para>This document discusses how to make FreeBSD coexist
|
||||
nicely with other popular operating systems such as Linux, MS-DOS,
|
||||
OS/2, and Windows 95. Special thanks to: Annelise Anderson
|
||||
<email>andrsn@stanford.edu</email>, Randall Hopper
|
||||
<email>rhh@ct.picker.com</email>, and Jordan K. Hubbard
|
||||
<email>jkh@time.cdrom.com</email></para></abstract>
|
||||
|
||||
</bookbiblio>
|
||||
</bookinfo>
|
||||
|
||||
<chapter>
|
||||
<title>Overview</title>
|
||||
|
||||
<para>Most people can't fit these operating systems together
|
||||
comfortably without having a larger hard disk, so special
|
||||
information on large EIDE drives is included. Because there are so
|
||||
many combinations of possible operating systems and hard disk
|
||||
configurations, the <xref linkend="ch5"> section may be of the most use
|
||||
to you. It contains descriptions of specific working computer setups
|
||||
that use multiple operating systems.</para>
|
||||
|
||||
<para>This document assumes that you have already made room on your
|
||||
hard disk for an additional operating system. Any time you
|
||||
repartition your hard drive, you run the risk of destroying the data
|
||||
on the original partitions. However, if your hard drive is completely
|
||||
occupied by DOS, you might find the FIPS utility (included on the
|
||||
FreeBSD CD-ROM in the <filename>\TOOLS</filename> directory or via
|
||||
<ulink URL="ftp://ftp.freebsd.org/pub/FreeBSD/tools">ftp</ulink>)
|
||||
useful. It lets you repartition your hard disk without destroying the
|
||||
data already on it. There is also a commercial program available
|
||||
called Partition Magic, which lets you size and delete partitions
|
||||
without consequence.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="ch2">
|
||||
<title>Overview of Boot Managers</title>
|
||||
|
||||
<para>These are just brief descriptions of some of the different boot
|
||||
managers you may encounter. Depending on your computer setup, you may
|
||||
find it useful to use more than one of them on the same
|
||||
system.</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>Boot Easy</term>
|
||||
|
||||
<listitem>
|
||||
<para>This is the default boot manager used with FreeBSD. It has the
|
||||
ability to boot most anything, including BSD, OS/2 (HPFS), Windows 95
|
||||
(FAT and FAT32), and Linux. Partitions are selected with the
|
||||
function keys.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>OS/2 Boot Manager</term>
|
||||
|
||||
<listitem>
|
||||
<para>This will boot FAT, HPFS, FFS (FreeBSD), and EXT2
|
||||
(Linux). It will also boot FAT32 partitions. Partitions are
|
||||
selected using arrow keys. The OS/2 Boot Manager is the only one to
|
||||
use its own separate partition, unlike the others which use the
|
||||
master boot record (MBR). Therefore, it must be installed below the
|
||||
1024th cylinder to avoid booting problems. It can boot Linux using
|
||||
LILO when it is part of the boot sector, not the MBR. Go to <ulink
|
||||
URL="http://www.linuxresources.com/LDP/HOWTO/HOWTO-INDEX.html">Linux HOWTOs</ulink>
|
||||
on the World Wide Web for more information on booting Linux with
|
||||
OS/2's boot manager.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>OS-BS</term>
|
||||
|
||||
<listitem> <para>This is an alternative to Boot Easy. It gives you
|
||||
more control over the booting process, with the ability to set the
|
||||
default partition to boot and the booting timeout. The beta version
|
||||
of this programs allows you to boot by selecting the OS with your
|
||||
arrow keys. It is included on the FreeBSD CD in the
|
||||
<filename>\TOOLS</filename> directory, and via <ulink
|
||||
URL="ftp://ftp.freebsd.org/pub/FreeBSD/tools">ftp</ulink>.</para>
|
||||
</listitem> </varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>LILO, or LInux LOader</term>
|
||||
|
||||
<listitem>
|
||||
<para>This is a limited boot manager. Will boot FreeBSD, though some
|
||||
customization work is required in the LILO configuration file.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<note id="fat32"><title>About FAT32</title><para>FAT32 is the replacement to
|
||||
the FAT filesystem included in Microsoft's OEM SR2 Beta release,
|
||||
which is expected to utilitized on computers pre-loaded with Windows
|
||||
95 towards the end of 1996. It converts the normal FAT file system
|
||||
and allows you to use smaller cluster sizes for larger hard drives.
|
||||
FAT32 also modifies the traditional FAT boot sector and allocation
|
||||
table, making it incompatible with some boot managers.</para></note>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="ch3">
|
||||
<title>A Typical Installation</title>
|
||||
|
||||
<para>Let's say I have two large EIDE hard drives, and I want to
|
||||
install FreeBSD, Linux, and Windows 95 on them.</para>
|
||||
|
||||
<para>Here's how I might do it using these hard disks:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para><filename>/dev/wd0</> (first physical hard disk)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>/dev/wd1</> (second hard disk)</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>Both disks have 1416 cylinders.</para>
|
||||
|
||||
<procedure>
|
||||
|
||||
<step><para>I boot from a MS-DOS or Windows 95 boot disk that
|
||||
contains the <filename>FDISK.EXE</> utility and make a small 50 meg
|
||||
primary partition (35-40 for Windows 95, plus a little breathing
|
||||
room) on the first disk. Also create a larger partition on the
|
||||
second hard disk for my Windows applications and data.</para></step>
|
||||
|
||||
<step><para>I reboot and install Windows 95 (easier said than done)
|
||||
on the <filename>C:</> partition.</para> </step>
|
||||
|
||||
<step><para>The next thing I do is install Linux. I'm not sure about
|
||||
all the distributions of Linux, but slackware includes LILO (see
|
||||
<xref linkend="ch2">). When I am partitioning out my hard disk with
|
||||
Linux <command>fdisk</command>, I would put all of Linux on the first
|
||||
drive (maybe 300 megs for a nice root partition and some swap
|
||||
space).</para></step>
|
||||
|
||||
<step><para>After I install Linux, and are prompted about installing
|
||||
LILO, make SURE that I install it on the boot sector of my root
|
||||
Linux partition, not in the MBR (master boot record).</para></step>
|
||||
|
||||
<step><para>The remaining hard disk space can go to FreeBSD. I also
|
||||
make sure that my FreeBSD root slice does not go beyond the 1024th
|
||||
cylinder. (The 1024th cylinder is 528 megs into the disk with our
|
||||
hypothetical 720MB disks). I will use the rest of the hard drive
|
||||
(about 270 megs) for the <filename>/usr</> and <filename>/</> slices
|
||||
if I wish. The rest of the second hard disk (size depends on the
|
||||
amount of my Windows application/data partition that I created in
|
||||
step 1 can go to the <filename>/usr/src</> slice and swap
|
||||
space.</para></step>
|
||||
|
||||
<step><para>When viewed with the Windows 95 <command>fdisk</> utility, my hard drives
|
||||
should now look something like this:
|
||||
<screen>
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Display Partition Information
|
||||
|
||||
Current fixed disk drive: 1
|
||||
|
||||
Partition Status Type Volume_Label Mbytes System Usage
|
||||
C: 1 A PRI DOS 50 FAT** 7%
|
||||
2 A Non-DOS (Linux) 300 43%
|
||||
|
||||
Total disk space is 696 Mbytes (1 Mbyte = 1048576 bytes)
|
||||
|
||||
Press Esc to continue
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Display Partition Information
|
||||
|
||||
Current fixed disk drive: 2
|
||||
|
||||
Partition Status Type Volume_Label Mbytes System Usage
|
||||
D: 1 A PRI DOS 420 FAT** 60%
|
||||
|
||||
Total disk space is 696 Mbytes (1 Mbyte = 1048576 bytes)
|
||||
|
||||
Press Esc to continue
|
||||
|
||||
---------------------------------------------------------------------
|
||||
</screen>
|
||||
** May say FAT16 or FAT32 if you are using the OEM SR2 update.
|
||||
See <xref linkend="ch2">).</para></step>
|
||||
|
||||
<step><para>Install FreeBSD. I make sure to boot with my first hard
|
||||
disk set at <quote>NORMAL</> in the BIOS. If it is not, I'll have
|
||||
the enter my true disk geometry at boot time (to get this, boot
|
||||
Windows 95 and consult Microsoft Diagnostics (<filename>MSD.EXE</>),
|
||||
or check your BIOS) with the parameter <literal>hd0=1416,16,63</>
|
||||
where <replaceable>1416</> is the number of cylinders on my hard
|
||||
disk, <replaceable>16</> is the number of heads per track, and
|
||||
<replaceable>63</> is the number of sectors per track on the
|
||||
drive.</para></step>
|
||||
|
||||
<step><para>When partitioning out the hard disk, I make sure to install
|
||||
Boot Easy on the first disk. I don't worry about the second disk,
|
||||
nothing is booting off of it.</para></step>
|
||||
|
||||
<step><para>When I reboot, Boot Easy should recognize my three
|
||||
bootable partitions as DOS (Windows 95), Linux, and BSD
|
||||
(FreeBSD).</para></step>
|
||||
|
||||
</procedure>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="ch4">
|
||||
<title>Special Considerations</title>
|
||||
|
||||
<para>Most operating systems are very picky about where and how they are
|
||||
placed on the hard disk. Windows 95 and DOS need to be on the first
|
||||
primary partitiin on the first hard disk. OS/2 is the exception. It
|
||||
can be installed on the first or second disk in a primary or extended
|
||||
partition. If you are not sure, keep the beginning of the bootable
|
||||
partitions below the 1024th cylinder.</para>
|
||||
|
||||
<para>If you install Windows 95 on an existing BSD system, it will
|
||||
<quote>destroy</> the MBR, and you will have to reinstall your
|
||||
previous boot manager. Boot Easy can be reinstalled by using the
|
||||
BOOTINST.EXE utility included in the \TOOLS directory on the CD-ROM,
|
||||
and via <ulink
|
||||
URL="ftp://ftp.freebsd.org/pub/FreeBSD/tools">ftp</ulink>. You can
|
||||
also re-start the installation process and go to the partition
|
||||
editor. From there, mark the FreeBSD partition as bootable,
|
||||
select Boot Manager, and then type W to (W)rite out the information
|
||||
to the MBR. You can now reboot, and Boot Easy should then
|
||||
recognize Windows 95 as DOS.</para>
|
||||
|
||||
<para>Please keep in mind that OS/2 can read FAT and HPFS partitions,
|
||||
but not FFS (FreeBSD) or EXT2 (Linux) partitions. Likewise, Windows
|
||||
95 can only read and write to FAT and FAT32 (see <xref
|
||||
linkend="ch2">) partitions. FreeBSD can read most file systems, but
|
||||
currently cannot read HPFS partitions. Linux can read HPFS
|
||||
partitions, but can't write to them. Recent versions of the Linux
|
||||
kernel (2.x) can read and write to Windows 95 VFAT partitions (VFAT
|
||||
is what gives Windows 95 long file names - it's pretty much the same
|
||||
as FAT). Linux can read and write to most file systems. Got that?
|
||||
I hope so.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="ch5">
|
||||
<title>Examples</title>
|
||||
|
||||
<para><emphasis>(section needs work, please send your example to
|
||||
<email>jayrich@sysc.com</email>)</emphasis>.</para>
|
||||
|
||||
<para>FreeBSD+Win95: If you installed FreeBSD after Windows 95, you
|
||||
should see <literal>DOS</> on the Boot Easy menu. This is Windows
|
||||
95. If you installed Windows 95 after FreeBSD, read <xref
|
||||
linkend="ch4"> above. As long as your hard disk does not have 1024
|
||||
cylinders you should not have a problem booting. If one of your
|
||||
partitions goes beyond the 1024th cylinder however, and you get
|
||||
messages like <errorname>invalid system disk</> under DOS (Windows 95)
|
||||
and FreeBSD will not boot, try looking for a setting in your BIOS
|
||||
called <quote>> 1024 cylinder support</> or <quote>NORMAL/LBA</>
|
||||
mode. DOS may need LBA (Logical Block Addressing) in order to boot
|
||||
correctly. If the idea of switching BIOS settings every time you
|
||||
boot up doesn't appeal to you, you can boot FreeBSD through DOS via
|
||||
the <filename>FBSDBOOT.EXE</> utility on the CD (It should find your
|
||||
FreeBSD partition and boot it.)</para>
|
||||
|
||||
<para>FreeBSD+OS/2+Win95: Nothing new here. OS/2's boot manger
|
||||
can boot all of these operating systems, so that shouldn't be a
|
||||
problem.</para>
|
||||
|
||||
<para>FreeBSD+Linux: You can also use Boot Easy to boot both operating
|
||||
systems.</para>
|
||||
|
||||
<para>FreeBSD+Linux+Win95: (see <xref linkend="ch3">)</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="sources">
|
||||
<title>Other Sources of Help</title>
|
||||
|
||||
<para>There are many <ulink
|
||||
URL="http://www.linuxresources.com/LDP/HOWTO/HOWTO-INDEX.html">Linux HOW-TOs</ulink> that
|
||||
deal with multiple operating systems on the same hard disk.</para>
|
||||
|
||||
<para>The <ulink
|
||||
URL="http://www.linuxresources.com/LDP/HOWTO/mini/Linux+DOS+Win95+OS2.html">Linux+DOS+Win95+OS2
|
||||
mini-HOWTO</ulink> offers help on configuring the OS/2 boot manager, and the
|
||||
<ulink
|
||||
URL="http://www.linuxresources.com/LDP/HOWTO/mini/Linux+FreeBSD.html">Linux+FreeBSD
|
||||
mini-HOWTO</ulink> might be interesting as well. The <ulink
|
||||
URL="http://www.in.net/~jkatz/win95/Linux-HOWTO.html">Linux-HOWTO</ulink> is
|
||||
also helpful.</para>
|
||||
|
||||
<para>The <ulink
|
||||
URL="http://www.dorsai.org/~dcl/publications/NTLDR_Hacking">NT Loader
|
||||
Hacking Guide</ulink> provides good information on multibooting
|
||||
Windows NT, '95, and DOS with other operating systems.</para>
|
||||
|
||||
<para>And Hale Landis's "How It Works" document pack contains some good info
|
||||
on all sorts of disk geometry and booting related topics. Here are a few
|
||||
links that might help you find it: <ulink URL="ftp://fission.dt.wdc.com/pub/otherdocs/pc_systems/how_it_works/allhiw.zip">ftp://fission.dt.wdc.com/pub/otherdocs/pc_systems/how_it_works/allhiw.zip</ulink>,
|
||||
<ulink URL="http://web.idirect.com/~frank/">http://www.cs.yorku.ca/People/frank/docs/</ulink>.</para>
|
||||
|
||||
<para>Finally, don't overlook FreeBSD's kernel documentation on the booting
|
||||
procedure, available in the kernel source distribution (it unpacks to
|
||||
<ulink URL="file:/usr/src/sys/i386/boot/biosboot/README.386BSD">file:/usr/src/sys/i386/boot/biosboot/README.386BSD</ulink>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Technical Details</title>
|
||||
|
||||
<para><emphasis>(Contributed by Randall Hopper,
|
||||
<email>rhh@ct.picker.com</email>)</emphasis></para>
|
||||
|
||||
<para>This section attempts to give you enough basic information
|
||||
about your hard disks and the disk booting process so that you can
|
||||
troubleshoot most problems you might encounter when getting set up to
|
||||
boot several operating systems. It starts in pretty basic terms, so
|
||||
you may want to skim down in this section until it begins to look
|
||||
unfamiliar and then start reading.</para>
|
||||
|
||||
|
||||
<sect1>
|
||||
<title>Disk Primer</title>
|
||||
|
||||
<para>Three fundamental terms are used to describe the location of
|
||||
data on your hard disk: Cylinders, Heads, and Sectors. It's not
|
||||
particularly important to know what these terms relate to except to
|
||||
know that, together, they identify where data is physically on your
|
||||
disk.</para>
|
||||
|
||||
<para>Your disk has a particular number of cylinders, number of
|
||||
heads, and number of sectors per cylinder-head (a cylinder-head also
|
||||
known nown as a track). Collectively this information defines the
|
||||
"physical disk geometry" for your hard disk. There are typically 512
|
||||
bytes per sector, and 63 sectors per track, with the number of
|
||||
cylinders and heads varying widely from disk to disk. Thus you can
|
||||
figure the number of bytes of data that'll fit on your own disk by
|
||||
calculating: <informalexample><para>(# of cylinders) × (#
|
||||
heads) × (63 sectors/track) × (512
|
||||
bytes/sect)</></informalexample> For example, on my 1.6 Gig Western
|
||||
Digital AC31600 EIDE hard disk,that's: <informalexample><para>(3148
|
||||
cyl) × (16 heads) × (63 sectors/track) × (512
|
||||
bytes/sect)</para></informalexample></para>
|
||||
|
||||
<para>which is 1,624,670,208 bytes, or around 1.6 Gig.</para>
|
||||
|
||||
<para>You can find out the physical disk geometry (number of
|
||||
cylinders, heads, and sectors/track counts) for your hard disks using
|
||||
ATAID or other programs off the net. Your hard disk probably came
|
||||
with this information as well. Be careful though: if you're using
|
||||
BIOS LBA (see <xref linkend="limits">), you can't use just any
|
||||
program to get the physical geometry. This is because many programs
|
||||
(e.g. <filename>MSD.EXE</> or FreeBSD fdisk) don't identify the
|
||||
physical disk geometry; they instead report the
|
||||
<firstterm>translated geometry</> (virtual numbers from using LBA).
|
||||
Stay tuned for what that means.</para>
|
||||
|
||||
<para>One other useful thing about these terms. Given 3
|
||||
numbers—a cylinder number, a head number, and a
|
||||
sector-within-track number—you identify a specific absolute
|
||||
sector (a 512 byte block of data) on your disk. Cylinders and Heads
|
||||
are numbered up from 0, and Sectors are numbered up from 1.</para>
|
||||
|
||||
<para>For those that are interested in more technical details,
|
||||
information on disk geometry, boot sectors, BIOSes, etc. can be found
|
||||
all over the net. Query Lycos, Yahoo, etc. for <literal>boot
|
||||
sector</> or <literal>master boot record</>. Among the useful info
|
||||
you'll find are Hale Landis's <citetitle>How It Works</> document
|
||||
pack. See the <xref linkend="sources"> section for a few pointers to
|
||||
this pack.</para>
|
||||
|
||||
<para>Ok, enough terminology. We're talking about booting
|
||||
here.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="booting">
|
||||
<title>The Booting Process</title>
|
||||
|
||||
<para>On the first sector of your disk (Cyl 0, Head 0, Sector 1)
|
||||
lives the Master Boot Record (MBR). It contains a map of your disk.
|
||||
It identifies up to 4 <firstterm>partitions</>, each of which is a
|
||||
contiguous chunk of that disk. FreeBSD calls partitions
|
||||
<firstterm>slices</> to avoid confusion with it's own partitions, but
|
||||
we won't do that here. Each partition can contain its own operating
|
||||
system.</para>
|
||||
|
||||
<para>Each partition entry in the MBR has a <firstterm>Partition
|
||||
ID</>, a <firstterm>Start Cylinder/Head/Sector</>, and an
|
||||
<firstterm>End Cylinder/Head/Sector</>. The Partition ID tells what
|
||||
type of partition it is (what OS) and the Start/End tells where it
|
||||
is. <xref linkend="tbl-pid"> lists a smattering of some common
|
||||
Partition IDs.</para>
|
||||
|
||||
<table id="tbl-pid">
|
||||
<title>Partition IDs</>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>ID (hex)</entry>
|
||||
<entry>Description</entry>
|
||||
</row>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>01</entry>
|
||||
<entry>Primary DOS12 (12-bit FAT)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>04</entry>
|
||||
<entry>Primary DOS16 (16-bit FAT)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>05</entry>
|
||||
<entry>Extended DOS</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>06</entry>
|
||||
<entry>Primary big DOS (> 32MB)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>0A</entry>
|
||||
<entry>OS/2</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>83</entry>
|
||||
<entry>Linux (EXT2FS)</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>A5</entry>
|
||||
<entry>FreeBSD, NetBSD, 386BSD (UFS)</entry>
|
||||
</row>
|
||||
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para>Note that not all partitions are bootable (e.g. Extended DOS).
|
||||
Some are—some aren't. What makes a partition bootable is the
|
||||
configuration of the <firstterm>Partition Boot Sector</> that exists
|
||||
at the beginning of each partition.</para>
|
||||
|
||||
<para>When you configure your favorite boot manager, it looks up the entries
|
||||
in the MBR partition tables of all your hard disks and lets you name the
|
||||
entries in that list. Then when you boot, the boot manager is invoked by
|
||||
special code in the Master Boot Sector of the first probed hard disk on
|
||||
your system. It looks at the MBR partition table entry corresponding to
|
||||
the partition choice you made, uses the Start Cylinder/Head/Sector
|
||||
information for that partition, loads up the Partition Boot Sector for that
|
||||
partition, and gives it control. That Boot Sector for the partition itself
|
||||
contains enough information to start loading the operating system on that
|
||||
partition.</para>
|
||||
|
||||
<para>One thing we just brushed past that's important to know. All of your
|
||||
hard disks have MBRs. However, the one that's important is the one on the
|
||||
disk that's first probed by the BIOS. If you have only IDE hard disks, its
|
||||
the first IDE disk (e.g. primary disk on first controller). Similarly for
|
||||
SCSI only systems. If you have both IDE and SCSI hard disks though, the
|
||||
IDE disk is typically probed first by the BIOS, so the first IDE disk is
|
||||
the first probed disk. The boot manager you will install will be hooked into
|
||||
the MBR on this first probed hard disk that we've just described.</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="limits">
|
||||
<title>Booting Limitations and Warnings</title>
|
||||
|
||||
<para>Now the interesting stuff that you need to watch out for.</para>
|
||||
|
||||
<sect2>
|
||||
<title>The dreaded 1024 cylinder limit and how BIOS LBA helps</title>
|
||||
|
||||
<para>The first part of the booting process is all done through the
|
||||
BIOS, (if that's a new term to you, the BIOS is a software chip on
|
||||
your system motherboard which provides startup code for your
|
||||
computer). As such, this first part of the process is subject to the
|
||||
limitations of the BIOS interface.</para>
|
||||
|
||||
<para>The BIOS interface used to read the hard disk during this period
|
||||
(INT 13H, Subfunction 2) allocates 10 bits to the Cylinder Number, 8
|
||||
bits to the Head Number, and 6 bits to the Sector Number. This
|
||||
restricts users of this interface (i.e. boot managers hooked into
|
||||
your disk's MBR as well as OS loaders hooked into the Boot Sectors)
|
||||
to the following limits:
|
||||
<itemizedlist>
|
||||
<listitem><para>1024 cylinders, max</para></listitem>
|
||||
<listitem><para>256 heads , max</para></listitem>
|
||||
<listitem><para>64 sectors/track, max (actually 63, <literal>0</> isn't
|
||||
available)</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>Now big hard disks have lots of cylinders but not a lot of
|
||||
heads, so invariably with big hard disks the number of cylinders is
|
||||
greater than 1024. Given this and the BIOS interface as is, you
|
||||
can't boot off just anywhere on your hard disk. The boot code (the
|
||||
boot manager and the OS loader hooked into all bootable partitions'
|
||||
Boot Sectors) has to reside below cylinder 1024. In fact, if your
|
||||
hard disk is typical and has 16 heads, this equates to:
|
||||
<informalexample>
|
||||
<para>1024 cyl/disk × 16 heads/disk × 63 sect/(cyl-head)
|
||||
× 512 bytes/sector</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>which is around the often-mentioned 528MB limit.</para>
|
||||
|
||||
<para>This is where BIOS LBA (Logical Block Addressing) comes in. BIOS LBA
|
||||
gives the user of the BIOS API calls access to physical cylinders above
|
||||
1024 though the BIOS interfaces by redefining a cylinder. That is, it
|
||||
remaps your cylinders and heads, making it appear through the BIOS as
|
||||
though the disk has fewer cylinders and more heads than it actually
|
||||
does. In other words, it takes advantage of the fact that hard disks have
|
||||
relatively few heads and lots of cylinders by shifting the balance between
|
||||
number of cylinders and number of heads so that both numbers lie below the
|
||||
above-mentioned limits (1024 cylinders, 256 heads).</para>
|
||||
|
||||
<para>With BIOS LBA, the hard disk size limitation is virtually
|
||||
removed (well, pushed up to 8 Gigabytes anyway). If you have an LBA
|
||||
BIOS, you can put FreeBSD or any OS anywhere you want and not hit the
|
||||
1024 cylinder limit.</para>
|
||||
|
||||
<para>To use my 1.6 Gig Western Digital as an example again, it's
|
||||
physical geometry is:
|
||||
<informalexample>
|
||||
<para>(3148 cyl, 16 heads, 63 sectors/track, 512 bytes/sector)</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>However, my BIOS LBA remaps this to:
|
||||
<informalexample>
|
||||
<para>( 787 cyl, 64 heads, 63 sectors/track, 512 bytes/sector)</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>giving the same effective size disk, but with cylinder and head
|
||||
counts within the BIOS API's range (Incidentally, I have both Linux and
|
||||
FreeBSD existing on one of my hard disks above the 1024th physical
|
||||
cylinder, and both operating systems boot fine, thanks to BIOS LBA).</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Boot Managers and Disk Allocation</title>
|
||||
|
||||
<para>Another gotcha to watch out when installing boot managers is
|
||||
allocating space for your boot manager. It's best to be aware of
|
||||
this issue up front to save yourself from having to reinstall one or
|
||||
more of your OSs.</para>
|
||||
|
||||
<para>If you followed the discussion in <xref linkend="booting">
|
||||
about the Master Boot Sector (where the MBR is), Partition Boot
|
||||
Sectors, and the booting process, you may have been wondering just
|
||||
exactly where on your hard disk that nifty boot manager is going to
|
||||
live. Well, some boot managers are small enough to fit entirely
|
||||
within the Master Boot Sector (Cylinder 0, Head 0, Sector 0) along
|
||||
with the partition table. Others need a bit more room and actually
|
||||
extend a few sectors past the Master Boot Sector in the Cylinder 0
|
||||
Head 0 track, since that's typically free…typically.</para>
|
||||
|
||||
<para>That's the catch. Some operating systems (FreeBSD included) let
|
||||
you start their partitions right after the Master Boot Sector at
|
||||
Cylinder 0, Head 0, Sector 2 if you want. In fact, if you give
|
||||
FreeBSD's sysinstall a disk with an empty chunk up front or the whole
|
||||
disk empty, that's where it'll start the FreeBSD partition by default
|
||||
(at least it did when I fell into this trap). Then when you go to
|
||||
install your boot manager, if it's one that occupies a few extra
|
||||
sectors after the MBR, it'll overwrite the front of the first
|
||||
partition's data. In the case of FreeBSD, this overwrites the
|
||||
disk label, and renders your FreeBSD partition unbootable.</para>
|
||||
|
||||
<para>The easy way to avoid this problem (and leave yourself the
|
||||
flexibility to try different boot managers later) is just to always
|
||||
leave the first full track on your disk unallocated when you
|
||||
partition your disk. That is, leave the space from Cylinder 0, Head
|
||||
0, Sector 2 through Cylinder 0, Head 0, Sector 63 unallocated, and
|
||||
start your first partition at Cylinder 0, Head 1, Sector 1.
|
||||
For what it's worth, when you create a DOS partition at the
|
||||
front of your disk, DOS leaves this space open by default (this is
|
||||
why some boot managers assume it's free). So creating a DOS
|
||||
partition up at the front of your disk avoids this problem
|
||||
altogether. I like to do this myself, creating 1 Meg DOS partition
|
||||
up front, because it also avoids my primary DOS drive letters
|
||||
shifting later when I repartition.</para>
|
||||
|
||||
<para>For reference, the following boot managers use the
|
||||
Master Boot Sector to store their code and data:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>OS-BS 1.35</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Boot Easy</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>LILO</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>These boot managers use a few additional sectors after the
|
||||
Master Boot Sector:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>OS-BS 2.0 Beta 8 (sectors 2-5)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>OS/2's boot manager</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>What if your machine won't boot?</title>
|
||||
|
||||
<para>At some point when installing boot managers, you might leave the
|
||||
MBR in a state such that your machine won't boot. This is unlikely,
|
||||
but possible when re-FDISKing underneath an already-installed boot
|
||||
manager.</para>
|
||||
|
||||
<para>If you have a bootable DOS partition on your disk, you can boot
|
||||
off a DOS floppy, and run:
|
||||
<informalexample>
|
||||
<screen>A:\> <userinput>FDISK /MBR</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>to put the original, simple DOS boot code back into the system. You can
|
||||
then boot DOS (and DOS only) off the hard drive. Alternatively, just
|
||||
re-run your boot manager installation program off a bootable floppy.</para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</chapter>
|
||||
</book>
|
|
@ -1,7 +0,0 @@
|
|||
# $Id: Makefile,v 1.3 1997-07-01 05:38:15 max Exp $
|
||||
|
||||
DOCS= newuser.docb
|
||||
INDEXLINK= newuser.html
|
||||
|
||||
.include "../../web.mk"
|
||||
|
|
@ -1,943 +0,0 @@
|
|||
<!-- $Id: newuser.docb,v 1.5 1998-08-09 22:53:56 wosch Exp $ -->
|
||||
<!-- The FreeBSD Documentation Project -->
|
||||
|
||||
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
||||
<book>
|
||||
|
||||
<bookinfo>
|
||||
<bookbiblio>
|
||||
<title>For People New to Both FreeBSD and Unix</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Annelise</firstname>
|
||||
<surname>Anderson</surname>
|
||||
<affiliation>
|
||||
<address><email>andrsn@andrsn.stanford.edu</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>August 15, 1997</pubdate>
|
||||
|
||||
<abstract><para>Congratulations on installing FreeBSD! This
|
||||
introduction is for people new to both FreeBSD
|
||||
<emphasis>and</emphasis> Un*x—so it starts with basics. It
|
||||
assumes you're using version 2.0.5 or later of FreeBSD as distributed
|
||||
by Walnut Creek or FreeBSD.ORG, your system (for now) has a single
|
||||
user (you)—and you're probably pretty good with DOS/Windows or
|
||||
OS/2.</para></abstract>
|
||||
|
||||
</bookbiblio>
|
||||
</bookinfo>
|
||||
|
||||
<chapter>
|
||||
<title>Logging in and Getting Out</title>
|
||||
|
||||
<para>Log in (when you see <systemitem
|
||||
class=prompt>login:</systemitem>) as a user you created during
|
||||
installation or as <firstterm>root</firstterm>. (Your FreeBSD
|
||||
installation will already have an account for root; root can go
|
||||
anywhere and do anything, including deleting essential files, so be
|
||||
careful!) The symbols % and # in the following stand for the prompt
|
||||
(yours may be different), with % indicating an ordinary user and
|
||||
# indicating root. </para>
|
||||
|
||||
<para>To log out (and get a new <systemitem class=prompt>login:</systemitem> prompt) type
|
||||
<informalexample>
|
||||
<screen># <userinput>exit</userinput></screen>
|
||||
</informalexample>
|
||||
as often as necessary. Yes, press <keysym>enter</keysym> after
|
||||
commands, and remember that Unix is
|
||||
case-sensitive—<command>exit</command>, not
|
||||
<command>EXIT</command>.</para>
|
||||
|
||||
<para>To shut down the machine type:
|
||||
<informalexample>
|
||||
<screen># <userinput>/sbin/shutdown -h now</userinput></screen>
|
||||
</informalexample>
|
||||
Or to reboot type
|
||||
<informalexample>
|
||||
<screen># <userinput>/sbin/shutdown -r now</userinput></screen>
|
||||
</informalexample>
|
||||
or
|
||||
<informalexample>
|
||||
<screen># <userinput>/sbin/reboot</userinput></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>You can also reboot with
|
||||
<keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Delete</keycap></keycombo>.
|
||||
Give it a little time to do its work. This is equivalent to
|
||||
<command>/sbin/reboot</command> in recent releases of FreeBSD, and is
|
||||
much, much better than hitting the reset button. You don't want to
|
||||
have to reinstall this thing, do you?</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Adding A User with Root Privileges</title>
|
||||
|
||||
<para>If you didn't create any users when you installed the system and
|
||||
are thus logged in as root, you should probably create a user now with
|
||||
<informalexample>
|
||||
<screen># <userinput>adduser</userinput></screen>
|
||||
</informalexample>
|
||||
The first time you use adduser, it might ask for some defaults to save. You
|
||||
might want to make the default shell csh instead of sh, if it suggests
|
||||
sh as the default. Otherwise just press enter to accept each default.
|
||||
These defaults are saved in <filename>/etc/adduser.conf</filename>,
|
||||
an editable file.</para>
|
||||
|
||||
<para>Suppose you create a user <emphasis>jack</emphasis> with
|
||||
full name <emphasis>Jack Benimble</emphasis>. Give jack a password
|
||||
if security (even kids around who might pound on the keyboard) is an
|
||||
issue. When it asks you if you want to invite jack into other
|
||||
groups, type <userinput>wheel</userinput>
|
||||
<informalexample>
|
||||
<screen>Login group is ``jack''. Invite jack into other groups: <userinput>wheel</userinput></screen>
|
||||
</informalexample>
|
||||
This will make it possible to log in as <emphasis>jack</emphasis> and
|
||||
use the <command>su</command> command to become root. Then you won't
|
||||
get scolded any more for logging in as root.</para>
|
||||
|
||||
<para>You can quit <command>adduser</command> any time by typing
|
||||
<keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>, and at
|
||||
the end you'll have a chance to approve your new user or simply type
|
||||
<keycap>n</keycap> for no. You might want to create a
|
||||
second new user (jill?) so that when you edit jack's login files,
|
||||
you'll have a hot spare in case something goes wrong.</para>
|
||||
|
||||
<para>Once you've done this, use <command>exit</command>
|
||||
to get back to a login prompt and log in as
|
||||
<emphasis>jack</emphasis>. In general, it's a good idea to do as
|
||||
much work as possible as an ordinary user who doesn't have the
|
||||
power—and risk—of root.</para>
|
||||
|
||||
<para>If you already created a user and you want the user to be able
|
||||
to <command>su</command> to root, you can log in as root
|
||||
and edit the file <filename>/etc/group</filename>, adding jack to the
|
||||
first line (the group wheel). But first you need to practice
|
||||
<command>vi</command>, the text editor--or use the simpler text
|
||||
editor, <command>ee</command>, installed on recent version of
|
||||
FreeBSD.</para>
|
||||
|
||||
<para>To delete a user, use the <command>rmuser</command> command.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Looking Around</title>
|
||||
|
||||
<para>Logged in as an ordinary user, look around and try out some
|
||||
commands that will access the sources of help and information within
|
||||
FreeBSD.</para>
|
||||
|
||||
<para>Here are some commands and what they do:
|
||||
<variablelist>
|
||||
<varlistentry><term><command>id</command></term>
|
||||
<listitem>
|
||||
<para>Tells you who you are!</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>pwd</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Shows you where you are—the current
|
||||
working directory.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>ls</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Lists the files in the current directory.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>ls <option>-F</option></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Lists the files in the current directory with a
|
||||
<literal>*</literal> after executables, a <literal>/</literal> after
|
||||
directories, and an <literal>@</literal> after symbolic links.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>ls <option>-l</option></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Lists the files in long format—size,
|
||||
date, permissions.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>ls <option>-a</option></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Lists hidden <quote>dot</quote>
|
||||
files with the others. If you're root, the<quote>dot</quote> files
|
||||
show up without the <option>-a</option> switch.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>cd</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Changes directories. <command>cd
|
||||
<parameter>..</parameter></command> backs up one level; note the
|
||||
space after <command>cd</command>. <command>cd
|
||||
<parameter>/usr/local</parameter></command> goes there. <command>cd
|
||||
<parameter>~</parameter></command> goes to the home directory of the
|
||||
person logged in—e.g., <filename>/usr/home/jack</filename>.
|
||||
Try <command>cd <parameter>/cdrom</parameter></command>, and then
|
||||
<command>ls</command>, to find out if your CDROM is mounted and
|
||||
working.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>view <replaceable>filename</replaceable></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Lets you look at a file (named
|
||||
<replaceable>filename</replaceable> without changing it. Try
|
||||
<command>view <parameter>/etc/fstab</parameter></command>.
|
||||
<command>:q</command> to quit.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>cat <replaceable>filename</replaceable></command></term>
|
||||
|
||||
<listitem>
|
||||
|
||||
<para>Displays <replaceable>filename</replaceable> on screen. If
|
||||
it's too long and you can see only the end of it, press
|
||||
<keycap>ScrollLock</keycap> and use the <keycap>up-arrow</keycap> to
|
||||
move backward; you can use <keycap>ScrollLock</keycap> with man pages
|
||||
too. Press <keycap>ScrollLock</keycap> again to quit scrolling. You
|
||||
might want to try <command>cat</command> on some of the dot files in
|
||||
your home directory—<command>cat
|
||||
<parameter>.cshrc</parameter></command>, <command>cat
|
||||
<parameter>.login</parameter></command>, <command>cat
|
||||
<parameter>.profile</parameter></command>.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
You'll notice aliases in <filename>.cshrc</filename> for some of the
|
||||
<command>ls</command> commands (they're very convenient).
|
||||
You can create other aliases by editing <filename>.cshrc</filename>.
|
||||
You can make these aliases available to all users on the system by
|
||||
putting them in the system-wide csh configuration file,
|
||||
<filename>/etc/csh.cshrc</filename>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Getting Help and Information</title>
|
||||
|
||||
<para>Here are some useful sources of help.
|
||||
<replaceable>Text</replaceable> stands for something of your choice
|
||||
that you type in—usually a command or filename.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry><term><command>apropos <replaceable>text</replaceable></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Everything containing string <replaceable>text</replaceable>
|
||||
in the <database>whatis database</database>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>man <replaceable>text</replaceable></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>The man page for <replaceable>text</replaceable>. The major
|
||||
source of documentation for Un*x systems. <command>man
|
||||
<parameter>ls</parameter></command> will tell you all the ways to use
|
||||
the <command>ls</command> command. Press <keycap>Enter</keycap> to
|
||||
move through text,
|
||||
<keycombo><keycap>Ctrl</keycap><keycap>b</keycap></keycombo> to go
|
||||
back a page, <keycombo><keycap>Ctrl</keycap><keycap>f</keycap></keycombo> to
|
||||
go forward, <keycap>q</keycap> or
|
||||
<keycombo><keycap>Ctrl</keycap><keycap>c</keycap></keycombo> to
|
||||
quit.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>which <replaceable>text</replaceable></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Tells you where in the user's path the command
|
||||
<replaceable>text</replaceable> is found.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>locate <replaceable>text</replaceable></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>All the paths where the string <replaceable>text</replaceable>
|
||||
is found.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>whatis <replaceable>text</replaceable></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Tells you what the command <replaceable>text</replaceable>
|
||||
does and its man page. Typing <command>whatis *</command> will tell
|
||||
you about all the binaries in the current directory.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>whereis <replaceable>text</replaceable></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>Finds the file <replaceable>text</replaceable>, giving its full
|
||||
path.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>You might want to try using <command>whatis</command> on some
|
||||
common useful commands like <command>cat</command>,
|
||||
<command>more</command>, <command>grep</command>,
|
||||
<command>mv</command>, <command>find</command>,
|
||||
<command>tar</command>, <command>chmod</command>,
|
||||
<command>chown</command>, <command>date</command>, and
|
||||
<command>script</command>. <command>more</command> lets you read a
|
||||
page at a time as it does in DOS, e.g., <command>ls -l |
|
||||
more</command> or <command>more
|
||||
<replaceable>filename</replaceable></command>. The
|
||||
<literal>*</literal> works as a wildcard—e.g., <command>ls
|
||||
w*</command> will show you files beginning with
|
||||
<literal>w</literal>.</para>
|
||||
|
||||
<para>Are some of these not working very well? Both
|
||||
<command>locate</command> and <command>whatis</command>
|
||||
depend on a database that's rebuilt weekly. If your machine isn't
|
||||
going to be left on over the weekend (and running FreeBSD), you might
|
||||
want to run the commands for daily, weekly, and monthly maintenance
|
||||
now and then. Run them as root and give each one time to finish
|
||||
before you start the next one, for now.
|
||||
<informalexample>
|
||||
<screen># <userinput>/etc/daily</userinput>
|
||||
<lineannotation>output omitted</lineannotation>
|
||||
# <userinput>/etc/weekly</userinput>
|
||||
<lineannotation>output omitted</lineannotation>
|
||||
# <userinput>/etc/monthly</userinput>
|
||||
<lineannotation>output omitted</lineannotation></screen>
|
||||
</informalexample></para>
|
||||
|
||||
<para>If you get tired waiting, press
|
||||
<keycombo><keycap>Alt</keycap><keycap>F2</keycap></keycombo> to get
|
||||
another <firstterm>virtual console</firstterm>, and log in again.
|
||||
After all, it's a multi-user, multi-tasking system. Nevertheless
|
||||
these commands will probably flash messages on your screen while
|
||||
they're running; you can type <command>clear</command> at the prompt
|
||||
to clear the screen. Once they've run, you might want to look at
|
||||
<filename>/var/mail/root</filename> and
|
||||
<filename>/var/log/messages</filename>.</para>
|
||||
|
||||
<para>Basically running such commands is part of system
|
||||
administration—and as a single user of a Unix system, you're
|
||||
your own system administrator. Virtually everything you need to be
|
||||
root to do is system administration. Such responsibilities aren't
|
||||
covered very well even in those big fat books on Unix, which seem to
|
||||
devote a lot of space to pulling down menus in windows managers. You
|
||||
might want to get one of the two leading books on systems
|
||||
administration, either Evi Nemeth et.al.'s <citetitle>UNIX System
|
||||
Administration Handbook</citetitle> (Prentice-Hall, 1995, ISBN
|
||||
0-13-15051-7)—the second edition with the red cover; or
|
||||
Æleen Frisch's <citetitle>Essential System
|
||||
Administration</citetitle> (O'Reilly & Associates, 1993, ISBN
|
||||
0-937175-80-3). I used Nemeth.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Editing Text</title>
|
||||
|
||||
<para>To configure your system, you need to edit text files. Most of
|
||||
them will be in the <filename>/etc</filename> directory; and you'll
|
||||
need to <command>su</command> to root to be able to change them. You
|
||||
can use the easy <command>ee</command>, but in the long run the
|
||||
text editor <command>vi</command> is worth learning. There's an
|
||||
excellent tutorial on vi in
|
||||
<filename>/usr/src/contrib/nvi/docs/tutorial</filename> if you have
|
||||
that installed; otherwise you can get it by ftp to
|
||||
ftp.cdrom.com in the directory
|
||||
FreeBSD/FreeBSD-current/src/contrib/nvi/docs/tutorial.</para>
|
||||
|
||||
<para>Before you edit a
|
||||
file, you should probably back it up. Suppose you want to edit
|
||||
<filename>/etc/rc.conf</filename>. You could just use <command>cd
|
||||
/etc</command> to get to the <filename>/etc</filename> directory and
|
||||
do:
|
||||
<informalexample>
|
||||
<screen># <userinput>cp rc.conf rc.conf.orig</userinput></screen>
|
||||
</informalexample>
|
||||
|
||||
This would copy <filename>rc.conf</filename> to
|
||||
<filename>rc.conf.orig</filename>, and you could later copy
|
||||
<filename>rc.conf.orig</filename> to <emphasis
|
||||
remap=tt>rc.conf</emphasis> to recover the original. But even
|
||||
better would be moving (renaming) and then copying back:
|
||||
<informalexample>
|
||||
<screen># <userinput>mv rc.conf rc.conf.orig</userinput>
|
||||
# <userinput>cp rc.conf.orig rc.conf</userinput></screen>
|
||||
</informalexample>
|
||||
|
||||
because the <command>mv</command> command preserves the original date
|
||||
and owner of the file. You can now edit
|
||||
<filename>rc.conf</filename>. If you want the original back, you'd
|
||||
then <userinput>mv rc.conf rc.conf.myedit</userinput>
|
||||
(assuming you want to preserve your edited version) and then
|
||||
<informalexample>
|
||||
<screen># <userinput>mv rc.conf.orig rc.conf</userinput></screen>
|
||||
</informalexample>
|
||||
to put things back the way they were.</para>
|
||||
|
||||
<para>To edit a file, type
|
||||
<informalexample>
|
||||
<screen># <userinput>vi <replaceable>filename</replaceable></userinput></screen>
|
||||
</informalexample>
|
||||
Move through the text with the arrow keys. <keycap>Esc</keycap> (the
|
||||
escape key) puts <command>vi</command> in command mode. Here are some
|
||||
commands:
|
||||
<variablelist>
|
||||
<varlistentry><term><command>x</command></term>
|
||||
<listitem>
|
||||
<para>delete letter the cursor is on</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>dd</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>delete the entire line (even if it wraps on the screen)</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>i</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>insert text at the cursor</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>a</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>insert text after the cursor</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
Once you type <command>i</command> or <command>a</command>, you can enter text.
|
||||
<command>Esc</command> puts you back in command mode where you can type
|
||||
<variablelist>
|
||||
<varlistentry><term><command>:w</command></term>
|
||||
<listitem>
|
||||
<para>to write your changes to disk and continue editing</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>:wq</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>to write and quit</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>:q!</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>to quit without saving changes</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>/<replaceable>text</replaceable></command></term>
|
||||
|
||||
<listitem>
|
||||
<para>to move the cursor to <replaceable>text</replaceable>;
|
||||
<command>/<keycap>Enter</keycap></command> (the enter key) to find
|
||||
the next instance of <replaceable>text</replaceable>.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>G</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>to go to the end of the file</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command><replaceable>n</replaceable>G</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>to go to line <replaceable>n</replaceable> in
|
||||
the file, where <replaceable>n</replaceable> is a number</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><keycombo><keycap>Ctrl</><keycap>L</></keycombo></term>
|
||||
|
||||
<listitem>
|
||||
<para>to redraw the screen</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><keycombo><keycap>Ctrl</><keycap>b</></> and <keycombo><keycap>Ctrl</><keycap>f</></></term>
|
||||
|
||||
<listitem>
|
||||
<para>go back
|
||||
and forward a screen, as they
|
||||
do with <command>more</> and <command>view</>.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
|
||||
<para>Practice with <command>vi</> in your home directory by creating
|
||||
a new file with <command>vi <replaceable>filename</></> and adding
|
||||
and deleting text, saving the file, and calling it up again.
|
||||
<command>vi</> delivers some surprises because it's really quite
|
||||
complex, and sometimes you'll inadvertently issue a command that will
|
||||
do something you don't expect. (Some people actually like
|
||||
<command>vi</>—it's more powerful than DOS EDIT—find out
|
||||
about the <command>:r</> command.) Use <keycap>Esc</> one or
|
||||
more times to be sure you're in command mode and proceed from there
|
||||
when it gives you trouble, save often with <command>:w</>, and
|
||||
use <command>:q!</> to get out and start over (from
|
||||
your last <command>:w</>) when you need to.</para>
|
||||
|
||||
<para>Now you can <command>cd</> to <filename>/etc</filename>,
|
||||
<command>su</> to root, use <command>vi</> to edit the file
|
||||
<filename>/etc/group</filename>, and add a user to wheel so the user
|
||||
has root privileges. Just add a comma and the user's login name to
|
||||
the end of the first line in the file, press <keycap>Esc</>, and use
|
||||
<command>:wq</> to write the file to disk and quit. Instantly
|
||||
effective. (You didn't put a space after the comma, did you?)</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Printing Files from DOS</title>
|
||||
|
||||
<para>At this point you probably don't have the printer working, so here's a
|
||||
way to create a file from a man page, move it to a floppy, and then
|
||||
print it from DOS. Suppose you want to read carefully about changing
|
||||
permissions on files (pretty important). You can use the command
|
||||
man chmod to read about it. The command
|
||||
<informalexample>
|
||||
<screen># <userinput>man chmod | col -b > chmod.txt</></screen>
|
||||
</informalexample>
|
||||
will remove formatting codes and send the man page to
|
||||
the <filename>chmod.txt</filename> file
|
||||
instead of showing it on your screen. Now put a dos-formatted
|
||||
diskette in your floppy drive a, <command>su</> to
|
||||
root, and type
|
||||
<informalexample>
|
||||
<screen># <userinput>/sbin/mount -t msdos /dev/fd0 /mnt</></screen>
|
||||
</informalexample>
|
||||
to mount the floppy drive on <filename>/mnt</filename>.</para>
|
||||
|
||||
<para>Now (you no longer need to be root, and you can type
|
||||
<command>exit</> to get back to being user jack) you can go to the
|
||||
directory where you created chmod.txt and copy the file to the floppy
|
||||
with:
|
||||
<informalexample>
|
||||
<screen>% <userinput>cp chmod.txt /mnt</></screen>
|
||||
</informalexample>
|
||||
and use <command>ls /mnt</command> to get a directory listing of
|
||||
<filename>/mnt</filename>, which should show the file
|
||||
<filename>chmod.txt</filename>.</para>
|
||||
|
||||
<para>You might especially want to make a file from
|
||||
<filename>/sbin/dmesg</filename> by typing
|
||||
<informalexample>
|
||||
<screen>% <userinput>/sbin/dmesg > dmesg.txt</></screen>
|
||||
</informalexample>
|
||||
and copying <filename>dmesg.txt</filename> to the floppy.
|
||||
<command>/sbin/dmesg</command> is the boot log record, and it's
|
||||
useful to understand it because it shows what FreeBSD found when it
|
||||
booted up. If you ask questions on
|
||||
<email>freebsd-questions@FreeBSD.ORG</> or on a USENET
|
||||
group—like <quote>FreeBSD isn't finding my tape drive, what do
|
||||
I do?</quote>—people will want to know what <command>dmesg</>
|
||||
has to say.</para>
|
||||
|
||||
<para>You can now dismount the floppy drive (as root) to get the disk
|
||||
out with
|
||||
<informalexample>
|
||||
<screen># <userinput>/sbin/umount /mnt</></screen>
|
||||
</informalexample>
|
||||
and reboot to go to DOS. Copy these files to a DOS directory, call
|
||||
them up with DOS EDIT, Windows Notepad or Wordpad, or a word processor, make a
|
||||
minor change so the file has to be saved, and print as you normally
|
||||
would from DOS or Windows. Hope it works! man pages come out best if
|
||||
printed with the dos <command>print</> command. (Copying files from
|
||||
FreeBSD to a mounted dos partition is in some cases still a little
|
||||
risky.)</para>
|
||||
|
||||
<para>Getting the printer printing from FreeBSD involves creating an
|
||||
appropriate entry in <filename>/etc/printcap</filename> and creating
|
||||
a matching spool directory in
|
||||
<filename>/var/spool/output</filename>. If your printer is on
|
||||
<hardware>lpt0</> (what dos calls <hardware>LPT1</>), you may only
|
||||
need to go to <filename>/var/spool/output</filename> and (as root)
|
||||
create the directory <filename>lpd</> by typing:
|
||||
<command>
|
||||
mkdir lpd</command>, if it doesn't already
|
||||
exist.
|
||||
Then the printer should respond if it's turned on when the system is
|
||||
booted, and lp or lpr should send a file to the printer. Whether or
|
||||
not the file actually prints depends on configuring it, which is
|
||||
covered in the <ulink
|
||||
URL="../../handbook/handbook.html">FreeBSD
|
||||
handbook.</></para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Other Useful Commands</title>
|
||||
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry><term><command>df</></term>
|
||||
<listitem>
|
||||
<para>shows file space and mounted systems.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>ps aux</></term>
|
||||
|
||||
<listitem>
|
||||
<para>shows processes running. <command>ps ax</> is a narrower form.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>rm <replaceable>filename</></></term>
|
||||
|
||||
<listitem>
|
||||
<para>remove <replaceable>filename</>.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>rm -R <replaceable>dir</></></term>
|
||||
|
||||
<listitem>
|
||||
<para>removes a directory <replaceable>dir</> and all
|
||||
subdirectories—careful!</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>ls -R</command></term>
|
||||
|
||||
<listitem>
|
||||
<para>lists files in the current
|
||||
directory and all subdirectories;
|
||||
I used a variant, <command>ls -AFR > where.txt</command>,
|
||||
to get a list of all
|
||||
the files in <filename>/</filename> and (separately)
|
||||
<filename>/usr</filename> before I found better
|
||||
ways to find files.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>passwd</></term>
|
||||
|
||||
<listitem>
|
||||
<para>to change user's password (or root's password)</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><command>man hier</></term>
|
||||
|
||||
<listitem>
|
||||
<para>man page on the Unix file system</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist></para>
|
||||
|
||||
<para>Use <command>find</> to locate filename in <filename>/usr</filename>
|
||||
or any of its subdirectories with
|
||||
<informalexample>
|
||||
<screen>% <userinput>find /usr -name "<replaceable>filename</>"</></screen>
|
||||
</informalexample>
|
||||
You can use <literal>*</literal> as a wildcard in
|
||||
<parameter>"<replaceable>filename</>"</> (which should be in
|
||||
quotes). If you tell find to search in <filename>/</filename>
|
||||
instead of <filename>/usr</filename> it will look for the file(s) on
|
||||
all mounted file systems, including the CDROM and the dos
|
||||
partition.</para>
|
||||
|
||||
<para>An excellent book that explains Unix commands and utilities is
|
||||
Abrahams & Larson, <citetitle>Unix for the Impatient</citetitle>
|
||||
(2nd ed., Addison-Wesley, 1996). There's also a lot of Unix
|
||||
information on the Internet. Try the <ulink
|
||||
URL="http://www.eecs.nwu.edu/unix.html">Unix Reference
|
||||
Desk</ulink>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Next Steps</title>
|
||||
|
||||
<para>You should now have the tools you need to get around and edit
|
||||
files, so you can get everything up and running. There is a great
|
||||
deal of information in the FreeBSD handbook (which is probably on
|
||||
your hard drive) and <ulink URL="http://www.freebsd.org/">FreeBSD's
|
||||
web site</ulink>. A wide variety of packages and ports are on the
|
||||
<ulink URL="http://www.cdrom.com/">Walnut Creek</ulink> CDROM as well
|
||||
as the web site. The handbook tells you more about how to use them
|
||||
(get the package if it exists, with <command>pkg_add
|
||||
/cdrom/packages/All/<replaceable>packagename</></>,
|
||||
where <replaceable>packagename</replaceable> is the filename of the
|
||||
package). The cdrom has lists of the packages and ports with brief
|
||||
descriptions in <filename>cdrom/packages/index</filename>,
|
||||
<filename>cdrom/packages/index.txt</filename>, and
|
||||
<filename>cdrom/ports/index</filename>, with fuller descriptions in
|
||||
<filename>/cdrom/ports/*/*/pkg/DESCR</filename>, where the
|
||||
<literal>*</literal>s represent subdirectories of kinds of programs
|
||||
and program names respectively.</para>
|
||||
|
||||
<para>If you find the handbook too sophisticated (what with
|
||||
<command>lndir</> and all) on installing ports from the cdrom,
|
||||
here's what usually works:</para>
|
||||
|
||||
<para>Find the port you want, say <command>kermit</>. There will be
|
||||
a directory for it on the cdrom. Copy the subdirectory to
|
||||
<filename>/usr/local</filename> (a good place for software you add
|
||||
that should be available to all users) with:
|
||||
<informalexample>
|
||||
<screen># <userinput>cp -R /cdrom/ports/comm/kermit /usr/local</></screen>
|
||||
</informalexample>
|
||||
|
||||
This should result in a <filename>/usr/local/kermit</filename>
|
||||
subdirectory that has all the files that the
|
||||
<command>kermit</command> subdirectory on the CDROM has.</para>
|
||||
|
||||
<para>Next, create the directory <filename>/usr/ports/distfiles</filename>
|
||||
if it doesn't already exist using <command>mkdir</>. Now check
|
||||
check <filename>/cdrom/ports/distfiles</filename> for a
|
||||
file with a name that indicates it's the port you want. Copy that
|
||||
file to <filename>/usr/ports/distfiles</filename>; in recent versions
|
||||
you can skip this step, as FreeBSD will do it for you.
|
||||
In the case of <command>kermit</>, there is no
|
||||
distfile.</para>
|
||||
|
||||
<para>Then <command>cd</> to the subdirectory of
|
||||
<filename>/usr/local/kermit</filename> that has the file
|
||||
<filename>Makefile</>. Type
|
||||
<informalexample>
|
||||
<screen># <userinput>make all install</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>During this process the port will ftp to get any compressed
|
||||
files it needs that it didn't find on the cdrom or in
|
||||
<filename>/usr/ports/distfiles</filename>. If you don't have your
|
||||
network running yet and there was no file for the port in
|
||||
<filename>/cdrom/ports/distfiles</filename>, you will have to get
|
||||
the distfile using another machine and copy it to
|
||||
<filename>/usr/ports/distfiles</filename> from a floppy or your dos
|
||||
partition. Read <filename>Makefile</> (with <command>cat</> or
|
||||
<command>more</> or <command>view</>) to find out where to go (the
|
||||
master distribution site) to get the file and what its name is. Its
|
||||
name will be truncated when downloaded to DOS, and after you get it
|
||||
into <filename>/usr/ports/distfiles</filename> you'll have to rename
|
||||
it (with the <command>mv</> command) to its original name so it can
|
||||
be found. (Use binary file transfers!) Then go back to
|
||||
<filename>/usr/local/kermit</filename>, find the directory with
|
||||
<filename>Makefile</>, and type <command>make all install</>.</para>
|
||||
|
||||
<para>The other thing that happens when installing ports or packages
|
||||
is that some other program is needed. If the installation stops with
|
||||
a message <errorname>can't find unzip</errorname> or whatever, you
|
||||
might need to install the package or port for unzip before you
|
||||
continue.</para>
|
||||
|
||||
<para>Once it's installed type <command>rehash</> to make FreeBSD
|
||||
reread the files in the path so it knows what's there. (If you get a
|
||||
lot of <errorname>path not found</> messages when you use
|
||||
<command>whereis</> or which, you might want to make additions to the
|
||||
list of directories in the path statement in
|
||||
<filename>.cshrc</filename> in your home directory. The path
|
||||
statement in Unix does the same kind of work it does in DOS, except
|
||||
the current directory is not (by default) in the path for security
|
||||
reasons; if the command you want is in the directory you're in, you
|
||||
need to type <filename>./</filename> before the command to make it
|
||||
work; no space after the slash.)</para>
|
||||
|
||||
<para>You might want to get the most recent version of Netscape from
|
||||
their <ulink URL="ftp://ftp.netscape.com">ftp site</ulink>. (Netscape
|
||||
requires the X Window System.) There's now a FreeBSD version, so look
|
||||
around carefully. Just use <command>gunzip
|
||||
<replaceable>filename</></> and <command>tar xvf
|
||||
<replaceable>filename</></> on it, move the binary to
|
||||
<filename>/usr/local/bin</filename> or some other place binaries are
|
||||
kept, <command>rehash</>, and then put the following lines in
|
||||
<filename>.cshrc</filename> in each user's home directory or (easier)
|
||||
in <filename>/etc/csh.cshrc</filename>, the system-wide csh start-up
|
||||
file:
|
||||
<informalexample>
|
||||
<programlisting>setenv XKEYSYMDB /usr/X11R6/lib/X11/XKeysymDB
|
||||
setenv XNLSPATH /usr/X11R6/lib/X11/nls</>
|
||||
</informalexample>
|
||||
This assumes that the file <filename>XKeysymDB</> and the directory
|
||||
<filename>nls</> are in <filename>/usr/X11R6/lib/X11</filename>; if
|
||||
they're not, find them and put them there.</para>
|
||||
|
||||
<para>If you originally got Netscape as a port using the CDROM (or
|
||||
ftp), don't replace <filename>/usr/local/bin/netscape</filename> with
|
||||
the new netscape binary; this is just a shell script that sets up the
|
||||
environmental variables for you. Instead rename the new binary to
|
||||
<filename>netscape.bin</filename> and replace the old binary, which
|
||||
is <filename>/usr/local/lib/netscape/netscape.bin</filename>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
|
||||
<title>Your Working Environment</title>
|
||||
|
||||
<para>Your shell is the most important part of your working environment.
|
||||
In DOS, the usual shell is command.com. The shell is what interprets
|
||||
the commands you type on the command line, and thus communicates with
|
||||
the rest of the operating system. You can also write shell
|
||||
scripts, which are like DOS batch files: a series of commands to be
|
||||
run without your intervention.</para>
|
||||
|
||||
<para>Two shells come installed with FreeBSD: csh and sh. csh is good for
|
||||
command-line work, but scripts should be written with sh (or bash). You can
|
||||
find out what shell you have by typing <command>echo $SHELL</command>.</para>
|
||||
|
||||
<para>The csh shell is okay, but tcsh does everything csh does and more. It
|
||||
It allows you to recall commands with the arrow keys and edit them.
|
||||
It has tab-key completion
|
||||
of filenames (csh uses the escape key), and it lets you switch to the
|
||||
directory you were last in with <command>cd -</command>. It's also much
|
||||
easier to alter your prompt with tcsh. It makes life a lot easier.</para>
|
||||
|
||||
<para>Here are the three steps for installing a new shell:</para>
|
||||
|
||||
<para> 1. Install the shell as a port or a package, just as you
|
||||
would any other port or package. Use <command>rehash</command> and
|
||||
<command>which tcsh</command> (assuming you're installing tcsh) to
|
||||
make sure it got installed.</para>
|
||||
|
||||
<para> 2. As root, edit <filename>/etc/shells</filename>, adding
|
||||
a line in the file for the new shell, in this case /usr/local/bin/tcsh,
|
||||
and save the file. (Some ports may do this for you.)</para>
|
||||
|
||||
<para> 3. Use the <command>chsh</command> command to change your shell to
|
||||
tcsh permanently, or type <command>tcsh</command> at the prompt to
|
||||
change your shell without logging in again.</para>
|
||||
|
||||
<para><emphasis>Note: It can be dangerous to change root's shell</emphasis>
|
||||
to something other than sh or csh on early versions of FreeBSD and many
|
||||
other versions of Unix; you may not have a working shell when the system
|
||||
puts you into single user mode. The solution is to use <command>su -m</command>
|
||||
to become root, which will give you the tcsh as root, because the shell is part
|
||||
of the environment. You can make this permanent by adding it to your
|
||||
<filename>.tcshrc</filename> file as an alias with <programlisting>alias su su -m.</></para>
|
||||
|
||||
<para>When tcsh starts up, it will read the
|
||||
<filename>/etc/csh.cshrc</filename> and <filename>/etc/csh.login</filename>
|
||||
files, as does csh. It will also read the
|
||||
<filename>.login</filename> file in your home directory and the
|
||||
<filename>.cshrc</filename>
|
||||
file as well, unless you provide a <filename>.tcshrc</filename>
|
||||
file. This you can do by simply copying <filename>.cshrc</filename>
|
||||
to <filename>.tcshrc</filename>.</para>
|
||||
|
||||
<para>Now that you've installed tcsh, you can adjust your prompt. You can
|
||||
find the details in the manual page for tcsh, but here is a line to
|
||||
put in your <filename>.tcshrc</filename> that will tell you how many
|
||||
commands you have typed, what time it is, and what directory you are in.
|
||||
It also produces a <literal>></literal> if you're an ordinary user and
|
||||
a <literal>#</literal> if you're root, but tsch will do that in any
|
||||
case:</para>
|
||||
<para>
|
||||
set prompt = "%h %t %~ %# "</para>
|
||||
|
||||
<para>This should go in the same place as the existing set prompt line
|
||||
if there is one, or under "if($?prompt) then" if not.
|
||||
Comment out the old line; you can always switch back to it if you prefer
|
||||
it. Don't forget the spaces and quotes. You can get the <filename>.tcshrc</filename> reread by typing <command>source .tcshrc</command>.</para>
|
||||
|
||||
<para>You can get a listing of other environmental variables that
|
||||
have been set by typing <command>env</command> at the prompt. The
|
||||
result will show you your default editor, pager, and terminal type,
|
||||
among possibly many others. A useful command if you log in from a
|
||||
remote location and can't run a program because the terminal isn't
|
||||
capable is
|
||||
<command>setenv TERM vt100</command>.</para>
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter>
|
||||
<title>Other</title>
|
||||
|
||||
<para>As root, you can dismount the CDROM with <command>/sbin/umount
|
||||
/cdrom</>, take it out of the drive, insert another one, and mount it
|
||||
with <command>/sbin/mount_cd9660 /dev/cd0a /cdrom</> assuming
|
||||
<hardware>cd0a</> is the device name for your CDROM drive. The
|
||||
most recent versions of FreeBSD let you mount the cdrom with just
|
||||
<command>/sbin/mount /cdrom</command>.</para>
|
||||
|
||||
<para>Using the live file system—the second of FreeBSD's CDROM
|
||||
disks—is useful if you've got limited space. What is on the
|
||||
live file system varies from release to release. You might try
|
||||
playing games from the cdrom. This
|
||||
involves using <command>lndir</>, which gets installed with the X
|
||||
Window System, to tell the program(s) where to find the necessary
|
||||
files, because they're in the <filename>/cdrom</filename> file system
|
||||
instead of in <filename>/usr</filename> and its subdirectories, which
|
||||
is where they're expected to be. Read <command>man lndir</>.</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<title>Comments Welcome</title>
|
||||
|
||||
<para>If you use this guide I'd be interested in knowing where it was
|
||||
unclear and what was left out that you think should be included, and
|
||||
if it was helpful. My thanks to Eugene W. Stark, professor of
|
||||
computer science at SUNY-Stony Brook, and John Fieber for helpful
|
||||
comments.</para>
|
||||
|
||||
<para>Annelise Anderson, <email>andrsn@andrsn.stanford.edu</></para>
|
||||
|
||||
</chapter>
|
||||
</book>
|
|
@ -1,6 +0,0 @@
|
|||
# $Id: Makefile,v 1.2 1997-07-01 05:38:16 max Exp $
|
||||
|
||||
DOC= ppp
|
||||
SRCS= ppp.sgml
|
||||
|
||||
.include <bsd.sgml.mk>
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue