White space fix only. Translators can ignore.
Sponsored by: iXsystems
This commit is contained in:
parent
3c00d0a716
commit
b07f4eb89c
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=43809
1 changed files with 153 additions and 149 deletions
|
@ -1546,9 +1546,10 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
<step>
|
||||
<para>If the build world process has previously been run on
|
||||
this system, a copy of the previous build may still exist
|
||||
in <filename class="directory">/usr/obj</filename>. To speed up the new build world
|
||||
process, and possibly save some dependency headaches,
|
||||
remove this directory if it already exists:</para>
|
||||
in <filename class="directory">/usr/obj</filename>. To
|
||||
speed up the new build world process, and possibly save
|
||||
some dependency headaches, remove this directory if it
|
||||
already exists:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/obj</userinput>
|
||||
&prompt.root; <userinput>chflags -R noschg *</userinput>
|
||||
|
@ -1556,10 +1557,10 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
</step>
|
||||
|
||||
<step>
|
||||
<para>Compile the new compiler and a few related
|
||||
tools, then use the new compiler to compile the rest of
|
||||
the new world. The result is saved to
|
||||
<filename class="directory">/usr/obj</filename>.</para>
|
||||
<para>Compile the new compiler and a few related tools, then
|
||||
use the new compiler to compile the rest of the new world.
|
||||
The result is saved to <filename
|
||||
class="directory">/usr/obj</filename>.</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
|
||||
&prompt.root; <userinput>make buildworld</userinput></screen>
|
||||
|
@ -1605,22 +1606,26 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
</step>
|
||||
|
||||
<step>
|
||||
<para>Then, for either file system, if the <acronym>CMOS</acronym> clock is set to local time
|
||||
(this is true if the output of &man.date.1; does not show
|
||||
the correct time and zone), run:</para>
|
||||
<para>Then, for either file system, if the
|
||||
<acronym>CMOS</acronym> clock is set to local time (this
|
||||
is true if the output of &man.date.1; does not show the
|
||||
correct time and zone), run:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Next, perform some initial configuration file updates to <filename class="directory">/etc</filename>
|
||||
in preparation for the new world. The following command compares
|
||||
only those files that are essential for the success of
|
||||
<buildtarget>installworld</buildtarget>. For instance, this step
|
||||
may add new groups, system accounts, or startup scripts which have been
|
||||
added to &os; since the last update. This is necessary so
|
||||
that the <buildtarget>installworld</buildtarget> step will
|
||||
be able to use any new system accounts, groups, and scripts.</para>
|
||||
<para>Next, perform some initial configuration file updates
|
||||
to <filename class="directory">/etc</filename> in
|
||||
preparation for the new world. The following command
|
||||
compares only those files that are essential for the
|
||||
success of <buildtarget>installworld</buildtarget>. For
|
||||
instance, this step may add new groups, system accounts,
|
||||
or startup scripts which have been added to &os; since the
|
||||
last update. This is necessary so that the
|
||||
<buildtarget>installworld</buildtarget> step will be able
|
||||
to use any new system accounts, groups, and
|
||||
scripts.</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>mergemaster -p</userinput></screen>
|
||||
</step>
|
||||
|
@ -1663,18 +1668,17 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
<screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen>
|
||||
</step>
|
||||
</procedure>
|
||||
|
||||
<indexterm><primary>single-user mode</primary></indexterm>
|
||||
|
||||
<para>If the system can have a window of down-time, consider compiling the system in single user mode instead
|
||||
of compiling the system in multi-user
|
||||
mode, and then dropping into single user mode for the
|
||||
installation.
|
||||
Reinstalling the system touches a lot of important system
|
||||
files, all the standard system binaries, libraries, and
|
||||
include files. Changing these on a running system,
|
||||
particularly one with active users, is asking for
|
||||
trouble.</para>
|
||||
<indexterm><primary>single-user mode</primary></indexterm>
|
||||
|
||||
<para>If the system can have a window of down-time, consider
|
||||
compiling the system in single user mode instead of compiling
|
||||
the system in multi-user mode, and then dropping into
|
||||
single user mode for the installation. Reinstalling the
|
||||
system touches a lot of important system files, all the
|
||||
standard system binaries, libraries, and include files.
|
||||
Changing these on a running system, particularly one with
|
||||
active users, is asking for trouble.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="src-updating">
|
||||
|
@ -1689,14 +1693,14 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
|
||||
<para>The options available to &man.make.1; are described in
|
||||
&man.make.conf.5; and some common examples are included in
|
||||
<filename>/usr/share/examples/etc/make.conf</filename>.
|
||||
Any options which are added to <filename>/etc/make.conf</filename>
|
||||
<filename>/usr/share/examples/etc/make.conf</filename>. Any
|
||||
options which are added to <filename>/etc/make.conf</filename>
|
||||
will control the way &man.make.1; runs and how it builds
|
||||
programs. Such options take
|
||||
effect every time &man.make.1; is used, including compiling
|
||||
applications from the Ports Collection, compiling custom C
|
||||
programs, or building the &os; operating system.</para>
|
||||
|
||||
programs. Such options take effect every time &man.make.1; is
|
||||
used, including compiling applications from the Ports
|
||||
Collection, compiling custom C programs, or building the &os;
|
||||
operating system.</para>
|
||||
|
||||
<para>Changes to some settings can have far-reaching and
|
||||
potentially surprising effects. Read the comments in both
|
||||
locations and keep in mind that the defaults have been chosen
|
||||
|
@ -1706,8 +1710,8 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
<primary><filename>src.conf</filename></primary>
|
||||
</indexterm>
|
||||
|
||||
<para>How
|
||||
the operating system is built from source code is controlled by <filename>/etc/src.conf</filename>. Unlike
|
||||
<para>How the operating system is built from source code is
|
||||
controlled by <filename>/etc/src.conf</filename>. Unlike
|
||||
<filename>/etc/make.conf</filename>, the contents of
|
||||
<filename>/etc/src.conf</filename> only take effect when the
|
||||
&os; operating system itself is being built. Descriptions of
|
||||
|
@ -1715,24 +1719,23 @@ before running "/usr/sbin/freebsd-update install"</screen>
|
|||
&man.src.conf.5;. Be cautious about disabling seemingly
|
||||
unneeded kernel modules and build options. Sometimes there
|
||||
are unexpected or subtle interactions.</para>
|
||||
</sect2>
|
||||
</sect2>
|
||||
|
||||
<sect2 xml:id="make-buildworld">
|
||||
<title>Recompile the Base System</title>
|
||||
|
||||
<para>It is a good idea to save the output from running
|
||||
&man.make.1; to a file. If something goes wrong, a copy of
|
||||
the error message can be posted to one of the &os; mailing
|
||||
lists.</para>
|
||||
<para>It is a good idea to save the output from running
|
||||
&man.make.1; to a file. If something goes wrong, a copy of
|
||||
the error message can be posted to one of the &os; mailing
|
||||
lists.</para>
|
||||
|
||||
<para>The easiest way to do this is to use &man.script.1;
|
||||
with a parameter that specifies the name of the file to save
|
||||
all output to. Run this command immediately before
|
||||
rebuilding the world, and then type
|
||||
<userinput>exit</userinput> when the process has
|
||||
finished:</para>
|
||||
<para>The easiest way to do this is to use &man.script.1; with a
|
||||
parameter that specifies the name of the file to save all
|
||||
output to. Run this command immediately before rebuilding
|
||||
the world, and then type <userinput>exit</userinput> when the
|
||||
process has finished:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>script /var/tmp/mw.out</userinput>
|
||||
<screen>&prompt.root; <userinput>script /var/tmp/mw.out</userinput>
|
||||
Script started, output file is /var/tmp/mw.out
|
||||
&prompt.root; <userinput>make TARGET</userinput>
|
||||
<emphasis>… compile, compile, compile …</emphasis>
|
||||
|
@ -2345,10 +2348,9 @@ Script done, …</screen>
|
|||
change?</term>
|
||||
|
||||
<listitem>
|
||||
<para>It depends upon the nature
|
||||
of the change. For example, if
|
||||
<application>svn</application> only shows the following
|
||||
files as being updated:</para>
|
||||
<para>It depends upon the nature of the change. For
|
||||
example, if <application>svn</application> only shows
|
||||
the following files as being updated:</para>
|
||||
|
||||
<screen><filename>src/games/cribbage/instr.c</filename>
|
||||
<filename>src/games/sail/pl_main.c</filename>
|
||||
|
@ -2363,68 +2365,68 @@ Script done, …</screen>
|
|||
<filename>src/lib/libc/stdlib</filename>, consider
|
||||
rebuilding world.</para>
|
||||
|
||||
<para>Some users
|
||||
rebuild world every fortnight and let changes
|
||||
accumulate over that fortnight. Others only re-make
|
||||
those things that have changed and are careful to spot
|
||||
all the dependencies. It all depends on how often a user wants to upgrade
|
||||
and whether they are tracking &os.stable; or
|
||||
&os.current;.</para>
|
||||
<para>Some users rebuild world every fortnight and let
|
||||
changes accumulate over that fortnight. Others only
|
||||
re-make those things that have changed and are careful
|
||||
to spot all the dependencies. It all depends on how
|
||||
often a user wants to upgrade and whether they are
|
||||
tracking &os.stable; or &os.current;.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>What would cause a compile to fail with lots of
|
||||
signal 11<indexterm>
|
||||
<primary>signal 11</primary>
|
||||
</indexterm>
|
||||
(or other signal number) errors?</term>
|
||||
<term>What would cause a compile to fail with lots of
|
||||
signal 11<indexterm>
|
||||
<primary>signal 11</primary>
|
||||
</indexterm>
|
||||
(or other signal number) errors?</term>
|
||||
|
||||
<listitem>
|
||||
<para>This normally indicates a hardware problem.
|
||||
Building world is an effective way to stress test
|
||||
hardware, especially memory. A sure indicator of a hardware issue is when
|
||||
<application>make</application> is restarted and it
|
||||
dies at a different point in the process.</para>
|
||||
hardware, especially memory. A sure indicator of a
|
||||
hardware issue is when <application>make</application>
|
||||
is restarted and it dies at a different point in the
|
||||
process.</para>
|
||||
|
||||
<para>To resolve this error, swap out the
|
||||
components in the machine, starting with RAM, to determine which component is
|
||||
failing.</para>
|
||||
<para>To resolve this error, swap out the components in
|
||||
the machine, starting with RAM, to determine which
|
||||
component is failing.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Can <filename class="directory">/usr/obj</filename>
|
||||
<term>Can <filename class="directory">/usr/obj</filename>
|
||||
be removed when finished?</term>
|
||||
|
||||
<listitem>
|
||||
|
||||
<para>This directory
|
||||
contains all the object files that were produced during
|
||||
the compilation phase. Normally, one of the first steps
|
||||
in the <command>make buildworld</command> process is to
|
||||
remove this directory and start afresh. Keeping
|
||||
<filename>/usr/obj</filename> around
|
||||
when finished makes little sense, and its removal frees
|
||||
up a approximately 2GB of disk space.</para>
|
||||
<para>This directory contains all the object files that
|
||||
were produced during the compilation phase. Normally,
|
||||
one of the first steps in the <command>make
|
||||
buildworld</command> process is to remove this
|
||||
directory and start afresh. Keeping
|
||||
<filename>/usr/obj</filename> around when finished makes
|
||||
little sense, and its removal frees up a approximately
|
||||
2GB of disk space.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Can interrupted builds be resumed?</term>
|
||||
<term>Can interrupted builds be resumed?</term>
|
||||
|
||||
<listitem>
|
||||
<para>This depends on how far into the process the
|
||||
problem occurs. In general, <command>make buildworld</command>
|
||||
builds new copies of essential tools and the system libraries.
|
||||
These tools and libraries are then installed, used to
|
||||
rebuild themselves, and are installed again. The rest of the
|
||||
system is then rebuilt with the new
|
||||
system tools.</para>
|
||||
problem occurs. In general, <command>make
|
||||
buildworld</command> builds new copies of essential
|
||||
tools and the system libraries. These tools and
|
||||
libraries are then installed, used to rebuild
|
||||
themselves, and are installed again. The rest of the
|
||||
system is then rebuilt with the new system
|
||||
tools.</para>
|
||||
|
||||
<para>During the last stage, it is fairly safe to run
|
||||
these commands as they will not undo the work of the previous
|
||||
<command>make buildworld</command>:</para>
|
||||
these commands as they will not undo the work of the
|
||||
previous <command>make buildworld</command>:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
|
||||
&prompt.root; <userinput>make -DNO_CLEAN all</userinput></screen>
|
||||
|
@ -2438,76 +2440,78 @@ Building everything..
|
|||
<para>in the <command>make buildworld</command> output,
|
||||
it is probably fairly safe to do so.</para>
|
||||
|
||||
<para>If that message is not displayed,
|
||||
it is always better to be safe than sorry and to
|
||||
restart the build from scratch.</para>
|
||||
<para>If that message is not displayed, it is always
|
||||
better to be safe than sorry and to restart the build
|
||||
from scratch.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Is it possible to speed up making the world?</term>
|
||||
<term>Is it possible to speed up making the world?</term>
|
||||
|
||||
<listitem>
|
||||
<para>Several actions can speed up the build world
|
||||
process. For example, the entire process can be run from
|
||||
single-user mode. However, this will prevent users
|
||||
from having access
|
||||
to the system until the process is complete.</para>
|
||||
<para>Several actions can speed up the build world
|
||||
process. For example, the entire process can be run
|
||||
from single-user mode. However, this will prevent users
|
||||
from having access to the system until the process is
|
||||
complete.</para>
|
||||
|
||||
<para>Careful file system design or the use of ZFS
|
||||
datasets can make a difference. Consider putting <filename class="directory">/usr/src</filename> and
|
||||
<filename class="directory">/usr/obj</filename>
|
||||
on separate file systems. If possible, place the file systems on separate disks on separate disk
|
||||
controllers. When mounting
|
||||
<filename class="directory">/usr/src</filename>, use
|
||||
<option>noatime</option> which
|
||||
prevents the file system from recording the
|
||||
file access time. If <filename
|
||||
class="directory">/usr/src</filename> is not on its
|
||||
own file system, consider remounting <filename
|
||||
class="directory">/usr</filename> with <option>noatime</option>.</para>
|
||||
<para>Careful file system design or the use of ZFS
|
||||
datasets can make a difference. Consider putting
|
||||
<filename class="directory">/usr/src</filename> and
|
||||
<filename class="directory">/usr/obj</filename> on
|
||||
separate file systems. If possible, place the file
|
||||
systems on separate disks on separate disk controllers.
|
||||
When mounting <filename
|
||||
class="directory">/usr/src</filename>, use
|
||||
<option>noatime</option> which prevents the file system
|
||||
from recording the file access time. If <filename
|
||||
class="directory">/usr/src</filename> is not on its
|
||||
own file system, consider remounting <filename
|
||||
class="directory">/usr</filename> with
|
||||
<option>noatime</option>.</para>
|
||||
|
||||
<para>The file system holding
|
||||
<filename>/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>
|
||||
<para>The file system holding
|
||||
<filename>/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>
|
||||
|
||||
<warning>
|
||||
<para>Keep in mind that this option makes the file
|
||||
system more fragile. With this option, there is
|
||||
an increased chance that, should power fail, the
|
||||
file system will be in an unrecoverable state when
|
||||
the machine restarts.</para>
|
||||
<warning>
|
||||
<para>Keep in mind that this option makes the file
|
||||
system more fragile. With this option, there is an
|
||||
increased chance that, should power fail, the file
|
||||
system will be in an unrecoverable state when the
|
||||
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>
|
||||
</warning>
|
||||
<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>
|
||||
</warning>
|
||||
|
||||
<para>Turn off profiling by setting
|
||||
<quote>NO_PROFILE=true</quote> in
|
||||
<filename>/etc/make.conf</filename>.</para>
|
||||
<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>
|
||||
</listitem>
|
||||
<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>
|
||||
|
||||
<varlistentry>
|
||||
<term>What if something goes wrong?</term>
|
||||
<term>What if something goes wrong?</term>
|
||||
|
||||
<listitem>
|
||||
<para>First, make absolutely sure that the environment has no
|
||||
extraneous cruft from earlier builds:</para>
|
||||
<para>First, make absolutely sure that the environment has
|
||||
no extraneous cruft from earlier builds:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>chflags -R noschg /usr/obj/usr</userinput>
|
||||
&prompt.root; <userinput>rm -rf /usr/obj/usr</userinput>
|
||||
|
@ -2518,12 +2522,12 @@ Building everything..
|
|||
<para>Yes, <command>make cleandir</command> really should
|
||||
be run twice.</para>
|
||||
|
||||
<para>Then, restart the whole process, starting
|
||||
with <command>make buildworld</command>.</para>
|
||||
<para>Then, restart the whole process, starting with
|
||||
<command>make buildworld</command>.</para>
|
||||
|
||||
<para>If problems persist, send the error and the
|
||||
output of <command>uname -a</command> to &a.questions;.
|
||||
Be prepared to answer other questions about the
|
||||
<para>If problems persist, send the error and the output
|
||||
of <command>uname -a</command> to &a.questions;. Be
|
||||
prepared to answer other questions about the
|
||||
setup!</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
|
Loading…
Reference in a new issue