This commit is contained in:
Gabor Kovesdan 2013-02-18 15:29:06 +00:00
commit 3ab2d87bc1
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/projects/xml-tools/; revision=41007
86 changed files with 9344 additions and 10665 deletions
bn_BD.ISO10646-1/articles
explaining-bsd
new-users
de_DE.ISO8859-1
en_US.ISO8859-1
ja_JP.eucJP
books/handbook
advanced-networking
cutting-edge
mirrors
ports
htdocs
share/xml
nl_NL.ISO8859-1
articles/contributing
books/handbook
audit
disks
filesystems
firewalls
jails
linuxemu
mail
multimedia
network-servers
ppp-and-slip
security
virtualization
share

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
"../../../share/xml/freebsd45.dtd">
<!--

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
"../../../share/xml/freebsd45.dtd">
<!--

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN"
"http://www.FreeBSD.org/XML/doc/share/xml/xhtml10-freebsd.dtd" [
<!ENTITY dedate "$FreeBSDde: de-www/about.xml,v 1.13 2008/03/24 15:33:41 jkois Exp $">
<!ENTITY reference "basiert auf: 1.13">
<!ENTITY dedate "$FreeBSDde$">
<!ENTITY reference "basiert auf: r40760">
<!ENTITY title "Über FreeBSD">
]>
@ -64,7 +64,7 @@
<h2>Viele Anwendungen</h2>
<p>Mit über 17.000 portierten Bibliotheken und <a
<p>Mit über 24.000 portierten Bibliotheken und <a
href="&base;/applications.html">Anwendungen</a> eignet sich
FreeBSD hervorragend als Betriebssystem für Desktop-
und Serversysteme sowie eingebettete Systeme.</p>

View file

@ -4,7 +4,7 @@
<!--
$FreeBSD$
$FreeBSDde$
basiert auf: r40659
basiert auf: r40903
-->
<!-- Simple schema for FreeBSD Project news.
@ -42,12 +42,30 @@
<name>1</name>
<day>
<name>16</name>
<name>23</name>
<event>
<p>Neuer Committer: <a
<p>Neuer Committer: <a
href="mailto:achim@FreeBSD.org">Achim Leubner</a> (src)</p>
</event>
</day>
<day>
<name>22</name>
<event>
<p>Neuer Committer: <a
href="mailto:dru@FreeBSD.org">Dru Lavigne</a> (doc)</p>
</event>
</day>
<day>
<name>16</name>
<event>
<p>Neuer Committer: <a
href="mailto:carl@FreeBSD.org">Carl Delsey</a> (src)</p>
</event>
</event>
</day>
<day>
@ -127,6 +145,15 @@
href="http://freebsdfoundation.blogspot.com/2013/01/faces-of-freebsd-thomas-abthorpe.html">hier.</a></p>
</event>
</day>
<day>
<name>7</name>
<event>
<p>Neuer Committer: <a
href="mailto:ian@FreeBSD.org">Ian Lepore</a> (src)</p>
</event>
</day>
</month>
</year>
@ -159,6 +186,15 @@
</event>
</day>
<day>
<name>24</name>
<event>
<p>Neuer Committer: <a
href="mailto:koobs@FreeBSD.org">Kubilay Kocak</a> (ports)</p>
</event>
</day>
<day>
<name>20</name>

View file

@ -7,7 +7,7 @@
"freefall:/c/www/bsddoc/press/".
$FreeBSD$
$FreeBSDde$
basiert auf: r40251
basiert auf: r40864
-->
<press>
@ -15,6 +15,26 @@
$FreeBSD$
</cvs:keyword>
<year>
<name>2013</name>
<month>
<name>1</name>
<story>
<name>A Decade of OS Access-control Extensibility</name>
<url>https://queue.acm.org/detail.cfm?id=2430732</url>
<site-name>ACM Queue</site-name>
<site-url>https://queue.acm.org/</site-url>
<date>18. Januar 2013</date>
<author>Robert N. M. Watson</author>
<p>Wer sich näher mit der Absicherung von Betriebssystemen
beschäftigt, ist erstaunt über die zahlreichen in der
Praxis eingesetzten Modelle zur Zugangskontrolle.</p>
</story>
</month>
</year>
<year>
<name>2012</name>

View file

@ -4156,24 +4156,6 @@ bak/packages packages from last complete &lt;major_version&gt; run on &lt;arch&
there are at least some perks:</para>
<variablelist>
<varlistentry>
<term>Direct access to <hostid>cvsup-master</hostid></term>
<listitem>
<para>As a committer, you may apply to &a.kuriyama; for direct access
to <hostid role="fqdn">cvsup-master.FreeBSD.org</hostid>,
providing the public key output from <command>cvpasswd
<replaceable>yourusername</replaceable>@FreeBSD.org
freefall.FreeBSD.org</command>. Please note: you must
specify <hostid>freefall.FreeBSD.org</hostid> on the
<command>cvpasswd</command> command line even though the
actual server is <hostid>cvsup-master</hostid>. Access to
<hostid>cvsup-master</hostid> should not be overused as it is
a busy machine.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Free 4-CD and DVD Sets</term>

View file

@ -2602,6 +2602,11 @@
<email>dmitry@karasik.eu.org</email></para>
</listitem>
<listitem>
<para>Dmitry Kazarov
<email>d.y.kazarov@mail.ru</email></para>
</listitem>
<listitem>
<para>Dmitry Khrustalev
<email>dima@xyzzy.machaon.ru</email></para>
@ -3366,7 +3371,7 @@
<listitem>
<para>Gary Hayers
<email>gary@hayers.net</email></para>
<email>gary@hayers.org</email></para>
</listitem>
<listitem>
@ -6834,6 +6839,11 @@
<email>mranner@inode.at</email></para>
</listitem>
<listitem>
<para>Michael Sanders
<email>mike@topcat.hypermart.net</email></para>
</listitem>
<listitem>
<para>Michael Sardo
<email>jaeger16@yahoo.com</email></para>
@ -8379,11 +8389,6 @@
<email>pius@ienet.com</email></para>
</listitem>
<listitem>
<para>Po-Chien Lin
<email>linpc@cs.nctu.edu.tw</email></para>
</listitem>
<listitem>
<para>Pomegranate
<email>daver@flag.blackened.net</email></para>
@ -8791,6 +8796,11 @@
<email>rsmith@xs4all.nl</email></para>
</listitem>
<listitem>
<para>Dr. Rolf Jansen
<email>cyclaero@gmail.com</email></para>
</listitem>
<listitem>
<para>Roman Neuhauser
<email>neuhauser@chello.cz</email></para>

View file

@ -523,6 +523,10 @@
<para>&a.randi;</para>
</listitem>
<listitem>
<para>&a.smh;</para>
</listitem>
<listitem>
<para>&a.ehaupt;</para>
</listitem>
@ -819,6 +823,10 @@
<para>&a.ian;</para>
</listitem>
<listitem>
<para>&a.achim;</para>
</listitem>
<listitem>
<para>&a.truckman;</para>
</listitem>
@ -839,6 +847,10 @@
<para>&a.avatar;</para>
</listitem>
<listitem>
<para>&a.pclin;</para>
</listitem>
<listitem>
<para>&a.yzlin;</para>
</listitem>

View file

@ -60,7 +60,7 @@
<title>The codebase</title>
<para>Most of the package building magic occurs under the
<filename>/var/portbuild</filename> directory. Unless
<filename>/a/portbuild</filename> directory. Unless
otherwise specified, all paths will be relative to
this location. <replaceable>${arch}</replaceable> will
be used to specify one of the package architectures
@ -74,15 +74,16 @@
</para>
<note>
<para>Packages are no longer built for branches 4, 5, or 6, nor
<para>FreeBSD no longer builds packages for branches 4, 5, or 6, nor
for the alpha architecture.</para>
</note>
<para>The scripts that control all of this live in
<filename role="directory">/var/portbuild/scripts/</filename>.
<para>The scripts that control all of this live in either
<filename role="directory">/a/portbuild/scripts/</filename> or.
<filename role="directory">/a/portbuild/admin/scripts/</filename>.
These are the checked-out copies from the Subversion repository at
<ulink url="http://svnweb.freebsd.org/base/projects/portbuild/scripts/">
<filename role="directory">base/projects/portbuild/scripts/</filename>
<ulink url="http://svnweb.freebsd.org/base/projects/portbuild/">
<filename role="directory">base/projects/portbuild/</filename>
</ulink>.</para>
<para>Typically, incremental builds are done that use previous
@ -109,7 +110,7 @@
</sect2>
<sect2 id="codebase-notes">
<title>Notes on the codebase</title>
<title>Historical notes on the codebase</title>
<para>Until mid-2010, the scripts were completely specific to
<hostid>pointyhat.FreeBSD.org</hostid> as the head (dispatch) node. During
@ -145,18 +146,6 @@
</listitem>
</itemizedlist>
<para>This document was originally written before these changes
were made. Where things such as script invocations have changed,
they were denoted as <literal>new codebase:</literal> as opposed
to <literal>old codebase:</literal>.</para>
<note>
<para>Up until November 2012, <hostid>pointyhat</hostid> had still
been running the old codebase. That installation has now been
permanently offlined. Therefore, all the instructions having
to do with the old codebase have been removed.</para>
</note>
<note>
<para>Also during this process, the codebase was migrated to the
<ulink url="http://svnweb.freebsd.org/base/projects/portbuild/scripts/">
@ -166,16 +155,61 @@
found in CVS</ulink>.</para>
</note>
</sect2>
<sect2 id="pointyhat-privsep">
<title>Notes on privilege separation</title>
<para>As of January 2013, a rewrite is in progress to further separate
privileges. The following concepts are introduced:</para>
<itemizedlist>
<listitem>
<para>Server-side user <username>portbuild</username> assumes all
responsiblity for operations involving builds and communicating
with the clients. This user no longer has access to
<application>sudo</application>.</para>
</listitem>
<listitem>
<para>Server-side user <username>srcbuild</username> is created
and given responsiblity for operations involving both VCS
operations and anything involving src builds for the clients.
This user does not have access to
<application>sudo</application>.</para>
</listitem>
<listitem>
<para>The server-side
<literal>ports-</literal><replaceable>arch</replaceable>
users go away.</para>
</listitem>
<listitem>
<para>None of the above server-side users have
<application>ssh</application> keys. Individual
<literal>portmgr</literal> will accomplish all those
tasks using <application>ksu</application>. (This is
still work-in-progress.)</para>
</listitem>
<listitem>
<para>The only client-side user is also named
<username>portbuild</username> and still has access to
<application>sudo</application> for the purpose of managing
jails.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="management">
<title>Build Client Management</title>
<para>The &i386; clients co-located with <hostid>pointyhat</hostid>
netboot from it (<replaceable>connected</replaceable> nodes); all
other clients (<replaceable>disconnected</replaceable> nodes)
are either self-hosted or netboot from some other
<literal>pxe</literal> host.
<para>You may set up clients to either netboot from the master
(<replaceable>connected</replaceable> nodes)
or have them either self-hosted or netboot from some other
<literal>pxe</literal> host
(<replaceable>disconnected</replaceable> nodes).
In all cases they set themselves
up at boot-time to prepare to build packages.</para>
@ -200,29 +234,31 @@
<sect1 id="setup">
<title>Jail Build Environment Setup</title>
<para>Package builds are performed in a
<para>Package builds are performed by the clients in a
<literal>jail</literal> populated by the
<filename>portbuild</filename> script using the
<filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/bindist.tar</filename>
file.</para>
<para>The <command>makeworld</command> command builds a world from the
<para>On the server, use the
<command>makeworld</command> command to build a world from the
<filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/src/</filename>
tree and installs it into
tree and install it into
<filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/bindist.tar</filename>.
The tree will
be updated first unless <literal>-novcs</literal> is
specified. It should be run as <username>root</username>:</para>
specified.</para>
<screen>&prompt.root; <userinput>/var/portbuild/scripts/makeworld <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable> [-novcs]</userinput></screen>
<screen>&prompt.root; <userinput>/a/portbuild/admin/scripts/makeworld <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable> [-novcs]</userinput></screen>
<para>The <filename>bindist.tar</filename> tarball is created from the
<para>Similiarly on the server, the
<filename>bindist.tar</filename> tarball is created from the
previously installed world by the <command>mkbindist</command>
script. It should be also be run as <username>root</username>:</para>
script.</para>
<screen>&prompt.root; <userinput>/var/portbuild/scripts/mkbindist <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>/a/portbuild/admin/scripts/mkbindist <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable></userinput></screen>
<para>The per-machine tarballs are located in
<para>The per-machine tarballs are located on the server in
<filename><replaceable>${arch}</replaceable>/clients</filename>.</para>
<para>The <filename>bindist.tar</filename> file is extracted
@ -233,6 +269,16 @@
<para>For both commands above, if
<replaceable>${buildid}</replaceable> is
<literal>latest</literal>, it may be omitted.</para>
<note>
<para>Currently the above two scripts must be run as
<username>root</username>; otherwise, the install scripts
lack sufficient permissions. This is undesirable for
security reasons. Work is in progress in -HEAD to allow
users to do installations; once that is committed, the
intention is to use that and run these two commands as
<username>srcbuild</username>.</para>
</note>
</sect1>
<sect1 id="customizing">
@ -782,7 +828,7 @@ PKG_BIN=/usr/local/sbin/pkg</programlisting>
<para>To free up resources, you will need to clean up client machines by
running <command>build cleanup</command> command. For example:</para>
<screen>&prompt.user; <userinput>/var/portbuild/scripts/build cleanup i386 8-exp 20080714120411 -full</userinput></screen>
<screen>&prompt.user; <userinput>/a/portbuild/scripts/build cleanup i386 8-exp 20080714120411 -full</userinput></screen>
<para>If you forget to do this, then the old build
<literal>jail</literal>s will not be cleaned up for 24 hours, and no
@ -797,6 +843,11 @@ PKG_BIN=/usr/local/sbin/pkg</programlisting>
and it is less than the number of jobs that <literal>loads</literal>
thinks are in use, you are in trouble.</para>
<note>
<para>The following notes about mounting only apply to
<literal>connected</literal> nodes.</para>
</note>
<para>You may have problem with the <command>umount</command>
commands hanging. If so, you are going to have to use the
<command>allgohans</command> script to run an &man.ssh.1;
@ -826,6 +877,11 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<para>You may also see messages about <literal>procfs</literal>.</para>
</note>
<note>
<para>The above is the end of the notes that apply only to
<literal>connected</literal> nodes.</para>
</note>
<para>After you have done all the above, remove the
<filename><replaceable>${arch}</replaceable>/lock</filename>
file before trying to restart the build. If you do not,
@ -872,7 +928,7 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<userinput>scripts/stats <replaceable>${branch}</replaceable></userinput>
command shows the number of packages already built.</para>
<para>Running <userinput>cat /var/portbuild/*/loads/*</userinput>
<para>Running <userinput>cat /a/portbuild/*/loads/*</userinput>
shows the client loads and number of concurrent builds in
progress. The files that have been recently updated are the clients
that are online; the others are the offline clients.</para>
@ -909,7 +965,7 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
it if not.</para>
<para>Keep an eye on &man.df.1; output. If the
<filename>/var/portbuild</filename> file system becomes full
<filename>/a/portbuild</filename> file system becomes full
then <trademark>Bad Things</trademark> happen.</para>
<para>The status of all current builds is generated periodically
@ -1014,12 +1070,7 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<screen>&prompt.user; <userinput>cd <replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable></userinput>
&prompt.user; <userinput>find distfiles > distfiles-<replaceable>${release}</replaceable></userinput></screen>
<!-- XXX MCL apparently obsolete -->
<para>This inventory file typically lives in
<filename>i386/<replaceable>${branch}</replaceable></filename>
on the cluster master.</para>
<para>This is useful to aid in periodically cleaning out
<para>You should use that output to periodically clean out
the distfiles from <hostid>ftp-master</hostid>. When space
gets tight, distfiles from recent releases can be kept while
others can be thrown away.</para>
@ -1043,6 +1094,16 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<sect1 id="uploading">
<title>Uploading Packages</title>
<note>
<para>For FreeBSD.org as of 2013, the instructions
about uploading to <hostid>ftp-master</hostid> are obsolete.
In the future, <hostid>ftp-master</hostid> will pull
from <hostid>pointyhat</hostid>, using a mechanism yet
to be implemented. However, the instructions about
<makevar>RESTRICTED</makevar> and <makevar>NO_CDROM</makevar>
must still be <emphasis>carefully</emphasis> followed.</para>
</note>
<para>Once a build has completed, packages and/or distfiles
can be transferred to <hostid>ftp-master</hostid> for
propagation to the FTP mirror network. If the build was
@ -1120,7 +1181,7 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
a new release), copy packages to the staging area on
<hostid>ftp-master</hostid> with something like the following:</para>
<screen>&prompt.root; <userinput>cd /var/portbuild/<replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable></userinput>
<screen>&prompt.root; <userinput>cd /a/portbuild/<replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable></userinput>
&prompt.root; <userinput>tar cfv - packages/ | ssh portmgr@ftp-master tar xfC - w/ports/<replaceable>${arch}</replaceable>/tmp/<replaceable>${subdir}</replaceable></userinput></screen>
<para>Then log into <hostid>ftp-master</hostid>, verify that
@ -1148,7 +1209,7 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<para>Distfiles should be transferred with the
<command>cpdistfiles</command> script:</para>
<screen>&prompt.root; <userinput>/var/portbuild/scripts/cpdistfiles <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable> [-yesreally] | tee log2</userinput></screen>
<screen>&prompt.root; <userinput>/a/portbuild/scripts/cpdistfiles <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable> [-yesreally] | tee log2</userinput></screen>
<para>Doing it by hand is deprecated.</para>
</sect1>
@ -1156,6 +1217,11 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<sect1 id="expbuilds">
<title>Experimental Patches Builds</title>
<note>
<para>Most of the information in this section is obsolete
as of 2013 and needs to be rewritten.</para>
</note>
<para>Experimental patches builds are run from time to time to
new features or bugfixes to the ports infrastructure (i.e.
<filename>bsd.port.mk</filename>), or to test large sweeping
@ -1206,21 +1272,15 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
build. This will ensure an apples-to-apples comparison
later.</para>
<!-- XXX MCL currently there is only one build cluster
<note><para>One build cluster can do the control build while the other
does the experimental patches build. This can be a great
time-saver.</para></note>
-->
<para>Once the build finishes, compare the control build failures
to those of the experimental patches build. Use the following
commands to facilitate this (this assumes the <literal>8</literal>
branch is the control branch, and the <literal>8-exp</literal>
branch is the experimental patches branch):</para>
<screen>&prompt.user; <userinput>cd /var/portbuild/i386/8-exp/errors</userinput>
<screen>&prompt.user; <userinput>cd /a/portbuild/i386/8-exp/errors</userinput>
&prompt.user; <userinput>find . -name \*.log\* | sort > /tmp/8-exp-errs</userinput>
&prompt.user; <userinput>cd /var/portbuild/i386/8/errors</userinput>
&prompt.user; <userinput>cd /a/portbuild/i386/8/errors</userinput>
&prompt.user; <userinput>find . -name \*.log\* | sort > /tmp/8-errs</userinput></screen>
<note>
@ -1283,7 +1343,7 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
rebuild of the affected packages under the control
branch:</para>
<screen>&prompt.user; <userinput>cd /var/portbuild/i386/8/ports</userinput></screen>
<screen>&prompt.user; <userinput>cd /a/portbuild/i386/8/ports</userinput></screen>
<note>
<para>The following example is obsolete</para>
@ -1296,9 +1356,9 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<!-- XXX MCL fix -->
<para>The following command will set up the control branch for
the partial build (old codebase):</para>
the partial build:</para>
<screen>&prompt.user; <userinput>/var/portbuild/scripts/dopackages.8 -noportsvcs -nobuild -novcs -nofinish</userinput></screen>
<screen>&prompt.user; <userinput>/a/portbuild/scripts/dopackages.wrapper i386 8 -noportsvcs -nobuild -novcs -nofinish</userinput></screen>
<!-- XXX MCL obsolete -->
<para>The builds must be performed from the
@ -1306,14 +1366,14 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
initially be empty except for the Makefile symlink. If this
symlink does not exist, it must be created:</para>
<screen>&prompt.user; <userinput>cd /var/portbuild/i386/8/packages/All</userinput>
<screen>&prompt.user; <userinput>cd /a/portbuild/i386/8/packages/All</userinput>
&prompt.user; <userinput>ln -sf ../../Makefile .</userinput>
&prompt.user; <userinput>make -k -j&lt;#&gt; &lt;list of packages to build&gt;</userinput></screen>
<note>
<para>&lt;#&gt; is the concurrency of the build to
attempt. It is usually the sum of the weights listed in
<filename>/var/portbuild/i386/mlist</filename> unless you have a
<filename>/a/portbuild/i386/mlist</filename> unless you have a
reason to run a heavier or lighter build.</para>
<para>The list of packages to build should be a list of package
@ -1346,17 +1406,15 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<para>Before following these steps, please coordinate with
<literal>portmgr</literal>.</para>
<note>
<para>Due to some generous donations, <literal>portmgr</literal> is
no longer looking for the loan of &i386; or <literal>amd64</literal>
systems. However, we are still interested in borrowing tier-2
systems.</para>
</note>
<sect2 id="node-requirements">
<title>Node requirements</title>
<para><literal>portmgr</literal> is still working on characterizing
<note>
<para>This section is only of interest when considering
tier-2 architectures.</para>
</note>
<para>Here are the requirement for
what a node needs to be generally useful.</para>
<itemizedlist>
@ -1436,7 +1494,8 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<filename>/usr2/</filename>.)</para>
<note>
<para>The filename <filename>chroot</filename> is a
historical remnant.</para>
historical remnant. The <command>chroot</command>
command is no longer used.</para>
</note>
</step>
</procedure>
@ -1477,8 +1536,9 @@ umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
<step>
<para>Generate a kernel config file. Include
<filename>GENERIC</filename> (or, if you are using more than
3.5G on &i386;, <filename>PAE</filename>).</para>
<filename>GENERIC</filename> (or, if on &i386;, and
you are using more than
3.5G, <filename>PAE</filename>).</para>
<para>Required options:</para>
@ -1493,9 +1553,14 @@ options SHMMAXPGS=65536
options SEMMNI=40
options SEMMNS=240
options SEMUME=40
options SEMMNU=120
options SEMMNU=120</programlisting>
options ALT_BREAK_TO_DEBUGGER</programlisting>
<para>If you are interested in debugging general
problems, you may wish to use the following.
However, for unattended operations, it is best
to leave it out:</para>
<programlisting>options ALT_BREAK_TO_DEBUGGER</programlisting>
<para>For <filename>PAE</filename>, it is not currently possible
to load modules. Therefore, if you are running an architecture
@ -1912,7 +1977,7 @@ portbuild ALL=(ALL) NOPASSWD: ALL</programlisting>
<step>
<para>Create
<filename>/var/portbuild/<replaceable>${arch}</replaceable>/clients/bindist-<replaceable>${hostname}</replaceable>.tar</filename>.</para>
<filename>/a/portbuild/<replaceable>${arch}</replaceable>/clients/bindist-<replaceable>${hostname}</replaceable>.tar</filename>.</para>
<itemizedlist>
<listitem>
@ -1951,16 +2016,16 @@ MASTER_SITE_OVERRIDE= \
<para>Hint: you will need one of these for each machine;
however, if you have multiple machines at one site, you
should create a site-specific one (e.g., in
<filename>/var/portbuild/conf/clients/</filename>)
<filename>/a/portbuild/conf/clients/</filename>)
and symlink to it.</para>
</step>
<step>
<para>Create
<filename>/var/portbuild/<replaceable>${arch}</replaceable>/portbuild-<replaceable>${hostname}</replaceable></filename>
<filename>/a/portbuild/<replaceable>${arch}</replaceable>/portbuild-<replaceable>${hostname}</replaceable></filename>
using one of the existing ones as a guide. This
file contains overrides to
<filename>/var/portbuild/<replaceable>${arch}</replaceable>/portbuild.conf</filename>.</para>
<filename>/a/portbuild/<replaceable>${arch}</replaceable>/portbuild.conf</filename>.</para>
<para>Suggested values:</para>
@ -2026,7 +2091,7 @@ ssh_cmd="/usr/local/bin/ssh"</programlisting>
<step>
<para>Populate the client's copy of
<filename>/var/portbuild/scripts/</filename> by something like
<userinput>/var/portbuild/scripts/dosetupnode <replaceable>arch</replaceable> <replaceable>major</replaceable> latest <replaceable>hostname</replaceable></userinput>.
<userinput>/a/portbuild/scripts/dosetupnode <replaceable>arch</replaceable> <replaceable>major</replaceable> latest <replaceable>hostname</replaceable></userinput>.
Verify that you now have files in that directory.</para>
</step>
@ -2071,7 +2136,7 @@ ssh_cmd="/usr/local/bin/ssh"</programlisting>
<para>Once you are sure that the client is working, tell
<application>pollmachine</application> about it by adding
it to
<filename>/var/portbuild/<replaceable>${arch}</replaceable>/mlist</filename>.</para>
<filename>/a/portbuild/<replaceable>${arch}</replaceable>/mlist</filename>.</para>
</step>
</procedure>
</sect2>
@ -2087,10 +2152,15 @@ ssh_cmd="/usr/local/bin/ssh"</programlisting>
be done to specify that the previous branch is no longer
equivalent to <literal>HEAD</literal>.</para>
<note>
<para>As
<literal>srcbuild</literal>:</para>
</note>
<itemizedlist>
<listitem>
<para>
Edit <filename>/var/portbuild/conf/server.conf</filename>
Edit <filename>/a/portbuild/conf/admin/admin.conf</filename>
with the following changes:</para>
<itemizedlist>
@ -2115,7 +2185,7 @@ ssh_cmd="/usr/local/bin/ssh"</programlisting>
</listitem>
<listitem>
<para>Run <command>/var/portbuild/updatesnap</command> manually.</para>
<para>Run <command>/a/portbuild/admin/scripts/updatesnap</command> manually.</para>
</listitem>
</itemizedlist>
</sect2>
@ -2123,24 +2193,21 @@ ssh_cmd="/usr/local/bin/ssh"</programlisting>
<sect2 id="new-branch-post-qmanager">
<title>Steps necessary after <application>qmanager</application> is started</title>
<note>
<para>Again, as
<literal>portbuild</literal>:</para>
</note>
<itemizedlist>
<listitem>
<para>For each branch that will be supported, do the following:</para>
<itemizedlist>
<listitem>
<para>Kick-start the build for the branch with:</para>
<para>As <literal>portbuild</literal>,
kick-start the build for the branch with:</para>
<screen>build create <replaceable>arch</replaceable> <replaceable>branch</replaceable></screen>
</listitem>
<listitem>
<para><link linkend="setup">Create
<para>As <literal>srcbuild</literal>,
<link linkend="setup">create
<filename>bindist.tar</filename></link>.</para>
</listitem>
</itemizedlist>
@ -2157,7 +2224,7 @@ ssh_cmd="/usr/local/bin/ssh"</programlisting>
<itemizedlist>
<listitem>
<para>Edit <filename>/var/portbuild/conf/server.conf</filename>
<para>Edit <filename>/a/portbuild/admin/conf/admin.conf</filename>
with the following changes:</para>
<itemizedlist>
@ -2184,7 +2251,7 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
<itemizedlist>
<listitem>
<para>You will probably find that the following files and
symlinks in <filename>/var/portbuild/errorlogs/</filename>
symlinks in <filename>/a/portbuild/errorlogs/</filename>
can be removed:</para>
<itemizedlist>
@ -2229,7 +2296,7 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
<itemizedlist>
<listitem>
<para>Edit <filename>/var/portbuild/conf/server.conf</filename>
<para>Edit <filename>/a/portbuild/admin/conf/admin.conf</filename>
with the following changes:</para>
<itemizedlist>
@ -2244,7 +2311,7 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
</listitem>
<listitem>
<para>Run <command>/var/portbuild/updatesnap</command> manually.</para>
<para>Run <command>/a/portbuild/admin/scripts/updatesnap</command> manually.</para>
</listitem>
<listitem>
@ -2267,50 +2334,25 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
<sect2 id="new-arch-pre-qmanager">
<title>Steps necessary before <application>qmanager</application> is started</title>
<note>
<para>The initial steps need to be done as
<literal>root</literal>.</para>
</note>
<itemizedlist>
<listitem>
<para>If it has not already been done, create the
<literal>portbuild</literal>
user and group.</para>
</listitem>
<listitem>
<screen>mkdir /var/portbuild/<replaceable>arch</replaceable></screen>
</listitem>
<listitem>
<para>Create a new <application>zfs</application> filesystem:</para>
<screen>&prompt.root; zfs create -o mountpoint=/a/portbuild/<replaceable>arch</replaceable> a/portbuild/<replaceable>arch</replaceable></screen>
</listitem>
<listitem>
<screen>&prompt.root; chown portbuild:portbuild /var/portbuild/<replaceable>arch</replaceable>;
&prompt.root; chmod 775 /var/portbuild/<replaceable>arch</replaceable>;
&prompt.root; cd /var/portbuild/<replaceable>arch</replaceable></screen>
</listitem>
<listitem>
<para>Create the <filename>.ssh</filename> directory.</para>
</listitem>
</itemizedlist>
<note>
<para>The next steps are most easily done as user
<literal>portbuild</literal>.</para>
</note>
<note>
<para>The following assumes you have already run
<literal>mkportbuild</literal>.</para>
</note>
<itemizedlist>
<listitem>
<para>Create an archive directory for buildlogs and errorlogs
under <filename>archive/</filename>.</para>
</listitem>
<para>As the <literal>portbuild</literal> user, run</para>
<screen>&prompt.user; /a/portbuild/admin/tools/addarch <replaceable>arch</replaceable></screen>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<para>For each branch that will be supported, do the following:</para>
@ -2354,8 +2396,10 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
</listitem>
<listitem>
<para>Create a fresh <filename>portbuild.conf</filename> file
from one of the ones for another architecture.</para>
<para>Edit <filename>portbuild.conf</filename>
from one of the ones for another architecture.
<literal>addarch</literal> will have created a default
one for you.</para>
</listitem>
<listitem>
@ -2364,16 +2408,6 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
files as appropriate.</para>
</listitem>
<listitem>
<screen>&prompt.root; cd .ssh &amp;&amp; ssh-keygen</screen>
</listitem>
<listitem>
<para>If desired,
edit the <filename>.ssh/config</filename> file for
convenience in using <application>ssh</application>.</para>
</listitem>
<listitem>
<para>If you need to create any tunnels:</para>
@ -2381,7 +2415,7 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
<step>
<para>Make a private configuration directory:</para>
<screen>&prompt.root; mkdir /var/portbuild/conf/<replaceable>arch</replaceable></screen>
<screen>&prompt.root; mkdir /a/portbuild/conf/<replaceable>arch</replaceable></screen>
</step>
<step>
@ -2393,26 +2427,26 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
</itemizedlist>
<note>
<para>Once again as <literal>root</literal>:</para>
<para>As <literal>srcbuild</literal>:</para>
</note>
<itemizedlist>
<listitem>
<para>Add <replaceable>arch</replaceable> to <makevar>SUPPORTED_ARCHS</makevar> in
<filename>/var/portbuild/conf/server.conf</filename>.</para>
<filename>/a/portbuild/admin/conf/admin.conf</filename>.</para>
</listitem>
<listitem>
<para>Add the <replaceable>arch</replaceable> directory to
<filename>/var/portbuild/scripts/zbackup</filename> and
<filename>/var/portbuild/scripts/zexpire</filename>.</para>
<filename>/a/portbuild/admin/scripts/zbackup</filename>.
(This is a hack and should go away.)</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<para>Add an appropriate <replaceable>arch</replaceable> entry for
<filename>/var/portbuild/scripts/dologs</filename> to the portbuild
<para>Enable the appropriate <replaceable>arch</replaceable> entry for
<filename>/a/portbuild/scripts/dologs</filename> to the portbuild
<filename>crontab</filename>. (This is a hack and should go away.)</para>
</listitem>
</itemizedlist>
@ -2422,16 +2456,10 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
<title>Steps necessary after <application>qmanager</application> is started</title>
<note>
<para>Again as <literal>root</literal>:</para>
<para>Again as <literal>srcbuild</literal>:</para>
</note>
<itemizedlist>
<listitem>
<para>Tell <application>qmanager</application> about the arch:</para>
<screen>python <replaceable>path</replaceable>/qmanager/qclient add_acl name=ports-<replaceable>arch</replaceable> uidlist=ports-<replaceable>arch</replaceable> gidlist=portbuild sense=1</screen>
</listitem>
<listitem>
<para>For each branch that will be supported, do the following:</para>
@ -2452,54 +2480,6 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
<para>Please talk to Mark Linimon before making any changes
to this section.</para>
<sect2 id="pointyhat-privsep">
<title>Notes on privilege separation</title>
<para>As of January 2013, a rewrite is in progress to further separate
privileges. The following concepts are introduced:</para>
<itemizedlist>
<listitem>
<para>Server-side user <username>portbuild</username> assumes all
responsiblity for operations involving builds and communicating
with the clients. This user no longer has access to
<application>sudo</application>.</para>
</listitem>
<listitem>
<para>Server-side user <username>srcbuild</username> is created
and given responsiblity for operations involving both VCS
operations and anything involving src builds for the clients.
This user does not have access to
<application>sudo</application>.</para>
</listitem>
<listitem>
<para>The server-side
<literal>ports-</literal><replaceable>arch</replaceable>
users go away.</para>
</listitem>
<listitem>
<para>None of the above server-side users have
<application>ssh</application> keys. Individual
<literal>portmgr</literal> will accomplish all those
tasks using <application>ksu</application>. (This is
still work-in-progress.)</para>
</listitem>
<listitem>
<para>The only client-side user is also named
<username>portbuild</username> and still has access to
<application>sudo</application> for the purpose of managing
jails.</para>
</listitem>
</itemizedlist>
<para>This document has not yet been updated with the latest changes.
</para>
</sect2>
<sect2 id="pointyhat-basics">
<title>Basic installation</title>
@ -2515,23 +2495,12 @@ zfs destroy -r a/snap/src-<replaceable>old-branch</replaceable></screen>
</step>
<step>
<para>Export that value for a later initialization step:</para>
<screen>&prompt.root; export PORTBUILD_USER=<replaceable>portbuild</replaceable></screen>
</step>
<step>
<para>Similarly, create a user to own the <application>svn</application>
repository, such as <literal>srcbuild</literal>. It should have the
<para>Similarly, create a user to own the administration functions
and manage the <application>svn</application>
repositories, such as <literal>srcbuild</literal>. It should have the
<literal>'*'</literal> password.</para>
</step>
<step>
<para>Export that value for a later initialization step:</para>
<screen>&prompt.root; export SRCBUILD_USER=<replaceable>srcbuild</replaceable></screen>
</step>
<step>
<para>Add the following to <filename>/boot/loader.conf</filename>:</para>
@ -2676,7 +2645,56 @@ sysutils/zfs-stats</programlisting>
<para>The following steps need to be done as euid root.</para>
<para>Here is a quick example:</para>
<example>
<title>The contents of example file <filename>portbuild/tools/example_install</filename></title>
<screen>
#!/bin/sh
#
# example script to drive the "mkportbuild" kickstart file
#
export PORTBUILD_USER=portbuild
export SRCBUILD_USER=srcbuild
export ZFS_VOLUME=a
export ZFS_MOUNTPOINT=/a
export VCS_REPOSITORY=svn://svn0.us-east.FreeBSD.org
#
# create the zpool. the examples here are just suggestions and need to be
# customized for your site.
#
# simple examples:
# zpool create ${ZFS_VOLUME} da1
# zpool create ${ZFS_VOLUME} gprootfs
# more complex example:
# zpool create ${ZFS_VOLUME} mirror da1 da2 mirror da3 da4 mirror da5 da6 mirror da7 da8
#
# check out the kickstart file and run it
#
mkdir -p tmp
svn checkout ${VCS_REPOSITORY}/base/projects/portbuild/admin/tools tmp
sh -x ./tmp/mkportbuild
</screen>
</example>
<para>Here is a detailed explanation of the example:</para>
<procedure>
<step>
<para>Export the value of <makevar>PORTBUILD_USER</makevar>:</para>
<screen>&prompt.root; export PORTBUILD_USER=<replaceable>portbuild</replaceable></screen>
</step>
<step>
<para>Export the value of <makevar>SRCBUILD_USER</makevar>:</para>
<screen>&prompt.root; export SRCBUILD_USER=<replaceable>srcbuild</replaceable></screen>
</step>
<step>
<para>Pick a <application>zfs</application> volume name and export
it. We have used <replaceable>a</replaceable> so far to date.</para>
@ -2702,9 +2720,11 @@ sysutils/zfs-stats</programlisting>
</example>
<note>
<para>We will define a <application>zfs</application>
<literal>permission set</literal> below, so that the
<replaceable>portbuild</replaceable> user may administer this
<para>The kickstart script defines <application>zfs</application>
<literal>permission sets</literal>, so that the
<replaceable>srcbuild</replaceable> user and
<replaceable>portbuild</replaceable> user may administer
subdirectories of this
volume without having to have root privileges.</para>
</note>
</step>
@ -2732,41 +2752,26 @@ sysutils/zfs-stats</programlisting>
<screen>&prompt.root; sh /home/<replaceable>portbuild</replaceable>/<replaceable>tmp</replaceable>/mkportbuild</screen>
<para>This will accomplish all the following 5 steps:</para>
<para>This will accomplish all the following steps:</para>
<procedure>
<!-- begin of whitespace-broken area -->
<step>
<para>Create the <filename>portbuild</filename> directory:</para>
<screen>&prompt.root; mkdir -p ${ZFS_MOUNTPOINT}/portbuild</screen>
<para>Create the <filename>portbuild</filename> directory</para>
</step>
<step>
<para>Create and mount a new <application>zfs</application>
filesystem on it:</para>
<screen>zfs create -o mountpoint=${ZFS_MOUNTPOINT}/portbuild ${ZFS_VOLUME}/portbuild</screen>
filesystem on it</para>
</step>
<step>
<para>Set up the directory:</para>
<screen>&prompt.root; chown ${PORTBUILD_USER}:${PORTBUILD_USER} ${ZFS_MOUNTPOINT}/portbuild
&prompt.root; chmod 775 ${ZFS_MOUNTPOINT}/portbuild
&prompt.root; ln -sf ${ZFS_MOUNTPOINT}/portbuild /var/portbuild</screen>
<note>
<para>The <command>ln</command> is necessary due to a number
of hardcoded paths. This is a bug.</para>
</note>
<para>Set up the directory</para>
</step>
<step>
<para>Set up the initial repository:</para>
<screen>&prompt.user; svn checkout ${VCS_REPOSITORY}/base/projects/portbuild ${ZFS_MOUNTPOINT}/portbuild</screen>
</step>
<!-- end of whitespace-broken area -->
@ -2774,14 +2779,69 @@ sysutils/zfs-stats</programlisting>
<para>Set up the <application>zfs</application>
<literal>permission sets</literal>.</para>
</step>
<step>
<para>Split ownerships of subdirectories such that
<replaceable>PORTBUILD_USER</replaceable> owns, and
only owns, files that are used to manage builds and
interact with slaves. The more trustable user
<replaceable>SRCBUILD_USER</replaceable> now owns
everything else.</para>
</step>
</procedure>
</step>
</procedure>
</sect2>
<sect2 id="portbuild-repo-configuration">
<title>Configuring the <application>portbuild</application> files</title>
<sect2 id="srcbuild-user-configuration">
<title>Configuring the <application>srcbuild</application>-owned files</title>
<procedure>
<step>
<para>Configure the server by making the following changes to
<filename>/<replaceable>a</replaceable>/portbuild/admin/conf/admin.conf</filename>:</para>
<itemizedlist>
<listitem>
<para>Set <makevar>SUPPORTED_ARCHS</makevar> to the
list of architectures you wish to build packages for.</para>
</listitem>
<listitem>
<para>For each source branch you will be building for, set
<makevar>SRC_BRANCHES</makevar> and
<makevar>SRC_BRANCH_<replaceable>branch</replaceable>_SUBDIR</makevar>
as detailed in <xref linkend="new-branch-pre-qmanager"/>.
You should not need to change
<makevar>SRC_BRANCHES_PATTERN</makevar>.</para>
</listitem>
<listitem>
<para>Set <makevar>ZFS_VOLUME</makevar> and
<makevar>ZFS_MOUNTPOINT</makevar> to whatever you
chose above.</para>
</listitem>
<listitem>
<para>Set <makevar>VCS_REPOSITORY</makevar> to whatever
you chose above.</para>
</listitem>
<listitem>
<para>Set <makevar>MASTER_URL</makevar> to the http
URL of your server. This will be stamped into the
package build logs and the indices thereof.</para>
</listitem>
</itemizedlist>
<para>Most of the other default values should be fine.</para>
</step>
</procedure>
</sect2>
<sect2 id="portbuild-user-configuration">
<title>Configuring the <application>portbuild</application>-owned files</title>
<procedure>
<step>
@ -2823,11 +2883,7 @@ sysutils/zfs-stats</programlisting>
<filename>/<replaceable>a</replaceable>/portbuild/conf/server.conf</filename>:</para>
<itemizedlist>
<listitem>
<para>Set <makevar>SUPPORTED_ARCHS</makevar> to the
list of architectures you wish to build packages for.</para>
</listitem>
<!--
<listitem>
<para>For each source branch you will be building for, set
<makevar>SRC_BRANCHES</makevar> and
@ -2842,6 +2898,7 @@ sysutils/zfs-stats</programlisting>
<makevar>ZFS_MOUNTPOINT</makevar> to whatever you
chose above.</para>
</listitem>
-->
<listitem>
<para>Set <makevar>UPLOAD_DIRECTORY</makevar>,
@ -2850,6 +2907,7 @@ sysutils/zfs-stats</programlisting>
for your site.</para>
</listitem>
<!--
<listitem>
<para>Set <makevar>VCS_REPOSITORY</makevar> to whatever
you chose above.</para>
@ -2860,6 +2918,7 @@ sysutils/zfs-stats</programlisting>
URL of your server. This will be stamped into the
package build logs and the indices thereof.</para>
</listitem>
-->
</itemizedlist>
<para>Most of the other default values should be fine.</para>
@ -2883,7 +2942,7 @@ sysutils/zfs-stats</programlisting>
<procedure>
<step>
<para>Copy the following files from
<para>As <literal>root</literal>, copy the following files from
<filename>/a/portbuild/admin/etc/rc.d/</filename> to
<filename>/usr/local/etc/rc.d/</filename>:</para>
@ -3020,7 +3079,7 @@ qmanager</programlisting>
<listitem>
<para>Note the time and failure mode (e.g., paste in the
relevant console output) in
<filename>/var/portbuild/<replaceable>${arch}</replaceable>/reboots</filename></para>
<filename>/a/portbuild/<replaceable>${arch}</replaceable>/reboots</filename></para>
</listitem>
<listitem>

View file

@ -29,6 +29,8 @@
<year>2004</year>
<year>2005</year>
<year>2006</year>
<year>2012</year>
<year>2013</year>
<holder>The FreeBSD Documentation Project</holder>
</copyright>

View file

@ -184,7 +184,7 @@ Timecounter "i8254" frequency 1193182 Hz</screen></para></entry>
time.</para>
<para>As mentioned previously, the <literal>INT 0x19</literal>
instruction loads an MBR, i.e. the <filename>boot0</filename>
instruction loads an MBR, i.e., the <filename>boot0</filename>
content, into the memory at address 0x7c00. Taking a look at
the file <filename>sys/boot/i386/boot0/boot0.S</filename> can
give a guess at what is happening there - this is the boot
@ -317,7 +317,7 @@ boot2: boot2.ldr boot2.bin ${BTX}/btx/btx
link the binary. BTX, which stands for BooT eXtender, is a
piece of code that provides a protected mode environment for the
program, called the client, that it is linked with. So
<literal>boot2</literal> is a BTX client, i.e. it uses the
<literal>boot2</literal> is a BTX client, i.e., it uses the
service provided by BTX.</para>
<indexterm><primary>linker</primary></indexterm>
@ -707,7 +707,7 @@ begin:</programlisting>
at a 4Gb boundary. Therefore, the instruction's linear
virtual address for this example would just be the value of
EIP. Segment registers such as CS, DS etc are the selectors,
i.e. indexes, into GDT (to be more precise, an index is not a
i.e., indexes, into GDT (to be more precise, an index is not a
selector itself, but the INDEX field of a selector). FreeBSD's
GDT holds descriptors for 15 selectors per CPU:</para>
@ -918,7 +918,7 @@ __asm(".previous");</programlisting>
<literal>__asm</literal> is. The third
<literal>__asm</literal> instruction marks the end of a
section. If a directive with the same section name occurred
before, the content, i.e. the 32-bit value, will be appended
before, the content, i.e., the 32-bit value, will be appended
to the existing section, so forming an array of 32-bit
pointers.</para>

View file

@ -9,16 +9,16 @@
<chapterinfo>
<authorgroup>
<author>
<firstname>Murray</firstname>
<surname>Stokely</surname>
<contrib>Written by </contrib>
<firstname>Murray</firstname>
<surname>Stokely</surname>
<contrib>Written by </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>J&ouml;rg</firstname>
<surname>Wunsch</surname>
<contrib>Based on intro(4) manual page by </contrib>
<firstname>J&ouml;rg</firstname>
<surname>Wunsch</surname>
<contrib>Based on intro(4) manual page by </contrib>
</author>
</authorgroup>
</chapterinfo>
@ -43,7 +43,6 @@
linker facility `kld'.</para>
<indexterm><primary>device nodes</primary></indexterm>
<indexterm><primary>MAKEDEV</primary></indexterm>
<para>Most devices in a &unix;-like operating system are accessed
through device-nodes, sometimes also called special files.
@ -67,26 +66,30 @@
a running kernel without constantly rebooting to test
changes.</para>
<para>The kld interface is used through the following
privileged commands:
<indexterm><primary>kernel
modules</primary><secondary>loading</secondary></indexterm>
<indexterm>
<primary>kernel modules</primary>
<secondary>loading</secondary>
</indexterm>
<indexterm><primary>kernel modules</primary><secondary>unloading</secondary></indexterm>
<indexterm><primary>kernel modules</primary><secondary>listing</secondary></indexterm>
<para>The kld interface is used through:</para>
<itemizedlist>
<listitem><simpara><command>kldload</command> - loads a new kernel
module</simpara></listitem>
<listitem><simpara><command>kldunload</command> - unloads a kernel
module</simpara></listitem>
<listitem><simpara><command>kldstat</command> - lists the currently loaded
modules</simpara></listitem>
<listitem>
<simpara><command>kldload</command> - loads a new kernel
module</simpara></listitem>
<listitem>
<simpara><command>kldunload</command> - unloads a kernel
module</simpara></listitem>
<listitem>
<simpara><command>kldstat</command> - lists loaded
modules</simpara></listitem>
</itemizedlist>
</para>
<para>Skeleton Layout of a kernel module</para>
<programlisting>/*
<programlisting>/*
* KLD Skeleton
* Inspired by Andrew Reiter's Daemonnews article
*/
@ -135,62 +138,22 @@ DECLARE_MODULE(skeleton, skel_mod, SI_SUB_KLD, SI_ORDER_ANY);</programlisting>
<sect2>
<title>Makefile</title>
<para>FreeBSD provides a makefile include that you can use to
quickly compile your kernel addition.</para>
<para>&os; provides a system makefile to simplify compiling a
kernel module.</para>
<programlisting>SRCS=skeleton.c
KMOD=skeleton
.include &lt;bsd.kmod.mk&gt;</programlisting>
<para>Simply running <command>make</command> with this makefile
will create a file <filename>skeleton.ko</filename> that can
be loaded into your system by typing:
<screen>&prompt.root; <userinput>kldload -v ./skeleton.ko</userinput></screen>
</para>
<para>Running <command>make</command> with this makefile
will create a file <filename>skeleton.ko</filename> that can
be loaded into the kernel by typing:</para>
<screen>&prompt.root; <userinput>kldload -v ./skeleton.ko</userinput></screen>
</sect2>
</sect1>
<sect1 id="driverbasics-access">
<title>Accessing a device driver</title>
<para>&unix; provides a common set of system calls for user
applications to use. The upper layers of the kernel dispatch
these calls to the corresponding device driver when a user
accesses a device node. The <command>/dev/MAKEDEV</command>
script makes most of the device nodes for your system but if you
are doing your own driver development it may be necessary to
create your own device nodes with <command>mknod</command>.
</para>
<sect2>
<title>Creating static device nodes</title>
<indexterm><primary>device nodes</primary><secondary>static</secondary></indexterm>
<indexterm><primary>mknod</primary></indexterm>
<para>The <command>mknod</command> command requires four
arguments to create a device node. You must specify the name
of the device node, the type of device, the major number of
the device, and the minor number of the device.</para>
</sect2>
<sect2>
<title>Dynamic device nodes</title>
<indexterm><primary>device nodes</primary><secondary>dynamic</secondary></indexterm>
<indexterm><primary>devfs</primary></indexterm>
<para>The device filesystem, or devfs, provides access to the
kernel's device namespace in the global filesystem namespace.
This eliminates the problems of potentially having a device
driver without a static device node, or a device node without
an installed device driver. Devfs is still a work in
progress, but it is already working quite nicely.</para>
</sect2>
</sect1>
<sect1 id="driverbasics-char">
<title>Character Devices</title>
@ -201,8 +164,8 @@ KMOD=skeleton
the source tree.</para>
<para>This simple example pseudo-device remembers whatever values
you write to it and can then supply them back to you when you
read from it.</para>
are written to it and can then echo them back when
read.</para>
<example>
<title>Example of a Sample Echo Pseudo-Device Driver for
@ -382,8 +345,7 @@ echo_write(struct cdev *dev __unused, struct uio *uio, int ioflag __unused)
DEV_MODULE(echo,echo_loader,NULL);</programlisting>
</example>
<para>With this driver loaded you should now be able to type
something like:</para>
<para>With this driver loaded try:</para>
<screen>&prompt.root; <userinput>echo -n "Test Data" &gt; /dev/echo</userinput>
&prompt.root; <userinput>cat /dev/echo</userinput>
@ -398,6 +360,7 @@ Closing device "echo".</screen>
<title>Block Devices (Are Gone)</title>
<indexterm><primary>block devices</primary></indexterm>
<para>Other &unix; systems may support a second type of disk
device known as block devices. Block devices are disk devices
for which the kernel provides caching. This caching makes
@ -418,8 +381,7 @@ Closing device "echo".</screen>
(partition) to two devices with different semantics significantly
complicated the relevant kernel code &os; dropped support for
cached disk devices as part of the modernization of the disk I/O
infrastructure.
</para>
infrastructure.</para>
</sect1>
<sect1 id="driverbasics-net">

View file

@ -31,7 +31,7 @@
</authorgroup>
</chapterinfo>
<title>ISA device drivers</title>
<title>ISA Device Drivers</title>
<sect1 id="isa-driver-synopsis">
<title>Synopsis</title>
@ -49,7 +49,7 @@
</sect1>
<sect1 id="isa-driver-basics">
<title>Basic information</title>
<title>Basic Information</title>
<para>A typical ISA driver would need the following include
files:</para>
@ -208,9 +208,9 @@
</sect1>
<sect1 id="isa-driver-device-t">
<title>Device_t pointer</title>
<title><structname>device_t</structname> Pointer</title>
<para><structname>Device_t</structname> is the pointer type for
<para><structname>device_t</structname> is the pointer type for
the device structure. Here we consider only the methods
interesting from the device driver writer's standpoint. The
methods to manipulate values in the device structure
@ -277,8 +277,8 @@
</sect1>
<sect1 id="isa-driver-config">
<title>Configuration file and the order of identifying and probing
during auto-configuration</title>
<title>Configuration File and the Order of Identifying and Probing
During Auto-Configuration</title>
<indexterm><primary>ISA</primary><secondary>probing</secondary></indexterm>
@ -593,7 +593,7 @@
<listitem>
<para><emphasis>RF_TIMESHARE</emphasis> - resource may be
time-shared by multiple drivers, i.e. allocated at the
time-shared by multiple drivers, i.e., allocated at the
same time by many but activated only by one at any given
moment of time.</para>
</listitem>
@ -731,7 +731,7 @@
</sect1>
<sect1 id="isa-driver-busmem">
<title>Bus memory mapping</title>
<title>Bus Memory Mapping</title>
<para>In many cases data is exchanged between the driver and the
device through the memory. Two variants are possible:</para>
@ -849,7 +849,7 @@
the future <function>bus_dmamem_alloc()</function> but
not <function>bus_dmamap_create()</function> calls.
Must be power of 2. If the memory is planned to be used
in non-cascaded DMA mode (i.e. the DMA addresses will be
in non-cascaded DMA mode (i.e., the DMA addresses will be
supplied not by the device itself but by the ISA DMA
controller) then the boundary must be no larger than
64KB (64*1024) due to the limitations of the DMA

View file

@ -46,10 +46,8 @@
gains <literal>root</literal> within the <application>jail</application>,
it is only an annoyance, and not a devastation. This article mainly
focuses on the internals (source code) of <application>jail</application>.
If you are looking for a how-to on setting up a
<application>jail</application>, I suggest you look at my other article
in Sys Admin Magazine, May 2001, entitled "Securing FreeBSD using
<application>Jail</application>."</para>
For information on how to set up a jail see the <ulink
url="&url.books.handbook;/jails.html">handbook entry on jails</ulink>.</para>
<sect1 id="jail-arch">
<title>Architecture</title>
@ -139,7 +137,7 @@ j.ip_number = ntohl(in.s_addr);</programlisting>
</sect3>
<sect3>
<title>Jailing The Process</title>
<title>Jailing the Process</title>
<para>Finally, the userland program jails the process.
<application>Jail</application> now becomes an imprisoned
@ -224,7 +222,7 @@ SYSCTL_INT(_security_jail, OID_AUTO, mount_allowed, CTLFLAG_RW,
</sect3>
<sect3>
<title>&man.jail.2; system call</title>
<title>&man.jail.2; System Call</title>
<para>Like all system calls, the &man.jail.2; system call takes
two arguments, <literal>struct thread *td</literal> and
@ -617,7 +615,7 @@ socreate(int dom, struct socket **aso, int type, int proto,
contains the port, address, length and domain family of the socket
which is to be bound. Basically, this disallows any processes from
<application>jail</application> to be able to specify the address
that doesn't belong to the <application>jail</application> in which
that does not belong to the <application>jail</application> in which
the calling process exists.</para>
<programlisting><filename>/usr/src/sys/netinet/in_pcb.c</filename>:

View file

@ -123,7 +123,7 @@ KOBJMETHOD(NAME, FUNC)</programlisting>
</sect2>
<sect2>
<title>Creating an interface template</title>
<title>Creating an Interface Template</title>
<indexterm><primary>Kernel Objects</primary>
<secondary>interface</secondary></indexterm>

View file

@ -5888,7 +5888,7 @@ Label destruction o</programlisting>
or <errorcode>EPERM</errorcode> for lack of privilege.
This call may be made in a number of situations, including
as a result of calls to &man.open.2; with
<symbol>O_CREAT</symbol>, &man.mknod.2;, &man.mkfifo.2;, and
<symbol>O_CREAT</symbol>, &man.mkfifo.2;, and
others.</para>
</sect3>

View file

@ -64,7 +64,7 @@
<para>A device driver is a software component which provides the
interface between the kernel's generic view of a peripheral
(e.g. disk, network adapter) and the actual implementation of
(e.g., disk, network adapter) and the actual implementation of
the peripheral. The <emphasis>device driver interface
(DDI)</emphasis> is the defined interface between the kernel
and the device driver component.</para>
@ -191,7 +191,7 @@
Alpha's ISA bus device. On IA-32, ISA and PCI interrupts are
both managed by the top-level nexus device. For both ports,
memory and port address space is managed by a single entity -
nexus for IA-32 and the relevant chipset driver on Alpha (e.g.
nexus for IA-32 and the relevant chipset driver on Alpha (e.g.,
CIA or tsunami).</para>
<para>In order to normalize access to memory and port mapped

View file

@ -315,15 +315,6 @@ product BUFFALO WLI_CF_S11G 0x030b BUFFALO AirStation 11Mbps CF WLAN</programlis
<programlisting>product BUFFALO WLI2_CF_S11G 0x030c BUFFALO AirStation ultra 802.11b CF</programlisting>
<para>At present, there is a
manual step to regenerate
<filename>pccarddevs.h</filename>, used to convey these
identifiers to the client driver. The following steps must be
done before you can use them in the driver:</para>
<screen>&prompt.root; <userinput>cd src/sys/dev/pccard</userinput>
&prompt.root; <userinput>make -f Makefile.pccarddevs</userinput></screen>
<para>Once these steps are complete, the card can be added to
the driver. That is a simple operation of adding one
line:</para>

View file

@ -69,7 +69,7 @@
</sect1>
<sect1 id="scsi-general">
<title>General architecture</title>
<title>General Architecture</title>
<indexterm><primary>Common Access Method (CAM)</primary></indexterm>
@ -166,7 +166,7 @@
bus? The answer given in the comments to the CAM code is:
either way, as the driver's author prefers.</para>
<para>The arguments are:
<para>The arguments are:</para>
<itemizedlist>
<listitem><para><function>action_func</function> - pointer to
@ -226,7 +226,6 @@
depth. It depends on the abilities of the SCSI
adapter.</para></listitem>
</itemizedlist>
</para>
<indexterm><primary>SCSI</primary><secondary>adapter</secondary></indexterm>
<para>Finally we register the SCSI buses associated with our SCSI
@ -238,7 +237,7 @@
}</programlisting>
<para>If there is one <structname>devq</structname> structure per
SCSI bus (i.e. we consider a card with multiple buses as
SCSI bus (i.e., we consider a card with multiple buses as
multiple cards with one bus each) then the bus number will
always be 0, otherwise each bus on the SCSI card should be get a
distinct number. Each bus needs its own separate structure
@ -562,7 +561,7 @@
to zero.</para></listitem>
<listitem><para><emphasis>tag_action</emphasis> - the kind
of tag to use:
of tag to use:</para>
<itemizedlist>
<listitem><para>CAM_TAG_ACTION_NONE - do not use tags for this
@ -574,7 +573,7 @@
itself</para></listitem>
</itemizedlist>
</para></listitem>
</listitem>
</itemizedlist>

View file

@ -125,7 +125,7 @@
</sect2>
<sect2>
<title>Read Locks versus Write Locks</title>
<title>Read Locks Versus Write Locks</title>
<indexterm><primary>read locks</primary></indexterm>
<indexterm><primary>write locks</primary></indexterm>
@ -655,7 +655,7 @@
needed.
Those items that do not matter if the race is won or lost will
not be locked, since they tend to be read all over the place
(e.g. &man.device.get.softc.9;). There will be relatively few
(e.g., &man.device.get.softc.9;). There will be relatively few
changes to the newbus data structures, so a single lock should
be sufficient and not impose a performance penalty.</para>
</sect2>

View file

@ -17,7 +17,7 @@
<!-- 23 November 2001 -->
</chapterinfo>
<title>Sound subsystem</title>
<title>Sound Subsystem</title>
<sect1 id="oss-intro">
<title>Introduction</title>
@ -96,7 +96,7 @@
</sect1>
<sect1 id="pcm-probe-and-attach">
<title>Probing, attaching, etc.</title>
<title>Probing, Attaching, etc.</title>
<para>Sound drivers probe and attach in almost the same way as any
hardware driver module. You might want to look at the <link
@ -213,10 +213,10 @@
<devicename>pcm</devicename>.</para>
<sect2>
<title>The CHANNEL interface</title>
<title>The CHANNEL Interface</title>
<sect3>
<title>Common notes for function parameters</title>
<title>Common Notes for Function Parameters</title>
<para>Sound drivers usually have a private data structure to
describe their device, and one structure for each play and
@ -234,7 +234,7 @@
</sect3>
<sect3>
<title>Overview of data transfer operations</title>
<title>Overview of Data Transfer Operations</title>
<para>For sound data transfers, the
<devicename>pcm</devicename> core and the sound drivers
@ -521,7 +521,7 @@
</sect3>
<sect3>
<title>More functions</title>
<title>More Functions</title>
<para><function>channel_reset()</function>,
<function>channel_resetdone()</function>, and
@ -535,7 +535,7 @@
</sect2>
<sect2>
<title>The MIXER interface</title>
<title>The MIXER Interface</title>
<sect3 id="xxxmixer-init">
<title>mixer_init</title>
@ -656,7 +656,7 @@
</sect2>
<sect2>
<title>The AC97 interface</title>
<title>The AC97 Interface</title>
<indexterm><primary>AC97</primary></indexterm>

View file

@ -300,7 +300,7 @@
<title>USB Device Information</title>
<sect2>
<title>Device configuration information</title>
<title>Device Configuration Information</title>
<para>Each device provides different levels of configuration
information. Each device has one or more configurations, of
@ -466,7 +466,7 @@
</sect1>
<sect1 id="usb-devprobe">
<title>Device probe and attach</title>
<title>Device Probe and Attach</title>
<indexterm><primary>USB</primary><secondary>probe</secondary></indexterm>
<para>After the notification by the hub that a new device has been
@ -506,7 +506,7 @@
attached.</para>
<sect2>
<title>Device disconnect and detach</title>
<title>Device Disconnect and Detach</title>
<indexterm><primary>USB</primary><secondary>disconnect</secondary></indexterm>
<para>A device driver should expect to receive errors during any

View file

@ -20,8 +20,8 @@
<title>Virtual Memory System</title>
<sect1 id="vm-physmem">
<title>Management of physical
memory&mdash;<literal>vm_page_t</literal></title>
<title>Management of Physical
Memory&mdash;<literal>vm_page_t</literal></title>
<indexterm><primary>virtual memory</primary></indexterm>
<indexterm><primary>physical memory</primary></indexterm>
@ -73,7 +73,7 @@
<para>FreeBSD dynamically tunes its paging queues and attempts to
maintain reasonable ratios of pages in the various queues as well as
attempts to maintain a reasonable breakdown of clean vs. dirty pages.
attempts to maintain a reasonable breakdown of clean versus dirty pages.
The amount of rebalancing that occurs depends on the system's memory
load. This rebalancing is implemented by the pageout daemon and
involves laundering dirty pages (syncing them with their backing
@ -87,8 +87,8 @@
</sect1>
<sect1 id="vm-cache">
<title>The unified buffer
cache&mdash;<literal>vm_object_t</literal></title>
<title>The Unified Buffer
Cache&mdash;<literal>vm_object_t</literal></title>
<indexterm><primary>unified buffer cache</primary></indexterm>
<indexterm><primary><literal>vm_object_t</literal> structure</primary></indexterm>
@ -199,7 +199,7 @@
</sect1>
<sect1 id="vm-tuning">
<title>Tuning the FreeBSD VM system</title>
<title>Tuning the FreeBSD VM System</title>
<para>A concerted effort has been made to make the FreeBSD kernel
dynamically tune itself. Typically you do not need to mess with

View file

@ -430,15 +430,14 @@
<itemizedlist>
<listitem>
<para><literal>HEAD</literal> for amd64, arm, i386,
i386/pc98, ia64, mips, powerpc, powerpc64, and sparc64,
which takes approximately four hours.</para>
i386/pc98, ia64, mips, powerpc, powerpc64, and
sparc64.</para>
</listitem>
<listitem>
<para><literal>RELENG_9</literal> and supported
9.<replaceable>X</replaceable> branches for amd64, arm,
i386, i386/pc98, ia64, mips, powerpc, powerpc64, and
sparc64, which takes approximately three and a half
hours.</para>
sparc64.</para>
</listitem>
</itemizedlist>
@ -449,8 +448,7 @@
<listitem>
<para><literal>RELENG_8</literal> and supported
8.<replaceable>X</replaceable> branches for amd64, i386,
i386/pc98, ia64, mips, powerpc and sparc64, and each
branch takes approximately six hours.</para>
i386/pc98, ia64, mips, powerpc and sparc64.</para>
</listitem>
</itemizedlist>
@ -461,8 +459,7 @@
<listitem>
<para><literal>RELENG_7</literal> and supported
7.<replaceable>X</replaceable> branches for amd64, i386,
i386/pc98, ia64, powerpc, and sparc64, and each branch
takes approximately three hours.</para>
i386/pc98, ia64, powerpc, and sparc64.</para>
</listitem>
</itemizedlist>
</section>
@ -485,13 +482,6 @@
<para>Apache is set up to use <filename>index.cgi</filename>
as <literal>DirectoryIndex</literal>.</para>
</listitem>
<listitem>
<para>A <ulink
url="https://www.varnish-cache.org/">Varnish</ulink>
instance in front of Apache ensures that
<filename>index.cgi</filename> does not need to run more
than once every two minutes.</para>
</listitem>
</itemizedlist>
</section>
</section>

View file

@ -185,9 +185,8 @@
writing <acronym>CGI</acronym> scripts.</para>
<para>Perl is available in the Ports Collection as
<filename role="package">lang/perl5.8</filename> for all
&os; releases, and is installed as <command>/usr/bin/perl</command>
in the base system 4.X releases.</para>
<filename role="package">lang/perl5.16</filename> for all
&os; releases.</para>
</listitem>
</varlistentry>
@ -321,16 +320,6 @@
can just give them a copy of the executable, assuming they
have the same operating system as you.</para>
<para>Compiled languages include Pascal, C and C++. C and C++
are rather unforgiving languages, and best suited to more
experienced programmers; Pascal, on the other hand, was
designed as an educational language, and is quite a good
language to start with. FreeBSD does not include Pascal
support in the base system, but
the Free Pascal Compiler is
available in the Ports Collection as
<filename role="package">lang/fpc</filename>.</para>
<para>As the edit-compile-run-debug cycle is rather tedious when
using separate programs, many commercial compiler makers have
produced Integrated Development Environments
@ -341,8 +330,6 @@
<application>Emacs</application> as an IDE is discussed in
<xref linkend="emacs"/>.</para>
</sect2>
</sect1>

View file

@ -1418,66 +1418,6 @@
</answer>
</qandaentry>
<qandaentry>
<question id="panic-on-install-reboot">
<para>Why do I get a <errorname>panic: can't mount
root</errorname> error when rebooting the system after
installation?</para>
</question>
<answer>
<para>This error comes from confusion between the boot block's
and the kernel's understanding of the disk devices. The
error usually manifests on two-disk IDE systems, with the
hard disks arranged as the master or single device on
separate IDE controllers, with &os; installed on the
secondary IDE controller. The boot blocks think the system
is installed on <devicename>ad0</devicename> (the second
BIOS disk) while the kernel assigns the first disk on the
secondary controller device, <devicename>ad2</devicename>.
After the device probing, the kernel tries to mount what the
boot blocks think is the boot disk,
<devicename>ad0</devicename>, while it is really
<devicename>ad2</devicename>, and fails.</para>
<para>To fix the problem, do one of the following:</para>
<orderedlist>
<listitem>
<para>Reboot the system and hit <keycap>Enter</keycap> at
the <literal>Booting kernel in 10 seconds; hit [Enter]
to interrupt</literal> prompt. This will drop you into
the boot loader.</para>
<para>Then type
<userinput>set root_disk_unit="<replaceable>disk_number</replaceable>"</userinput>.
<replaceable>disk_number</replaceable> will be
<literal>0</literal> if &os; is installed on the master
drive on the first IDE controller, <literal>1</literal>
if it is installed on the slave on the first IDE
controller, <literal>2</literal> if it is installed on
the master of the second IDE controller, and
<literal>3</literal> if it is installed on the slave of
the second IDE controller.</para>
<para>Then type <userinput>boot</userinput>, and your
system should boot correctly.</para>
<para>To make this change permanent (i.e, so you do not
have to do this every time you reboot or turn on your
&os; machine), put the line
<userinput>root_disk_unit="<replaceable>disk_number</replaceable>"</userinput>
in <filename>/boot/loader.conf.local</filename>.</para>
</listitem>
<listitem>
<para>Move the &os; disk onto the primary IDE
controller, so the hard disks are consecutive.</para>
</listitem>
</orderedlist>
</answer>
</qandaentry>
<qandaentry>
<question id="memory-limits">
<para>What are the limits for memory?</para>
@ -2282,52 +2222,6 @@ bindkey ^[[3~ delete-char # for xterm</programlisting>
</answer>
</qandaentry>
<qandaentry>
<question id="kmem-map-too-small">
<para>My system has more than 1&nbsp;GB of RAM, and I'm
getting panics with <errorname>kmem_map too small</errorname>
messages. What is wrong?</para>
</question>
<answer>
<para>Normally, &os; determines a number of kernel parameters,
such as the maximum number of files that can be open
concurrently, from the amount of memory installed in the
system. On systems with one gigabyte of RAM or more, this
<quote>auto sizing</quote> mechanism may choose values that
are too high: while starting up, the kernel allocates
various tables and other structures that fill up most of the
available kernel memory. Later on, while the system is
running, the kernel has no more space left for dynamic
memory allocations, and panics.</para>
<para>Compile your own kernel, and add the
<option>VM_KMEM_SIZE_MAX</option> to your kernel
configuration file, increasing the maximum size to
400&nbsp;MB (<option>options
VM_KMEM_SIZE_MAX=419430400</option>). 400&nbsp;MB appears
to be sufficient for machines with up to 6&nbsp;GB of
memory.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="panic-kmemmap-too-small">
<para>My system does not have 1&nbsp;GB of RAM, and &os; still
panics with <errorname>kmem_map too
small</errorname>!</para>
</question>
<answer>
<para>The panic indicates that the system ran out of virtual
memory for network buffers (specifically, mbuf clusters).
You can increase the amount of VM available for mbuf
clusters by following the instructions in the <ulink
url="&url.books.handbook;/configtuning-kernel-limits.html#nmbclusters">Network Limits</ulink>
section of the Handbook.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="proc-table-full">
<para>Why do I get the error <errorname>maxproc limit
@ -2340,9 +2234,8 @@ bindkey ^[[3~ delete-char # for xterm</programlisting>
processes to exist at one time. The number is based on the
<varname>kern.maxusers</varname> &man.sysctl.8; variable.
<varname>kern.maxusers</varname> also affects various other
in-kernel limits, such as network buffers (see <link
linkend="panic-kmemmap-too-small">this</link> earlier
question). If your machine is heavily loaded, you probably
in-kernel limits, such as network buffers.
If your machine is heavily loaded, you probably
want to increase <varname>kern.maxusers</varname>. This
will increase these other system limits in addition to the
maximum number of processes.</para>
@ -3069,8 +2962,8 @@ kern.timecounter.hardware: TSC -&gt; i8254</screen>
</listitem>
<listitem>
<para>You are not running &man.config.8; with the
<option>-g</option> option.</para>
<para>You are not running &man.config.8; with
<option>-g</option>.</para>
</listitem>
</itemizedlist>
@ -3222,7 +3115,7 @@ kern.sched.name: ULE</screen>
this.</para>
<para>Alternatively, partition and label the new disk with either
&man.sade.8; or &man.gpart.8;. If the disks are MBR-formatted,
&man.sade.8; or &man.gpart.8;. If the disks are MBR-formatted,
you can also install booteasy on both disks with
&man.boot0cfg.8;, so that you can dual boot to the old or
new system after the copying is done.</para>
@ -4506,9 +4399,9 @@ options SYSVMSG # enable for messaging</programlisting>
required to boot from a &os; installation disk, choose
the <guimenuitem>Live CD</guimenuitem> or
<guimenuitem>Shell</guimenuitem> at the beginning of the install
process and issue the commands mentioned above. You will need to
process and issue the commands mentioned above. You will need to
mount the specific partition in this case and then chroot to it,
i.e. replace <command>mount -urw /</command> by
i.e., replace <command>mount -urw /</command> by
<command>mount /dev/ada0p1 /mnt; chroot /mnt</command> for
a system on <replaceable>ada0p1</replaceable>.</para>
</note>
@ -5530,9 +5423,8 @@ UserConfig&gt; <userinput>quit</userinput></screen>
</listitem>
<listitem>
<para><keycode>117</keycode> &mdash; <keycap>Menu</keycap>
key, to the left of the right-hand <keycap>Ctrl</keycap>
key</para>
<para><keycode>117</keycode> &mdash; <keycap>Menu</keycap>,
to the left of the right-hand <keycap>Ctrl</keycap></para>
</listitem>
</itemizedlist>
@ -5543,11 +5435,11 @@ UserConfig&gt; <userinput>quit</userinput></screen>
<para>To have the <keycap>Windows</keycap> key-mappings
enabled automatically every time you start X either put the
<command>xmodmap</command> commands in your
<filename>~/.xinitrc</filename> file or, preferably, create
a file <filename>~/.xmodmaprc</filename> and include the
<command>xmodmap</command> commands in
<filename>~/.xinitrc</filename> or, preferably, create
a <filename>~/.xmodmaprc</filename> and include the
<command>xmodmap</command> options, one per line, then add
the following line to your
the following line to
<filename>~/.xinitrc</filename>:</para>
<programlisting>xmodmap $HOME/.xmodmaprc</programlisting>
@ -6119,7 +6011,7 @@ Key F15 A A Menu Workplace Nop</programlisting>
<listitem>
<para>A process which is placed inside a simulation of the
machine. This is more hard-core. Basically it means
machine. It means
that someone who is able to break into the process may
believe that he can break into the wider machine but is,
in fact, only breaking into a simulation of that machine
@ -6127,7 +6019,7 @@ Key F15 A A Menu Workplace Nop</programlisting>
<para>The most common way to accomplish this is to build a
simulated environment in a subdirectory and then run the
processes in that directory chroot'd (i.e., <filename
processes in that directory chrooted (i.e., <filename
class="directory">/</filename> for that process is this
directory, not the real <filename
class="directory">/</filename> of the system).</para>
@ -6547,8 +6439,8 @@ add 0 0 HISADDR</programlisting>
<acronym>RD</acronym> light does not), the problem is with
the remote end. If <acronym>TD</acronym> does not flash,
the problem is local. With an internal modem, you will need
to use the <literal>set server</literal> command in your
<filename>ppp.conf</filename> file. When the hang occurs,
to use the <literal>set server</literal> command in
<filename>ppp.conf</filename>. When the hang occurs,
connect to &man.ppp.8; using &man.pppctl.8;. If your
network connection suddenly revives (PPP was revived due to
the activity on the diagnostic socket) or if you cannot
@ -6649,9 +6541,8 @@ deny pred1 deflate deflate24 protocomp acfcomp shortseq vj</programlisting>
use the <command>bt</command> or <command>where</command>
commands to get a stack trace. Save the output of your
<application>gdb</application> session, and
<quote>detach</quote> from the running process by the
<command>quit</command> command of
<application>gdb</application>.</para>
<quote>detach</quote> from the running process by typing
<command>quit</command>.</para>
</answer>
</qandaentry>
@ -6880,8 +6771,8 @@ set dfilter 3 permit 0/0 0/0</programlisting>
url="&url.books.handbook;/smtp-dialup.html">using email with a dialup connection</ulink>
in the &os; Handbook for details on how to create your own
configuration file and what should go into it. You may also
want to add the following line to your
<filename>.mc</filename> file:</para>
want to add the following line to
<filename>.mc</filename>:</para>
<programlisting>define(`confDELIVERY_MODE', `d')dnl</programlisting>
@ -6999,8 +6890,8 @@ ATDT1234567</programlisting>
<qandaentry>
<question id="ppp-segfault-nocore">
<para>Why does &man.ppp.8; get a <errorname>Segmentation
fault</errorname>, but I see no <filename>ppp.core</filename>
file?</para>
fault</errorname>, but I see no
<filename>ppp.core</filename></para>
</question>
<answer>
@ -7641,67 +7532,51 @@ hint.sio.7.irq="12"</programlisting>
<answer>
<para>The <hostid role="domainname">FreeBSD.org</hostid> mail
system implements some of the stricter
system implements some
<application>Postfix</application> checks on incoming mail
and rejects mail that is either misconfigured or is
potential spam. Your mail might bounce for one of the
following reasons:</para>
and rejects mail that is either from misconfigured relays or
otherwise appears likely to be spam. Some of the
specific requirements are: </para>
<itemizedlist>
<listitem>
<para>The email is being sent from a known spam domain or
IP block.</para>
<para>The &os; mail servers reject email from known spam
sources. If you have service through a company or
domain who generates or relays spam, please switch to a
service provider who does not.</para>
<para>The IP address of the SMTP client must
"reverse-resolve" to a forward
confirmed hostname.</para>
</listitem>
<listitem>
<para>The body of the email only contains HTML.</para>
<para>Mail should be sent in plain text only. Please
configure your mail user agent to send plain
text.</para>
</listitem>
<listitem>
<para>The mailer at <hostid
role="domainname">FreeBSD.org</hostid> cannot resolve
the IP address of the connecting host back to a
symbolic name.</para>
<para>Working reverse DNS is a standard requirement for
accepting mail from a host. Set up reverse DNS for your
mail server's IP address. Many home services (DSL,
cable, dialup, etc.) will not give you this option. In
this case, relay your email through your service
provider's mail server.</para>
</listitem>
<listitem>
<para>The hostname given in the EHLO/HELO part of the SMTP
exchange cannot be resolved to an IP address.</para>
<para>A fully qualified, resolvable host name is necessary
in this part of the SMTP dialogue before mail will be
accepted. If you do not have a host name that is
registered in the DNS, then you should use your service
provider's mail server to relay your mail.</para>
</listitem>
<listitem>
<para>Your message had a message ID ending with the string
<quote>localhost</quote>.</para>
<para>Some mail user agents generate bad message IDs which
will not be accepted. You will need to persuade your mail
user agent to generate a valid message ID or else
configure your mail transfer agent to rewrite
them.</para>
<para>The fully-qualified hostname given in the
SMTP conversation (either HELO or EHLO) must resolve
to the IP address of the client.</para>
</listitem>
</itemizedlist>
<para>Other advice to help your mail reach its destination
include:</para>
<itemizedlist>
<listitem>
<para>Mail should be sent in plain text, and messages
sent to mailing lists should generally be no more than
200KB in length.</para>
</listitem>
<listitem>
<para>Avoid excessive cross posting. Choose
<emphasis>one</emphasis> mailing list which seems most
relevant and send it there.</para>
</listitem>
</itemizedlist>
<para>If you still have trouble with email infrastructure at
<hostid role="domainname">FreeBSD.org</hostid> send a note
with the details to
<email>postmaster@freebsd.org</email>; Include a
date/time interval so that logs may be reviewed &mdash;
and note that we only keep one week's worth of mail logs.
(Be sure to specify the time zone or offset from
UTC.)</para>
</answer>
</qandaentry>

View file

@ -141,8 +141,7 @@
<row>
<entry>The names of files.</entry>
<entry>Edit your <filename>.login</filename>
file.</entry>
<entry>Edit <filename>.login</filename>.</entry>
</row>
<row>

View file

@ -56,7 +56,6 @@
&tm-attrib.adaptec;
&tm-attrib.adobe;
&tm-attrib.apple;
&tm-attrib.corel;
&tm-attrib.creative;
&tm-attrib.cvsup;
&tm-attrib.heidelberger;

View file

@ -6,7 +6,7 @@
-->
<chapter id="boot">
<title>The FreeBSD Booting Process</title>
<title>The &os; Booting Process</title>
<sect1 id="boot-synopsis">
<title>Synopsis</title>
@ -16,31 +16,31 @@
<para>The process of starting a computer and loading the operating
system is referred to as <quote>the bootstrap process</quote>,
or simply <quote>booting</quote>. FreeBSD's boot process
or simply <quote>booting</quote>. &os;'s boot process
provides a great deal of flexibility in customizing what happens
when you start the system, allowing you to select from different
operating systems installed on the same computer, or even
different versions of the same operating system or installed
kernel.</para>
when the system starts, including the ability to select from
different operating systems installed on the same computer,
different versions of the same operating system, or a different
installed kernel.</para>
<para>This chapter details the configuration options you can set
and how to customize the FreeBSD boot process. This includes
everything that happens until the FreeBSD kernel has started,
probed for devices, and started &man.init.8;. If you are not
quite sure when this happens, it occurs when the text color
changes from bright white to grey.</para>
<para>This chapter details the configuration options that can
be set. It demonstrates how to customize the &os; boot
process, including everything that happens until the &os; kernel
has started, probed for devices, and started &man.init.8;. This
occurs when the text color of the boot messages changes from
bright white to grey.</para>
<para>After reading this chapter, you will know:</para>
<para>After reading this chapter, you will recognize:</para>
<itemizedlist>
<listitem>
<para>What the components of the FreeBSD bootstrap system are,
and how they interact.</para>
<para>The components of the &os; bootstrap system and how they
interact.</para>
</listitem>
<listitem>
<para>The options you can give to the components in the
FreeBSD bootstrap to control the boot process.</para>
<para>The options that can be passed to the components in the
&os; bootstrap in order to control the boot process.</para>
</listitem>
<listitem>
@ -49,9 +49,7 @@
</itemizedlist>
<note>
<title>x86 Only</title>
<para>This chapter only describes the boot process for FreeBSD
<para>This chapter only describes the boot process for &os;
running on Intel x86 systems.</para>
</note>
</sect1>
@ -62,7 +60,7 @@
<para>Turning on a computer and starting the operating system
poses an interesting dilemma. By definition, the computer does
not know how to do anything until the operating system is
started. This includes running programs from the disk. So if
started. This includes running programs from the disk. If
the computer can not run a program from the disk without the
operating system, and the operating system programs are on the
disk, how is the operating system started?</para>
@ -102,7 +100,7 @@
with the user. In this case the boot manager usually has more
code in the first <emphasis>track</emphasis> of the disk or
within some OS's file system. (A boot manager is sometimes also
called a <emphasis>boot loader</emphasis>, but FreeBSD uses that
called a <emphasis>boot loader</emphasis>, but &os; uses that
term for a later stage of booting.) Popular boot managers
include <application>boot0</application> (aka
<application>Boot Easy</application>, the standard &os; boot
@ -111,30 +109,28 @@
<application>LILO</application>. (Only
<application>boot0</application> fits within the MBR.)</para>
<para>If you have only one operating system installed on your
disks then a standard PC MBR will suffice. This MBR searches
for the first bootable (aka active) slice on the disk, and
then runs the code on that slice to load the remainder of the
operating system. The MBR installed by &man.fdisk.8;, by
default, is such an MBR. It is based on
<para>If only one operating system is installed, a standard PC MBR
will suffice. This MBR searches for the first bootable (active)
slice on the disk, and then runs the code on that slice to load
the remainder of the operating system. By default, the MBR
installed by &man.fdisk.8; is such an MBR and is based on
<filename>/boot/mbr</filename>.</para>
<para>If you have installed multiple operating systems on your
disks then you can install a different boot manager, one that
can display a list of different operating systems, and allows
you to choose the one to boot from. Two of these are discussed
in the next subsection.</para>
<para>If multiple operating systems are present, a different boot
manager can be installed which displays the list of operating
systems so that the user can choose which one to boot from. Two
boot managers are discussed in the next subsection.</para>
<para>The remainder of the FreeBSD bootstrap system is divided
<para>The remainder of the &os; bootstrap system is divided
into three stages. The first stage is run by the MBR, which
knows just enough to get the computer into a specific state and
run the second stage. The second stage can do a little bit
more, before running the third stage. The third stage finishes
the task of loading the operating system. The work is split
into these three stages because the PC standards put limits on
the size of the programs that can be run at stages one and two.
Chaining the tasks together allows FreeBSD to provide a more
flexible loader.</para>
into three stages because PC standards put limits on the size of
the programs that can be run at stages one and two. Chaining
the tasks together allows &os; to provide a more flexible
loader.</para>
<indexterm><primary>kernel</primary></indexterm>
<indexterm><primary><command>init</command></primary></indexterm>
@ -145,9 +141,8 @@
process &man.init.8;, which then makes sure the disks are in a
usable state. &man.init.8; then starts the user-level resource
configuration which mounts file systems, sets up network cards
to communicate on the network, and generally starts all the
processes that usually are run on a FreeBSD system at
startup.</para>
to communicate on the network, and starts the processes which
have been configured to run on a &os; system at startup.</para>
</sect1>
<sect1 id="boot-blocks">
@ -163,60 +158,54 @@
<para>The code in the MBR or boot manager is sometimes referred
to as <emphasis>stage zero</emphasis> of the boot process.
This subsection discusses two of the boot managers previously
mentioned: <application>boot0</application> and
This section discusses two boot managers:
<application>boot0</application> and
<application>LILO</application>.</para>
<formalpara>
<title>The <application>boot0</application> Boot
Manager:</title>
<para>The MBR installed by FreeBSD's installer or
&man.boot0cfg.8;, by default, is based on
<filename>/boot/boot0</filename>. (The
<application>boot0</application> program is very simple,
since the program in the <abbrev>MBR</abbrev> can only be
446 bytes long because of the slice table and
<literal>0x55AA</literal> identifier at the end of the MBR.)
If you have installed <application>boot0</application> and
multiple operating systems on your hard disks, then you will
see a display similar to this one at boot
time:</para>
<para>The MBR installed by &os;'s installer or
&man.boot0cfg.8; is based on
<filename>/boot/boot0</filename>. The size and capability
of <application>boot0</application> is restricted to 446
bytes due to the slice table and <literal>0x55AA</literal>
identifier at the end of the MBR. If
<application>boot0</application> and multiple operating
systems are installed, a message similar to this example
will be displayed at boot time:</para>
</formalpara>
<example id="boot-boot0-example">
<title><filename>boot0</filename> Screenshot</title>
<screen>F1 DOS
<screen>F1 Win
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1
Default: F2</screen>
</example>
<para>Other operating systems, in particular &windows;, have
been known to overwrite an existing MBR with their own. If
this happens to you, or you want to replace your existing MBR
with the FreeBSD MBR then use the following command:</para>
<para>Other operating systems, in particular &windows;, will
overwrite an existing MBR if they are installed after &os;.
If this happens, or you want to replace the existing MBR
with the &os; MBR, use the following command:</para>
<screen>&prompt.root; <userinput>fdisk -B -b /boot/boot0 <replaceable>device</replaceable></userinput></screen>
<para>where <replaceable>device</replaceable> is the device that
you boot from, such as <devicename>ad0</devicename> for the
first IDE disk, <devicename>ad2</devicename> for the first IDE
disk on a second IDE controller, <devicename>da0</devicename>
for the first SCSI disk, and so on. Or, if you want a custom
configuration of the MBR, use &man.boot0cfg.8;.</para>
<para>where <replaceable>device</replaceable> is the boot disk,
such as <devicename>ad0</devicename> for the first IDE disk,
<devicename>ad2</devicename> for the first IDE disk on a
second IDE controller, or <devicename>da0</devicename>
for the first SCSI disk. To create a custom configuration of
the MBR, refer to &man.boot0cfg.8;.</para>
<formalpara>
<title>The LILO Boot Manager:</title>
<para>To install this boot manager so it will also boot
FreeBSD, first start Linux and add the following to your
existing <filename>/etc/lilo.conf</filename> configuration
file:</para>
&os;, boot into Linux and add the following to the existing
<filename>/etc/lilo.conf</filename> configuration:</para>
</formalpara>
<programlisting>other=/dev/hdXY
@ -224,30 +213,29 @@ table=/dev/hdX
loader=/boot/chain.b
label=FreeBSD</programlisting>
<para>In the above, specify FreeBSD's primary partition and
drive using Linux specifiers, replacing
<replaceable>X</replaceable> with the Linux drive letter and
<replaceable>Y</replaceable> with the Linux primary partition
number. If you are using a <acronym>SCSI</acronym> drive, you
will need to change <replaceable>/dev/hd</replaceable> to read
something similar to <replaceable>/dev/sd</replaceable>. The
<para>Specify &os;'s primary partition and drive using Linux
specifiers, replacing <replaceable>X</replaceable> with the
Linux drive letter and <replaceable>Y</replaceable> with the
Linux primary partition number. For a <acronym>SCSI</acronym>
drive, change <replaceable>/dev/hd</replaceable> to
<replaceable>/dev/sd</replaceable>. The
<option>loader=/boot/chain.b</option> line can be omitted if
you have both operating systems on the same drive. Now run
<command>/sbin/lilo&nbsp;-v</command> to commit your new
changes to the system; this should be verified by checking its
screen messages.</para>
both operating systems are installed on the same drive. Next,
run <command>/sbin/lilo&nbsp;-v</command> to commit the new
changes. Verify these are correct by checking the screen
messages.</para>
</sect2>
<sect2 id="boot-boot1">
<title>Stage One, <filename>/boot/boot1</filename>, and Stage
Two, <filename>/boot/boot2</filename></title>
<para>Conceptually the first and second stages are part of the
<para>Conceptually, the first and second stages are part of the
same program, on the same area of the disk. Because of space
constraints they have been split into two, but you would
always install them together. They are copied from the
combined file <filename>/boot/boot</filename> by the installer
or <application>bsdlabel</application> (see below).</para>
constraints, they have been split into two, but are always
installed together. They are copied from the combined
<filename>/boot/boot</filename> by the installer or
<application>bsdlabel</application>.</para>
<para>They are located outside file systems, in the first track
of the boot slice, starting with the first sector. This is
@ -259,20 +247,18 @@ label=FreeBSD</programlisting>
<para><filename>boot1</filename> is very simple, since it can
only be 512 bytes in size, and knows just enough about the
FreeBSD <firstterm>bsdlabel</firstterm>, which stores
&os; <firstterm>bsdlabel</firstterm>, which stores
information about the slice, to find and execute
<filename>boot2</filename>.</para>
<para><filename>boot2</filename> is slightly more sophisticated,
and understands the FreeBSD file system enough to find files
on it, and can provide a simple interface to choose the kernel
or loader to run.</para>
and understands the &os; file system enough to find files, and
can provide a simple interface to choose the kernel or loader
to run.</para>
<para>Since the <link linkend="boot-loader">loader</link> is
much more sophisticated, and provides a nice easy-to-use
boot configuration, <filename>boot2</filename> usually runs
it, but previously it
was tasked to run the kernel directly.</para>
<para><link linkend="boot-loader">loader</link> is much more
sophisticated and provides a boot configuration which is run
by <filename>boot2</filename>.</para>
<example id="boot-boot2-example">
<title><filename>boot2</filename> Screenshot</title>
@ -282,25 +268,26 @@ Default: 0:ad(0,a)/boot/loader
boot:</screen>
</example>
<para>If you ever need to replace the installed
<filename>boot1</filename> and <filename>boot2</filename> use
&man.bsdlabel.8;:</para>
<para>&man.bsdlabel.8; can be used to replace the installed
<filename>boot1</filename> and
<filename>boot2</filename>:</para>
<screen>&prompt.root; <userinput>bsdlabel -B <replaceable>diskslice</replaceable></userinput></screen>
<para>where <replaceable>diskslice</replaceable> is the disk and
slice you boot from, such as <devicename>ad0s1</devicename>
slice to boot from, such as <devicename>ad0s1</devicename>
for the first slice on the first IDE disk.</para>
<warning>
<title>Dangerously Dedicated Mode</title>
<para>If you use just the disk name, such as
<devicename>ad0</devicename>, in the &man.bsdlabel.8;
command you will create a dangerously dedicated disk,
without slices. This is almost certainly not what you want
to do, so make sure you double check the &man.bsdlabel.8;
command before you press <keycap>Return</keycap>.</para>
<para>If just the disk name is used, such as
<devicename>ad0</devicename>, &man.bsdlabel.8; will create a
<quote>dangerously dedicated</quote> disk, without slices.
This is probably not the desired action, so double check the
<replaceable>diskslice</replaceable> passed to
&man.bsdlabel.8; before pressing
<keycap>Return</keycap>.</para>
</warning>
</sect2>
@ -313,16 +300,16 @@ boot:</screen>
bootstrap, and is located on the file system, usually as
<filename>/boot/loader</filename>.</para>
<para>The loader is intended as a user-friendly method for
configuration, using an easy-to-use built-in command set,
backed up by a more powerful interpreter, with a more complex
command set.</para>
<para>The loader is intended as an interactive method for
configuration, using a built-in command set, backed up by a
more powerful interpreter which has a more complex command
set.</para>
<sect3 id="boot-loader-flow">
<title>Loader Program Flow</title>
<para>During initialization, the loader will probe for a
console and for disks, and figure out what disk it is
console and for disks, and figure out which disk it is
booting from. It will set variables accordingly, and an
interpreter is started where user commands can be passed
from a script or interactively.</para>
@ -342,16 +329,16 @@ boot:</screen>
<para>Finally, by default, the loader issues a 10 second wait
for key presses, and boots the kernel if it is not
interrupted. If interrupted, the user is presented with a
prompt which understands the easy-to-use command set, where
the user may adjust variables, unload all modules, load
modules, and then finally boot or reboot.</para>
prompt which understands the command set, where the user may
adjust variables, unload all modules, load modules, and then
finally boot or reboot.</para>
</sect3>
<sect3 id="boot-loader-commands">
<title>Loader Built-In Commands</title>
<para>These are the most commonly used loader commands. For a
complete discussion of all available commands, please see
complete discussion of all available commands, refer to
&man.loader.8;.</para>
<variablelist>
@ -372,11 +359,10 @@ boot:</screen>
<optional><replaceable>kernelname</replaceable></optional></term>
<listitem>
<para>Immediately proceeds to boot the kernel, with the
given options, if any, and with the kernel name given,
if it is. Providing a kernel name on the command-line
is only applicable after an
<emphasis>unload</emphasis> command has been issued,
<para>Immediately proceeds to boot the kernel, with any
specified options or kernel name. Providing a kernel
name on the command-line is only applicable after an
<emphasis>unload</emphasis> command has been issued;
otherwise the previously-loaded kernel will be
used.</para>
</listitem>
@ -387,10 +373,10 @@ boot:</screen>
<listitem>
<para>Goes through the same automatic configuration of
modules based on variables as what happens at boot.
This only makes sense if you use
<command>unload</command> first, and change some
variables, most commonly <envar>kernel</envar>.</para>
modules based on specified variables, most commonly
<envar>kernel</envar>. This only makes sense if
<command>unload</command> is used first, before
changing some variables.</para>
</listitem>
</varlistentry>
@ -401,8 +387,8 @@ boot:</screen>
<listitem>
<para>Shows help messages read from
<filename>/boot/loader.help</filename>. If the topic
given is <literal>index</literal>, then the list of
available topics is given.</para>
given is <literal>index</literal>, the list of
available topics is displayed.</para>
</listitem>
</varlistentry>
@ -412,7 +398,7 @@ boot:</screen>
<listitem>
<para>Processes the file with the given filename. The
file is read in, and interpreted line by line. An
file is read in and interpreted line by line. An
error immediately stops the include command.</para>
</listitem>
</varlistentry>
@ -424,8 +410,9 @@ boot:</screen>
<listitem>
<para>Loads the kernel, kernel module, or file of the
type given, with the filename given. Any arguments
after filename are passed to the file.</para>
type given, with the specified filename. Any
arguments after <replaceable>filename</replaceable>
are passed to the file.</para>
</listitem>
</varlistentry>
@ -436,8 +423,8 @@ boot:</screen>
<listitem>
<para>Displays a listing of files in the given path, or
the root directory, if the path is not specified. If
<option>-l</option> is specified, file sizes will be
shown too.</para>
<option>-l</option> is specified, file sizes will
also be shown.</para>
</listitem>
</varlistentry>
@ -508,15 +495,14 @@ boot:</screen>
<indexterm><primary>single-user mode</primary></indexterm>
<listitem>
<para>To boot your usual kernel, but in single-user
mode:</para>
<para>To boot the usual kernel in single-user mode:</para>
<screen><userinput>boot -s</userinput></screen>
</listitem>
<listitem>
<para>To unload your usual kernel and modules, and then
load just your old (or another) kernel:</para>
<para>To unload the usual kernel and modules, and then
load the previous or another kernel:</para>
<indexterm>
<primary><filename>kernel.old</filename></primary>
@ -525,14 +511,14 @@ boot:</screen>
<screen><userinput>unload</userinput>
<userinput>load <replaceable>kernel.old</replaceable></userinput></screen>
<para>You can use <filename>kernel.GENERIC</filename> to
refer to the generic kernel that comes on the install
disk, or <filename>kernel.old</filename> to refer to
your previously installed kernel (when you have upgraded
or configured your own kernel, for example).</para>
<para>Use <filename>kernel.GENERIC</filename> to refer to
the default kernel that comes with an installation, or
<filename>kernel.old</filename> to refer to the
previously installed kernel before a system upgrade or
before configuring a custom kernel.</para>
<note>
<para>Use the following to load your usual modules with
<para>Use the following to load the usual modules with
another kernel:</para>
<screen><userinput>unload</userinput>
@ -541,9 +527,8 @@ boot:</screen>
</listitem>
<listitem>
<para>To load a kernel configuration script (an automated
script which does the things you would normally do in
the kernel boot-time configurator):</para>
<para>To load an automated kernel configuration
script:</para>
<screen><userinput>load -t userconfig_script <replaceable>/boot/kernel.conf</replaceable></userinput></screen>
</listitem>
@ -563,89 +548,58 @@ boot:</screen>
<title>Boot Time Splash Screens</title>
<para>The splash screen creates a more visually appealing boot
screen compared to the original boot messages. This screen
will be displayed until a console login prompt or an X
display manager offers a login prompt.</para>
<para>The splash screen creates an alternate boot screen. The
splash screen hides all the boot probe messages and service
startup messages before displaying either a command line or
graphical login prompt.</para>
<para>There are two basic environments available in &os;. The
first is the default legacy virtual console command line
environment. After the system finishes booting, a console
login prompt is presented. The second environment is the
X11 Desktop graphical environment. After
<link linkend="x-install">X11</link> and one of the
graphical
<link linkend="x11-wm">desktop environments</link>, such as
<application>GNOME</application>,
<application>KDE</application>, or
<application>XFce</application> are installed, the X11
desktop can be launched by using
<command>startx</command>.</para>
<para>Some users prefer the X11 graphical login screen over
the traditional text based login prompt. Display managers
like <application>XDM</application> for &xorg;,
<application>gdm</application> for
<application>GNOME</application>, and
<application>kdm</application> for
<application>KDE</application> (and any other from the Ports
Collection) provide a graphical login screen in
place of the console login prompt. After a successful
login, they present the user with a graphical
desktop.</para>
<para>In the command line environment, the splash screen would
hide all the boot probe messages and task startup messages
before displaying the login prompt. In X11 environment, the
users would get a visually clearer system start up
experience resembling something closer to what a
(&microsoft; &windows; or non-unix type system) user would
experience.</para>
graphical environment provided by
<link linkend="x11">Xorg</link>. Refer to that chapter for
more information on how to install and configure a graphical
display manager and a graphical login manager.</para>
<sect4 id="boot-splash-function">
<title>Splash Screen Function</title>
<para>The splash screen function supports 256-color
<para>The splash screen function supports 256-colors in the
bitmap (<filename>.bmp</filename>), ZSoft
<acronym>PCX</acronym> (<filename>.pcx</filename>), or
TheDraw (<filename>.bin</filename>) files.
In addition, the splash image files must have a resolution
of 320 by 200 pixels or less to work on standard VGA
adapters.</para>
TheDraw (<filename>.bin</filename>) formats. The splash
image files must have a resolution of 320 by 200 pixels or
less in order to work on standard VGA adapters.</para>
<para>To use larger images, up to the maximum resolution of
1024 by 768 pixels, activate the <acronym>VESA</acronym>
support included in &os;. This can be enabled by loading
the <acronym>VESA</acronym> module during system boot, or
adding a <literal>VESA</literal> kernel configuration
option and building a custom kernel (see <xref
linkend="kernelconfig"/>). The <acronym>VESA</acronym>
support gives users the ability to display a splash screen
image that fills the whole display screen.</para>
1024 by 768 pixels, load the <acronym>VESA</acronym>
module during system boot. For a <ulink
url="kernelconfig">custom kernel</ulink>, include the
<literal>VESA</literal> kernel configuration option.
Loading <acronym>VESA</acronym> support provides the
ability to display a splash screen image that fills the
whole display screen.</para>
<para>While the splash screen is being displayed during the
booting process, it can be turned off any time by hitting
any key on the keyboard.</para>
<para>The splash screen also defaults to being a screen
saver outside of X11. After a time period of non-use the
screen will change to the splash screen and cycle through
steps of changing intensity of the image, from bright to a
very dark and over again. This default splash screen
(screen saver) behavior could be overridden by adding a
saver outside. After a time period of non-use, the splash
screen will be displayed and will cycle through steps of
changing intensity of the image, from bright to very dark
and over again. The configuration of the splash screen
saver can be overridden by adding a
<literal>saver=</literal> line to
<filename>/etc/rc.conf</filename>. Option
<literal>saver=</literal> has several built-in screen
savers to choose from, the full list can be found in the
&man.splash.4; manual page. The default screen saver is
called <quote>warp</quote>. Note that the
<literal>saver=</literal> option specified in
<filename>/etc/rc.conf</filename> only applies to virtual
consoles. It has no effect on X11 display
managers.</para>
<filename>/etc/rc.conf</filename>. Several built-in
screen savers are available and described in
&man.splash.4;. The <literal>saver=</literal> option only
applies to virtual consoles and has no effect on graphical
display managers.</para>
<para>A few boot loader messages, including the boot options
menu and a timed wait count down prompt are displayed at
menu and a timed wait count down prompt, are displayed at
boot time, even when the splash screen is enabled.</para>
<para>Sample splash screen files can be downloaded from the
@ -660,15 +614,14 @@ boot:</screen>
<sect4 id="boot-splash-enable">
<title>Enabling the Splash Screen Function</title>
<para>The splash screen (<filename>.bmp</filename>,
<filename>.pcx</filename>, or <filename>.bin</filename>)
file has to be placed on the root partition, for example
in the <filename class="directory">/boot</filename>
directory.</para>
<para>The splash screen <filename>.bmp</filename>,
<filename>.pcx</filename>, or <filename>.bin</filename>
image has to be placed on the root partition, for example
in <filename class="directory">/boot</filename>.</para>
<para>For default boot display resolution (256-color, 320 by
200 pixels, or less), edit
<filename>/boot/loader.conf</filename>, so it contains the
<para>For the default boot display resolution of 256-colors
and 320 by 200 pixels or less, edit
<filename>/boot/loader.conf</filename> so it contains the
following:</para>
<programlisting>splash_bmp_load="YES"
@ -685,19 +638,19 @@ splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="<replaceable>/boot/splash.bmp</replaceable>"</programlisting>
<para>The above assumes that
<para>This example assumes that
<filename><replaceable>/boot/splash.bmp</replaceable></filename>
is used for splash screen. When a <acronym>PCX</acronym>
file is desired, use the following statements, plus the
<literal>vesa_load="YES"</literal> line depending on the
resolution.</para>
is used for the splash screen. To use a
<acronym>PCX</acronym> file, use the following statements,
plus the <literal>vesa_load="YES"</literal> line,
depending on the resolution:</para>
<programlisting>splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="<replaceable>/boot/splash.pcx</replaceable>"</programlisting>
<para>In version 8.3 another option is to use ascii art in
<ulink
<para>Beginning with &os;&nbsp;8.3, another option is to use
ASCII art in <ulink
url="https://en.wikipedia.org/wiki/TheDraw">TheDraw</ulink>
format.</para>
@ -707,14 +660,14 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<para>The file name is not restricted to
<quote>splash</quote> as shown in the above example. It
can be anything as long as it is one of the above types
such as,
can be anything as long as it is one of the supported
types such as,
<filename><replaceable>splash_640x400</replaceable>.bmp</filename>
or
<filename><replaceable>bluewave</replaceable>.pcx</filename>.</para>
<para>Some other interesting
<filename>loader.conf</filename> options:</para>
<para>Other interesting
<filename>loader.conf</filename> options include:</para>
<variablelist>
<varlistentry>
@ -737,13 +690,13 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<para>This will replace the default words
<quote>&os;</quote>, which are displayed to the
right of the boot options menu with the colored
beastie logo like releases in the past had.</para>
beastie logo.</para>
</listitem>
</varlistentry>
</variablelist>
<para>For more information, please see the &man.splash.4;,
&man.loader.conf.5;, and &man.vga.4; manual pages.</para>
<para>For more information, refer to &man.splash.4;,
&man.loader.conf.5;, and &man.vga.4;.</para>
</sect4>
</sect3>
</sect2>
@ -757,10 +710,10 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<secondary>boot interaction</secondary>
</indexterm>
<para>Once the kernel is loaded by either <link
linkend="boot-loader">loader</link> (as usual) or <link
linkend="boot-boot1">boot2</link> (bypassing the loader), it
examines its boot flags, if any, and adjusts its behavior as
<para>Once the kernel is loaded by either the default <link
linkend="boot-loader">loader</link> or by <link
linkend="boot-boot1">boot2</link> which bypasses the loader,
it examines its boot flags, if any, and adjusts its behavior as
necessary.</para>
<sect2 id="boot-kernel-bootflags">
@ -778,7 +731,7 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<term><option>-a</option></term>
<listitem>
<para>during kernel initialization, ask for the device
<para>During kernel initialization, ask for the device
to mount as the root file system.</para>
</listitem>
</varlistentry>
@ -787,7 +740,7 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<term><option>-C</option></term>
<listitem>
<para>boot from CDROM.</para>
<para>Boot from CDROM.</para>
</listitem>
</varlistentry>
@ -795,8 +748,8 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<term><option>-c</option></term>
<listitem>
<para>run UserConfig, the boot-time kernel
configurator</para>
<para>Run UserConfig, the boot-time kernel
configurator.</para>
</listitem>
</varlistentry>
@ -804,7 +757,7 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<term><option>-s</option></term>
<listitem>
<para>boot into single-user mode</para>
<para>Boot into single-user mode.</para>
</listitem>
</varlistentry>
@ -812,14 +765,14 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<term><option>-v</option></term>
<listitem>
<para>be more verbose during kernel startup</para>
<para>Be more verbose during kernel startup.</para>
</listitem>
</varlistentry>
</variablelist>
<note>
<para>There are other boot flags, read &man.boot.8; for more
information on them.</para>
<para>Refer to &man.boot.8; for more information on the other
boot flags.</para>
</note>
</sect2>
@ -848,27 +801,26 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<primary>device.hints</primary>
</indexterm>
<para>During initial system startup, the boot &man.loader.8; will
read the &man.device.hints.5; file. This file stores kernel
boot information known as variables, sometimes referred to as
<para>During initial system startup, the boot &man.loader.8; reads
&man.device.hints.5;. This file stores kernel boot information
known as variables, sometimes referred to as
<quote>device hints</quote>. These <quote>device hints</quote>
are used by device drivers for device configuration.</para>
<para>Device hints may also be specified at the
<link linkend="boot-loader">
Stage 3 boot loader</link> prompt. Variables can be added using
<command>set</command>, removed with <command>unset</command>,
and viewed with the <command>show</command> commands. Variables
set in <filename>/boot/device.hints</filename> can be
overridden here also. Device hints entered at the boot loader
are not permanent and will be forgotten on the next
reboot.</para>
<para>Device hints may also be specified at the <link
linkend="boot-loader"> Stage 3 boot loader</link> prompt.
Variables can be added using <command>set</command>, removed
with <command>unset</command>, and viewed
<command>show</command>. Variables set in
<filename>/boot/device.hints</filename> can also be overridden.
Device hints entered at the boot loader are not permanent and
will not be applied on the next reboot.</para>
<para>Once the system is booted, the &man.kenv.1; command can be
used to dump all of the variables.</para>
<para>Once the system is booted, &man.kenv.1; can be used to dump
all of the variables.</para>
<para>The syntax for <filename>/boot/device.hints</filename>
is one variable per line, using the standard hash
is one variable per line, using the hash
<quote>#</quote> as comment markers. Lines are constructed as
follows:</para>
@ -878,7 +830,7 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<screen><userinput>set hint.driver.unit.keyword=<replaceable>value</replaceable></userinput></screen>
<para><literal>driver</literal> is the device driver name,
<para>where <literal>driver</literal> is the device driver name,
<literal>unit</literal> is the device driver unit number, and
<literal>keyword</literal> is the hint keyword. The keyword may
consist of the following options:</para>
@ -920,10 +872,10 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
</listitem>
</itemizedlist>
<para>Device drivers may accept (or require) more hints not listed
here, viewing their manual page is recommended. For more
information, consult the &man.device.hints.5;, &man.kenv.1;,
&man.loader.conf.5;, and &man.loader.8; manual pages.</para>
<para>Since device drivers may accept or require more hints not
listed here, viewing a driver's manual page is recommended.
For more information, refer to &man.device.hints.5;,
&man.kenv.1;, &man.loader.conf.5;, and &man.loader.8;.</para>
</sect1>
<sect1 id="boot-init">
@ -944,10 +896,10 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<para>The automatic reboot sequence makes sure that the file
systems available on the system are consistent. If they are
not, and &man.fsck.8; cannot fix the inconsistencies,
&man.init.8; drops the system into
<link linkend="boot-singleuser">single-user mode</link> for
the system administrator to take care of the problems
not, and &man.fsck.8; cannot fix the inconsistencies of a UFS
file system, &man.init.8; drops the system into
<link linkend="boot-singleuser">single-user mode</link> so
that the system administrator can resolve the problem
directly.</para>
</sect2>
@ -957,21 +909,19 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
<indexterm><primary>single-user mode</primary></indexterm>
<indexterm><primary>console</primary></indexterm>
<para>This mode can be reached through the
<link linkend="boot-autoreboot">automatic reboot
sequence</link>, or by the user booting with the
<option>-s</option> option or setting the
<envar>boot_single</envar> variable in
<para>This mode can be reached through the <link
linkend="boot-autoreboot">automatic reboot sequence</link>,
the user booting with <option>-s</option>, or by setting
the <envar>boot_single</envar> variable in
<command>loader</command>.</para>
<para>It can also be reached by calling &man.shutdown.8; without
the reboot (<option>-r</option>) or halt (<option>-h</option>)
options, from <link linkend="boot-multiuser">multi-user
mode</link>.</para>
<para>It can also be reached by calling &man.shutdown.8; from
<link linkend="boot-multiuser">multi-user mode</link> without
including <option>-r</option> or <option>-h</option>.</para>
<para>If the system <literal>console</literal> is set to
<literal>insecure</literal> in <filename>/etc/ttys</filename>,
then the system prompts for the <username>root</username>
the system will prompt for the <username>root</username>
password before initiating single-user mode.</para>
<example id="boot-insecure-console">
@ -986,13 +936,12 @@ console none unknown off insecure</programlisting>
</example>
<note>
<para>An <literal>insecure</literal> console means that you
consider your physical security to the console to be
insecure, and want to make sure only someone who knows the
<username>root</username> password may use single-user mode,
and it does not mean that you want to run your console
insecurely. Thus, if you want security, choose
<literal>insecure</literal>, not
<para>An <literal>insecure</literal> console means that
physical security to the console is considered to be
insecure, so only someone who knows the
<username>root</username> password may use single-user mode.
Thus, to add this measure of security, choose
<literal>insecure</literal>, instead of the default of
<literal>secure</literal>.</para>
</note>
</sect2>
@ -1002,8 +951,8 @@ console none unknown off insecure</programlisting>
<indexterm><primary>multi-user mode</primary></indexterm>
<para>If &man.init.8; finds your file systems to be in order, or
once the user has finished in <link
<para>If &man.init.8; finds the file systems to be in order, or
once the user has finished their commands in <link
linkend="boot-singleuser">single-user mode</link>, the
system enters multi-user mode, in which it starts the
resource configuration of the system.</para>
@ -1018,14 +967,13 @@ console none unknown off insecure</programlisting>
<filename>/etc/defaults/rc.conf</filename>, and
system-specific details from
<filename>/etc/rc.conf</filename>, and then proceeds to
mount the system file systems mentioned in
<filename>/etc/fstab</filename>, start up networking
services, start up miscellaneous system daemons, and
finally runs the startup scripts of locally installed
packages.</para>
mount the system file systems listed in
<filename>/etc/fstab</filename>. It starts up networking
services, miscellaneous system daemons, then the startup
scripts of locally installed packages.</para>
<para>The &man.rc.8; manual page is a good reference to the
resource configuration system, as is examining the scripts
<para>To learn more about the resource configuration system,
refer to &man.rc.8; and examine the scripts
themselves.</para>
</sect3>
</sect2>
@ -1038,27 +986,26 @@ console none unknown off insecure</programlisting>
<primary><command>shutdown</command></primary>
</indexterm>
<para>Upon controlled shutdown, via &man.shutdown.8;,
<para>Upon controlled shutdown using &man.shutdown.8;,
&man.init.8; will attempt to run the script
<filename>/etc/rc.shutdown</filename>, and then proceed to send
all processes the <literal>TERM</literal> signal, and
subsequently the <literal>KILL</literal> signal to any that do
not terminate timely.</para>
not terminate in a timely manner.</para>
<para>To power down a FreeBSD machine on architectures and systems
that support power management, use the command
<command>shutdown -p now</command> to turn the power off
immediately. To just reboot a FreeBSD system, just use
<command>shutdown -r now</command>. You need to be
<username>root</username> or a member of
<groupname>operator</groupname> group to run &man.shutdown.8;.
The &man.halt.8; and &man.reboot.8; commands can also be used,
please refer to their manual pages and to &man.shutdown.8;'s one
for more information.</para>
<para>To power down a &os; machine on architectures and systems
that support power management, use <command>shutdown -p
now</command> to turn the power off immediately. To reboot a
&os; system, use <command>shutdown -r now</command>. One must
be <username>root</username> or a member of the
<groupname>operator</groupname> group in order to run
&man.shutdown.8;. One can also use &man.halt.8; and
&man.reboot.8;. Refer to their manual pages and to
&man.shutdown.8; for more information.</para>
<note>
<para>Power management requires &man.acpi.4; support in the
kernel or loaded as module for.</para>
<para>Power management requires &man.acpi.4; to be loaded as
a module or staticly compiled into a custom kernel.</para>
</note>
</sect1>
</chapter>

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

File diff suppressed because it is too large Load diff

View file

@ -27,32 +27,30 @@
</indexterm>
<para>File systems are an integral part of any operating system.
They allow for users to upload and store files, provide access
to data, and of course, make hard drives useful. Different
operating systems usually have one major aspect in common, that
is their native file system. On &os; this file system is known
as the Fast File System or <acronym>FFS</acronym> which is built
on the original Unix&trade; File System, also known as
<acronym>UFS</acronym>. This is the native file system on &os;
which is placed on hard disks for access to data.</para>
<para>&os; also supports a multitude of different file systems to
provide support for accessing data from other operating systems
locally, i.e.,&nbsp;data stored on locally attached
<acronym>USB</acronym> storage devices, flash drives, and hard
disks. There is also support for some non-native file systems.
These are file systems developed on other
operating systems, like the &linux; Extended File System
(<acronym>EXT</acronym>), and the &sun; Z File System
(<acronym>ZFS</acronym>).</para>
<para>There are different levels of support for the various file
systems in &os;. Some will require a kernel module to be
loaded, others may require a toolset to be installed. This
chapter is designed to help users of &os; access other file
systems on their systems, starting with the &sun; Z file
They allow users to upload and store files, provide access
to data, and make hard drives useful. Different operating
systems differ in their native file system. Traditionally, the
native &os; file system has been the Unix File System
<acronym>UFS</acronym> which has been modernized as
<acronym>UFS2</acronym>. Since &os;&nbsp;7.0, the Z File
System <acronym>ZFS</acronym> is also available as a native file
system.</para>
<para>In addition to its native file systems, &os; supports a
multitude of other file systems so that data from other
operating systems can be accessed locally, such as data stored
on locally attached <acronym>USB</acronym> storage devices,
flash drives, and hard disks. This includes support for the
&linux; Extended File System (<acronym>EXT</acronym>) and the
&microsoft; New Technology File System
(<acronym>NTFS</acronym>).</para>
<para>There are different levels of &os; support for the various
file systems. Some require a kernel module to be loaded and
others may require a toolset to be installed. Some non-native
file system support is full read-write while others are
read-only.</para>
<para>After reading this chapter, you will know:</para>
<itemizedlist>
@ -62,11 +60,11 @@
</listitem>
<listitem>
<para>What file systems are supported by &os;.</para>
<para>Which file systems are supported by &os;.</para>
</listitem>
<listitem>
<para>How to enable, configure, access and make use of
<para>How to enable, configure, access, and make use of
non-native file systems.</para>
</listitem>
</itemizedlist>
@ -75,24 +73,25 @@
<itemizedlist>
<listitem>
<para>Understand &unix; and &os; basics
(<xref linkend="basics"/>).</para>
<para>Understand &unix; and <link
linkend="basics">&os; basics</link>.</para>
</listitem>
<listitem>
<para>Be familiar with
the basics of kernel configuration/compilation
(<xref linkend="kernelconfig"/>).</para>
<para>Be familiar with the basics of <link
linkend="kernelconfig">kernel configuration and
compilation</link>.</para>
</listitem>
<listitem>
<para>Feel comfortable installing third party software
in &os; (<xref linkend="ports"/>).</para>
<para>Feel comfortable <link linkend="ports">installing
software</link> in &os;.</para>
</listitem>
<listitem>
<para>Have some familiarity with disks, storage and
device names in &os; (<xref linkend="disks"/>).</para>
<para>Have some familiarity with <link
linkend="disks">disks</link>, storage, and device names in
&os;.</para>
</listitem>
</itemizedlist>
</sect1>
@ -100,73 +99,67 @@
<sect1 id="filesystems-zfs">
<title>The Z File System (ZFS)</title>
<para>The Z&nbsp;file system, developed by &sun;, is a new
technology designed to use a pooled storage method. This means
that space is only used as it is needed for data storage. It
has also been designed for maximum data integrity, supporting
data snapshots, multiple copies, and data checksums. A new
data replication model, known as <acronym>RAID</acronym>-Z has
been added. The <acronym>RAID</acronym>-Z model is similar
to <acronym>RAID</acronym>5 but is designed to prevent data
write corruption.</para>
<para>The Z&nbsp;file system, originally developed by &sun;,
is designed to use a pooled storage method in that space is only
used as it is needed for data storage. It is also designed for
maximum data integrity, supporting data snapshots, multiple
copies, and data checksums. It uses a software data replication
model, known as <acronym>RAID</acronym>-Z.
<acronym>RAID</acronym>-Z provides redundancy similar to
hardware <acronym>RAID</acronym>, but is designed to prevent
data write corruption and to overcome some of the limitations
of hardware <acronym>RAID</acronym>.</para>
<sect2>
<title>ZFS Tuning</title>
<para>The <acronym>ZFS</acronym> subsystem utilizes much of
the system resources, so some tuning may be required to
provide maximum efficiency during every-day use. As an
experimental feature in &os; this may change in the near
future; however, at this time, the following steps are
recommended.</para>
<para>Some of the features provided by <acronym>ZFS</acronym>
are RAM-intensive, so some tuning may be required to provide
maximum efficiency on systems with limited RAM.</para>
<sect3>
<title>Memory</title>
<para>The total system memory should be at least one gigabyte,
with two gigabytes or more recommended. In all of the
examples here, the system has one gigabyte of memory with
several other tuning mechanisms in place.</para>
<para>Some people have had luck using fewer than one gigabyte
of memory, but with such a limited amount of physical
memory, when the system is under heavy load, it is very
plausible that &os; will panic due to memory
exhaustion.</para>
<para>At a bare minimum, the total system memory should be at
least one gigabyte. The amount of recommended RAM depends
upon the size of the pool and the ZFS features which are
used. A general rule of thumb is 1GB of RAM for every 1TB
of storage. If the deduplication feature is used, a general
rule of thumb is 5GB of RAM per TB of storage to be
deduplicated. While some users successfully use ZFS with
less RAM, it is possible that when the system is under heavy
load, it may panic due to memory exhaustion. Further tuning
may be required for systems with less than the recommended
RAM requirements.</para>
</sect3>
<sect3>
<title>Kernel Configuration</title>
<para>It is recommended that unused drivers and options
be removed from the kernel configuration file. Since most
devices are available as modules, they may be loaded
using the <filename>/boot/loader.conf</filename>
file.</para>
<para>Users of the &i386; architecture should add the
following option to their kernel configuration file,
rebuild their kernel, and reboot:</para>
<para>Due to the RAM limitations of the &i386; platform, users
using ZFS on the &i386; architecture should add the
following option to a custom kernel configuration file,
rebuild the kernel, and reboot:</para>
<programlisting>options KVA_PAGES=512</programlisting>
<para>This option will expand the kernel address space, thus
allowing the <varname>vm.kvm_size</varname> tunable to be
pushed beyond the currently imposed limit of 1&nbsp;GB
(2&nbsp;GB for <acronym>PAE</acronym>). To find the most
suitable value for this option, divide the desired address
space in megabytes by four (4). In this case, it is
<literal>512</literal> for 2&nbsp;GB.</para>
<para>This option expands the kernel address space, allowing
the <varname>vm.kvm_size</varname> tunable to be pushed
beyond the currently imposed limit of 1&nbsp;GB, or the
limit of 2&nbsp;GB for <acronym>PAE</acronym>. To find the
most suitable value for this option, divide the desired
address space in megabytes by four (4). In this example, it
is <literal>512</literal> for 2&nbsp;GB.</para>
</sect3>
<sect3>
<title>Loader Tunables</title>
<para>The <devicename>kmem</devicename> address space should
be increased on all &os; architectures. On the test system
<para>The <devicename>kmem</devicename> address space can
be increased on all &os; architectures. On a test system
with one gigabyte of physical memory, success was achieved
with the following options which should be placed in the
<filename>/boot/loader.conf</filename> file and the system
with the following options added to
<filename>/boot/loader.conf</filename>, and the system
restarted:</para>
<programlisting>vm.kmem_size="330M"
@ -191,22 +184,21 @@ vfs.zfs.vdev.cache.size="5M"</programlisting>
<screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' &gt;&gt; /etc/rc.conf</userinput>
&prompt.root; <userinput>service zfs start</userinput></screen>
<para>The remainder of this document assumes three
<acronym>SCSI</acronym> disks are available, and their
device names are
<para>The examples in this section assume three
<acronym>SCSI</acronym> disks with the device names
<devicename><replaceable>da0</replaceable></devicename>,
<devicename><replaceable>da1</replaceable></devicename>
<devicename><replaceable>da1</replaceable></devicename>,
and <devicename><replaceable>da2</replaceable></devicename>.
Users of <acronym>IDE</acronym> hardware may use the
Users of <acronym>IDE</acronym> hardware should instead use
<devicename><replaceable>ad</replaceable></devicename>
devices in place of <acronym>SCSI</acronym> hardware.</para>
device names.</para>
<sect3>
<title>Single Disk Pool</title>
<para>To create a simple, non-redundant <acronym>ZFS</acronym>
pool using a single disk device, use the
<command>zpool</command> command:</para>
pool using a single disk device, use
<command>zpool</command>:</para>
<screen>&prompt.root; <userinput>zpool create example /dev/da0</userinput></screen>
@ -220,12 +212,11 @@ devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032846 48737598 2% /usr
example 17547136 0 17547136 0% /example</screen>
<para>This output clearly shows the <literal>example</literal>
pool has not only been created but
<emphasis>mounted</emphasis> as well. It is also accessible
just like a normal file system, files may be created on it
and users are able to browse it as in the
following example:</para>
<para>This output shows that the <literal>example</literal>
pool has been created and <emphasis>mounted</emphasis>. It
is now accessible as a file system. Files may be created
on it and users can browse it, as seen in the following
example:</para>
<screen>&prompt.root; <userinput>cd /example</userinput>
&prompt.root; <userinput>ls</userinput>
@ -236,25 +227,24 @@ drwxr-xr-x 2 root wheel 3 Aug 29 23:15 .
drwxr-xr-x 21 root wheel 512 Aug 29 23:12 ..
-rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfile</screen>
<para>Unfortunately this pool is not taking advantage of
any <acronym>ZFS</acronym> features. Create a file system
on this pool, and enable compression on it:</para>
<para>However, this pool is not taking advantage of any
<acronym>ZFS</acronym> features. To create a dataset on
this pool with compression enabled:</para>
<screen>&prompt.root; <userinput>zfs create example/compressed</userinput>
&prompt.root; <userinput>zfs set compression=gzip example/compressed</userinput></screen>
<para>The <literal>example/compressed</literal> is now a
<acronym>ZFS</acronym> compressed file system. Try copying
some large files to it by copying them to <filename
<para>The <literal>example/compressed</literal> dataset is now
a <acronym>ZFS</acronym> compressed file system. Try
copying some large files to <filename
class="directory">/example/compressed</filename>.</para>
<para>The compression may now be disabled with:</para>
<para>Compression can be disabled with:</para>
<screen>&prompt.root; <userinput>zfs set compression=off example/compressed</userinput></screen>
<para>To unmount the file system, issue the following command
and then verify by using the <command>df</command>
utility:</para>
<para>To unmount a file system, issue the following command
and then verify by using <command>df</command>:</para>
<screen>&prompt.root; <userinput>zfs umount example/compressed</userinput>
&prompt.root; <userinput>df</userinput>
@ -264,7 +254,7 @@ devfs 1 1 0 100% /dev
/dev/ad0s1d 54098308 1032864 48737580 2% /usr
example 17547008 0 17547008 0% /example</screen>
<para>Re-mount the file system to make it accessible
<para>To re-mount the file system to make it accessible
again, and verify with <command>df</command>:</para>
<screen>&prompt.root; <userinput>zfs mount example/compressed</userinput>
@ -287,18 +277,19 @@ example on /example (zfs, local)
example/data on /example/data (zfs, local)
example/compressed on /example/compressed (zfs, local)</screen>
<para>As observed, <acronym>ZFS</acronym> file systems, after
creation, may be used like ordinary file systems; however,
many other features are also available. In the following
example, a new file system, <literal>data</literal> is
created. Important files will be stored here, so the file
system is set to keep two copies of each data block:</para>
<para><acronym>ZFS</acronym> datasets, after creation, may be
used like any file systems. However, many other features
are available which can be set on a per-dataset basis. In
the following example, a new file system,
<literal>data</literal> is created. Important files will be
stored here, the file system is set to keep two copies of
each data block:</para>
<screen>&prompt.root; <userinput>zfs create example/data</userinput>
&prompt.root; <userinput>zfs set copies=2 example/data</userinput></screen>
<para>It is now possible to see the data and space utilization
by issuing <command>df</command> again:</para>
by issuing <command>df</command>:</para>
<screen>&prompt.root; <userinput>df</userinput>
Filesystem 1K-blocks Used Avail Capacity Mounted on
@ -311,64 +302,56 @@ example/data 17547008 0 17547008 0% /example/data</screen>
<para>Notice that each file system on the pool has the same
amount of available space. This is the reason for using
<command>df</command> through these examples, to show
that the file systems are using only the amount of space
they need and will all draw from the same pool. The
<acronym>ZFS</acronym> file system does away with concepts
such as volumes and partitions, and allows for several file
systems to occupy the same pool. Destroy the file systems,
and then destroy the pool as they are no longer
needed:</para>
<command>df</command> in these examples, to show that the
file systems use only the amount of space they need and all
draw from the same pool. The <acronym>ZFS</acronym> file
system does away with concepts such as volumes and
partitions, and allows for several file systems to occupy
the same pool.</para>
<para>To destroy the file systems and then destroy the pool as
they are no longer needed:</para>
<screen>&prompt.root; <userinput>zfs destroy example/compressed</userinput>
&prompt.root; <userinput>zfs destroy example/data</userinput>
&prompt.root; <userinput>zpool destroy example</userinput></screen>
<para>Disks go bad and fail, an unavoidable trait. When
this disk goes bad, the data will be lost. One method of
avoiding data loss due to a failed hard disk is to implement
a <acronym>RAID</acronym>. <acronym>ZFS</acronym> supports
this feature in its pool design which is covered in
the next section.</para>
</sect3>
<sect3>
<title><acronym>ZFS</acronym> RAID-Z</title>
<para>As previously noted, this section will assume that
three <acronym>SCSI</acronym> disks exist as devices
<devicename>da0</devicename>, <devicename>da1</devicename>
and <devicename>da2</devicename> (or
<devicename>ad0</devicename> and beyond in case IDE disks
are being used). To create a <acronym>RAID</acronym>-Z
pool, issue the following command:</para>
<para>There is no way to prevent a disk from failing. One
method of avoiding data loss due to a failed hard disk is to
implement <acronym>RAID</acronym>. <acronym>ZFS</acronym>
supports this feature in its pool design.</para>
<para>To create a <acronym>RAID</acronym>-Z pool, issue the
following command and specify the disks to add to the
pool:</para>
<screen>&prompt.root; <userinput>zpool create storage raidz da0 da1 da2</userinput></screen>
<note>
<para>&sun; recommends that the amount of devices used
in a <acronym>RAID</acronym>-Z configuration is between
three and nine. If your needs call for a single pool to
consist of 10 disks or more, consider breaking it up into
smaller <acronym>RAID</acronym>-Z groups. If you only
have two disks and still require redundancy, consider
using a <acronym>ZFS</acronym> mirror instead. See the
&man.zpool.8; manual page for more details.</para>
<para>&sun; recommends that the amount of devices used in
a <acronym>RAID</acronym>-Z configuration is between
three and nine. For environments requiring a single pool
consisting of 10 disks or more, consider breaking it up
into smaller <acronym>RAID</acronym>-Z groups. If only
two disks are available and redundancy is a requirement,
consider using a <acronym>ZFS</acronym> mirror. Refer to
&man.zpool.8; for more details.</para>
</note>
<para>The <literal>storage</literal> zpool should have been
created. This may be verified by using the &man.mount.8;
and &man.df.1; commands as before. More disk devices may
have been allocated by adding them to the end of the list
above. Make a new file system in the pool, called
<literal>home</literal>, where user files will eventually
be placed:</para>
<para>This command creates the <literal>storage</literal>
zpool. This may be verified using &man.mount.8; and
&man.df.1;. This command makes a new file system in the
pool called <literal>home</literal>:</para>
<screen>&prompt.root; <userinput>zfs create storage/home</userinput></screen>
<para>It is now possible to enable compression and keep extra
copies of the user's home directories and files. This may
be accomplished just as before using the following
copies of directories and files using the following
commands:</para>
<screen>&prompt.root; <userinput>zfs set copies=2 storage/home</userinput>
@ -384,9 +367,9 @@ example/data 17547008 0 17547008 0% /example/data</screen>
&prompt.root; <userinput>ln -s /storage/home /usr/home</userinput></screen>
<para>Users should now have their data stored on the freshly
created <filename class="directory">/storage/home</filename>
file system. Test by adding a new user and logging in as
that user.</para>
created <filename
class="directory">/storage/home</filename>. Test by
adding a new user and logging in as that user.</para>
<para>Try creating a snapshot which may be rolled back
later:</para>
@ -405,28 +388,27 @@ example/data 17547008 0 17547008 0% /example/data</screen>
<command>ls</command> in the file system's
<filename class="directory">.zfs/snapshot</filename>
directory. For example, to see the previously taken
snapshot, perform the following command:</para>
snapshot:</para>
<screen>&prompt.root; <userinput>ls /storage/home/.zfs/snapshot</userinput></screen>
<para>It is possible to write a script to perform monthly
snapshots on user data; however, over time, snapshots
<para>It is possible to write a script to perform regular
snapshots on user data. However, over time, snapshots
may consume a great deal of disk space. The previous
snapshot may be removed using the following command:</para>
<screen>&prompt.root; <userinput>zfs destroy storage/home@08-30-08</userinput></screen>
<para>After all of this testing, there is no reason we should
keep <filename class="directory">/storage/home</filename>
around in its present state. Make it the real
<filename class="directory">/home</filename> file
system:</para>
<para>After testing, <filename
class="directory">/storage/home</filename> can be made the
real <filename class="directory">/home</filename> using
this command:</para>
<screen>&prompt.root; <userinput>zfs set mountpoint=/home storage/home</userinput></screen>
<para>Issuing the <command>df</command> and
<command>mount</command> commands will show that the system
now treats our file system as the real
<para>Run <command>df</command> and
<command>mount</command> to confirm that the system now
treats the file system as the real
<filename class="directory">/home</filename>:</para>
<screen>&prompt.root; <userinput>mount</userinput>
@ -455,8 +437,7 @@ storage/home 26320512 0 26320512 0% /home</screen>
<title>Recovering <acronym>RAID</acronym>-Z</title>
<para>Every software <acronym>RAID</acronym> has a method of
monitoring their <literal>state</literal>.
<acronym>ZFS</acronym> is no exception. The status of
monitoring its <literal>state</literal>. The status of
<acronym>RAID</acronym>-Z devices may be viewed with the
following command:</para>
@ -468,7 +449,7 @@ storage/home 26320512 0 26320512 0% /home</screen>
<screen>all pools are healthy</screen>
<para>If there is an issue, perhaps a disk has gone offline,
the pool state will be returned and look similar to:</para>
the pool state will look similar to:</para>
<screen> pool: storage
state: DEGRADED
@ -489,14 +470,13 @@ config:
errors: No known data errors</screen>
<para>This states that the device was taken offline by the
administrator. This is true for this particular example.
To take the disk offline, the following command was
used:</para>
<para>This indicates that the device was previously taken
offline by the administrator using the following
command:</para>
<screen>&prompt.root; <userinput>zpool offline storage da1</userinput></screen>
<para>It is now possible to replace the
<para>It is now possible to replace
<devicename>da1</devicename> after the system has been
powered down. When the system is back online, the following
command may issued to replace the disk:</para>
@ -529,37 +509,33 @@ errors: No known data errors</screen>
<sect3>
<title>Data Verification</title>
<para>As previously mentioned, <acronym>ZFS</acronym> uses
<literal>checksums</literal> to verify the integrity of
stored data. They are enabled automatically upon creation
of file systems and may be disabled using the following
command:</para>
<para><acronym>ZFS</acronym> uses checksums to verify the
integrity of stored data. These are enabled automatically
upon creation of file systems and may be disabled using the
following command:</para>
<screen>&prompt.root; <userinput>zfs set checksum=off storage/home</userinput></screen>
<para>This is not a wise idea, however, as checksums take
very little storage space and are more useful when enabled.
There also appears to be no noticeable costs in having them
enabled. While enabled, it is possible to have
<acronym>ZFS</acronym> check data integrity using checksum
verification. This process is known as
<quote>scrubbing.</quote> To verify the data integrity of
the <literal>storage</literal> pool, issue the following
command:</para>
<para>Doing so is <emphasis>not</emphasis> recommended as
checksums take very little storage space and are used to
check data integrity using checksum verification in a
process is known as <quote>scrubbing.</quote> To verify the
data integrity of the <literal>storage</literal> pool, issue
this command:</para>
<screen>&prompt.root; <userinput>zpool scrub storage</userinput></screen>
<para>This process may take considerable time depending on
the amount of data stored. It is also very
<acronym>I/O</acronym> intensive, so much that only one
of these operations may be run at any given time. After
the scrub has completed, the status is updated and may be
viewed by issuing a status request:</para>
<acronym>I/O</acronym> intensive, so much so that only one
scrub may be run at any given time. After the scrub has
completed, the status is updated and may be viewed by
issuing a status request:</para>
<screen>&prompt.root; <userinput>zpool status storage</userinput>
pool: storage
state: ONLINE
scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008
scrub: scrub completed with 0 errors on Sat Jan 26 19:57:37 2013
config:
NAME STATE READ WRITE CKSUM
@ -571,43 +547,39 @@ config:
errors: No known data errors</screen>
<para>The completion time is in plain view in this example.
This feature helps to ensure data integrity over a long
period of time.</para>
<para>The completion time is displayed and helps to ensure
data integrity over a long period of time.</para>
<para>There are many more options for the Z&nbsp;file system,
see the &man.zfs.8; and &man.zpool.8; manual
pages.</para>
<para>Refer to &man.zfs.8; and &man.zpool.8; for other
<acronym>ZFS</acronym> options.</para>
</sect3>
<sect3>
<title>ZFS Quotas</title>
<para>ZFS supports different types of quotas; the
refquota, the general quota, the user quota, and
the group quota. This section will explain the
basics of each one, and include some usage
instructions.</para>
<para>ZFS supports different types of quotas: the refquota,
the general quota, the user quota, and the group quota.
This section explains the basics of each type and includes
some usage instructions.</para>
<para>Quotas limit the amount of space that a dataset
and its descendants can consume, and enforce a limit
on the amount of space used by filesystems and
snapshots for the descendants. In terms of users,
quotas are useful to limit the amount of space a
particular user can use.</para>
<para>Quotas limit the amount of space that a dataset and its
descendants can consume, and enforce a limit on the amount
of space used by filesystems and snapshots for the
descendants. Quotas are useful to limit the amount of space
a particular user can use.</para>
<note>
<para>Quotas cannot be set on volumes, as the
<literal>volsize</literal> property acts as an
implicit quota.</para>
<literal>volsize</literal> property acts as an implicit
quota.</para>
</note>
<para>The refquota,
<literal>refquota=<replaceable>size</replaceable></literal>,
limits the amount of space a dataset can consume
by enforcing a hard limit on the space used. However,
this hard limit does not include space used by descendants,
such as file systems or snapshots.</para>
<para>The
<literal>refquota=<replaceable>size</replaceable></literal>
limits the amount of space a dataset can consume by
enforcing a hard limit on the space used. However, this
hard limit does not include space used by descendants, such
as file systems or snapshots.</para>
<para>To enforce a general quota of 10&nbsp;GB for
<filename>storage/home/bob</filename>, use the
@ -615,9 +587,8 @@ errors: No known data errors</screen>
<screen>&prompt.root; <userinput>zfs set quota=10G storage/home/bob</userinput></screen>
<para>User quotas limit the amount of space that can
be used by the specified user. The general format
is
<para>User quotas limit the amount of space that can be used
by the specified user. The general format is
<literal>userquota@<replaceable>user</replaceable>=<replaceable>size</replaceable></literal>,
and the user's name must be in one of the following
formats:</para>
@ -626,28 +597,28 @@ errors: No known data errors</screen>
<listitem>
<para><acronym
role="Portable Operating System
Interface">POSIX</acronym> compatible name
(e.g., <replaceable>joe</replaceable>).</para>
Interface">POSIX</acronym> compatible name such as
<replaceable>joe</replaceable>.</para>
</listitem>
<listitem>
<para><acronym
role="Portable Operating System
Interface">POSIX</acronym>
numeric ID (e.g.,
<replaceable>789</replaceable>).</para>
numeric ID such as
<replaceable>789</replaceable>.</para>
</listitem>
<listitem>
<para><acronym role="System Identifier">SID</acronym> name
(e.g.,
<replaceable>joe.bloggs@example.com</replaceable>).</para>
such as
<replaceable>joe.bloggs@example.com</replaceable>.</para>
</listitem>
<listitem>
<para><acronym role="System Identifier">SID</acronym>
numeric ID (e.g.,
<replaceable>S-1-123-456-789</replaceable>).</para>
numeric ID such as
<replaceable>S-1-123-456-789</replaceable>.</para>
</listitem>
</itemizedlist>
@ -670,7 +641,7 @@ errors: No known data errors</screen>
privilege are able to view and set everyone's quota.</para>
<para>The group quota limits the amount of space that a
specified user group can consume. The general format is
specified group can consume. The general format is
<literal>groupquota@<replaceable>group</replaceable>=<replaceable>size</replaceable></literal>.</para>
<para>To set the quota for the group
@ -680,30 +651,29 @@ errors: No known data errors</screen>
<screen>&prompt.root; <userinput>zfs set groupquota@firstgroup=50G</userinput></screen>
<para>To remove the quota for the group
<replaceable>firstgroup</replaceable>, or make sure that one
is not set, instead use:</para>
<replaceable>firstgroup</replaceable>, or to make sure that
one is not set, instead use:</para>
<screen>&prompt.root; <userinput>zfs set groupquota@firstgroup=none</userinput></screen>
<para>As with the user quota property,
non-<username>root</username> users can only see the quotas
associated with the user groups that they belong to, however
a <username>root</username> user or a user with the
associated with the groups that they belong to. However,
<username>root</username> or a user with the
<literal>groupquota</literal> privilege can view and set all
quotas for all groups.</para>
<para>The <command>zfs userspace</command> subcommand displays
the amount of space consumed by each user on the specified
filesystem or snapshot, along with any specified quotas.
The <command>zfs groupspace</command> subcommand does the
same for groups. For more information about supported
options, or only displaying specific options, see
&man.zfs.1;.</para>
<para>To display the amount of space consumed by each user on
the specified filesystem or snapshot, along with any
specified quotas, use <command>zfs userspace</command>.
For group information, use <command>zfs
groupspace</command>. For more information about
supported options or how to display only specific options,
refer to &man.zfs.1;.</para>
<para>To list the quota for
<filename>storage/home/bob</filename>, if you have the
correct privileges or are <username>root</username>, use the
following:</para>
<para>Users with sufficient privileges and
<username>root</username> can list the quota for
<filename>storage/home/bob</filename> using:</para>
<screen>&prompt.root; <userinput>zfs get quota storage/home/bob</userinput></screen>
</sect3>
@ -711,9 +681,9 @@ errors: No known data errors</screen>
<sect3>
<title>ZFS Reservations</title>
<para>ZFS supports two types of space reservations.
This section will explain the basics of each one,
and include some usage instructions.</para>
<para>ZFS supports two types of space reservations. This
section explains the basics of each and includes some usage
instructions.</para>
<para>The <literal>reservation</literal> property makes it
possible to reserve a minimum amount of space guaranteed
@ -732,23 +702,22 @@ errors: No known data errors</screen>
not counted by the <literal>refreservation</literal>
amount and so do not encroach on the space set.</para>
<para>Reservations of any sort are useful in many
situations, for example planning and testing the
suitability of disk space allocation in a new system, or
ensuring that enough space is available on file systems
for system recovery procedures and files.</para>
<para>Reservations of any sort are useful in many situations,
such as planning and testing the suitability of disk space
allocation in a new system, or ensuring that enough space is
available on file systems for system recovery procedures and
files.</para>
<para>The general format of the <literal>reservation</literal>
property is
<literal>reservation=<replaceable>size</replaceable></literal>,
<literal>reservation=<replaceable>size</replaceable></literal>,
so to set a reservation of 10&nbsp;GB on
<filename>storage/home/bob</filename>the below command is
used:</para>
<filename>storage/home/bob</filename>, use:</para>
<screen>&prompt.root; <userinput>zfs set reservation=10G storage/home/bob</userinput></screen>
<para>To make sure that no reservation is set, or to remove a
reservation, instead use:</para>
reservation, use:</para>
<screen>&prompt.root; <userinput>zfs set reservation=none storage/home/bob</userinput></screen>
@ -770,24 +739,24 @@ errors: No known data errors</screen>
<sect1 id="filesystems-linux">
<title>&linux; Filesystems</title>
<para>This section will describe some of the &linux; filesystems
<para>This section describes some of the &linux; filesystems
supported by &os;.</para>
<sect2>
<title>Ext2FS</title>
<title><acronym>ext2</acronym></title>
<para>The &man.ext2fs.5; file system kernel implementation was
written by Godmar Back, and the driver first appeared in
&os; 2.2. In &os; 8 and earlier, the code is licensed under
the <acronym>GNU</acronym> Public License, however under &os;
9, the code has been rewritten and it is now licensed under
the <acronym>BSD</acronym> license.</para>
<para>The &man.ext2fs.5; file system kernel implementation has
been available since &os;&nbsp;2.2. In &os;&nbsp;8.x and
earlier, the code is licensed under the
<acronym>GPL</acronym>. Since &os;&nbsp;9.0, the code has
been rewritten and is now <acronym>BSD</acronym>
licensed.</para>
<para>The &man.ext2fs.5; driver will allow the &os; kernel
to both read and write to <acronym>ext2</acronym> file
systems.</para>
<para>The &man.ext2fs.5; driver allows the &os; kernel to both
read and write to <acronym>ext2</acronym> file systems.</para>
<para>First, load the kernel loadable module:</para>
<para>To access an <acronym>ext2</acronym> file system, first
load the kernel loadable module:</para>
<screen>&prompt.root; <userinput>kldload ext2fs</userinput></screen>
@ -800,11 +769,10 @@ errors: No known data errors</screen>
<sect2>
<title>XFS</title>
<para>The X file system, <acronym>XFS</acronym>, was originally
written by <acronym>SGI</acronym> for the
<acronym>IRIX</acronym> operating system, and they ported it
to &linux;. The source code has been released under the
<acronym>GNU</acronym> Public License. See
<para><acronym>XFS</acronym> was originally written by
<acronym>SGI</acronym> for the <acronym>IRIX</acronym>
operating system and was then ported to &linux; and
released under the <acronym>GPL</acronym>. See
<ulink url="http://oss.sgi.com/projects/xfs">this page</ulink>
for more details. The &os; port was started by Russel
Cattelan, &a.kan;, and &a.rodrigc;.</para>
@ -814,21 +782,19 @@ errors: No known data errors</screen>
<screen>&prompt.root; <userinput>kldload xfs</userinput></screen>
<para>The &man.xfs.5; driver lets the &os; kernel access
XFS filesystems. However, at present only read-only
access is supported. Writing to a volume is not
possible.</para>
<para>The &man.xfs.5; driver lets the &os; kernel access XFS
filesystems. However, only read-only access is supported and
writing to a volume is not possible.</para>
<para>To mount a &man.xfs.5; volume located on
<filename>/dev/ad1s1</filename>, do the following:</para>
<filename>/dev/ad1s1</filename>:</para>
<screen>&prompt.root; <userinput>mount -t xfs /dev/ad1s1 /mnt</userinput></screen>
<para>Also useful to note is that the
<filename role="package">sysutils/xfsprogs</filename> port
contains the <command>mkfs.xfs</command> utility which enables
creation of <acronym>XFS</acronym> filesystems, plus utilities
for analysing and repairing them.</para>
<para>The <filename role="package">sysutils/xfsprogs</filename>
port includes the <command>mkfs.xfs</command> which enables
the creation of <acronym>XFS</acronym> filesystems, plus
utilities for analyzing and repairing them.</para>
<para>The <literal>-p</literal> flag to
<command>mkfs.xfs</command> can be used to create an
@ -842,11 +808,11 @@ errors: No known data errors</screen>
<para>The Reiser file system, ReiserFS, was ported to
&os; by &a.dumbbell;, and has been released under the
<acronym>GNU</acronym> Public License.</para>
<acronym>GPL</acronym> .</para>
<para>The ReiserFS driver will permit the &os; kernel to
access ReiserFS file systems and read their contents, but not
write to them, currently.</para>
<para>The ReiserFS driver permits the &os; kernel to access
ReiserFS file systems and read their contents, but not
write to them.</para>
<para>First, the kernel-loadable module needs to be
loaded:</para>

File diff suppressed because it is too large Load diff

View file

@ -35,11 +35,11 @@
control utilities which use the framework for configuration.
This chapter will not go into in depth discussion on how GEOM
handles or controls I/O, the underlying subsystem, or code.
This information is provided through the &man.geom.4; manual
page and its various SEE ALSO references. This chapter is also
not a definitive guide to <acronym>RAID</acronym>
configurations. Only GEOM-supported <acronym>RAID</acronym>
classifications will be discussed.</para>
This information is provided in &man.geom.4; and its various
<literal>SEE ALSO</literal> references. This chapter is also
not a definitive guide to <acronym>RAID</acronym> configurations
and only GEOM-supported <acronym>RAID</acronym> classifications
will be discussed.</para>
<para>After reading this chapter, you will know:</para>
@ -70,13 +70,13 @@
<itemizedlist>
<listitem>
<para>Understand how &os; treats disk devices
(<xref linkend="disks"/>).</para>
<para>Understand how &os; treats <link
linkend="disks">disk devices</link>.</para>
</listitem>
<listitem>
<para>Know how to configure and install a new &os; kernel
(<xref linkend="kernelconfig"/>).</para>
<para>Know how to configure and install a new <link
linkend="kernelconfig">&os; kernel</link>.</para>
</listitem>
</itemizedlist>
</sect1>
@ -84,12 +84,12 @@
<sect1 id="GEOM-intro">
<title>GEOM Introduction</title>
<para>GEOM permits access and control to classes &mdash; Master
Boot Records, <acronym>BSD</acronym> labels, etc &mdash; through
the use of providers, or the special files in
<filename class="directory">/dev</filename>. Supporting various
software <acronym>RAID</acronym> configurations, GEOM will
transparently provide access to the operating system and
<para>GEOM permits access and control to classes, such as Master
Boot Records and <acronym>BSD</acronym> labels, through the use
of providers, or the special files in <filename
class="directory">/dev</filename>. By supporting various
software <acronym>RAID</acronym> configurations, GEOM
transparently provides access to the operating system and
operating system utilities.</para>
</sect1>
@ -117,13 +117,13 @@
<primary>Striping</primary>
</indexterm>
<para>Striping is a method used to combine several disk drives
into a single volume. In many cases, this is done through the
use of hardware controllers. The GEOM disk subsystem provides
software support for <acronym>RAID</acronym>0, also known as
disk striping.</para>
<para>Striping combine several disk drives into a single volume.
In many cases, this is done through the use of hardware
controllers. The GEOM disk subsystem provides software support
for <acronym>RAID</acronym>0, also known as disk
striping.</para>
<para>In a <acronym>RAID</acronym>0 system, data are split up in
<para>In a <acronym>RAID</acronym>0 system, data is split into
blocks that get written across all the drives in the array.
Instead of having to wait on the system to write 256k to one
disk, a <acronym>RAID</acronym>0 system can simultaneously write
@ -168,7 +168,7 @@
<para>Determine the device names for the disks which will
be striped, and create the new stripe device. For example,
to stripe two unused and unpartitioned
<acronym>ATA</acronym> disks, for example
<acronym>ATA</acronym> disks with device names of
<filename>/dev/ad2</filename> and
<filename>/dev/ad3</filename>:</para>
@ -179,21 +179,21 @@ Done.</screen>
</step>
<step>
<para>Write a standard label, also known as a partition
table, on the new volume and install the default
bootstrap code:</para>
<para>Write a standard label, also known as a partition table,
on the new volume and install the default bootstrap
code:</para>
<screen>&prompt.root; <userinput>bsdlabel -wB /dev/stripe/st0</userinput></screen>
</step>
<step>
<para>This process should have created two other devices
in the <filename class="directory">/dev/stripe</filename>
directory in addition to the <devicename>st0</devicename>
device. Those include <devicename>st0a</devicename> and
<devicename>st0c</devicename>. At this point a file system
may be created on the <devicename>st0a</devicename> device
with the <command>newfs</command> utility:</para>
<para>This process should create two other devices in
<filename class="directory">/dev/stripe</filename> in
addition to <devicename>st0</devicename>. Those include
<devicename>st0a</devicename> and
<devicename>st0c</devicename>. At this point, a file system
may be created on <devicename>st0a</devicename> using
<command>newfs</command>:</para>
<screen>&prompt.root; <userinput>newfs -U /dev/stripe/st0a</userinput></screen>
@ -209,10 +209,9 @@ Done.</screen>
<para>To mount this striped file system automatically during the
boot process, place the volume information in
<filename>/etc/fstab</filename> file. For this purpose, a
permanent mount point, named
<filename class="directory">stripe</filename>, is
created:</para>
<filename>/etc/fstab</filename>. In this example, a
permanent mount point, named <filename
class="directory">stripe</filename>, is created:</para>
<screen>&prompt.root; <userinput>mkdir /stripe</userinput>
&prompt.root; <userinput>echo "/dev/stripe/st0a /stripe ufs rw 2 2" \</userinput>
@ -249,8 +248,8 @@ Done.</screen>
replace the failed drive without user interruption.</para>
<para>Two common situations are illustrated in these examples.
The first is creating a mirror out of two new drives and using
it as a replacement for an existing single drive. The second
The first creates a mirror out of two new drives and uses it
as a replacement for an existing single drive. The second
example creates a mirror on a single new drive, copies the old
drive's data to it, then inserts the old drive into the
mirror. While this procedure is slightly more complicated, it
@ -323,14 +322,14 @@ Done.</screen>
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
<para>Create the mirror with the two new drives.</para>
<para>Create the mirror with the two new drives:</para>
<screen>&prompt.root; <userinput>gmirror label -v gm0 /dev/ada1 /dev/ada2</userinput></screen>
<para><devicename>gm0</devicename> is a user-chosen device name
assigned to the new mirror. After the mirror has been
started, this device name will appear in the
<filename>/dev/mirror/</filename> directory.</para>
started, this device name will appear in
<filename>/dev/mirror/</filename>.</para>
<para>MBR and bsdlabel partition tables can now be created on
the mirror with &man.gpart.8;. Here we show a traditional
@ -384,8 +383,8 @@ Done.</screen>
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1e</userinput>
&prompt.root; <userinput>newfs -U /dev/mirror/gm0s1f</userinput></screen>
<para>Filesystems from the original disk
(<devicename>ada0</devicename>) can now be copied onto the
<para>Filesystems from the original
<devicename>ada0</devicename> disk can now be copied onto the
mirror with &man.dump.8; and &man.restore.8;.</para>
<screen>&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput>
@ -419,8 +418,8 @@ Done.</screen>
are identical, it does not matter which is selected to
boot.</para>
<para>See the
<link linkend="gmirror-troubleshooting">Troubleshooting</link>
<para>See the <link
linkend="gmirror-troubleshooting">Troubleshooting</link>
section if there are problems booting. Powering down and
disconnecting the original <devicename>ada0</devicename> disk
will allow it to be kept as an offline backup.</para>
@ -436,19 +435,19 @@ Done.</screen>
single disk, <devicename>ada0</devicename>. A new disk,
<devicename>ada1</devicename>, has been connected to the
system. A one-disk mirror will be created on the new disk,
the existing system copied onto it, and then the old disk will be
inserted into the mirror. This slightly complex procedure is
required because &man.gmirror.8; needs to put a 512-byte block
of metadata at the end of each disk, and the existing
the existing system copied onto it, and then the old disk will
be inserted into the mirror. This slightly complex procedure
is required because &man.gmirror.8; needs to put a 512-byte
block of metadata at the end of each disk, and the existing
<devicename>ada0</devicename> has usually had all of its space
already allocated.</para>
<para>Load the &man.gmirror.8; kernel module.</para>
<para>Load the &man.gmirror.8; kernel module:</para>
<screen>&prompt.root; <userinput>gmirror load</userinput></screen>
<para>Check the media size of the original disk with
&man.diskinfo.8;.</para>
&man.diskinfo.8;:</para>
<screen>&prompt.root; <userinput>diskinfo -v ada0 | head -n3</userinput>
/dev/ada0
@ -461,7 +460,7 @@ Done.</screen>
size. This drive does not store any data, but is used only to
limit the size of the mirror. When &man.gmirror.8; creates
the mirror, it will restrict the capacity to the size of
<devicename>gzero.nop</devicename> even if the new drive
<devicename>gzero.nop</devicename>, even if the new drive
(<devicename>ada1</devicename>) has more space. Note that the
<replaceable>1000204821504</replaceable> in the second line
should be equal to <devicename>ada0</devicename>'s media size
@ -502,7 +501,7 @@ Done.</screen>
be explained later.</para>
<para>In either case, partition tables on the primary disk
should be copied first. It can be done by using &man.gpart.8;
should be copied first with the &man.gpart.8;
<command>backup</command> and <command>restore</command>
subcommands.</para>
@ -527,11 +526,12 @@ BSD 8
6 freebsd-ufs 130023424 838860800
7 freebsd-ufs 968884224 984640881</screen>
<para>If the whole disk was used in the output of &man.gpart.8;
<command>show</command>, the capacity in these partition
tables must be reduced by one sector. Edit the two files,
reducing the size of both the slice and last partition by one.
These are the last numbers in each listing.</para>
<para>If the output of <command>gpart show</command> shows no
free space at the end of the disk, the size of both the slice
and the last partition must be reduced by one sector. Edit
the two files, reducing the size of both the slice and last
partition by one. These are the last numbers in each
listing.</para>
<screen>&prompt.root; <userinput>cat table.ada0</userinput>
MBR 4
@ -550,13 +550,13 @@ BSD 8
disk, these two files can be used without modification.</para>
<para>Now restore the partition table into
<devicename>mirror/gm0</devicename>.</para>
<devicename>mirror/gm0</devicename>:</para>
<screen>&prompt.root; <userinput>gpart restore mirror/gm0 &lt; table.ada0</userinput>
&prompt.root; <userinput>gpart restore mirror/gm0s1 &lt; table.ada0s1</userinput></screen>
<para>Check the partition table with the &man.gpart.8;
<command>show</command>. This example has
<para>Check the partition table with
<command>gpart show</command>. This example has
<devicename>gm0s1a</devicename> for <filename>/</filename>,
<devicename>gm0s1d</devicename> for <filename>/var</filename>,
<devicename>gm0s1e</devicename> for <filename>/usr</filename>,
@ -707,8 +707,7 @@ mirror/gm0 COMPLETE ada1 (ACTIVE)
<para>BIOS settings may have to be changed to boot from one
of the new mirrored drives. Either mirror drive can be
used for booting. As components of a mirror, they contain
identical data.</para>
used for booting, as they contain identical data.</para>
</sect4>
<sect4>
@ -742,10 +741,10 @@ mountroot&gt;</screen>
<para>Forgetting to load the
<filename>geom_mirror</filename> module in
<filename>/boot/loader.conf</filename> can cause this
problem. To fix it, boot from a &os;-9 or later CD or USB
stick and choose <literal>Shell</literal> at the first
prompt. Then load the mirror module and mount the mirror
device:</para>
problem. To fix it, boot from a &os;&nbsp;9.0 or later
installation media and choose <literal>Shell</literal> at
the first prompt. Then load the mirror module and mount
the mirror device:</para>
<screen>&prompt.root; <userinput>gmirror load</userinput>
&prompt.root; <userinput>mount /dev/mirror/gm0s1a /mnt</userinput></screen>
@ -759,8 +758,8 @@ mountroot&gt;</screen>
<para>Other problems that cause <literal>error 19</literal>
require more effort to fix. Enter
<literal>ufs:/dev/ada0s1a</literal> at the prompt.
Although the system should boot from
<literal>ufs:/dev/ada0s1a</literal> at the boot loader
prompt. Although the system should boot from
<devicename>ada0</devicename>, another prompt to select a
shell appears because <filename>/etc/fstab</filename> is
incorrect. Press the Enter key at the prompt. Undo the
@ -780,24 +779,20 @@ mountroot&gt;</screen>
<sect2>
<title>Recovering from Disk Failure</title>
<para>The wonderful part about disk mirroring is that an
individual disk can fail without causing the mirror to lose
any data.</para>
<para>The benefit of disk mirroring is that an individual disk
can fail without causing the mirror to lose any data. In the
above example, if <devicename>ada0</devicename> fails, the
mirror will continue to work, providing data from the
remaining working drive, <devicename>ada1</devicename>.</para>
<para><devicename>ada0</devicename> is one of two drives making
up the mirror in the previous example. If
<devicename>ada0</devicename> fails, the mirror will continue
to work, providing data from the remaining working drive,
<devicename>ada1</devicename>.</para>
<para>To replace the failed drive, the computer is shut down and
the failed drive is physically replaced with a new drive of
equal or greater capacity. Manufacturers use somewhat
arbitrary values when rating drives in gigabytes, and the
only way to really be sure is to compare the total count of
sectors shown by <command>diskinfo -v</command>. A drive with
larger capacity than the mirror will work, although the extra
space on the new drive will not be used.</para>
<para>To replace the failed drive, shut down the system and
physically replace the failed drive with a new drive of equal
or greater capacity. Manufacturers use somewhat arbitrary
values when rating drives in gigabytes, and the only way to
really be sure is to compare the total count of sectors shown
by <command>diskinfo -v</command>. A drive with larger
capacity than the mirror will work, although the extra space
on the new drive will not be used.</para>
<para>After the computer is powered back up, the mirror will be
running in a <quote>degraded</quote> mode with only one drive.
@ -866,18 +861,18 @@ mountroot&gt;</screen>
</indexterm>
<para><acronym>RAID</acronym>3 is a method used to combine several
disk drives into a single volume with a dedicated parity
disk. In a <acronym>RAID</acronym>3 system, data is split up
into a number of bytes that are written across all the drives in
the array except for one disk which acts as a dedicated parity
disk. This means that reading 1024KB from a
disk drives into a single volume with a dedicated parity disk.
In a <acronym>RAID</acronym>3 system, data is split up into a
number of bytes that are written across all the drives in the
array except for one disk which acts as a dedicated parity disk.
This means that reading 1024KB from a
<acronym>RAID</acronym>3 implementation will access all disks in
the array. Performance can be enhanced by using multiple
disk controllers. The <acronym>RAID</acronym>3 array provides a
the array. Performance can be enhanced by using multiple disk
controllers. The <acronym>RAID</acronym>3 array provides a
fault tolerance of 1 drive, while providing a capacity of 1 -
1/n times the total capacity of all drives in the array, where n
is the number of hard drives in the array. Such a configuration
is mostly suitable for storing data of larger sizes, e.g.,
is mostly suitable for storing data of larger sizes such as
multimedia files.</para>
<para>At least 3 physical hard drives are required to build a
@ -885,7 +880,7 @@ mountroot&gt;</screen>
size, since I/O requests are interleaved to read or write to
multiple disks in parallel. Also, due to the nature of
<acronym>RAID</acronym>3, the number of drives must be
equal to 3, 5, 9, 17, etc. (2^n + 1).</para>
equal to 3, 5, 9, 17, and so on, or 2^n + 1.</para>
<sect2>
<title>Creating a Dedicated <acronym>RAID</acronym>3
@ -955,11 +950,7 @@ Done.</screen>
<para>Many numbers will glide across the screen, and after a
bit of time, the process will be complete. The volume has
been created and is ready to be mounted.</para>
</step>
<step>
<para>The last step is to mount the file system:</para>
been created and is ready to be mounted:</para>
<screen>&prompt.root; <userinput>mount /dev/raid3/gr0p1 /multimedia/</userinput></screen>
@ -975,16 +966,16 @@ Done.</screen>
<step>
<para>The <filename>geom_raid3.ko</filename> module must be
loaded before the array can be mounted. To automatically
load the kernel module during the system initialization,
add the following line to the
<filename>/boot/loader.conf</filename> file:</para>
load the kernel module during system initialization, add
the following line to
<filename>/boot/loader.conf</filename>:</para>
<programlisting>geom_raid3_load="YES"</programlisting>
</step>
<step>
<para>The following volume information must be added to the
<filename>/etc/fstab</filename> file in order to
<para>The following volume information must be added to
<filename>/etc/fstab</filename> in order to
automatically mount the array's file system during
the system boot process:</para>
@ -998,7 +989,7 @@ Done.</screen>
<title>GEOM Gate Network Devices</title>
<para>GEOM supports the remote use of devices, such as disks,
CD-ROMs, files, etc. through the use of the gate utilities.
CD-ROMs, and files through the use of the gate utilities.
This is similar to <acronym>NFS</acronym>.</para>
<para>To begin, an exports file must be created. This file
@ -1010,8 +1001,8 @@ Done.</screen>
<programlisting>192.168.1.0/24 RW /dev/da0s4d</programlisting>
<para>It will allow all hosts inside the private network access
the file system on the <devicename>da0s4d</devicename>
<para>This allows all hosts inside the specified private network
access to the file system on the <devicename>da0s4d</devicename>
partition.</para>
<para>To export this device, ensure it is not currently mounted,
@ -1019,25 +1010,24 @@ Done.</screen>
<screen>&prompt.root; <userinput>ggated</userinput></screen>
<para>Now to <command>mount</command> the device on the client
<para>To <command>mount</command> the device on the client
machine, issue the following commands:</para>
<screen>&prompt.root; <userinput>ggatec create -o rw 192.168.1.1 /dev/da0s4d</userinput>
ggate0
&prompt.root; <userinput>mount /dev/ggate0 /mnt</userinput></screen>
<para>From here on, the device may be accessed through the
<filename class="directory">/mnt</filename> mount point.</para>
<para>The device may now be accessed through the <filename
class="directory">/mnt</filename> mount point.</para>
<note>
<para>It should be pointed out that this will fail if the device
is currently mounted on either the server machine or any other
machine on the network.</para>
<para>However, this will fail if the device is currently mounted
on either the server machine or any other machine on the
network.</para>
</note>
<para>When the device is no longer needed, it may be safely
unmounted with the &man.umount.8; command, similar to any other
disk device.</para>
<para>When the device is no longer needed, unmount it with
&man.umount.8;, similar to any other disk device.</para>
</sect1>
<sect1 id="geom-glabel">
@ -1050,34 +1040,32 @@ ggate0
<primary>Disk Labels</primary>
</indexterm>
<para>During system initialization, the &os; kernel will create
<para>During system initialization, the &os; kernel creates
device nodes as devices are found. This method of probing for
devices raises some issues, for instance what if a new disk
device is added via <acronym>USB</acronym>? It is very likely
that a flash device may be handed the device name of
devices raises some issues. For instance, what if a new disk
device is added via <acronym>USB</acronym>? It is likely that
a flash device may be handed the device name of
<devicename>da0</devicename> and the original
<devicename>da0</devicename> shifted to
<devicename>da1</devicename>. This will cause issues mounting
file systems if they are listed in
<filename>/etc/fstab</filename>, effectively, this may also
prevent the system from booting.</para>
<filename>/etc/fstab</filename> which may also prevent the
system from booting.</para>
<para>One solution to this issue is to chain the
<acronym>SCSI</acronym> devices in order so a new device added
to the <acronym>SCSI</acronym> card will be issued unused device
numbers. But what about <acronym>USB</acronym> devices which
may replace the primary <acronym>SCSI</acronym> disk? This
happens because <acronym>USB</acronym> devices are usually
probed before the <acronym>SCSI</acronym> card. One solution is
to only insert these devices after the system has been booted.
Another method could be to use only a single
<acronym>ATA</acronym> drive and never list the
<acronym>SCSI</acronym> devices in
<para>One solution is to chain <acronym>SCSI</acronym> devices
in order so a new device added to the <acronym>SCSI</acronym>
card will be issued unused device numbers. But what about
<acronym>USB</acronym> devices which may replace the primary
<acronym>SCSI</acronym> disk? This happens because
<acronym>USB</acronym> devices are usually probed before the
<acronym>SCSI</acronym> card. One solution is to only insert
these devices after the system has been booted. Another method
is to use only a single <acronym>ATA</acronym> drive and never
list the <acronym>SCSI</acronym> devices in
<filename>/etc/fstab</filename>.</para>
<para>A better solution is available. By using the
<command>glabel</command> utility, an administrator or user may
label their disk devices and use these labels in
<para>A better solution is to use <command>glabel</command> to
label the disk devices and use the labels in
<filename>/etc/fstab</filename>. Because
<command>glabel</command> stores the label in the last sector of
a given provider, the label will remain persistent across
@ -1086,39 +1074,33 @@ ggate0
through.</para>
<note>
<para>This goes without saying that a label be permanent. The
<command>glabel</command> utility may be used to create both a
transient and permanent label. Only the permanent label will
remain consistent across reboots. See the &man.glabel.8;
manual page for more information on the differences between
labels.</para>
<para><command>glabel</command> can create both transient and
permanent labels. Only permanent labels are consistent across
reboots. Refer to &man.glabel.8; for more information on the
differences between labels.</para>
</note>
<sect2>
<title>Label Types and Examples</title>
<para>There are two types of labels, a generic label and a
file system label. Labels can be permanent or temporary.
Permanent labels can be created with the &man.tunefs.8;
or &man.newfs.8; commands. They will then be created
in a sub-directory of
<filename class="directory">/dev</filename>, which will be
named according to their file system type. For example,
<para>Permanent labels can be a generic or a file system label.
Permanent file system labels can be created with
&man.tunefs.8; or &man.newfs.8;. These types of labels are
created in a sub-directory of <filename
class="directory">/dev</filename>, and will be named
according to the file system type. For example,
<acronym>UFS</acronym>2 file system labels will be created in
the <filename class="directory">/dev/ufs</filename> directory.
Permanent labels can also be created with the <command>glabel
label</command> command. These are not file system specific,
and will be created in the
<filename class="directory">/dev/label</filename>
directory.</para>
<filename class="directory">/dev/ufs</filename>. Generic
permanent labels can be created with <command>glabel
label</command>. These are not file system specific and
will be created in <filename
class="directory">/dev/label</filename>.</para>
<para>A temporary label will go away with the next reboot.
These labels will be created in the
<filename class="directory">/dev/label</filename> directory
and are perfect for experimentation. A temporary label can be
created using the <command>glabel create</command> command.
For more information, please read the manual page of
&man.glabel.8;.</para>
<para>Temporary labels are destroyed at the next reboot. These
labels are created in <filename
class="directory">/dev/label</filename> and are suited to
experimentation. A temporary label can be created using
<command>glabel create</command>.</para>
<!-- XXXTR: How do you create a file system label without running newfs
or when there is no newfs (e.g.: cd9660)? -->
@ -1131,14 +1113,12 @@ ggate0
<warning>
<para>If the file system is full, this may cause data
corruption; however, if the file system is full then the
main goal should be removing stale files and not adding
labels.</para>
corruption.</para>
</warning>
<para>A label should now exist in
<filename class="directory">/dev/ufs</filename> which may be
added to <filename>/etc/fstab</filename>:</para>
<para>A label should now exist in <filename
class="directory">/dev/ufs</filename> which may be added
to <filename>/etc/fstab</filename>:</para>
<programlisting>/dev/ufs/home /home ufs rw 2 2</programlisting>
@ -1147,7 +1127,7 @@ ggate0
to run <command>tunefs</command>.</para>
</note>
<para>Now the file system may be mounted like normal:</para>
<para>Now the file system may be mounted:</para>
<screen>&prompt.root; <userinput>mount /home</userinput></screen>
@ -1160,8 +1140,8 @@ ggate0
<para>File systems may also be created with a default label
by using the <option>-L</option> flag with
<command>newfs</command>. See the &man.newfs.8; manual page
for more information.</para>
<command>newfs</command>. Refer to &man.newfs.8; for
more information.</para>
<para>The following command can be used to destroy the
label:</para>
@ -1185,7 +1165,7 @@ ggate0
<filename class="directory">/</filename>,
<filename class="directory">/var</filename>,
<filename class="directory">/usr</filename> and
<filename class="directory">/tmp</filename> file systems, as
<filename class="directory">/tmp</filename>, as
well as a swap partition.</para>
<para>Reboot the system, and at the &man.loader.8; prompt,
@ -1207,8 +1187,8 @@ GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
<para>The system will continue with multi-user boot. After
the boot completes, edit <filename>/etc/fstab</filename> and
replace the conventional device names, with their respective
labels. The final <filename>/etc/fstab</filename> file will
look like the following:</para>
labels. The final <filename>/etc/fstab</filename> will
look like this:</para>
<programlisting># Device Mountpoint FStype Options Dump Pass#
/dev/label/swap none swap sw 0 0
@ -1232,24 +1212,23 @@ devfs on /dev (devfs, local)
<para>Starting with &os;&nbsp;7.2, the &man.glabel.8; class
supports a new label type for <acronym>UFS</acronym> file
systems, based on the unique file system id,
<literal>ufsid</literal>. These labels may be found in the
<filename class="directory">/dev/ufsid</filename> directory
and are created automatically during system startup. It is
possible to use <literal>ufsid</literal> labels to mount
partitions using the <filename>/etc/fstab</filename> facility.
Use the <command>glabel status</command> command to receive a
list of file systems and their corresponding
<literal>ufsid</literal> labels:</para>
<literal>ufsid</literal>. These labels may be found in
<filename class="directory">/dev/ufsid</filename> and are
created automatically during system startup. It is possible
to use <literal>ufsid</literal> labels to mount partitions
using <filename>/etc/fstab</filename>. Use <command>glabel
status</command> to receive a list of file systems and their
corresponding <literal>ufsid</literal> labels:</para>
<screen>&prompt.user; <userinput>glabel status</userinput>
Name Status Components
ufsid/486b6fc38d330916 N/A ad4s1d
ufsid/486b6fc16926168e N/A ad4s1f</screen>
<para>In the above example <devicename>ad4s1d</devicename>
represents the <filename class="directory">/var</filename>
file system, while <devicename>ad4s1f</devicename> represents
the <filename class="directory">/usr</filename> file system.
<para>In the above example, <devicename>ad4s1d</devicename>
represents <filename class="directory">/var</filename>,
while <devicename>ad4s1f</devicename> represents
<filename class="directory">/usr</filename>.
Using the <literal>ufsid</literal> values shown, these
partitions may now be mounted with the following entries in
<filename>/etc/fstab</filename>:</para>
@ -1258,9 +1237,9 @@ ufsid/486b6fc16926168e N/A ad4s1f</screen>
/dev/ufsid/486b6fc16926168e /usr ufs rw 2 2</programlisting>
<para>Any partitions with <literal>ufsid</literal> labels can be
mounted in this way, eliminating the need to create permanent
labels for them manually, while still enjoying the benefits of
device-name independent mounting.</para>
mounted in this way, eliminating the need to manually create
permanent labels, while still enjoying the benefits of device
name independent mounting.</para>
</sect2>
</sect1>
@ -1274,51 +1253,50 @@ ufsid/486b6fc16926168e N/A ad4s1f</screen>
<primary>Journaling</primary>
</indexterm>
<para>With the release of &os; 7.0, the long awaited feature
of journals has been implemented. The implementation itself is
provided through the <acronym>GEOM</acronym> subsystem and is
easily configured via the &man.gjournal.8; utility.</para>
<para>Beginning with &os;&nbsp;7.0, support for UFS journals is
available. The implementation is provided through the
<acronym>GEOM</acronym> subsystem and is configured using
&man.gjournal.8;.</para>
<para>What is journaling? Journaling capability stores a log of
file system transactions, i.e.: changes that make up a complete
disk write operation, before meta-data and file writes are
committed to the disk proper. This transaction log can later
be replayed to redo file system transactions, preventing file
system inconsistencies.</para>
<para>Journaling stores a log of file system transactions, such as
changes that make up a complete disk write operation, before
meta-data and file writes are committed to the disk. This
transaction log can later be replayed to redo file system
transactions, preventing file system inconsistencies.</para>
<para>This method is yet another mechanism to protect against data
loss and inconsistencies of the file system. Unlike Soft
Updates which tracks and enforces meta-data updates and
Snapshots which is an image of the file system, an actual log is
stored in disk space specifically reserved for this task, and in
some cases may be stored on another disk entirely.</para>
<para>This method provides another mechanism to protect against
data loss and inconsistencies of the file system. Unlike Soft
Updates, which tracks and enforces meta-data updates, and
snapshots, which create an image of the file system, a log is
stored in disk space specifically for this task, and in
some cases, may be stored on another disk entirely.</para>
<para>Unlike other file system journaling implementations, the
<command>gjournal</command> method is block based and not
implemented as part of the file system - only as a
implemented as part of the file system. It is a
<acronym>GEOM</acronym> extension.</para>
<para>To enable support for <command>gjournal</command>, the
&os; kernel must have the following option - which is the
default on &os; 7.0 and later systems:</para>
&os; kernel must have the following option which is the
default on &os;&nbsp;7.0 and later:</para>
<programlisting>options UFS_GJOURNAL</programlisting>
<para>If journaled volumes need to be mounted during startup, the
<filename>geom_journal.ko</filename> kernel module will also
have to be loaded, by adding the following line in
<filename>geom_journal.ko</filename> kernel module needs to be
loaded, by adding the following line to
<filename>/boot/loader.conf</filename>:</para>
<programlisting>geom_journal_load="YES"</programlisting>
<para>Alternatively, this function can also be built into a custom
<para>Alternatively, this function can be built into a custom
kernel, by adding the following line in the kernel configuration
file:</para>
<programlisting>options GEOM_JOURNAL</programlisting>
<para>Creating a journal on a free file system may now be done
using the following steps, considering that the
using the following steps. In this example,
<devicename>da4</devicename> is a new <acronym>SCSI</acronym>
disk:</para>
@ -1332,12 +1310,11 @@ ufsid/486b6fc16926168e N/A ad4s1f</screen>
<screen>&prompt.root; <userinput>newfs -O 2 -J /dev/da4.journal</userinput></screen>
<para>The previously issued command will create a
<acronym>UFS</acronym>2 file system on the journaled
device.</para>
<para>This command will creates a <acronym>UFS</acronym>2 file
system on the journaled device.</para>
<para>Effectively <command>mount</command> the device at the
desired point with:</para>
<para><command>mount</command> the device at the desired point
with:</para>
<screen>&prompt.root; <userinput>mount /dev/da4.journal <replaceable>/mnt</replaceable></userinput></screen>
@ -1351,21 +1328,21 @@ ufsid/486b6fc16926168e N/A ad4s1f</screen>
<devicename>ad4s2.journal</devicename>.</para>
</note>
<para>For better performance, keeping the journal on another disk
may be desired. For these cases, the journal provider or
storage device should be listed after the device to enable
journaling on. Journaling may also be enabled on current file
systems by using <command>tunefs</command>; however, always make
a backup before attempting to alter a file system. In most
cases, the <command>gjournal</command> will fail if it is unable
to create the actual journal but this does not protect against
data loss incurred as a result of misusing
<para>For better performance, the journal may be kept on another
disk. In this configuration, the journal provider or storage
device should be listed after the device to enable journaling
on. Journaling may also be enabled on current file systems by
using <command>tunefs</command>. However,
<emphasis>always</emphasis> make a backup before attempting to
alter a file system. In most cases, <command>gjournal</command>
will fail if it is unable to create the journal, but this does
not protect against data loss incurred as a result of misusing
<command>tunefs</command>.</para>
<para>It is also possible to journal the boot disk of a &os;
system. Please refer to the article <ulink
system. Refer to the article <ulink
url="&url.articles.gjournal-desktop;">Implementing UFS
Journaling on a Desktop PC</ulink> for detailed instructions
on this task.</para>
Journaling on a Desktop PC</ulink> for detailed
instructions.</para>
</sect1>
</chapter>

File diff suppressed because it is too large Load diff

View file

@ -556,6 +556,7 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
usage of its features. If the presented steps below look
too complicated, it is advised to take a look at a simpler
system such as <filename
role="package">sysutils/qjail</filename> or <filename
role="package">sysutils/ezjail</filename>, which provides
an easier method of administering &os; jails and is not as
sophisticated as this setup.</para>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -59,11 +59,9 @@
run about 90% of all Linux applications without modification.
This includes applications such as
<application>&staroffice;</application>, the Linux version of
<application>&netscape;</application>,
<application>&adobe;&nbsp;&acrobat;</application>,
<application>&realplayer;</application>,
<application>&oracle;</application>,
<application>&wordperfect;</application>,
<application>Doom</application>,
<application>Quake</application>, and more. It is also reported
that in some situations, Linux binaries perform better on

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -11,24 +11,6 @@
<sect1 id="mirrors-cdrom">
<title>CDROM and DVD Publishers</title>
<sect2>
<title>Retail Boxed Products</title>
<para>&os; is available as a boxed product (&os; CDs,
additional software, and printed documentation) from several
retailers:</para>
<itemizedlist>
<listitem>
<address>
<otheraddr>Frys Electronics</otheraddr>
WWW: <otheraddr><ulink
url="http://www.frys.com/"></ulink></otheraddr>
</address>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>CD and DVD Sets</title>

View file

@ -178,11 +178,8 @@
<sect2 id="printing-intro-why">
<title>Why You Should Use the Spooler</title>
<para>If you are the sole user of your system, you may be
wondering why you should bother with the spooler when you do
not need access control, header pages, or printer accounting.
While it is possible to enable direct access to a printer,
you should use the spooler anyway since:</para>
<para>The spooler still provides benefit on a single-user system
and should be used because:</para>
<itemizedlist>
<listitem>

View file

@ -784,8 +784,7 @@ PLIST_DIRS= lib/X11/oneko</programlisting>
variable value. Example:</para>
<programlisting>post-patch:
@${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README
@${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure</programlisting>
@${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README</programlisting>
<para>Quite often, there is a situation when the software being
ported, especially if it is primarily developed on &windows;,
@ -5793,14 +5792,13 @@ PLIST_SUB+= NLS="@comment "
catalog files. The target directories for them, which
reside under
<filename><makevar>LOCALBASE</makevar>/share/locale</filename>,
should rarely be created and removed by your port. The most
should rarely be created and removed by a port. The most
popular languages have their respective directories listed
in <filename>/etc/mtree/BSD.local.dist</filename>; that is,
they are a part of the base system. The directories for
many other languages are governed by the <filename
role="package">devel/gettext</filename> port. You may
want to consult its <filename>pkg-plist</filename> and see
whether your port is going to install a message catalog file
in <filename><makevar>PORTSDIR</makevar>/Templates/BSD.local.dist</filename>.
The directories for many other languages are governed by the
<filename role="package">devel/gettext</filename> port.
Consult its <filename>pkg-plist</filename> and see
whether the port is going to install a message catalog file
for a unique language.</para>
</sect2>
</sect1>
@ -16169,25 +16167,18 @@ exec %%LOCALBASE%%/bin/java -jar %%DATADIR%%/foo.jar "$@"</programlisting>
<title>Threading Libraries</title>
<para>The threading library must be linked to the binaries using
a special linker flag <literal>-pthread</literal> on &os;. If
a special flag <literal>-pthread</literal> on &os;. If
a port insists on linking <literal>-lpthread</literal>
directly, patch it to use
<makevar>PTHREAD_LIBS</makevar> variable provided by the ports
framework. This variable usually has the value of
<literal>-pthread</literal>, but on certain architectures and
&os; versions it can have different values, so do not just
hardcode <literal>-pthread</literal> into patches and always
use <makevar>PTHREAD_LIBS</makevar>.</para>
directly, patch it to use <literal>-pthread</literal>.</para>
<note>
<para>If building the port errors out with
<literal>unrecognized option '-pthread'</literal> when
setting <makevar>PTHREAD_LIBS</makevar>, it may be desirable
to use <command>cc</command> as linker by setting
<makevar>CONFIGURE_ENV</makevar> to
<literal>LD=${CC}</literal>. The
<literal>-pthread</literal> option is not supported by
<command>ld</command> directly.</para>
<literal>unrecognized option '-pthread'</literal>,
it may be desirable to use <command>cc</command> as linker by
setting <makevar>CONFIGURE_ENV</makevar> to
<literal>LD=${CC}</literal>. The
<literal>-pthread</literal> option is not supported by
<command>ld</command> directly.</para>
</note>
</sect1>

View file

@ -1,12 +0,0 @@
# $FreeBSD$
.if exists(../Makefile.conf)
.include "../Makefile.conf"
.endif
.if exists(../Makefile.inc)
.include "../Makefile.inc"
.endif
DATA= index.html
.include "${DOC_PREFIX}/share/mk/web.site.mk"

View file

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $FreeBSD$ -->
<html>
<head>
<meta http-equiv="refresh" content="5;url=../doc/en_US.ISO8859-1/books/faq/index.html">
<title>The FAQ has moved</title>
</head>
<body bgcolor="#ffffff">
<p>The FAQ is no longer accessible at this location. Please use
<a href="../doc/en_US.ISO8859-1/books/faq/index.html">../doc/en_US.ISO8859-1/books/faq/index.html</a>
to reach it. You should be automatically redirected there in a few
seconds. If not, please follow the link, and update your bookmarks.
We apologize for the inconvenience.</p>
</body>
</html>

View file

@ -49,7 +49,6 @@ DATA+= vendors.html
# Subdirectories
# XML
SUBDIR= FAQ
SUBDIR+= advocacy
SUBDIR+= commercial
SUBDIR+= community

View file

@ -44,6 +44,27 @@
<th>Date Added</th>
</tr>
<tr>
<td>des</td>
<td>Oslo, Norway</td>
<td>Hosting for up to a full rack of 1U servers</td>
<td>New source tinderbox / continuous integration system. I
have the hardware (including spares), but nowhere to host it.
External bandwidth requirements are very modest, but a separate
gigabit switch is needed for internal communication.</td>
<td>2013-02-15</td>
</tr>
<tr>
<td>des</td>
<td>Oslo, Norway</td>
<td>ATX motherboard with Intel H77 chipset, Intel Core
i7-3770S, 32 GB (4x8) PC3-12800 memory with heatsink.</td>
<td>Upgrade main development box, which is six years old. No
chassis, PSU or disks required.</td>
<td>2013-02-15</td>
</tr>
<tr>
<td>jcamou</td>
<td>AZ, USA.</td>

View file

@ -15,17 +15,17 @@
<h1>&os; offers many unique features.</h1>
<p>No matter what the application, you want your system's
resources performing at their full potential. &os;'s focus
on performance, networking, and storage, combined with easy
system administration and excellent documentation to allow
you to do what you want.</p>
<p>No matter what the application, an operating system should take
advantage of every resource available. &os;'s focus on
performance, networking, and storage combines with ease of system
administration and comprehensive documentation to realize the full
potential of any computer.</p>
<h2>A complete operating system based on 4.4BSD.</h2>
<p>&os;'s distinguished roots derive from the <b>BSD</b>
software releases from the Computer Systems Research Group at
the University of California, Berkeley. Over fifteen years of
the University of California, Berkeley. Over twenty years of
work have been put into enhancing &os;, adding
industry-leading scalability, network performance, management
tools, file systems, and security features. As a result,
@ -48,7 +48,7 @@
CAPABILITY_MODE have been added to the GENERIC kernel.</li>
<li><b>Hhook</b>: (Helper Hook) and khelp(9) (Kernel Helpers)
KPIs have been implemented. These are a kind of superset of
KPIs have been implemented. These are a superset of
pfil(9) framework for more general use in the kernel. The
hhook(9) KPI provides a way for kernel subsystems to export
hook points that khelp(9) modules can hook to provide
@ -59,9 +59,9 @@
These allow a structured way to dynamically extend the
kernel at runtime in an ABI preserving manner.</li>
<li><b>Accounting API:</b> has been implemented. It can keep
per-process, per-jail, and per-loginclass resource
accounting information. Note that this is not built nor
installed by default. To build and install them, specify
per-process, per-jail, and per-login class resource
accounting information. Note that this is neither built nor
installed by default. To build and install this, specify
options RACCT in the kernel configuration file and rebuild
the base system as described in the FreeBSD Handbook</li>
@ -70,13 +70,13 @@
implementation and takes user-configurable actions based on
the set of rules it maintains and the current resource
usage. The rctl(8) utility has been added to manage the
rules in userland. Note that this is not built nor
rules in userland. Note that this is neither built nor
installed by default.</li>
<li><b>Usb:</b> subsystem now supports USB packet filter.
This allows to capture packets which go through each USB
host controller. The implementation is almost based on
bpf(4) code. The userland program usbdump(8) has been
This allows capturing packets which go through each USB
host rchitecture of the packet filter is similar to that of
bpf. The userland program usbdump(8) has been
added.</li>
<li><b>Infiniband support:</b>, OFED (OpenFabrics Enterprise
@ -86,16 +86,16 @@
<li><b>TCP/IP network:</b> stack now supports the mod_cc(9)
pluggable congestion control framework. This allows TCP
congestion control algorithms to be implemented as
dynamically loadable kernel modules. The following kernel
modules are available cc_chd(4) for the CAIA-Hamilton-Delay
dynamically loadable kernel modules. Many kernel
modules are available: cc_chd(4) for the CAIA-Hamilton-Delay
algorithm, cc_cubic(4) for the CUBIC algorithm, cc_hd(4)
for the Hamilton-Delay algorithm, cc_htcp(4) for the H-TCP
algorithm, cc_newreno(4) for the NewReno algorithm, and
cc_vegas(4) for the Vegas algorithm. The default algorithm
can be set by a new sysctl(8) variable
net. inet. tcp. cc. algorithm.</li>
net.inet.tcp.cc.algorithm.</li>
<li><b>SU+J:</b> &os; Fast File System now supports soft
<li><b>SU+J:</b> &os;'s Fast File System now supports soft
updates with journaling. It introduces an intent log into a
softupdates-enabled file system which eliminates the need for
background fsck(8) even on unclean shutdowns.</li>
@ -118,13 +118,13 @@
improvement over the previous version.</li>
<li><b>Linux emulation:</b> layer has been updated to version
2. 6. 16 and the default Linux infrastructure port is now
2.6.16 and the default Linux infrastructure port is now
emulators/linux_base-f10 (Fedora 10)</li>
<li><b>Network Virtualization:</b> Container named vimage has
<li><b>Network Virtualization:</b> A container ("vimage") has
been implemented, extending the FreeBSD kernel to maintain
multiple independent instances of networking state.
vimage facilities can be used independently to create fully
Vimage facilities can be used independently to create fully
virtualized network topologies, and jail(8) can directly
take advantage of a fully virtualized network stack.</li>
</ul>

View file

@ -50,11 +50,6 @@ the globe, there have to be some
By following the links, one will find a list of them, as well as
explanations of who is responsible for what.</p>
<p>Here are some
<a href="http://www.FreeBSD.org/internal/homepage.html">personal homepages</a>
hosted at FreeBSD.org, as well as some
<a href="../multimedia/tag-photos.html">photos from social events</a>.</p>
<p>You can read here core's <a href="hats.html">Hat Term Limits Policy</a>
and some guidelines from &a.imp; on <a href="working-with-hats.html">how
to work with hats</a>.</p>

View file

@ -400,7 +400,6 @@
margin-top: 30px;
padding: 0;
width: 130px;
height: 30px;
background-color: #D8D8D8;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
@ -436,7 +435,6 @@
margin-top: 10px;
padding: 0;
width: 180px;
height: 25px;
background-color: white;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
@ -473,7 +471,6 @@
margin-left: 140px;
padding: 0;
width: 190px;
height: 35px;
background-color: #FACC2E;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;

View file

@ -41,7 +41,7 @@
<h2><a href="&base;/administration.html">Who Is Responsible for What</a></h2>
<p>Public Relations &amp; Corporate Liaison, Security Officer,
<p>Marketing, Bugmeister, Security Officer,
Postmaster, Webmaster etc.</p>
</body>

View file

@ -78,13 +78,6 @@
<a href="http://www.awfulhak.org/ppp.html">ppp page</a>
for links to the other valuable information and the latest updates.</p></li>
<li><p><a name="cfbsd" href="http://www.lemis.com/grog/Documentation/CFBSD/">The
Complete &os;</a> by Greg Lehey, published by O'Reilly.
This book assumes minimal UNIX experience and takes the
beginner step by step through each stage from installation to
everything you need to know to set up and run a &os; system. You
also get to understand what you are doing and why.</p></li>
<li><p>The <a href="&url.books;/handbook/index.html">&os; Handbook</a> and <a
href="&url.books;/faq/index.html">Frequently Asked Questions (FAQ)</a> are the
main documents for &os;. Essential reading, they contain a lot of
@ -102,12 +95,6 @@
answers via the <a href="&base;/search/search.html#mailinglists">search</a>
page.</p></li>
<li><p>The main newsgroup for &os; is <a
href="news:comp.unix.bsd.freebsd.misc">comp.unix.bsd.freebsd.misc</a>.
You might want to keep an eye on <a
href="news:comp.unix.bsd.freebsd.announce">comp.unix.bsd.freebsd.announce</a>
as well.</p></li>
<li><p><a href="&cgibase;/man.cgi">Manual pages</a> are good
for reference but not always
the best introduction for a novice. The more you work with man pages
@ -156,12 +143,6 @@
Pretty soon you will want to move on to a book that gives more
coverage.</p></li>
<li><p>One book mentioned frequently by newbies is <a name="ufti"><em>UNIX for
the Impatient</em></a> by Paul W. Abrahams and Bruce R. Larson, published
by Addison-Wesley. It is intended both as a book for learning UNIX
and a reference, and includes an introduction to UNIX concepts and
handy chapter on using the X Window System.</p></li>
<li><p>Another popular book is <em>UNIX Power Tools</em> by Jerry Peek,
Tim O'Reilly and Mike Loukides, published by O'Reilly and
Associates. It is organized as a series of short articles each of
@ -189,25 +170,11 @@
HTML at a mirror site near you, or can be installed on your own
system.</p></li>
<li><p>UNIX questions are dealt with in the newsgroup <a
href="news:comp.unix.questions">comp.unix.questions</a> and the
associated
<a href="ftp://rtfm.mit.edu/pub/usenet/news.answers/unix-faq/faq/">FAQ</a>
from the RMIT FTP site. Newbies are likely to be most interested in
sections 1 and 2 initially.</p></li>
<li><p>Another interesting newsgroup is <a
href="news:comp.unix.user-friendly">comp.unix.user-friendly</a>.
Although this newsgroup is for discussing user-friendliness, it can
contain some good information for newbies. The <a
href="ftp://rtfm.mit.edu/pub/usenet/news.answers/unix-faq/user-friendly">FAQ</a>
is also available by FTP.</p></li>
<li><p>Many other web sites hold lists of UNIX tutorials and reference
material. One of the best places to start looking is the UNIX page
at <a
href="http://www.yahoo.com/Computers_and_Internet/Software/Operating_Systems/Unix/">Yahoo!</a>.</p></li>
material. One of the best places to start looking is the
little known search engine <a
href="https://google.com">Google</a>.</p>
</li>
</ul>
<h2><a name="xwin">Learning about the X Window System</a></h2>
@ -220,13 +187,6 @@
more likely to be difficult for newcomers to digest.</p>
<ul>
<li><p>For basic information about installing, configuring and using the
X Window System, three of the books mentioned above have sections
dealing with X at beginner level:
<a href="&url.books;/handbook/x11.html">The X Window System</a> chapter
of the &os; Handbook, <a href="#cfbsd">The Complete &os;</a>,
and <a href="#ufti">UNIX for the Impatient</a>.</p></li>
<li><p>Before you can get X running exactly the way you like, you will need
to choose a window manager.
Visit the <a href="http://xwinman.org/">Window Managers for X</a>

View file

@ -49,10 +49,16 @@
<th>Information</th>
</tr>
<tr>
<td>TBD</td>
<td>&os; 8.4</td>
<td><!-- <a href="&base;/releases/8.4R/schedule.html">Target Schedule</a> --></td>
</tr>
<tr>
<td>TBD</td>
<td>&os; 9.2</td>
<td><!-- <a href="&base;/releases/9.1R/schedule.html">Target Schedule</a> --></td>
<td><!-- <a href="&base;/releases/9.2R/schedule.html">Target Schedule</a> --></td>
</tr>
</table>

View file

@ -3,7 +3,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: r20021
Original revision: r20104
$FreeBSD$
-->
@ -6511,6 +6511,26 @@ natd_flags=""</programlisting>
<command>natd -interface fxp0</command> が実行されます。
これは手動でも実行できます。</para>
<note>
<para>オプションの定義に &man.natd.8;
のコンフィグレーションファイルを使うこともできます。
この場合には、<filename>/etc/rc.conf</filename> に以下の行を追加し、
コンフィグレーションファイルを定義してください。</para>
<programlisting>natd_flags="-f /etc/natd.conf"</programlisting>
<para><filename>/etc/natd.conf</filename>
ファイルでは、一行ごとにオプションを設定します。たとえば、
次節の例では以下のような行を含むファイルを用意してください。</para>
<programlisting>redirect_port tcp 192.168.0.2:6667 6667
redirect_port tcp 192.168.0.3:80 80</programlisting>
<para>コンフィグレーションファイルに関する、より詳細な情報については、
&man.natd.8; マニュアルページの <option>-f</option>
オプションを調べてください。</para>
</note>
<para>LAN にぶら下がっているマシンおよびインタフェースのそれぞれには
<ulink url="ftp://ftp.isi.edu/in-notes/rfc1918.txt">RFC 1918</ulink>
で定義されているプライベートネットワーク空間の
@ -6577,8 +6597,8 @@ natd_flags=""</programlisting>
<para>これらのオプションは &man.natd.8; を直接実行するか、
<filename>/etc/rc.conf</filename> 内の
<literal>natd_flags=""</literal>
オプションに指定して使用できます</para>
<literal>natd_flags=""</literal> オプションで設定するか、
もしくはコンフィグレーションファイルから渡してください</para>
<para>設定オプションの詳細については
&man.natd.8; をご覧ください。</para>
@ -6636,8 +6656,9 @@ natd_flags=""</programlisting>
<para><option>-redirect_port</option> と同様に、これらの引数は
<filename>/etc/rc.conf</filename> 内の
<literal>natd_flags=""</literal>
オプションで指定できます。アドレス転送では、
<literal>natd_flags=""</literal> オプションで設定するか、
コンフィグレーションファイルから渡すことで指定できます。
アドレス転送では、
特定の IP アドレスで受け取られたデータはすべて転送されるので、
port 転送は必要ありません。</para>

View file

@ -147,7 +147,7 @@
ソースコードにパッチを当て、コードからバイナリを再構築し、
バイナリを再びインストールする必要がありました。</para>
<para>現在では &os; <command>freebsd-update</command>
<para>現在&os; では <command>freebsd-update</command>
と呼ばれるユーティリティが追加され、状況は変わりました。
このユーティリティは 2 つの機能を持っています。
第一に、&os; ベースシステムのビルドやインストールを行うことなく、
@ -283,8 +283,8 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
はアップデートが存在するときだけ確認します。
パッチが存在すると、
自動的にローカルディスクにダウンロードされますが、適用はされません。
ダウンロードされたパッチを手動でインストールすることが必要で、このことは
<username>root</username> 宛てにメールで通知されます。</para>
ダウンロードされたパッチを手動でインストールする必要があり、
このことは <username>root</username> 宛てにメールで通知されます。</para>
<para>うまく行かなかった場合には、<command>freebsd-update</command>
を以下のように実行すると、最後の変更までロールバックできます。</para>
@ -661,20 +661,20 @@ before running "/usr/sbin/freebsd-update install"</screen>
<filename role="package">security/snort</filename>
のような侵入検知システムの置き換えになるものではありません。
<command>freebsd-update</command> はデータをディスクに保存するので、
明らかに不正な変更が行われる可能性があります。
この不正な変更の可能性は、
不正な変更が行われる可能性があります。
<varname>kern.securelevel</varname> の設定と、
<command>freebsd-update</command> のデータを使用しないときに、
読み取りのみの許可属性に設定されているファイルシステムに置くことで低くすることができますが、
読み取りのみの許可属性に設定されているファイルシステムに置くことで、
不正な変更の可能性を低くできますが、
よりよい解決方法は、
<acronym>DVD</acronym>
または安全に保存されている外部 <acronym>USB</acronym>
ディスクのような安全なディスクとシステムを比較することです。</para>
</warning>
<para>れで、システムは検査されます。そして
<para>のコマンドを実行すると、システムは検査され
リリースファイルの &man.sha256.1;
ハッシュ値と現在インストールされているファイルの値がファイルの一覧と共に表示されます。
ハッシュ値と現在インストールされているファイルのハッシュ値がファイルの一覧と共に表示されます。
これが <filename>outfile.ids</filename> ファイルに出力する理由です。
目で比較するにはとても早くスクロールし、
コンソールバッファをいっぱいに満たしてしまいます。</para>

View file

@ -3,7 +3,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: r40874
Original revision: r40982
$FreeBSD$
-->
@ -13,23 +13,6 @@
<sect1 id="mirrors-cdrom">
<title>CDROM/DVD 出版社</title>
<sect2>
<title>リテールボックス製品</title>
<para>&os; は (&os; CD、追加ソフトウェア、
印刷されたドキュメントなどから構成される)
箱入りの製品として以下の取り扱い業者から入手できます。</para>
<itemizedlist>
<listitem>
<address>
<otheraddr>Frys Electronics</otheraddr>
WWW: <otheraddr><ulink url="http://www.frys.com/"></ulink></otheraddr>
</address>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>CD/DVD セット</title>

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@
<!ENTITY title "FreeBSD Internal">
]>
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: r39593 -->
<!-- Original revision: r40940 -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
@ -47,10 +47,6 @@ package
から構成されます。
リンクをたどると、担当者一覧と誰がどの分野に責任を持っているかを知ることができます。</p>
<p>FreeBSD.org にある
<a href="http://www.FreeBSD.org/internal/homepage.html">個人のホームページ</a>
<a href="&enbase;/multimedia/tag-photos.html">イベントの写真</a></p>
<p>コアチームによる <a href="&enbase;/internal/hats.html">Hat Term Limits Policy</a>
や、&a.imp; によるガイドラインが <a href="&enbase;/internal/working-with-hats.html">how
to work with hats</a> にあります。</p>

View file

@ -4,7 +4,7 @@
<!ENTITY title "Contacting FreeBSD">
]>
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.32 -->
<!-- Original revision: 40901 -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
@ -20,6 +20,7 @@
<p>FreeBSD に関する質問は FreeBSD Questions メーリングリスト、
<a href="mailto:freebsd-questions@FreeBSD.org">
freebsd-questions@FreeBSD.org</a> までどうぞ。</p>
<p><a href="&base;/community/mailinglists.html">メーリングリスト</a>
FreeBSD のユーザにとって主要なサポート手段であり、異なる話題範囲を
カバーする多くのメーリングリストがあります。
@ -49,7 +50,7 @@
<h2><a href="&enbase;/administration.html">担当者一覧</a></h2>
<p>広報・渉外担当、セキュリティオフィサ、ポストマスタ、ウェブマスタなど。</p>
<p>マーケティング、バグ処理担当、セキュリティオフィサ、ポストマスタ、ウェブマスタなど。</p>
</body>
</html>

View file

@ -20,7 +20,7 @@
the contents of <title> will be preferred over <p>.
$FreeBSD$
Original revision: r40721
Original revision: r40933
-->
<news>
<cvs:keyword xmlns:cvs="http://www.FreeBSD.org/XML/CVS">
@ -30,9 +30,30 @@
<year>
<name>2013</name>
<month>
<name>2</name>
<day>
<name>10</name>
<event>
<p>新コミッタ就任:
<a href="mailto:pclin@FreeBSD.org">Po-Chien Lin</a> (ports)</p>
</event>
</day>
</month>
<month>
<name>1</name>
<day>
<name>23</name>
<event>
<p>新コミッタ就任:
<a href="mailto:achim@FreeBSD.org">Achim Leubner</a> (src)</p>
</event>
</day>
<day>
<name>22</name>
<event>

View file

@ -6,7 +6,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/articles/contributing/article.xml
%SRCID% 40061
%SRCID% 40773
-->
<article lang="nl">
@ -530,7 +530,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<para>De &os; Foundation is een non-profit, belastinguitgesloten
stichting die opgericht is om de doelen van het &os; Project
verder te verspreiden. Als een 501(c)3-entiteit is de
Foundation over het algemeen uitgesloten van van
Foundation over het algemeen uitgesloten van
inkomstenbelasting van de overheid van de Verenigde Staten alsook van
inkomstenbelasting van de staat Colorado. Donaties aan een
entiteit die van belasting is uitgesloten zijn vaak aftrekbaar
@ -539,8 +539,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<para>Donaties kunnen als check verstuurd worden aan:
<address>
The FreeBSD Foundation
<street>7321 Brockway Dr.</street>
<city>Boulder</city>, <state>CO</state> <postcode>80303</postcode>
<street>P.O. Box 20247</street>
<city>Boulder</city>,
<state>CO</state> <postcode>80308</postcode>
<country>USA</country>
</address></para>

View file

@ -4,7 +4,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/audit/chapter.xml
%SRCID% 39825
%SRCID% 40792
-->
<!-- Need more documentation on praudit, auditreduce, etc. Plus more info
@ -232,7 +232,7 @@ requirements. -->
herstart van het systeem of door het handmatig starten van de audit
daemon:</para>
<programlisting>/etc/rc.d/auditd start</programlisting>
<programlisting>service auditd start</programlisting>
</sect1>
<sect1 id="audit-config">

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/disks/chapter.xml
%SRCID% 40676
%SRCID% 40792
-->
<chapter id="disks">
@ -3593,7 +3593,7 @@ Filesystem 1K-blocks Used Avail Capacity Mounted on
<para>Vervolgens dient <command>inetd</command> opnieuw gestart
te worden:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd restart</userinput></screen>
<screen>&prompt.root; <userinput>service inetd restart</userinput></screen>
</sect2>
</sect1>
@ -4683,7 +4683,7 @@ Device 1K-blocks Used Avail Capacity
starten:</para>
<screen>&prompt.root; <userinput>hastctl create test</userinput>
&prompt.root; <userinput>/etc/rc.d/hastd onestart</userinput></screen>
&prompt.root; <userinput>service hastd onestart</userinput></screen>
<note>
<para>Het is <emphasis>niet</emphasis> mogelijk om GEOM-aanbieders met
@ -4814,7 +4814,7 @@ notify 30 {
<para>Herstart &man.devd.8; op beide knooppunten om de nieuwe
configuratie te laten gelden:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/devd restart</userinput></screen>
<screen>&prompt.root; <userinput>service devd restart</userinput></screen>
<para>Als het interface <devicename>carp0</devicename> aan of uit gaat
(i.e., de toestand van het interface verandert), genereert het systeem

View file

@ -4,7 +4,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/filesystems/chapter.xml
%SRCID% 40681
%SRCID% 40792
-->
<chapter id="filesystems">
@ -218,7 +218,7 @@ vfs.zfs.vdev.cache.size="5M"</programlisting>
stellen:</para>
<screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' &gt;&gt; /etc/rc.conf</userinput>
&prompt.root; <userinput>/etc/rc.d/zfs start</userinput></screen>
&prompt.root; <userinput>service zfs start</userinput></screen>
<para>In het resterende deel van dit document wordt aangenomen
dat er drie <acronym>SCSI</acronym>-schijven beschikbaar zijn,

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/firewalls/chapter.xml
%SRCID% 40732
%SRCID% 40792
-->
<chapter id="firewalls">
@ -262,7 +262,7 @@
<para>Draai vervolgens het opstartscript om de module te laden:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/pf start</userinput></screen>
<screen>&prompt.root; <userinput>service pf start</userinput></screen>
<para>Merk op dat de PF module niet laadt als het het instellingenbestand
met de regelverzameling niet kan vinden. De standaardlocatie is
@ -290,7 +290,7 @@
<para>Draai vervolgens het opstartscript om de module te laden:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/pflog start</userinput></screen>
<screen>&prompt.root; <userinput>service pflog start</userinput></screen>
<para>Als u andere mogelijkheden van <acronym>PF</acronym> nodig heeft
dient u ondersteuning voor <acronym>PF</acronym> in de kernel te
@ -901,12 +901,7 @@ LOG_ERR &ndash; gelogde pakketten die een verkeerde opbouw hebben, "short"</scre
<filename>/etc/syslog.conf</filename> actief te maken kan er opnieuw
opgestart worden of is het mogelijk de daemon &man.syslogd.8; een schop
te geven zodat <filename>/etc/syslog.conf</filename> opnieuw
wordt ingelezen met <command>/etc/rc.d/syslogd
reload</command>. Het PID (procesnummer) is te achterhalen
door een overzicht van taken te tonen met
<command>ps -ax</command>. Het PID is het nummer in de
linker kolom voor de regel waarop <quote>syslog</quote>
staat.</para>
wordt ingelezen met <command>service syslogd reload</command>.</para>
<para>Vaak wordt vergeten
<filename>/etc/newsyslog.conf</filename> te wijzigen om het

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/jails/chapter.xml
%SRCID% 39631
%SRCID% 40792
-->
<chapter id="jails">
<chapterinfo>
@ -401,13 +401,12 @@ jail_<replaceable>www</replaceable>_devfs_ruleset="<replaceable>www_ruleset</rep
</step>
</procedure>
<para>Het <filename>/etc/rc.d/jail</filename> bestand kan worden
gebruikt om jails handmatig te starten en te stoppen, mits er
een overeenkomstige set regels bestaat in
<para>&man.service.8; kan worden gebruikt om jails handmatig te starten en
te stoppen, mits er een overeenkomstige verzameling regels bestaat in
<filename>/etc/rc.conf</filename>.</para>
<screen>&prompt.root; <userinput>/etc/rc.d/jail start <replaceable>www</replaceable></userinput>
&prompt.root; <userinput>/etc/rc.d/jail stop <replaceable>www</replaceable></userinput></screen>
<screen>&prompt.root; <userinput>service jail start <replaceable>www</replaceable></userinput>
&prompt.root; <userinput>service jail stop <replaceable>www</replaceable></userinput></screen>
<para>Er is op dit moment geen nette methode om een jail te
stoppen. Dit komt omdat de benodigde applicaties die een
@ -932,11 +931,10 @@ jail_www_devfs_enable="YES"</programlisting>
<para>In deze fase zijn de jails gebouwd en voorbereid om
op te starten. Koppel eerst de benodigde bestandssystemen
voor elke jail, en start ze vervolgens door gebruik te
maken van het <filename>/etc/rc.d/jail</filename>
bestand:</para>
maken van het rc-bestand voor de jail:</para>
<screen>&prompt.root; <userinput>mount -a</userinput>
&prompt.root; <userinput>/etc/rc.d/jail start</userinput></screen>
&prompt.root; <userinput>service jail start</userinput></screen>
</step>
</procedure>
@ -1015,7 +1013,7 @@ jail_www_devfs_enable="YES"</programlisting>
<step>
<para>Dit is het juiste moment om de jails te stoppen:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/jail stop</userinput></screen>
<screen>&prompt.root; <userinput>service jail stop</userinput></screen>
</step>
<step>
@ -1058,7 +1056,7 @@ jail_www_devfs_enable="YES"</programlisting>
opnieuw te koppelen en om de jails weer op te starten:</para>
<screen>&prompt.root; <userinput>mount -a</userinput>
&prompt.root; <userinput>/etc/rc.d/jail start</userinput></screen>
&prompt.root; <userinput>service jail start</userinput></screen>
</step>
</procedure>

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/linuxemu/chapter.xml
%SRCID% 40735
%SRCID% 40792
-->
<chapter id="linuxemu">
@ -683,7 +683,7 @@ done</programlisting>
<para>Start de licentieserver.</para>
<para>Het volgende script, geïnstalleerd als
<filename>/usr/local/etc/rc.d/lmgrd.sh</filename>, is een
<filename>/usr/local/etc/rc.d/lmgrd</filename>, is een
gemakkelijke manier om <command>lmgrd</command> op te
starten:</para>
@ -877,7 +877,7 @@ FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
<step>
<para>Maak een opstartbestand in
<filename>/usr/local/etc/rc.d/flexlm.sh</filename>.
<filename>/usr/local/etc/rc.d/flexlm</filename>.
Onderstaand voorbeeld is een gewijzigde versie van het
meegeleverde <filename>$MATLAB/etc/rc.lm.glnx86</filename>.
De wijzigingen omvatten bestandslocaties en het starten
@ -906,7 +906,7 @@ exit 0</programlisting>
<important>
<para>Het bestand moet uitvoerbaar zijn:</para>
<screen>&prompt.root; <userinput>chmod +x /usr/local/etc/rc.d/flexlm.sh</userinput></screen>
<screen>&prompt.root; <userinput>chmod +x /usr/local/etc/rc.d/flexlm</userinput></screen>
<para>Ook moet bovenstaande
<replaceable>gebruikersnaam</replaceable> vervangen
@ -918,7 +918,7 @@ exit 0</programlisting>
<step>
<para>Start de licentiebeheerder op met het commando:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/flexlm.sh start</userinput></screen>
<screen>&prompt.root; <userinput>service flexlm start</userinput></screen>
</step>
</procedure>
</sect2>

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/mail/chapter.xml
%SRCID% 40216
%SRCID% 40792
-->
<chapter id="mail">
@ -806,7 +806,7 @@ sendmail_msp_queue_enable="NO"</programlisting>
origineel geïnstalleerd, bevat <filename>
/etc/mail/mailer.conf</filename> bij benadering het volgende:</para>
<programlisting>sendmail /usr/libexec/sendmail/sendmail
<programlisting>sendmail /usr/libexec/sendmail/sendmail
send-mail /usr/libexec/sendmail/sendmail
mailq /usr/libexec/sendmail/sendmail
newaliases /usr/libexec/sendmail/sendmail
@ -829,13 +829,12 @@ purgestat /usr/libexec/sendmail/sendmail</programlisting>
men <filename>/etc/mail/mailer.conf</filename> als volgt
aanpassen:</para>
<programlisting>sendmail /usr/local/supermailer/bin/sendmail-compat
<programlisting>sendmail /usr/local/supermailer/bin/sendmail-compat
send-mail /usr/local/supermailer/bin/sendmail-compat
mailq /usr/local/supermailer/bin/mailq-compat
newaliases /usr/local/supermailer/bin/newaliases-compat
hoststat /usr/local/supermailer/bin/hoststat-compat
purgestat /usr/local/supermailer/bin/purgestat-compat</programlisting>
</sect2>
<sect2>
@ -878,8 +877,8 @@ purgestat /usr/local/supermailer/bin/purgestat-compat</programlisting>
<indexterm><primary>BIND</primary></indexterm>
<para>Traditioneel werd dit door BSD BIND resolvers toegestaan
. De huidige versie van <application>BIND</application> die
<para>Traditioneel werd dit door BSD BIND resolvers toegestaan. De
huidige versie van <application>BIND</application> die
met &os; wordt geleverd levert niet langer standaard
afkortingen voor onvolledig gekwalificeerde domeinnamen
anders dan het huidige domein. Dus moet een
@ -1647,7 +1646,7 @@ define(`confDELIVERY_MODE', `deferred')dnl</programlisting>
<para>en start vervolgens het saslauthd-daemon op:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/saslauthd start</userinput></screen>
<screen>&prompt.root; <userinput>service saslauthd start</userinput></screen>
<para>Deze daemon fungeert als een onderhandelaar voor
<application>sendmail</application> die zich tegen de &os;

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/multimedia/chapter.xml
%SRCID% 40784
%SRCID% 40792
-->
<chapter id="multimedia">
@ -1742,7 +1742,7 @@ bktr0: Pinnacle/Miro TV, Philips SECAM tuner.</programlisting>
<para>Start de achterkant:</para>
<screen>&prompt.root; <userinput>echo 'mythbackend_enable="YES"' >> /etc/rc.conf</userinput>
&prompt.root; <userinput>/usr/local/etc/rc.d/mythbackend start</userinput></screen>
&prompt.root; <userinput>service mythbackend start</userinput></screen>
</sect2>
</sect1>

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/network-servers/chapter.xml
%SRCID% 40744
%SRCID% 40792
-->
<chapter id="network-servers">
@ -185,7 +185,7 @@
<application>inetd</application> bij het opstarten van een
systeem wel of niet ingeschakeld. Het commando:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd rcvar</userinput></screen>
<screen>&prompt.root; <userinput>service inetd rcvar</userinput></screen>
<para>kan gedraaid worden om de huidige effectieve instellingen
weer te geven.</para>
@ -285,7 +285,7 @@
<title>Het instellingenbestand van <application>inetd</application>
herladen</title>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd reload</userinput></screen>
<screen>&prompt.root; <userinput>service inetd reload</userinput></screen>
</example>
<para>Iedere regel in het bestand met instellingen heeft
@ -839,7 +839,7 @@ mountd_flags="-r"</programlisting>
<para>of door het &man.rc.8; script <command>mountd</command> met
de juiste parameter aan te roepen:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/mountd onereload</userinput></screen>
<screen>&prompt.root; <userinput>service mountd onereload</userinput></screen>
<para>Raadpleeg <xref linkend="configtuning-rcd"/> voor meer
informatie over het gebruik van rc-scripts.</para>
@ -909,8 +909,8 @@ rpc_statd_enable="YES"</programlisting>
<para>Start de applicatie met:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/lockd start</userinput>
&prompt.root; <userinput>/etc/rc.d/statd start</userinput></screen>
<screen>&prompt.root; <userinput>service lockd start</userinput>
&prompt.root; <userinput>service statd start</userinput></screen>
<para>Als echt op slot zetten tussen de
<acronym>NFS</acronym>-cliënten en de
@ -1666,7 +1666,7 @@ Exports list on foobar:
laatste stap, voor het initialiseren van de NIS-afbeeldingen, de
daemon <application>ypserv</application> handmatig:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/ypserv start</userinput></screen>
<screen>&prompt.root; <userinput>service ypserv start</userinput></screen>
</sect4>
<sect4>
@ -1965,7 +1965,7 @@ nis_client_enable="YES"</programlisting>
commando's als supergebruiker uit:</para>
<screen>&prompt.root; <userinput>/etc/netstart</userinput>
&prompt.root; <userinput>/etc/rc.d/ypbind start</userinput></screen>
&prompt.root; <userinput>service ypbind start</userinput></screen>
<para>Na het afronden van deze stappen zou met <command>ypcat
passwd</command> de passwd map van de NIS-server te zien
@ -3155,7 +3155,7 @@ dhcpd_ifaces="dc0"</programlisting>
<para>Daarna kunt u doorgaan met het starten van de server door
het volgende commando te geven:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/isc-dhcpd start</userinput></screen>
<screen>&prompt.root; <userinput>service isc-dhcpd start</userinput></screen>
<para>Als er later wijzigingen in de instellingen gemaakt moeten
worden, dan is het belangrijk te onthouden dat het sturen van
@ -3544,7 +3544,7 @@ dhcpd_ifaces="dc0"</programlisting>
(127.0.0.1). Gebruik het volgende commando om de server eenmaal
met deze configuratie te starten:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/named onestart</userinput></screen>
<screen>&prompt.root; <userinput>service named onestart</userinput></screen>
<para>Om er zeker van te zijn dat de daemon
<application>named</application> elke keer bij het opstarten
@ -4806,7 +4806,7 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
<para>De port <filename role="package">www/apache2</filename> installeert
een &man.rc.8;-script dat helpt met het starten, stoppen en herstarten
van <application>Apache</application> en is te vinden in de map
van <application>Apache</application> en is te vinden in
<filename class="directory">/usr/local/etc/rc.d/</filename>.</para>
<para>Om <application>Apache</application> met het systeem mee te
@ -4829,8 +4829,6 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
&man.service.8; door één van de volgende commando's op te
geven:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/apache22 configtest</userinput></screen>
<screen>&prompt.root; <userinput>service apache22 configtest</userinput></screen>
<note>
@ -4841,10 +4839,7 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
<para>Als <application>Apache</application> geen instellingsfouten meldt,
kan <application>Apache</application>&nbsp;<command>httpd</command>
gestart worden met dezelfde &man.rc.8;- en
&man.service.8;-mechanismen:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/apache22 start</userinput></screen>
gestart worden met &man.service.8;:</para>
<screen>&prompt.root; <userinput>service apache22 start</userinput></screen>
@ -5283,7 +5278,7 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
volgende commando als <username>root</username> uit te
voeren:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/ftpd start</userinput></screen>
<screen>&prompt.root; <userinput>service ftpd start</userinput></screen>
<para>Nu kan aangemeld worden op de FTP-server met:</para>
@ -5588,7 +5583,7 @@ $include Kexample.com.+005+nnnnn.ZSK.key ; ZSK</programlisting>
<application>Samba</application> op elk moment te starten door
dit te typen:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba start</userinput>
<screen>&prompt.root; <userinput>service samba start</userinput>
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.</screen>
@ -5608,7 +5603,7 @@ Starting smbd.</screen>
<para><application>Samba</application> kan op ieder moment gestopt
worden met:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba stop</userinput></screen>
<screen>&prompt.root; <userinput>service samba stop</userinput></screen>
<para><application>Samba</application> is een complexe
softwaresuite met functionaliteit waarmee verregaande integratie
@ -5999,7 +5994,7 @@ syslogd_flags="-a logclient.example.com -v -v"</programlisting>
<para>Nu dient het <command>syslogd</command>-daemon herstart en
geverifieerd worden:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
<screen>&prompt.root; <userinput>service syslogd restart</userinput>
&prompt.root; <userinput>pgrep syslog</userinput></screen>
<para>Als er een <acronym>PID</acronym> wordt teruggegeven, dan is
@ -6074,7 +6069,7 @@ syslogd_flags="-s -v -v"</programlisting>
<para>Eenmaal toegevoegd moet <command>syslogd</command> worden
herstart zodat de veranderingen effect hebben:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
<screen>&prompt.root; <userinput>service syslogd restart</userinput></screen>
<para>Om te testen of logberichten over het netwerk worden
verzonden, wordt &man.logger.1; op de cliënt gebruikt om
@ -6111,7 +6106,7 @@ syslogd_flags="-s -v -v"</programlisting>
<programlisting>syslogd_flags="-d -a logclien.example.com -v -v"</programlisting>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
<screen>&prompt.root; <userinput>service syslogd restart</userinput></screen>
<para>Debuggegevens zoals de volgende zullen meteen na de herstart
over het scherm vliegen:</para>
@ -6137,7 +6132,7 @@ rejected in rule 0 due to name mismatch.</screen>
wijzigingen zijn gemaakt, wordt er herstart met de verwachte
resultaten:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
<screen>&prompt.root; <userinput>service syslogd restart</userinput>
logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
syslogd: restarted
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/ppp-and-slip/chapter.xml
%SRCID% 40778
%SRCID% 40792
-->
<chapter id="ppp-and-slip">
@ -3155,7 +3155,7 @@ water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438
volgende commando als <username>root</username>
uitvoeren:</para>
<screen>&prompt.root; /etc/rc.d/routing start</screen>
<screen>&prompt.root; service routing start</screen>
<para>Raadpleeg aub <xref linkend="kernelconfig"/> over
het configureren van de &os; kernel voor meer hulp over het

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/security/chapter.xml
%SRCID% 40749
%SRCID% 40792
-->
<chapter id="security">
@ -1583,10 +1583,10 @@ Enter secret pass phrase: <userinput>&lt;geheim wachtwoord&gt;</userinput>
qpopper : ALL : allow</programlisting>
<para>Nadat deze regel is toegevoegd moet
<application>inetd</application> herstart worden. Dit gaat met
het commando &man.kill.1; of met de parameter
<parameter>restart</parameter> met
<filename>/etc/rc.d/inetd</filename>.</para>
<application>inetd</application> herstart worden door gebruik te maken
van &man.service.8;:</para>
<screen>&prompt.root; <userinput>service inetd restart</userinput></screen>
</sect2>
<sect2>
@ -1961,8 +1961,8 @@ Password: <userinput>xxxxxxxx</userinput>
Verifying password - Password: <userinput>xxxxxxxx</userinput></screen>
<para>Nu kan de <acronym>KDC</acronym> dienst gestart worden
met <command>/etc/rc.d/kerberos start</command> en
<command>/etc/rc.d/kadmind start</command>. Op dit moment
met <command>service kerberos start</command> en
<command>service kadmind start</command>. Op dit moment
draait er nog geen enkele daemon die gebruik maakt van
<application>Kerberos</application>. Bevestiging dat
<acronym>KDC</acronym> draait is te krijgen door een ticket te
@ -2086,7 +2086,7 @@ kadmin><userinput> exit</userinput></screen>
<command>telnet</command> geactiveerd door de volgende regel
in <filename>/etc/inetd.conf</filename> te zetten en dan
&man.inetd.8; te herstarten met
<command>/etc/rc.d/inetd restart</command>:</para>
<command>service inetd restart</command>:</para>
<programlisting>telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a user</programlisting>
@ -3341,11 +3341,11 @@ racoon_enable="yes"</programlisting>
<para>Hierdoor wordt &man.sshd.8; geladen, het daemonprogramma
voor <application>OpenSSH</application>, als het systeem de
volgende keer opstart. Als alternatief is het mogelijk om het
&man.rc.8;-script <filename>/etc/rc.d/sshd</filename> te
volgende keer opstart. Als alternatief is het mogelijk om
&man.rc.8; te
gebruiken om <application>OpenSSH</application> te starten:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/sshd start</userinput></screen>
<screen>&prompt.root; <userinput>service sshd start</userinput></screen>
</sect2>
<sect2>
@ -3752,7 +3752,7 @@ user@unfirewalled-system.example.org's password: <userinput>*******</userinput><
<filename>/etc/ssh/sshd_config</filename> dienen de bestanden
in &man.sshd.8; geladen te worden:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/sshd reload</userinput></screen>
<screen>&prompt.root; <userinput>service sshd reload</userinput></screen>
</sect2>
<sect2>

View file

@ -5,7 +5,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/virtualization/chapter.xml
%SRCID% 40780
%SRCID% 40792
-->
<chapter id="virtualization">
@ -1245,7 +1245,7 @@ add path 'usb/*' mode 0660 group operator</programlisting>
<para>Herstart vervolgens devfs:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/devfs restart</userinput></screen>
<screen>&prompt.root; <userinput>service devfs restart</userinput></screen>
<para>USB kan nu in het gast-besturingssysteem worden aangezet.
USB-apparaten zouden zichtbaar moeten zijn in de voorkeuren van
@ -1292,7 +1292,7 @@ add path 'usb/*' mode 0660 group operator</programlisting>
perm xpt0 0660
perm pass* 0660</programlisting>
<screen>&prompt.root; <userinput>/etc/rc.d/devfs restart</userinput></screen>
<screen>&prompt.root; <userinput>service devfs restart</userinput></screen>
</sect2>
<!--

41
share/pgpkeys/achim.key Normal file
View file

@ -0,0 +1,41 @@
<!-- $FreeBSD$ -->
<!--
sh addkey.sh achim 2E15B3C1;
-->
<programlisting role="pgpfingerprint"><![CDATA[
pub 2048R/2E15B3C1 2013-01-22
Key fingerprint = 2A48 0317 D477 2A07 2AD9 CF1C 7C1D 832E 2E15 B3C1
uid Achim Leubner <achim@freebsd.org>
sub 2048R/E275EF01 2013-01-22
]]></programlisting>
<programlisting role="pgpkey"><![CDATA[
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBFD+q6cBCAD8XsjHzsyljaRIF8Qz8NeXaiZWq0KZ8NHRJ4ahZLN5kvhk2D3+
Y+iiMl6AesqTP/oobtXkeUFVlr0bwBBHpIRoOmGzxI5aorMH5Yv3dfY9u5HgkAW1
E//0VK92QyH4O7q0adquRmymjR9pD2yjoXgIFg6P4cHoEg1hLyf3FOHHCSEYdXVm
A5iBP7w+7aIkcUQiRVXHc3CojDZrkpSGwA/Pp9ywple8p7GqxoBr/4i/qYQeCNMI
97EO7c+BSfBrbgvWiYPY7+eIyV6AZFl9NfEfdko/7HLRkbL6Hh3jSXR/SZQ31WZ7
ct2z5GqJpEx1CDcIw1nxFYQ5uCLbzfyWT2JpABEBAAG0IUFjaGltIExldWJuZXIg
PGFjaGltQGZyZWVic2Qub3JnPokBOAQTAQIAIgUCUP6rpwIbAwYLCQgHAwIGFQgC
CQoLBBYCAwECHgECF4AACgkQfB2DLi4Vs8EW0AgAnkiKp8Hu40tgwLymXdK5eM2K
nywLNJ7MBUwuX9rn0QIQ5gy26ktHCNxONZLacsApdsCAlH4vKk89G38wXUq6OgGn
NQ+4uqoSVuUeR4A4GKdGjVNld/r33v3nq+QgGitGHjgpMtEPf+ZfCfZ8GxZG/oi9
kBpQMsA61sigcYZytbhGM8qy4aCqpgOKys2VifEgtOHx5jr7JZRYLrBkyftyvVS6
t9BDg1rdy9dcdKCaXp52H/qEZL/CO2gFLDR9t4ul+NalIN+nkPBiwS3hu9kn0Y5Q
vDU4Kw8D7CW4dalqOMipOetvMwYVEmv5YiCJwzcoMIFpl2aOvef5yoQdozagGrkB
DQRQ/qunAQgAzEocPpUQIsc5dlY3+Pa69WU6+qjIlVHbH6eZ5hWgi1AFMRf/KJGv
HzZJElAXUz4dEhSAMhbHdWD0h6e0NalD7Uzea5Ay0m0mrKlZ1Ijo3lCrSXpKRwyZ
terxnHZ3kc3XFUabk6kZfLkZsnm/+L2n0OX/dXvugeH+uAbjtYggBosun2mYSKtV
x5+8WK3EaeLkh+0Ml5DiYfReQcS8r5ZCwfM+EtgP+ckmqHVQOXIy63WwHDPC/82U
msQmbLGBw1RMezEckpQMksgC6pbqbp5gVxl+xUjz36JBHEW+MeOZLDiKasNw8tO8
G5sQIYSKh/Vcb1imeZIb/bvagtLIJp4EEQARAQABiQEfBBgBAgAJBQJQ/qunAhsM
AAoJEHwdgy4uFbPBunYIAMDQe8m2VtABvUq0SS/MubKRKVASiWQZkvxqh7stDgl0
J0bsk0O6egWk++lsXTRGr6SwV1fkYawZVLAkoiMyovLC0iFoUZTmkHE4fYUFJX+u
S6C9UURhpGpETLVI9sLfREDYWIWf7pvaSUmhF5RHcugcLhu5I1JZdJjoHXkpCbFO
8xOK7D0KBFVCSnm/b2yo8cfHi8LFLqsqPvf5mJx/iKuTSGJe2XRvA3D7BgH8/Lcz
QKsWBslP5TlIwh0Zy5mabAEKzGzVWY5laM9lXGbZrG9ALwEzSRgZCUWTS/EfC9jE
WtMvwG0kYv1rFDqiRdjtqD1ja59uRXGdiUb7++BX7cQ=
=jnyf
-----END PGP PUBLIC KEY BLOCK-----
]]></programlisting>

View file

@ -1,288 +1,214 @@
<!-- $FreeBSD$ -->
<!--
sh addkey.sh des 64EBE220;
sh addkey.sh des F94E87B2;
-->
<programlisting role="pgpfingerprint"><![CDATA[
pub 1024D/64EBE220 2006-11-11 [expires: 2012-12-31]
Key fingerprint = 3A1C 8E68 952C 3305 6984 6486 30D4 3A6E 64EB E220
pub 4096R/F94E87B2 2013-02-15 [expires: 2015-01-01]
Key fingerprint = 578A 3F4F 9E04 9FCF 3576 BF82 BB9B 471B F94E 87B2
uid Dag-Erling Smørgrav <des@usit.uio.no>
uid Dag-Erling Smørgrav <des@des.no>
uid Dag-Erling Smørgrav <des@freebsd.org>
uid Dag-Erling Smørgrav <des@usit.uio.no>
uid [jpeg image of size 3315]
sub 2048g/920C3313 2006-11-11 [expires: 2012-12-31]
uid [jpeg image of size 4779]
sub 4096R/F4DE87F5 2013-02-15 [expires: 2015-01-01]
]]></programlisting>
<programlisting role="pgpkey"><![CDATA[
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
BAOo
=h4i6
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
maNTtSyMU9A54ib2sgN0GwxijcvwPyqT
=IVjy
-----END PGP PUBLIC KEY BLOCK-----
]]></programlisting>

76
share/pgpkeys/pclin.key Normal file
View file

@ -0,0 +1,76 @@
<!-- $FreeBSD$ -->
<!--
sh addkey.sh pclin 865C427F;
-->
<programlisting role="pgpfingerprint"><![CDATA[
pub 4096R/865C427F 2013-02-05
Key fingerprint = CF3B AB13 4C94 6388 B047 B599 8B28 1692 865C 427F
uid Po-Chien Lin <pclin@FreeBSD.org>
uid Po-Chien Lin <linpc@cs.nctu.edu.tw>
sub 4096R/F31280BA 2013-02-05
]]></programlisting>
<programlisting role="pgpkey"><![CDATA[
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
uDqUBEUq3MHcpGRlsG7GQlW40AibKEA7Gd1OPbo=
=2C5J
-----END PGP PUBLIC KEY BLOCK-----
]]></programlisting>

View file

@ -991,6 +991,11 @@
&pgpkey.lesi;
</sect2>
<sect2 id="pgpkey-achim">
<title>&a.achim;</title>
&pgpkey.achim;
</sect2>
<sect2 id="pgpkey-cel">
<title>&a.cel;</title>
&pgpkey.cel;
@ -1026,6 +1031,11 @@
&pgpkey.clive;
</sect2>
<sect2 id="pgpkey-pclin">
<title>&a.pclin;</title>
&pgpkey.pclin;
</sect2>
<sect2 id="pgpkey-yzlin">
<title>&a.yzlin;</title>
&pgpkey.yzlin;

View file

@ -3,6 +3,7 @@
<!-- PGP keyblocks -->
<!ENTITY pgpkey.aaron SYSTEM "aaron.key">
<!ENTITY pgpkey.ache SYSTEM "ache.key">
<!ENTITY pgpkey.achim SYSTEM "achim.key">
<!ENTITY pgpkey.acm SYSTEM "acm.key">
<!ENTITY pgpkey.adamw SYSTEM "adamw.key">
<!ENTITY pgpkey.ae SYSTEM "ae.key">
@ -285,6 +286,7 @@
<!ENTITY pgpkey.patrick SYSTEM "patrick.key">
<!ENTITY pgpkey.paul SYSTEM "paul.key">
<!ENTITY pgpkey.pav SYSTEM "pav.key">
<!ENTITY pgpkey.pclin SYSTEM "pclin.key">
<!ENTITY pgpkey.peadar SYSTEM "peadar.key">
<!ENTITY pgpkey.perky SYSTEM "perky.key">
<!ENTITY pgpkey.petef SYSTEM "petef.key">

View file

@ -22,6 +22,8 @@
<!ENTITY a.ache "Andrey A. Chernov <email>ache@FreeBSD.org</email>">
<!ENTITY a.achim "Achim Leubner <email>achim@FreeBSD.org</email>">
<!ENTITY a.acm "Jos&eacute; Alonso C&aacute;rdenas M&aacute;rquez <email>acm@FreeBSD.org</email>">
<!ENTITY a.adam "Adam David <email>adam@FreeBSD.org</email>">
@ -1018,6 +1020,8 @@
<!ENTITY a.pb "Pierre Beyssac <email>pb@FreeBSD.org</email>">
<!ENTITY a.pclin "Po-Chien Lin <email>pclin@FreeBSD.org</email>">
<!ENTITY a.pdeuskar "Prafulla S. Deuskar <email>pdeuskar@FreeBSD.org</email>">
<!ENTITY a.pds "Peter da Silva <email>pds@FreeBSD.org</email>">
@ -1216,6 +1220,8 @@
<!ENTITY a.smace "Scott Mace <email>smace@FreeBSD.org</email>">
<!ENTITY a.smh "Steven Hartland <email>smh@FreeBSD.org</email>">
<!ENTITY a.smkelly "Sean Kelly <email>smkelly@FreeBSD.org</email>">
<!ENTITY a.smpatel "Sujal Patel <email>smpatel@FreeBSD.org</email>">

View file

@ -14,6 +14,7 @@ $FreeBSD$
<!ENTITY a.aaron "Aaron Dalton">
<!ENTITY a.abial "Andrzej Bialecki">
<!ENTITY a.ache "Andrey A. Chernov">
<!ENTITY a.achim "Achim Leubner">
<!ENTITY a.acm "Jos&eacute; Alonso C&aacute;rdenas M&aacute;rquez">
<!ENTITY a.adam "Adam David">
<!ENTITY a.adamw "Adam Weinberger">
@ -79,16 +80,16 @@ $FreeBSD$
<!ENTITY a.benno "Benno Rice">
<!ENTITY a.bf "Brendan Fabeny">
<!ENTITY a.bgray "Ben Gray">
<!ENTITY a.billf "Bill Fumerola">
<!ENTITY a.bhaga "Ben Haga">
<!ENTITY a.billf "Bill Fumerola">
<!ENTITY a.blackend "Marc Fonvieille">
<!ENTITY a.bland "Alexander Nedotsukov">
<!ENTITY a.bmah "Bruce A. Mah">
<!ENTITY a.bmilekic "Bosko Milekic">
<!ENTITY a.bms "Bruce M. Simpson">
<!ENTITY a.bp "Boris Popov">
<!ENTITY a.brd "Brad Davis">
<!ENTITY a.brandon "Brandon Gillespie">
<!ENTITY a.brd "Brad Davis">
<!ENTITY a.brian "Brian Somers">
<!ENTITY a.brix "Henrik Brix Andersen">
<!ENTITY a.brooks "Brooks Davis">
@ -102,9 +103,9 @@ $FreeBSD$
<!ENTITY a.bushman "Michael Bushkov">
<!ENTITY a.bvs "Vitaly Bogdanov">
<!ENTITY a.bz "Bjoern A. Zeeb">
<!ENTITY a.cawimm "Charles A. Wimmer">
<!ENTITY a.carl "Carl Delsey">
<!ENTITY a.carvay "J. Vicente Carrasco Vay&aacute;">
<!ENTITY a.cawimm "Charles A. Wimmer">
<!ENTITY a.cel "Chuck Lever">
<!ENTITY a.ceri "Ceri Davies">
<!ENTITY a.cg "Cameron Grant">
@ -144,8 +145,8 @@ $FreeBSD$
<!ENTITY a.darrenr "Darren Reed">
<!ENTITY a.das "David Schultz">
<!ENTITY a.davidc "Chad David">
<!ENTITY a.davidn "David Nugent">
<!ENTITY a.davide "Davide Italiano">
<!ENTITY a.davidn "David Nugent">
<!ENTITY a.davidxu "David Xu">
<!ENTITY a.db "Diane Bruce">
<!ENTITY a.dbaker "Daniel Baker">
@ -302,11 +303,11 @@ $FreeBSD$
<!ENTITY a.jilles "Jilles Tjoelker">
<!ENTITY a.jim "Jim Mock">
<!ENTITY a.jimharris "Jim Harris">
<!ENTITY a.jinmei "JINMEI Tatuya">
<!ENTITY a.jkh "Jordan K. Hubbard">
<!ENTITY a.jkim "Jung-uk Kim">
<!ENTITY a.jkois "Johann Kois">
<!ENTITY a.jkoshy "Joseph Koshy">
<!ENTITY a.jinmei "JINMEI Tatuya">
<!ENTITY a.jlaffaye "Julien Laffaye">
<!ENTITY a.jlemon "Jonathan Lemon">
<!ENTITY a.jlh "Jeremie Le Hen">
@ -353,9 +354,9 @@ $FreeBSD$
<!ENTITY a.kjc "Kenjiro Cho">
<!ENTITY a.kmacy "Kip Macy">
<!ENTITY a.kmoore "Kris Moore">
<!ENTITY a.koobs "Kubilay Kocak">
<!ENTITY a.knu "Akinori MUSHA">
<!ENTITY a.koitsu "Jeremy Chadwick">
<!ENTITY a.koobs "Kubilay Kocak">
<!ENTITY a.krion "Kirill Ponomarew">
<!ENTITY a.kris "Kris Kennaway">
<!ENTITY a.kuriyama "Jun Kuriyama">
@ -492,6 +493,7 @@ $FreeBSD$
<!ENTITY a.pav "Pav Lucistnik">
<!ENTITY a.pawel "Pawel Pekala">
<!ENTITY a.pb "Pierre Beyssac">
<!ENTITY a.pclin "Po-Chien Lin">
<!ENTITY a.pdeuskar "Prafulla S. Deuskar">
<!ENTITY a.pds "Peter da Silva">
<!ENTITY a.peadar "Peter Edwards">
@ -590,6 +592,7 @@ $FreeBSD$
<!ENTITY a.skreuzer "Steven Kreuzer">
<!ENTITY a.skv "Sergey Skvortsov">
<!ENTITY a.smace "Scott Mace">
<!ENTITY a.smh "Steven Hartland">
<!ENTITY a.smkelly "Sean Kelly">
<!ENTITY a.smpatel "Sujal Patel">
<!ENTITY a.snb "Nick Barkas">
@ -660,8 +663,8 @@ $FreeBSD$
<!ENTITY a.ups "Stephan Uphoff">
<!ENTITY a.uqs "Ulrich Sp&ouml;rlein">
<!ENTITY a.vanilla "Vanilla I. Shu">
<!ENTITY a.versus "Konrad Jankowski">
<!ENTITY a.vd "Vasil Dimov">
<!ENTITY a.versus "Konrad Jankowski">
<!ENTITY a.viny "Vincent Tougait">
<!ENTITY a.vkashyap "Vinod Kashyap">
<!ENTITY a.vs "Volker Stolz">
@ -670,7 +673,6 @@ $FreeBSD$
<!ENTITY a.wen "Wen Heping">
<!ENTITY a.weongyo "Weongyo Jeong">
<!ENTITY a.wes "Wes Peters">
<!ENTITY a.wxs "Wesley Shields">
<!ENTITY a.whiteside "Don Whiteside">
<!ENTITY a.wilko "Wilko Bulte">
<!ENTITY a.will "Will Andrews">
@ -681,13 +683,14 @@ $FreeBSD$
<!ENTITY a.wpaul "Bill Paul">
<!ENTITY a.wsalamon "Wayne Salamon">
<!ENTITY a.wsanchez "Wilfredo S&aacute;nchez">
<!ENTITY a.wxs "Wesley Shields">
<!ENTITY a.wylie "Wylie Stilwell">
<!ENTITY a.xride "S&oslash;ren Straarup">
<!ENTITY a.yar "Yar Tikhiy">
<!ENTITY a.yoichi "Yoichi NAKAYAMA">
<!ENTITY a.yokota "Kazutaka YOKOTA">
<!ENTITY a.yongari "Pyun YongHyeon">
<!ENTITY a.yzlin "Yi-Jheng Lin">
<!ENTITY a.xride "S&oslash;ren Straarup">
<!ENTITY a.zack "Zack Kirsch">
<!ENTITY a.zarzycki "Dave Zarzycki">
<!ENTITY a.zec "Marko Zec">

View file

@ -1611,7 +1611,6 @@
<host type="ftp">
<name>ftp2.se.FreeBSD.org</name>
<url proto="ftp">ftp://ftp2.se.FreeBSD.org/pub/FreeBSD/</url>
<url proto="http">http://ftp2.se.FreeBSD.org/</url>
<url proto="rsync">rsync://ftp2.se.FreeBSD.org/</url>
</host>
@ -2114,8 +2113,7 @@
<host type="ftp">
<name>ftp9.us.FreeBSD.org</name>
<url proto="ftp">ftp://ftp9.us.FreeBSD.org/pub/FreeBSD/</url>
<url proto="http">http://ftp9.us.FreeBSD.org/pub/os/FreeBSD/</url>
<url proto="http">http://ftp9.us.FreeBSD.org/pub/FreeBSD/</url>
</host>
<host type="ftp">

View file

@ -30,9 +30,31 @@
<year>
<name>2013</name>
<month>
<name>2</name>
<day>
<name>10</name>
<event>
<p>New committer:
<a href="mailto:pclin@FreeBSD.org">Po-Chien Lin</a> (ports)</p>
</event>
</day>
</month>
<month>
<name>1</name>
<day>
<name>23</name>
<event>
<p>New committer:
<a href="mailto:achim@FreeBSD.org">Achim Leubner</a> (src)</p>
</event>
</day>
<day>
<name>22</name>
<event>
@ -198,6 +220,15 @@
</event>
</day>
<day>
<name>18</name>
<event>
<p>New committer:
<a href="mailto:smh@FreeBSD.org">Steven Hartland</a> (src)</p>
</event>
</day>
<day>
<name>17</name>

View file

@ -14,6 +14,22 @@
<year>
<name>2013</name>
<month>
<name>2</name>
<story>
<name>2012 - A BSD Year in Retrospective</name>
<url>http://www.osnews.com/story/26787/2012_a_BSD_year_in_retrospective</url>
<site-name>OSnews</site-name>
<site-url>http://www.osnews.com/</site-url>
<date>14 February 2013</date>
<author>Julian Djamil</author>
<p>A retrospective of all the exciting developments in the BSD-family
of operating systems in 2012, focusing on FreeBSD, NetBSD, OpenBSD
and Dragonfly BSD.</p>
</story>
</month>
<month>
<name>1</name>