aboutsummaryrefslogtreecommitdiff
path: root/en_US.ISO8859-1/articles/linux-users/article.sgml
blob: b610e2f017058f5c80547876feddc3aa43847f5a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
	"../../../share/sgml/freebsd42.dtd" [
<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//EN" "../../share/sgml/entities.ent">
%entities;
]>

<article lang='en'>
  <articleinfo>
    <title>FreeBSD Quickstart Guide for &linux; Users</title>

    <authorgroup>
      <author>
	<firstname>John</firstname>
	<surname>Ferrell</surname>
      </author>
    </authorgroup>

    <copyright>
      <year>2008</year>
      <holder>The FreeBSD Documentation Project</holder>
    </copyright>

    <pubdate>$FreeBSD$</pubdate>

    <releaseinfo>$FreeBSD$</releaseinfo>

    <legalnotice id="trademarks" role="trademarks">
      &tm-attrib.freebsd;
      &tm-attrib.linux;
      &tm-attrib.intel;
      &tm-attrib.redhat;
      &tm-attrib.unix;
      &tm-attrib.general;
    </legalnotice>

    <abstract>
      <para>This document is intended to quickly familiarize intermediate to
	advanced &linux; users with the basics of FreeBSD.</para>
    </abstract>
  </articleinfo>

  <sect1 id="intro">
    <title>Introduction</title>

    <para>This document will highlight the differences between &os; and
      &linux; so that intermediate to advanced &linux; users can quickly
      familiarize themselves with the basics of &os;.  This is just a
      technical quickstart, it does not attempt to design
      <quote>philosophical</quote> differences between the two
      operating systems.</para>

    <para>This document assumes that you have already installed &os;.
      If you have not installed &os; or need help with the installation
      process please refer to the
      <ulink url="&url.base;/doc/en_US.ISO8859-1/books/handbook/install.html">
      Installing FreeBSD</ulink> chapter of the &os;&nbsp;Handbook.</para>
  </sect1>

  <sect1 id="shells">
    <title>Shells: No Bash?</title>

    <para>Those coming from &linux; are often surprised to find that
      <application>Bash</application> is not the default shell in &os;.
      In fact, <application>Bash</application> is not even in the default
      installation.  Instead, &os; uses &man.tcsh.1; as the default shell.
      Although, <application>Bash</application> and your other favorite
      shells are available in &os;'s <ulink
	url="article.html#SOFTWARE">Packages and Ports&nbsp;Collection</ulink>.</para>

    <para>If you do install other shells you can use &man.chsh.1; to set
      a user's default shell.  It is, however, recommended that the
      <username>root</username>'s default shell remain unchanged.  The
      reason for this is that shells not included in the base distribution
      are normally installed in <filename>/usr/local/bin</filename> or
      <filename>/usr/bin</filename>.  In the event of a problem the file
      systems where <filename>/usr/local/bin</filename> and
      <filename>/usr/bin</filename> are located may not be mounted.  In this
      case <username>root</username> would not have access to its default
      shell, preventing <username>root</username> from logging in.  For this
      reason a second <username>root</username> account, the
      <username>toor</username> account, was created for use with non-default
      shells.  See the security FAQ for information regarding the <ulink
	url="&url.base;/doc/en_US.ISO8859-1/books/faq/security.html#TOOR-ACCOUNT">toor account</ulink>.</para>
  </sect1>

  <sect1 id="software">
    <title>Packages and Ports: Adding software in &os;</title>

    <para>In addition to the traditional &unix; method of installing software
      (download source, extract, edit source code, and compile), &os; offers
      two other methods for installing applications: packages and ports.  A
      complete list of of all available ports and packages can be found <ulink
	url="http://www.freebsd.org/ports/master-index.html">here</ulink>.</para>

    <sect2 id="packages">
      <title>Packages</title>

      <para>Packages are pre-compiled applications, the &os; equivalents
	of <filename>.deb</filename> files on Debian/Ubuntu based systems
	and <filename>.rpm</filename> files on Red&nbsp;Hat/Fedora based
	systems.  Packages are installed using &man.pkg.add.1;.  For example,
	the following command installs
	<application>Apache 2.2</application>:</para>

      <screen>&prompt.root; <userinput>pkg_add <replaceable>/tmp/apache-2.2.6_2.tbz</replaceable></userinput></screen>

      <para>Using the <option>-r</option> switch will tell &man.pkg.add.1;
	to automatically fetch a package and install it, as well as any
	dependencies:</para>

      <screen>&prompt.root; <userinput>pkg_add -r <replaceable>apache22</replaceable></userinput>
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/apache22.tbz... Done.
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/expat-2.0.0_1.tbz... Done.
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/perl-5.8.8_1.tbz... Done.
[snip]

To run apache www server from startup, add apache22_enable="YES"
in your /etc/rc.conf. Extra options can be found in startup script.</screen>

      <note>
	<para>If you are running a release version of &os; (6.2, 6.3, 7.0,
	  etc., generally installed from CD-ROM) <command>pkg_add -r</command>
	  will download packages built for that specific release.  These
	  packages <emphasis>may not</emphasis> be the most up-to-date
	  version of the application.  You can use the
	  <envar>PACKAGESITE</envar> variable to override this default
	  behavior.  For example, set <envar>PACKAGESITE</envar> to
          <ulink url="ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/"></ulink>
          to download the most recent packages built for the
	  6.X series.</para>

        <para>You can read more about the &os; versions in the article
	  <ulink url="&url.base;/doc/en_US.ISO8859-1/articles/version-guide/">
	    Choosing the &os; Version That Is Right For You</ulink>.</para>
      </note>

      <para>For more information on packages please refer to section 4.4 of
	the &os; Handbook: <ulink
	  url="&url.base;/doc/en_US.ISO8859-1/books/handbook/packages-using.html">Using the Packages System</ulink>.</para>
    </sect2>

    <sect2 id="ports">
      <title>Ports</title>

      <para>&os;'s second method for installing applications is the
	Ports&nbsp;Collection.  The Ports&nbsp;Collection is a framework of
	<filename>Makefiles</filename> and patches specifically customized
	for installing various software applications from source on &os;.
	When installing a port the system will fetch the source code, apply
	any required patches, compile the code, and install the application
	(and do the same for any dependencies).</para>

      <para>The Ports&nbsp;Collection, sometimes referred to as the ports tree,
	can be found in <filename>/usr/ports</filename>.  That is assuming
	the Ports&nbsp;Collection was installed during the &os; installation
	process.  If the Ports&nbsp;Collection has not been installed it can be
	added from the installation discs using &man.sysinstall.8;, or pulled
	from the &os; servers using &man.csup.1; or &man.portsnap.8;.
	Detailed instructions for installing the Ports&nbsp;Collection can be
	found in <ulink
	  url="&url.base;/doc/en_US.ISO8859-1/books/handbook/ports-using.html">section 4.5.1</ulink>
	of the handbook.</para>

      <para>Installing a port is as simple (generally) as changing in to the
	port's directory and starting the build process.  The following example
	installs <application>Apache 2.2</application> from the
	Ports&nbsp;Collection:</para>

      <screen>&prompt.root; <userinput>cd /usr/ports/www/apache22</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>

      <para>A major benefit of using ports to install software is the
	ability to customize the installation options.  For example, when
	installing <application>Apache 2.2</application> from ports you can
	enable <application>mod_ldap</application> by setting the
	<makevar>WITH_LDAP</makevar> &man.make.1; variable:</para>

      <screen>&prompt.root; <userinput>cd /usr/ports/www/apache22</userinput>
&prompt.root; <userinput>make WITH_LDAP="YES" install clean</userinput></screen>

      <para>Please see section 4.5 of the &os; Handbook, <ulink
	 url="&url.base;/doc/en_US.ISO8859-1/books/handbook/ports-using.html">Using
	 the Ports&nbsp;Collection</ulink>, for more information about the
	Ports&nbsp;Collection.</para>
    </sect2>

    <sect2 id="which">
      <title>Ports or packages, which one should I use?</title>

      <para>Packages are just pre-compiled ports, so it is really a matter
	of installing from source (ports) versus installing from binary
	packages.  Each method has its own benefits:</para>

      <itemizedlist>
	<title>Packages (binary)</title>

	<listitem><simpara>Faster installation (compiling large applications
	  can take quite a while).</simpara></listitem>

	<listitem><simpara>You do not need to understand how to compile
	  software.</simpara></listitem>

	<listitem><simpara>No need to install compilers on your
	  system.</simpara></listitem>
      </itemizedlist>

      <itemizedlist>
	<title>Ports (source)</title>

	<listitem><simpara>Ability to customize installation options.
	  (Packages are normally built with standard options.  With ports
	  you can customize various options, such as building additional
	  modules or changing the default path.)</simpara></listitem>

	<listitem><simpara>You can apply your own patches if you are so
	  inclined.</simpara></listitem>
      </itemizedlist>

      <para>If you do not have any special requirements, packages will
	probably suit your situation just fine.  If you may ever need to
	customize, ports are the way to go.  (And remember, if you
	need to customize but prefer packages, you can build a custom
	package from ports using <command>make</command>
	<maketarget>package</maketarget> and then copy the package to
	other servers.)</para>
    </sect2>
  </sect1>

  <sect1 id="startup">
    <title>System Startup: Where are the run-levels?</title>

    <para>&linux; uses the SysV init system, whereas &os; uses the
      traditional BSD-style &man.init.8;.  Under the BSD-style &man.init.8;
      there are no run-levels and no <filename>/etc/inittab</filename>,
      instead startup is controlled by the &man.rc.8; utility.  The
      <filename>/etc/rc</filename> script reads
      <filename>/etc/defaults/rc.conf</filename> and
      <filename>/etc/rc.conf</filename> to determine which services are to be
      started.  The specified services are then started by running the
      corresponding service initialization scripts located in
      <filename>/etc/rc.d/</filename> and
      <filename>/usr/local/etc/rc.d/</filename>.  These scripts are similar to
      the scripts located in <filename>/etc/init.d/</filename> on &linux;
      systems.</para>

    <sidebar>
      <para><emphasis>Why are there two locations for service initialization
	scripts?</emphasis>  The scripts found in
	<filename>/etc/rc.d/</filename> are for applications that are part of
	the <quote>base</quote> system.  (&man.cron.8;, &man.sshd.8;,
	&man.syslog.3;, and others.)  The scripts in
	<filename>/usr/local/etc/rc.d/</filename> are for user-installed
	applications such as <application>Apache</application>,
	<application>Squid</application>, etc.</para>

      <para><emphasis>What is the difference between the <quote>base</quote>
	system and user-installed applications?</emphasis>  FreeBSD is
	developed as a complete operating system.  In other words, the
	kernel, system libraries, and userland utilities (such as &man.ls.1;,
	&man.cat.1;, &man.cp.1;, etc.) are developed and released together as
	one.  This is what is referred to as the <quote>base</quote> system.
	The user-installed applications are applications that are not part of
	the <quote>base</quote> system, such as
	<application>Apache</application>, <application>X11</application>,
	<application>Mozilla&nbsp;Firefox</application>, etc.  These
	user-installed applications are generally installed using &os;'s <ulink
	  url="article.html#SOFTWARE">Packages and Ports&nbsp;Collection</ulink>.
	In order to keep them separate from the <quote>base</quote> system,
	user-installed applications are normally installed under
	<filename>/usr/local/</filename>.  Therefore the user-installed
	binaries reside in <filename>/usr/local/bin/</filename>,
	configuration files are in <filename>/usr/local/etc/</filename>,
	and so on.</para>
    </sidebar>

    <para>Services are enabled by specifying
      <literal><replaceable>ServiceName</replaceable>_enable="YES"</literal> in
      <filename>/etc/rc.conf</filename> (&man.rc.conf.5;).  Take a look at
      <filename>/etc/defaults/rc.conf</filename> for the system defaults,
      these default settings are overridden by settings in
      <filename>/etc/rc.conf</filename>.  Also, when installing additional
      applications be sure to review the documentation to determine how to
      enable any associated services.</para>

    <para>The following snippet from <filename>/etc/rc.conf</filename> enables
      &man.sshd.8; and <application>Apache 2.2</application>.  It also
      specifies that <application>Apache</application> should be started
      with SSL.</para>

    <programlisting># enable SSHD
sshd_enable="YES"
# enable Apache with SSL
apache22_enable="YES"
apache22_flags="-DSSL"</programlisting>

    <para>Once a service has been enabled in <filename>/etc/rc.conf</filename>,
      the service can be started from the command line (without rebooting the
      system):</para>

    <screen>&prompt.root; <userinput><replaceable>/etc/rc.d/sshd</replaceable> start</userinput></screen>

    <para>If a service has not been enabled it can be started from the
      command line using <option>forcestart</option>:</para>

    <screen>&prompt.root; <userinput><replaceable>/etc/rc.d/sshd</replaceable> forcestart</userinput></screen>
  </sect1>

  <sect1 id="network">
    <title>Network configuration</title>

    <sect2 id="interfaces">
      <title>Network Interfaces</title>

      <para>Instead of a generic <emphasis>ethX</emphasis> identifier that
	&linux; uses to identify a network interface, &os; uses the driver
	name followed by a number as the identifier.  The following output
	from &man.ifconfig.8; shows two &intel;&nbsp;Pro&nbsp;1000 network
	interfaces (<devicename>em0</devicename> and <devicename>em1</devicename>):</para>

      <screen>&prompt.user; <userinput>ifconfig</userinput>
em0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
        options=b&lt;RXCSUM,TXCSUM,VLAN_MTU&gt;
        inet 10.10.10.100 netmask 0xffffff00 broadcast 10.10.10.255
        ether 00:50:56:a7:70:b2
        media: Ethernet autoselect (1000baseTX &lt;full-duplex&gt;)
        status: active
em1: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
        options=b&lt;RXCSUM,TXCSUM,VLAN_MTU&gt;
        inet 192.168.10.222 netmask 0xffffff00 broadcast 192.168.10.255
        ether 00:50:56:a7:03:2b
        media: Ethernet autoselect (1000baseTX &lt;full-duplex&gt;)
        status: active</screen>
    </sect2>

    <sect2 id="ipaddress">
      <title>IP Configuration</title>

      <para>An IP address can be assigned to an interface using
	&man.ifconfig.8;.  However, to remain persistent across reboots the
	IP configuration must be included in
	<filename>/etc/rc.conf</filename>.  The following example
	specifies the hostname, IP address, and default gateway:</para>

      <programlisting>hostname="server1.example.com"
ifconfig_em0="inet 10.10.10.100  netmask 255.255.255.0"
defaultrouter="10.10.10.1"</programlisting>

      <para>Use the following to configure an interface for DHCP:</para>

      <programlisting>hostname="server1.example.com"
ifconfig_em0="DHCP"</programlisting>

    </sect2>
  </sect1>

  <sect1 id="firewall">
    <title>Firewall</title>

    <para>Like <application>IPTABLES</application> in &linux;, &os; also offers
      a kernel level firewall; actually &os; offers three firewalls:</para>

    <itemizedlist>
      <listitem><simpara><ulink url="&url.base;/doc/en_US.ISO8859-1/books/handbook/firewalls-ipfw.html">IPFIREWALL</ulink></simpara></listitem>
      <listitem><simpara><ulink url="&url.base;/doc/en_US.ISO8859-1/books/handbook/firewalls-ipf.html">IPFILTER</ulink></simpara></listitem>
      <listitem><simpara><ulink url="&url.base;/doc/en_US.ISO8859-1/books/handbook/firewalls-pf.html">PF</ulink></simpara></listitem>
    </itemizedlist>

    <para><application>IPFIREWALL</application> or
      <application>IPFW</application> (the command to manage an
      <application>IPFW</application> ruleset is &man.ipfw.8;) is the
      firewall developed and maintained by the &os; developers.
      <application>IPFW</application> can be paired with &man.dummynet.4; to
      provide traffic shaping capabilities and simulate different types of
      network connections.</para>

    <para>Sample <application>IPFW</application> rule to allow
      <application>SSH</application> in:</para>

    <programlisting>ipfw add allow tcp from any to me 22 in via $ext_if</programlisting>

    <para><application>IPFILTER</application> is the firewall application
      developed by Darren&nbsp;Reed.  It is not specific to &os;, and has been
      ported to several operating systems including NetBSD, OpenBSD, SunOS,
      HP/UX, and Solaris.</para>

    <para>Sample <application>IPFILTER</application> command to allow
      <application>SSH</application> in:</para>

    <programlisting>pass in on $ext_if proto tcp from any to any port = 22</programlisting>

    <para>The last firewall application, <application>PF</application>, is
      developed by the OpenBSD project.  <application>PF</application> was
      created as a replacement for <application>IPFILTER</application>.  As
      such, the <application>PF</application> syntax is very similar to that of
      <application>IPFILTER</application>.  <application>PF</application> can
      be paired with &man.altq.4; to provide QoS features.</para>

     <para>Sample <application>PF</application> command to allow
       <application>SSH</application> in:</para>

     <programlisting>pass in on $ext_if inet proto tcp from any to ($ext_if) port 22</programlisting>
  </sect1>

  <sect1 id="updates">
    <title>Updating &os;</title>

    <para>There are three methods for updating a &os; system: from source,
      binary updates, and the installation discs.</para>

    <para>Updating from source is the most involved update method, but offers
      the greatest amount of flexibility.  The process involves synchronizing a
      local copy of the FreeBSD source code with the &os;
      <application>CVS</application> (Concurrent Versioning System) servers.
      Once the local source code is up to date you can build new versions of
      the kernel and userland.  For more information on source updates see
      <ulink url="&url.base;/doc/en_US.ISO8859-1/books/handbook/updating-upgrading.html">the chapter on updating</ulink>
      in the &os;&nbsp;Handbook.</para>

    <para>Binary updates are similar to using <command>yum</command> or
     <command>apt-get</command> to update a &linux; system.  The command
     &man.freebsd-update.8; will fetch new updates and install them.  The
     updates can be scheduled using &man.cron.8;.</para>

    <note>
      <para>If you do use &man.cron.8; to schedule the updates, please be sure
	to use <command>freebsd-update cron</command> in your &man.crontab.1;
	to reduce the possibility of a large number of machines all pulling
	updates at the same time.</para>

      <programlisting>0 3 * * * root /usr/sbin/freebsd-update cron</programlisting>
    </note>

    <para>The last update method, updating from the installation discs, is a
      straight-forward process.  Boot from the installation discs and select
      the option to upgrade.</para>
  </sect1>

  <sect1 id="procfs">
    <title>procfs: Gone But Not Forgotten</title>

    <para>In &linux;, you may have looked at
      <filename>/proc/sys/net/ipv4/ip_forward</filename> to determine if
      IP forwarding was enabled.  Under &os; you should use &man.sysctl.8; to
      view this and other system settings, as &man.procfs.5; has been
      deprecated in current versions of &os;.  (Although
      <command>sysctl</command> is available in &linux; as well.)</para>

    <para>In the IP forwarding example, you would use the following to
      determine if IP forwarding is enabled on your FreeBSD system:</para>

    <screen>&prompt.user; <userinput>sysctl net.inet.ip.forwarding</userinput>
net.inet.ip.forwarding: 0</screen>

    <para>The <option>-a</option> flag is used to list all the system
      settings:</para>

    <screen>&prompt.user; <userinput>sysctl -a</userinput>
kern.ostype: FreeBSD
kern.osrelease: 6.2-RELEASE-p9
kern.osrevision: 199506
kern.version: FreeBSD 6.2-RELEASE-p9 #0: Thu Nov 29 04:07:33 UTC 2007
    root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC

kern.maxvnodes: 17517
kern.maxproc: 1988
kern.maxfiles: 3976
kern.argmax: 262144
kern.securelevel: -1
kern.hostname: server1
kern.hostid: 0
kern.clockrate: { hz = 1000, tick = 1000, profhz = 666, stathz = 133 }
kern.posix1version: 200112
...</screen>

    <note>
      <para>Some of these <command>sysctl</command> values are
	read-only.</para></note>

    <para>There are occasions where procfs is required, such as running
      older software, using &man.truss.1; to trace system calls, and
      <ulink url="&url.base;/doc/en_US.ISO8859-1/books/handbook/linuxemu.html">&linux; Binary Compatibility</ulink>.
      (Although, &linux; Binary Compatibility uses its own procfs, &man.linprocfs.5;.)
      If you need to mount procfs you can add the following to
      <filename>/etc/fstab</filename>:</para>

    <screen>proc                /proc           procfs  rw,noauto       0       0</screen>

    <note>
      <para><option>noauto</option> will prevent
	<filename>/proc</filename> from being automatically mounted at
	boot.</para></note>

    <para>And then mount procfs with:</para>

    <screen>&prompt.root; <userinput>mount /proc</userinput></screen>
  </sect1>

  <sect1 id="commands">
    <title>Common Commands</title>

    <sect2 id="packageCommands">
      <title>Package Management</title>

      <para>
	<informaltable frame="none" pgwide="1">
	  <tgroup cols="3">
	    <thead>
	      <row>
		<entry>&linux; command (Red&nbsp;Hat/Debian)</entry>
		<entry>&os; equivalent</entry>
		<entry>Purpose</entry>
	      </row>
	    </thead>

	    <tbody>
	      <row>
		<entry><command>yum install <replaceable>package</replaceable></command> / <command>apt-get install <replaceable>package</replaceable></command></entry>
		<entry><command>pkg_add -r <replaceable>package</replaceable></command></entry>
		<entry>Install <replaceable>package</replaceable> from remote repository</entry>
	      </row>

	      <row>
		<entry><command>rpm -ivh <replaceable>package</replaceable></command> / <command>dpkg -i <replaceable>package</replaceable></command></entry>
		<entry><command>pkg_add -v <replaceable>package</replaceable></command></entry>
		<entry>Install package</entry>
	      </row>

	      <row>
		<entry><command>rpm -qa</command> / <command>dpkg -l</command></entry>
		<entry><command>pkg_info</command></entry>
		<entry>List installed packages</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>
      </para>
    </sect2>

    <sect2 id="systemCommands">
      <title>System Management</title>

      <para>
	<informaltable frame="none" pgwide="1">
	  <tgroup cols="3">
	    <thead>
	      <row>
		<entry>&linux; command</entry>
		<entry>&os; equivalent</entry>
		<entry>Purpose</entry>
	      </row>
	    </thead>

	    <tbody>
	      <row>
		<entry><command>lspci</command></entry>
		<entry><command>pciconf</command></entry>
		<entry>List PCI devices</entry>
	      </row>

	      <row>
		<entry><command>lsmod</command></entry>
		<entry><command>kldstat</command></entry>
		<entry>List loaded kernel modules</entry>
	      </row>

	      <row>
		<entry><command>modprobe</command></entry>
		<entry><command>kldload</command> / <command>kldunload</command></entry>
		<entry>Load/Unload kernel modules</entry>
	      </row>

	      <row>
		<entry><command>strace</command></entry>
		<entry><command>truss</command></entry>
		<entry>Trace system calls</entry>
	      </row>
	    </tbody>
	  </tgroup>
	</informaltable>
      </para>
    </sect2>
  </sect1>

  <sect1 id="conclusion">
    <title>Conclusion</title>

    <para>Hopefully this document has provided you with enough to get
      started with &os;.   Be sure to take a look at the <ulink
	url="&url.base;/doc/en_US.ISO8859-1/books/handbook/index.html">&os;&nbsp;Handbook</ulink>
      for more in depth coverage of the topics touched on as well as
      the many topics not covered in this document.</para>
  </sect1>
</article>