White space fix only. Translators can ignore.
Sponsored by: iXsystems
This commit is contained in:
parent
9334240a44
commit
5ae07a880a
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=44674
1 changed files with 258 additions and 271 deletions
|
@ -423,7 +423,8 @@ MergeChanges /etc/ /var/named/etc/ /boot/device.hints</programlisting>
|
|||
&prompt.root; <userinput>cd /cdrom/<replaceable>X.Y-RELEASE</replaceable>/kernels</userinput>
|
||||
&prompt.root; <userinput>./install.sh GENERIC</userinput></screen>
|
||||
|
||||
<para>Replace <filename class="directory"><replaceable>X.Y-RELEASE</replaceable></filename>
|
||||
<para>Replace <filename
|
||||
class="directory"><replaceable>X.Y-RELEASE</replaceable></filename>
|
||||
with the actual version of the release being used.
|
||||
The <filename>GENERIC</filename> kernel will be
|
||||
installed in <filename>/boot/GENERIC</filename> by
|
||||
|
@ -717,35 +718,35 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
|
||||
<para>Documentation is an integral part of the &os; operating
|
||||
system. While an up-to-date version of the &os; documentation
|
||||
is always available on the &os; web site
|
||||
(<link xlink:href="&url.base;/doc/">http://www.freebsd.org/doc/</link>),
|
||||
is always available on the &os; web site (<link
|
||||
xlink:href="&url.base;/doc/">http://www.freebsd.org/doc/</link>),
|
||||
it can be handy to have an up-to-date, local copy of the &os;
|
||||
website, handbooks, <acronym>FAQ</acronym>, and articles.</para>
|
||||
|
||||
|
||||
<para>This section describes how to use either source or the &os;
|
||||
Ports Collection to keep a local copy of the &os; documentation
|
||||
up-to-date.</para>
|
||||
|
||||
<para>For information on editing and submitting corrections to
|
||||
the documentation, refer to the &os; Documentation
|
||||
Project Primer for New Contributors
|
||||
(<link xlink:href="&url.books.fdp-primer;">http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/</link>).</para>
|
||||
<para>For information on editing and submitting corrections to the
|
||||
documentation, refer to the &os; Documentation Project Primer
|
||||
for New Contributors (<link
|
||||
xlink:href="&url.books.fdp-primer;">http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/</link>).</para>
|
||||
|
||||
<sect2 xml:id="updating-installed-documentation">
|
||||
<title>Updating Documentation from Source</title>
|
||||
|
||||
<para>Rebuilding the &os; documentation from source requires a
|
||||
collection of tools which are not part of the &os; base system.
|
||||
The required tools, including
|
||||
collection of tools which are not part of the &os; base
|
||||
system. The required tools, including
|
||||
<application>svn</application>, can be installed from the
|
||||
<package>textproc/docproj</package> package or port
|
||||
developed by the &os; Documentation Project.</para>
|
||||
<package>textproc/docproj</package> package or port developed
|
||||
by the &os; Documentation Project.</para>
|
||||
|
||||
<para>Once installed, use <application>svn</application> to
|
||||
fetch a clean copy of the documentation source. Replace
|
||||
<replaceable>https://svn0.us-west.FreeBSD.org</replaceable>
|
||||
with the address of the closest geographic mirror from
|
||||
<xref linkend="svn-mirrors"/>:</para>
|
||||
with the address of the closest geographic mirror from <xref
|
||||
linkend="svn-mirrors"/>:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>svn checkout <replaceable>https://svn0.us-west.FreeBSD.org</replaceable>/doc/head /usr/doc</userinput></screen>
|
||||
|
||||
|
@ -775,10 +776,9 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
<screen>&prompt.root; <userinput>cd /usr/doc/en_US.ISO8859-1</userinput>
|
||||
&prompt.root; <userinput>make install clean</userinput></screen>
|
||||
|
||||
<para>An alternative way of
|
||||
updating the documentation is to run this
|
||||
command from <filename>/usr/doc</filename> or
|
||||
the desired language-specific subdirectory:</para>
|
||||
<para>An alternative way of updating the documentation is to run
|
||||
this command from <filename>/usr/doc</filename> or the desired
|
||||
language-specific subdirectory:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make update</userinput></screen>
|
||||
|
||||
|
@ -788,11 +788,12 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
<screen>&prompt.root; <userinput>cd /usr/doc</userinput>
|
||||
&prompt.root; <userinput>make FORMATS='html html-split' install clean</userinput></screen>
|
||||
|
||||
<para>Several options are available to ease the process of updating
|
||||
only parts of the documentation, or the build of specific
|
||||
translations. These options can be set either as system-wide
|
||||
options in <filename>/etc/make.conf</filename>, or as
|
||||
command-line options passed to <command>make</command>.</para>
|
||||
<para>Several options are available to ease the process of
|
||||
updating only parts of the documentation, or the build of
|
||||
specific translations. These options can be set either as
|
||||
system-wide options in <filename>/etc/make.conf</filename>, or
|
||||
as command-line options passed to
|
||||
<command>make</command>.</para>
|
||||
|
||||
<para>The options include:</para>
|
||||
|
||||
|
@ -814,8 +815,8 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
<para>A single format or a list of output formats to be
|
||||
built. Currently, <literal>html</literal>,
|
||||
<literal>html-split</literal>, <literal>txt</literal>,
|
||||
<literal>ps</literal>, and <literal>pdf</literal>
|
||||
are supported.</para>
|
||||
<literal>ps</literal>, and <literal>pdf</literal> are
|
||||
supported.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
@ -859,138 +860,134 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
</indexterm>
|
||||
|
||||
<para>The previous section presented a method for updating the
|
||||
&os; documentation from sources. This section describes an alternative method which
|
||||
uses the Ports Collection and makes it possible to:</para>
|
||||
&os; documentation from sources. This section describes an
|
||||
alternative method which uses the Ports Collection and makes
|
||||
it possible to:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Install pre-built packages of the
|
||||
documentation, without having to locally build anything
|
||||
or install the documentation toolchain.</para>
|
||||
<para>Install pre-built packages of the documentation,
|
||||
without having to locally build anything or install the
|
||||
documentation toolchain.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Build the documentation sources
|
||||
through the ports framework, making the checkout and build
|
||||
steps a bit easier.</para>
|
||||
<para>Build the documentation sources through the ports
|
||||
framework, making the checkout and build steps a bit
|
||||
easier.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>This method of updating the &os; documentation is
|
||||
supported by a set of
|
||||
documentation ports and packages which are updated by the
|
||||
&a.doceng; on a monthly basis. These are listed in the &os;
|
||||
Ports Collection, under the docs category (<link
|
||||
supported by a set of documentation ports and packages which
|
||||
are updated by the &a.doceng; on a monthly basis. These are
|
||||
listed in the &os; Ports Collection, under the docs
|
||||
category (<link
|
||||
xlink:href="http://www.freshports.org/docs/">http://www.freshports.org/docs/</link>).</para>
|
||||
|
||||
<para>Organization of the documentation ports is as
|
||||
follows:</para>
|
||||
<para>Organization of the documentation ports is as
|
||||
follows:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>The
|
||||
<package>misc/freebsd-doc-en</package> package or port installs
|
||||
all of the English documentation.</para>
|
||||
</listitem>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>The <package>misc/freebsd-doc-en</package> package or
|
||||
port installs all of the English documentation.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>The
|
||||
<package>misc/freebsd-doc-all</package> meta-package or port
|
||||
installs all documentation in all available
|
||||
languages.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The <package>misc/freebsd-doc-all</package>
|
||||
meta-package or port installs all documentation in all
|
||||
available languages.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>There is a package and port for each
|
||||
translation, such as
|
||||
<package>misc/freebsd-doc-hu</package> for the
|
||||
Hungarian documentation.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<listitem>
|
||||
<para>There is a package and port for each translation, such
|
||||
as <package>misc/freebsd-doc-hu</package> for the
|
||||
Hungarian documentation.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>When binary packages are used, the &os; documentation
|
||||
will be installed in all available
|
||||
formats for the given language. For example, the following command will install the
|
||||
latest package of the Hungarian
|
||||
documentation:</para>
|
||||
<para>When binary packages are used, the &os; documentation will
|
||||
be installed in all available formats for the given language.
|
||||
For example, the following command will install the latest
|
||||
package of the Hungarian documentation:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>pkg install hu-freebsd-doc</userinput></screen>
|
||||
<screen>&prompt.root; <userinput>pkg install hu-freebsd-doc</userinput></screen>
|
||||
|
||||
<note>
|
||||
<para>Packages use a format that differs from the
|
||||
corresponding port's name:
|
||||
<literal><replaceable>lang</replaceable>-freebsd-doc</literal>,
|
||||
where <replaceable>lang</replaceable> is the short format
|
||||
of the language code, such as <literal>hu</literal> for
|
||||
Hungarian, or <literal>zh_cn</literal> for Simplified
|
||||
Chinese.</para>
|
||||
</note>
|
||||
<note>
|
||||
<para>Packages use a format that differs from the
|
||||
corresponding port's name:
|
||||
<literal><replaceable>lang</replaceable>-freebsd-doc</literal>,
|
||||
where <replaceable>lang</replaceable> is the short format of
|
||||
the language code, such as <literal>hu</literal> for
|
||||
Hungarian, or <literal>zh_cn</literal> for Simplified
|
||||
Chinese.</para>
|
||||
</note>
|
||||
|
||||
<para>To specify the format of the documentation, build the
|
||||
port instead of installing the package. For example, to build and install the English
|
||||
documentation:</para>
|
||||
<para>To specify the format of the documentation, build the port
|
||||
instead of installing the package. For example, to build and
|
||||
install the English documentation:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/ports/misc/freebsd-doc-en</userinput>
|
||||
<screen>&prompt.root; <userinput>cd /usr/ports/misc/freebsd-doc-en</userinput>
|
||||
&prompt.root; <userinput>make install clean</userinput></screen>
|
||||
|
||||
<para>The port provides a configuration menu where the format
|
||||
to build and install can be specified. By default, split
|
||||
<acronym>HTML</acronym>, similar to the format used on <uri
|
||||
xlink:href="http://www.FreeBSD.org">http://www.FreeBSD.org</uri>,
|
||||
and <acronym>PDF</acronym> are
|
||||
selected.</para>
|
||||
<para>The port provides a configuration menu where the format to
|
||||
build and install can be specified. By default, split
|
||||
<acronym>HTML</acronym>, similar to the format used on <uri
|
||||
xlink:href="http://www.FreeBSD.org">http://www.FreeBSD.org</uri>,
|
||||
and <acronym>PDF</acronym> are selected.</para>
|
||||
|
||||
<para>Alternately, several <command>make</command> options can be specified
|
||||
when building a documentation port, including:</para>
|
||||
<para>Alternately, several <command>make</command> options can
|
||||
be specified when building a documentation port,
|
||||
including:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><varname>WITH_HTML</varname></term>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><varname>WITH_HTML</varname></term>
|
||||
|
||||
<listitem>
|
||||
<para>Builds the HTML format with a single HTML file
|
||||
per document. The formatted documentation is saved
|
||||
to a file called <filename>article.html</filename>,
|
||||
or <filename>book.html</filename>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<listitem>
|
||||
<para>Builds the HTML format with a single HTML file per
|
||||
document. The formatted documentation is saved to a
|
||||
file called <filename>article.html</filename>, or
|
||||
<filename>book.html</filename>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>WITH_PDF</varname></term>
|
||||
<varlistentry>
|
||||
<term><varname>WITH_PDF</varname></term>
|
||||
|
||||
<listitem>
|
||||
<para>The formatted documentation is saved to a
|
||||
file called <filename>article.pdf</filename> or
|
||||
<filename>book.pdf</filename>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<listitem>
|
||||
<para>The formatted documentation is saved to a file
|
||||
called <filename>article.pdf</filename> or
|
||||
<filename>book.pdf</filename>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>DOCBASE</varname></term>
|
||||
<varlistentry>
|
||||
<term><varname>DOCBASE</varname></term>
|
||||
|
||||
<listitem>
|
||||
<para>Specifies where to install the documentation.
|
||||
It defaults to
|
||||
<filename>/usr/local/share/doc/freebsd</filename>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<listitem>
|
||||
<para>Specifies where to install the documentation. It
|
||||
defaults to
|
||||
<filename>/usr/local/share/doc/freebsd</filename>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>This example uses variables to install the Hungarian
|
||||
documentation as a <acronym>PDF</acronym> in the specified
|
||||
directory:</para>
|
||||
<para>This example uses variables to install the Hungarian
|
||||
documentation as a <acronym>PDF</acronym> in the specified
|
||||
directory:</para>
|
||||
|
||||
<screen>&prompt.root; cd /usr/ports/misc/freebsd-doc-hu
|
||||
<screen>&prompt.root; cd /usr/ports/misc/freebsd-doc-hu
|
||||
&prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean</screen>
|
||||
|
||||
<para>Documentation packages or ports can be updated using the
|
||||
instructions in <xref linkend="ports"/>.
|
||||
For example, the following command updates the installed
|
||||
Hungarian documentation using
|
||||
<package>ports-mgmt/portmaster</package>
|
||||
by using packages only:</para>
|
||||
<para>Documentation packages or ports can be updated using the
|
||||
instructions in <xref linkend="ports"/>. For example, the
|
||||
following command updates the installed Hungarian
|
||||
documentation using <package>ports-mgmt/portmaster</package>
|
||||
by using packages only:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>portmaster -PP hu-freebsd-doc</userinput></screen>
|
||||
<screen>&prompt.root; <userinput>portmaster -PP hu-freebsd-doc</userinput></screen>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
|
@ -1605,139 +1602,132 @@ Script started, output file is /var/tmp/mw.out
|
|||
&prompt.root; <userinput>exit</userinput>
|
||||
Script done, …</screen>
|
||||
|
||||
<para><emphasis>Do not</emphasis> save the output in
|
||||
<filename>/tmp</filename> as this directory may be cleared
|
||||
at next reboot. A better place to save the file is
|
||||
<filename>/var/tmp</filename> or in
|
||||
<systemitem class="username">root</systemitem>'s home
|
||||
directory.</para>
|
||||
<para><emphasis>Do not</emphasis> save the output in
|
||||
<filename>/tmp</filename> as this directory may be cleared at
|
||||
next reboot. A better place to save the file is
|
||||
<filename>/var/tmp</filename> or in <systemitem
|
||||
class="username">root</systemitem>'s home directory.</para>
|
||||
|
||||
<para>While in <filename>/usr/src</filename>
|
||||
type:</para>
|
||||
<para>While in <filename>/usr/src</filename> type:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/src</userinput></screen>
|
||||
<screen>&prompt.root; <userinput>cd /usr/src</userinput></screen>
|
||||
|
||||
<indexterm>
|
||||
<primary><command>make</command></primary>
|
||||
</indexterm>
|
||||
<indexterm>
|
||||
<primary><command>make</command></primary>
|
||||
</indexterm>
|
||||
|
||||
<para>To rebuild the world, use &man.make.1;. This command
|
||||
reads instructions from the <filename>Makefile</filename>,
|
||||
which describes how the programs that comprise &os; should
|
||||
be built and the order in which they should be built.</para>
|
||||
<para>To rebuild the world, use &man.make.1;. This command
|
||||
reads instructions from the <filename>Makefile</filename>,
|
||||
which describes how the programs that comprise &os; should be
|
||||
built and the order in which they should be built.</para>
|
||||
|
||||
<para>The general format of the command is as follows:</para>
|
||||
<para>The general format of the command is as follows:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make -<replaceable>x</replaceable> -D<replaceable>VARIABLE</replaceable> <replaceable>target</replaceable></userinput></screen>
|
||||
<screen>&prompt.root; <userinput>make -<replaceable>x</replaceable> -D<replaceable>VARIABLE</replaceable> <replaceable>target</replaceable></userinput></screen>
|
||||
|
||||
<para>In this example,
|
||||
<option>-<replaceable>x</replaceable></option> is an option
|
||||
passed to &man.make.1;. Refer to &man.make.1; for an
|
||||
examples of available options.</para>
|
||||
<para>In this example,
|
||||
<option>-<replaceable>x</replaceable></option> is an option
|
||||
passed to &man.make.1;. Refer to &man.make.1; for an examples
|
||||
of available options.</para>
|
||||
|
||||
<para><option>-D<replaceable>VARIABLE</replaceable></option>
|
||||
passes a variable to the <filename>Makefile</filename>. The
|
||||
behavior of the <filename>Makefile</filename> is controlled
|
||||
by these variables. These are the same variables as are set
|
||||
in <filename>/etc/make.conf</filename>, and this provides
|
||||
another way of setting them. For example:</para>
|
||||
<para><option>-D<replaceable>VARIABLE</replaceable></option>
|
||||
passes a variable to the <filename>Makefile</filename>. The
|
||||
behavior of the <filename>Makefile</filename> is controlled by
|
||||
these variables. These are the same variables as are set in
|
||||
<filename>/etc/make.conf</filename>, and this provides
|
||||
another way of setting them. For example:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make -DNO_PROFILE <replaceable>target</replaceable></userinput></screen>
|
||||
<screen>&prompt.root; <userinput>make -DNO_PROFILE <replaceable>target</replaceable></userinput></screen>
|
||||
|
||||
<para>is another way of specifying that profiled libraries
|
||||
should not be built, and corresponds with the</para>
|
||||
<para>is another way of specifying that profiled libraries
|
||||
should not be built, and corresponds with the</para>
|
||||
|
||||
<programlisting>NO_PROFILE= true # Avoid compiling profiled libraries</programlisting>
|
||||
<programlisting>NO_PROFILE= true # Avoid compiling profiled libraries</programlisting>
|
||||
|
||||
<para>line in <filename>/etc/make.conf</filename>.</para>
|
||||
<para>line in <filename>/etc/make.conf</filename>.</para>
|
||||
|
||||
<para><replaceable>target</replaceable> tells &man.make.1;
|
||||
what to do. Each <filename>Makefile</filename> defines a
|
||||
number of different <quote>targets</quote>, and the choice
|
||||
of target determines what happens.</para>
|
||||
<para><replaceable>target</replaceable> tells &man.make.1; what
|
||||
to do. Each <filename>Makefile</filename> defines a number of
|
||||
different <quote>targets</quote>, and the choice of target
|
||||
determines what happens.</para>
|
||||
|
||||
<para>Some targets listed in the
|
||||
<filename>Makefile</filename> are used by the build process
|
||||
to break out the steps necessary to rebuild the system into
|
||||
a number of sub-steps.</para>
|
||||
<para>Some targets listed in the <filename>Makefile</filename>
|
||||
are used by the build process to break out the steps
|
||||
necessary to rebuild the system into a number of
|
||||
sub-steps.</para>
|
||||
|
||||
<para>Most of the time, no parameters need to be passed to
|
||||
&man.make.1; and the command looks like this:</para>
|
||||
<para>Most of the time, no parameters need to be passed to
|
||||
&man.make.1; and the command looks like this:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make <replaceable>target</replaceable></userinput></screen>
|
||||
<screen>&prompt.root; <userinput>make <replaceable>target</replaceable></userinput></screen>
|
||||
|
||||
<para>Where <replaceable>target</replaceable> is one of many
|
||||
build options. The first target should always be
|
||||
<buildtarget>buildworld</buildtarget>.</para>
|
||||
<para>Where <replaceable>target</replaceable> is one of many
|
||||
build options. The first target should always be
|
||||
<buildtarget>buildworld</buildtarget>.</para>
|
||||
|
||||
<para>As the names imply,
|
||||
<buildtarget>buildworld</buildtarget> builds a complete new
|
||||
tree under <filename>/usr/obj</filename> and
|
||||
<buildtarget>installworld</buildtarget> installs this tree
|
||||
on the current machine.</para>
|
||||
<para>As the names imply, <buildtarget>buildworld</buildtarget>
|
||||
builds a complete new tree under <filename>/usr/obj</filename>
|
||||
and <buildtarget>installworld</buildtarget> installs this tree
|
||||
on the current machine.</para>
|
||||
|
||||
<para>Having separate options is useful for two reasons.
|
||||
First, it allows for a <quote>self hosted</quote> build that
|
||||
does not affect any components of a running system. Because
|
||||
of this, <buildtarget>buildworld</buildtarget> can be run on
|
||||
a machine running in multi-user mode with no fear of
|
||||
ill-effects. It is still recommended that
|
||||
<buildtarget>installworld</buildtarget> be run in part in
|
||||
single user mode, though.</para>
|
||||
<para>Having separate options is useful for two reasons. First,
|
||||
it allows for a <quote>self hosted</quote> build that does not
|
||||
affect any components of a running system. Because of this,
|
||||
<buildtarget>buildworld</buildtarget> can be run on a machine
|
||||
running in multi-user mode with no fear of ill-effects. It is
|
||||
still recommended that <buildtarget>installworld</buildtarget>
|
||||
be run in part in single user mode, though.</para>
|
||||
|
||||
<para>Secondly, it allows NFS mounts to be used to upgrade
|
||||
multiple machines on a network. If order to upgrade three
|
||||
machines, <systemitem>A</systemitem>,
|
||||
<systemitem>B</systemitem> and <systemitem>C</systemitem>,
|
||||
run <command>make buildworld</command> and
|
||||
<command>make installworld</command> on
|
||||
<systemitem>A</systemitem>. <systemitem>B</systemitem> and
|
||||
<systemitem>C</systemitem> should then NFS mount
|
||||
<filename>/usr/src</filename> and
|
||||
<filename>/usr/obj</filename> from
|
||||
<systemitem>A</systemitem>, and run
|
||||
<command>make installworld</command> to install the results
|
||||
of the build on <systemitem>B</systemitem> and
|
||||
<systemitem>C</systemitem>.</para>
|
||||
<para>Secondly, it allows NFS mounts to be used to upgrade
|
||||
multiple machines on a network. If order to upgrade three
|
||||
machines, <systemitem>A</systemitem>,
|
||||
<systemitem>B</systemitem> and <systemitem>C</systemitem>, run
|
||||
<command>make buildworld</command> and <command>make
|
||||
installworld</command> on <systemitem>A</systemitem>.
|
||||
<systemitem>B</systemitem> and <systemitem>C</systemitem>
|
||||
should then NFS mount <filename>/usr/src</filename> and
|
||||
<filename>/usr/obj</filename> from <systemitem>A</systemitem>,
|
||||
and run <command>make installworld</command> to install the
|
||||
results of the build on <systemitem>B</systemitem> and
|
||||
<systemitem>C</systemitem>.</para>
|
||||
|
||||
<para>Although the <buildtarget>world</buildtarget> target
|
||||
still exists, users are strongly encouraged not to use
|
||||
it.</para>
|
||||
<para>Although the <buildtarget>world</buildtarget> target still
|
||||
exists, users are strongly encouraged not to use it.</para>
|
||||
|
||||
<para>Instead, run:</para>
|
||||
<para>Instead, run:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make buildworld</userinput></screen>
|
||||
<screen>&prompt.root; <userinput>make buildworld</userinput></screen>
|
||||
|
||||
<para>It is possible to specify <option>-j</option> which
|
||||
will cause <command>make</command> to spawn several
|
||||
simultaneous processes. This is most useful on multi-CPU
|
||||
machines. However, since much of the compiling process is
|
||||
I/O bound rather than CPU bound, it is also useful on single
|
||||
CPU machines.</para>
|
||||
<para>It is possible to specify <option>-j</option> which will
|
||||
cause <command>make</command> to spawn several simultaneous
|
||||
processes. This is most useful on multi-CPU machines.
|
||||
However, since much of the compiling process is I/O bound
|
||||
rather than CPU bound, it is also useful on single CPU
|
||||
machines.</para>
|
||||
|
||||
<para>On a typical single-CPU machine, run:</para>
|
||||
<para>On a typical single-CPU machine, run:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>make -j4 buildworld</userinput></screen>
|
||||
<screen>&prompt.root; <userinput>make -j4 buildworld</userinput></screen>
|
||||
|
||||
<para>&man.make.1; will then have up to 4 processes running at
|
||||
any one time. Empirical evidence posted to the mailing
|
||||
lists shows this generally gives the best performance
|
||||
benefit.</para>
|
||||
<para>&man.make.1; will then have up to 4 processes running at
|
||||
any one time. Empirical evidence posted to the mailing lists
|
||||
shows this generally gives the best performance
|
||||
benefit.</para>
|
||||
|
||||
<para>On a multi-CPU machine using an SMP configured kernel,
|
||||
try values between 6 and 10 and see how they speed things
|
||||
up.</para>
|
||||
<para>On a multi-CPU machine using an SMP configured kernel, try
|
||||
values between 6 and 10 and see how they speed things
|
||||
up.</para>
|
||||
|
||||
<indexterm>
|
||||
<primary>rebuilding <quote>world</quote></primary>
|
||||
<secondary>timings</secondary>
|
||||
</indexterm>
|
||||
<indexterm>
|
||||
<primary>rebuilding <quote>world</quote></primary>
|
||||
<secondary>timings</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Many factors influence the build time, but fairly recent
|
||||
machines may only take a one or two hours to build the
|
||||
&os.stable; tree, with no tricks or shortcuts used during
|
||||
the process. A &os.current; tree will take somewhat
|
||||
longer.</para>
|
||||
<para>Many factors influence the build time, but fairly recent
|
||||
machines may only take a one or two hours to build the
|
||||
&os.stable; tree, with no tricks or shortcuts used during the
|
||||
process. A &os.current; tree will take somewhat
|
||||
longer.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="new-kernel">
|
||||
|
@ -2334,14 +2324,14 @@ Building everything..
|
|||
class="directory">/usr</filename> with
|
||||
<option>noatime</option>.</para>
|
||||
|
||||
<para>The file system holding
|
||||
<filename class="directory">/usr/obj</filename> can be mounted or
|
||||
remounted with <option>async</option> so that disk
|
||||
<para>The file system holding <filename
|
||||
class="directory">/usr/obj</filename> can be mounted
|
||||
or remounted with <option>async</option> so that disk
|
||||
writes happen asynchronously. The write completes
|
||||
immediately, and the data is written to the disk a
|
||||
few seconds later. This allows writes to be
|
||||
clustered together, and can provide a dramatic
|
||||
performance boost.</para>
|
||||
immediately, and the data is written to the disk a few
|
||||
seconds later. This allows writes to be clustered
|
||||
together, and can provide a dramatic performance
|
||||
boost.</para>
|
||||
|
||||
<warning>
|
||||
<para>Keep in mind that this option makes the file
|
||||
|
@ -2351,21 +2341,20 @@ Building everything..
|
|||
machine restarts.</para>
|
||||
|
||||
<para>If <filename>/usr/obj</filename> is the only
|
||||
directory on this file system, this is not a
|
||||
problem. If you have other, valuable data on the
|
||||
same file system, ensure that there are verified
|
||||
backups before enabling this option.</para>
|
||||
directory on this file system, this is not a problem.
|
||||
If you have other, valuable data on the same file
|
||||
system, ensure that there are verified backups before
|
||||
enabling this option.</para>
|
||||
</warning>
|
||||
|
||||
<para>Turn off profiling by setting
|
||||
<quote>NO_PROFILE=true</quote> in
|
||||
<filename>/etc/make.conf</filename>.</para>
|
||||
|
||||
<para>Pass
|
||||
<option>-j<replaceable>n</replaceable></option> to
|
||||
&man.make.1; to run multiple processes in parallel.
|
||||
This usually helps on both single- and
|
||||
multi-processor machines.</para>
|
||||
<para>Pass <option>-j<replaceable>n</replaceable></option>
|
||||
to &man.make.1; to run multiple processes in parallel.
|
||||
This usually helps on both single- and multi-processor
|
||||
machines.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
@ -2428,16 +2417,15 @@ Building everything..
|
|||
<sect2 xml:id="small-lan-preliminaries">
|
||||
<title>Preliminaries</title>
|
||||
|
||||
<para>First, identify a set of machines which will run the
|
||||
same set of binaries, known as a <emphasis>build
|
||||
set</emphasis>. Each machine can have a custom kernel, but
|
||||
will run the same userland binaries. From that set, choose a
|
||||
machine to be the <emphasis>build machine</emphasis> that the
|
||||
world and kernel are built on. Ideally, this is a fast
|
||||
machine that has sufficient spare CPU to run
|
||||
<command>make buildworld</command> and
|
||||
<command>make buildkernel</command>. Select a machine to be
|
||||
the <emphasis>test machine</emphasis>, which will test
|
||||
<para>First, identify a set of machines which will run the same
|
||||
set of binaries, known as a <emphasis>build set</emphasis>.
|
||||
Each machine can have a custom kernel, but will run the same
|
||||
userland binaries. From that set, choose a machine to be the
|
||||
<emphasis>build machine</emphasis> that the world and kernel
|
||||
are built on. Ideally, this is a fast machine that has
|
||||
sufficient spare CPU to run <command>make buildworld</command>
|
||||
and <command>make buildkernel</command>. Select a machine to
|
||||
be the <emphasis>test machine</emphasis>, which will test
|
||||
software updates before they are put into production. This
|
||||
<emphasis>must</emphasis> be a machine that can afford to be
|
||||
down for an extended period of time. It can be the build
|
||||
|
@ -2445,13 +2433,12 @@ Building everything..
|
|||
|
||||
<para>All the machines in this build set need to mount
|
||||
<filename>/usr/obj</filename> and
|
||||
<filename>/usr/src</filename> from the same
|
||||
machine, and at the same point. Ideally, those directories
|
||||
are on two different drives on the build machine, but they can
|
||||
be NFS mounted on that machine as well. For multiple
|
||||
build sets, <filename>/usr/src</filename>
|
||||
should be on one build machine, and NFS mounted on the
|
||||
rest.</para>
|
||||
<filename>/usr/src</filename> from the same machine, and at
|
||||
the same point. Ideally, those directories are on two
|
||||
different drives on the build machine, but they can be NFS
|
||||
mounted on that machine as well. For multiple build sets,
|
||||
<filename>/usr/src</filename> should be on one build machine,
|
||||
and NFS mounted on the rest.</para>
|
||||
|
||||
<para>Finally, ensure that <filename>/etc/make.conf</filename>
|
||||
and <filename>/etc/src.conf</filename> on all the machines in
|
||||
|
@ -2463,8 +2450,8 @@ Building everything..
|
|||
<filename>/etc/make.conf</filename>, and the build machine
|
||||
should list them all in <varname>KERNCONF</varname>, listing
|
||||
its own kernel first. The build machine must have the kernel
|
||||
configuration files for each machine in
|
||||
<filename class="directory">/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>
|
||||
configuration files for each machine in <filename
|
||||
class="directory">/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>
|
||||
if it is going to build their kernels.</para>
|
||||
</sect2>
|
||||
|
||||
|
@ -2472,18 +2459,18 @@ Building everything..
|
|||
<title>The Base System</title>
|
||||
|
||||
<para>On the build machine, build the kernel and world as
|
||||
described in <xref linkend="make-buildworld"/>, but do
|
||||
not install anything. After the build has finished, go to the
|
||||
described in <xref linkend="make-buildworld"/>, but do not
|
||||
install anything. After the build has finished, go to the
|
||||
test machine, and install the built kernel. If this machine
|
||||
mounts <filename>/usr/src</filename> and
|
||||
<filename>/usr/obj</filename> via NFS,
|
||||
enable the network and mount these directories after rebooting
|
||||
to single user mode. The easiest way to do this is to boot to
|
||||
multi-user, then run <command>shutdown now</command> to go to
|
||||
single user mode. Once there, install the new kernel and
|
||||
world and run <command>mergemaster</command> as usual. When
|
||||
done, reboot to return to normal multi-user operations for
|
||||
this machine.</para>
|
||||
<filename>/usr/obj</filename> via NFS, enable the network and
|
||||
mount these directories after rebooting to single user mode.
|
||||
The easiest way to do this is to boot to multi-user, then run
|
||||
<command>shutdown now</command> to go to single user mode.
|
||||
Once there, install the new kernel and world and run
|
||||
<command>mergemaster</command> as usual. When done, reboot to
|
||||
return to normal multi-user operations for this
|
||||
machine.</para>
|
||||
|
||||
<para>After verifying that everything on the test machine is
|
||||
working properly, use the same procedure to install the new
|
||||
|
|
Loading…
Reference in a new issue