"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