svn commit: r43796 - head/en_US.ISO8859-1/books/handbook/cutting-edge

Dru Lavigne dru at FreeBSD.org
Thu Feb 6 01:40:33 UTC 2014


Author: dru
Date: Thu Feb  6 01:40:32 2014
New Revision: 43796
URL: http://svnweb.freebsd.org/changeset/doc/43796

Log:
  All the required steps are now in order, in one place, and in a Procedure.
  Next round will improve the flow of the next subsection.
  Sponsored by: iXsystems

Modified:
  head/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.xml

Modified: head/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.xml
==============================================================================
--- head/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.xml	Thu Feb  6 00:22:35 2014	(r43795)
+++ head/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.xml	Thu Feb  6 01:40:32 2014	(r43796)
@@ -1500,11 +1500,11 @@ before running "/usr/sbin/freebsd-update
       <title>Overview of Process</title>
 
       <para>The build world process assumes an upgrade from an older &os;
-	version using the sources to a newer
-	version that were obtained using the instructions in 
+	version using the source of a newer
+	version that was obtained using the instructions in 
 	<xref linkend="synching"/>.</para>
 	
-      <para><quote>World</quote> includes the &os; kernel, core system binaries,
+      <para>In &os;, the term <quote>world</quote> includes the kernel, core system binaries,
 	libraries, programming files, and built-in compiler. The order in which these
 	components are built and installed is important.</para>
 	
@@ -1522,13 +1522,13 @@ before running "/usr/sbin/freebsd-update
 	  <para>Some configuration changes must be made before the new
 	    world is installed, but others might break the old world.
 	    Hence, two different configuration upgrade steps are
-	    generally needed.  For the most part, the update process only replaces or
-	    adds files and existing old files are not deleted.  In a
-	    few cases, this can cause problems.  As a result, the
-	    update procedure will sometimes specify certain files that
-	    should be manually deleted at certain steps.</para>
+	    used.  For the most part, the update process only replaces or
+	    adds files and existing old files are not deleted.  Since
+	    this can cause problems, <filename>/usr/src/UPDATING</filename>
+	    will indicate if any files
+	    need to be manually deleted and at which step to do so.</para>
 
-      <para>These concerns have led to the following recommended upgrade
+      <para>These concerns have led to the recommended upgrade
 	sequence  described in
 	the following procedure.</para>
 
@@ -1537,169 +1537,110 @@ before running "/usr/sbin/freebsd-update
 
     <para>The commands used in the build world process should be run in the order specified
 	here.  This section summarizes the function of each command.</para>
-      <step>
-	  <para><command>make
-	      buildworld</command></para>
-
-	  <para>This first compiles the new compiler and a few related
-	    tools, then uses the new compiler to compile the rest of
-	    the new world.  The result ends up in
-	    <filename>/usr/obj</filename>.</para>
+
+	<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>
+	    
+	  <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make buildworld</userinput></screen>
 	</step>
 
 	<step>
-	  <para><command>make
-	      buildkernel</command></para>
+	  <para>Use the new compiler
+	    residing in <filename class="directory">/usr/obj</filename>
+	    to build the new kernel, in order to
+	    protect against compiler-kernel mismatches:</para>
 
-	  <para>This uses the <emphasis>new</emphasis> compiler
-	    residing in <filename>/usr/obj</filename> in order to
-	    protect against compiler-kernel mismatches.</para>
+	  <screen>&prompt.root; <userinput>make buildkernel</userinput></screen>
 	</step>
 
 	<step>
-	  <para><command>make
-	      installkernel</command></para>
-
-	  <para>Place the new kernel and kernel modules onto the disk,
+	  <para>Install the new kernel and kernel modules,
 	    making it possible to boot with the newly updated
-	    kernel.</para>
+	    kernel:</para>
+
+	  <screen>&prompt.root; <userinput>make installkernel</userinput></screen>
 	</step>
 
 	<step>
-	  <para>Reboot into single user mode.</para>
-
-	  <para>Single user mode minimizes problems from updating
-	    software that is already running.  It also minimizes any
+	  <para>Drop the system into single user mode in order to minimize problems from updating
+	    any binaries that are already running.  It also minimizes any
 	    problems from running the old world on a new
 	    kernel.</para>
-	</step>
 
-	<step>
-	  <para><command>mergemaster
-	      -p</command></para>
+	  <screen>&prompt.root; <userinput>shutdown now</userinput></screen>
+
+	  <para>Once in single-user mode, run this command if the
+	    system is formatted with UFS:</para>
+
+      <screen>&prompt.root; <userinput>mount -u /</userinput>
+&prompt.root; <userinput>mount -a -t ufs</userinput></screen>
 
-	  <para>This does some initial configuration file updates in
-	    preparation for the new world.  For instance, it may add
-	    new user groups to the system, or new user names to the
-	    password database.  This is often necessary when new
-	    groups or special system-user accounts have been added
-	    since the last update, so that the
+      <para>If the system is instead formatted with ZFS, run these
+	two commands.  This example assumes a zpool name of <literal>zroot</literal>:</para>
+
+      <screen>&prompt.root; <userinput>zfs set readonly=off zroot</userinput>
+&prompt.root; <userinput>zfs mount -a</userinput></screen>
+	  </step>
+
+	<step>
+	  <para>Then, for either filesystem, run:</para>
+	  <screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
+	</step>
+	  
+	<step>
+	  <para>Next, perform some initial configuration file updates in
+	    preparation for the new world.  For instance, this step may add
+	    new groups or new system accounts 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 the newly installed system user or system group
-	    names without problems.</para>
+	    to use the new system accounts and groups.</para>
+
+	  <screen>&prompt.root; <userinput>mergemaster -p</userinput></screen>
 	</step>
 
 	<step>
-	  <para><command>make
-	      installworld</command></para>
+	  <para>Install the new world
+	    from <filename class="directory">/usr/obj</filename>.</para>
 
-	  <para>Copies the world
-	    from <filename>/usr/obj</filename>.  The
-	    new kernel and new world are now installed on disk.</para>
+	  <screen>&prompt.root; <userinput>cd /usr/src</userinput>
+&prompt.root; <userinput>make installworld</userinput></screen>
 	</step>
 
 	<step>
-	  <para><command>mergemaster</command></para>
+	  <para>Update any remaining configuration files.</para>
 
-	  <para>Repeated to update the remaining configuration files,
-	    now that the new world is on disk.</para>
+	  <screen>&prompt.root; <userinput>mergemaster -p</userinput></screen>
 	</step>
 
 	<step>
-	  <para><command>make
-	      delete-old</command></para>
+	  <para>Delete any obsolete files.  This is
+	    important as they may cause problems if left on
+	    the disk.</para>
 
-	  <para>This target deletes old (obsolete) files.  This is
-	    important because sometimes they cause problems if left on
-	    the disk, for example the presence of the old
-	    <filename>utmp.h</filename> causes problems in some ports
-	    when the new <filename>utmpx.h</filename> is
-	    installed.</para>
+	  <screen>&prompt.root; <userinput>make delete-old</userinput></screen>
 	</step>
 
 	<step>
-	  <para>Reboot.</para>
+	  <para>A full reboot is now needed to load the new
+	    kernel and new world with the new configuration files.</para>
 
-	  <para>A full machine reboot is needed now to load the new
-	    kernel and new world with new configuration files.</para>
+	  <screen>&prompt.root; <userinput>reboot</userinput></screen>
 	</step>
 
 	<step>
-	  <para><command>make
-	      delete-old-libs</command></para>
+	  <para>Make sure that all installed ports have first been rebuilt
+	    before old libraries are removed using the instructions in 
+	    <xref linkend="ports-upgrading"/>.  When finished,
+	    remove any obsolete libraries to avoid conflicts with
+	    newer ones.</para>
 
-	  <para>Remove any obsolete libraries to avoid conflicts with
-	    newer ones.  Make sure that all ports have been rebuilt
-	    before old libraries are removed.</para>
+	  <screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen>
 	</step>
       </procedure>
-
-      <para>Upgrades from one release of the same &os; branch to a
-	more recent release of the same branch, such as from 9.0 to
-	9.1, may not need this procedure since it is less likely to
-	run into serious mismatches between compiler, kernel,
-	userland, and configuration files.  The approach of
-	<command>make world</command>
-	followed by building and installing a new kernel might work
-	well enough for minor updates.</para>
-
-      <para>When upgrading across major releases, people who do not
-	follow this procedure should expect some problems.</para>
-
-      <para>This procedure has evolved over time as the developers
-	have found it impossible to completely prevent certain kinds
-	of mismatch problems.  Hopefully, the current procedure will
-	remain stable for a long time.</para>
-
-      <para>To summarize, the currently recommended way of upgrading
-	&os; from sources is:</para>
-
-      <screen>&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make buildworld</userinput>
-&prompt.root; <userinput>make buildkernel</userinput>
-&prompt.root; <userinput>make installkernel</userinput>
-&prompt.root; <userinput>shutdown -r now</userinput></screen>
-
-      <note>
-	<para>There are a few rare cases when an extra run of
-	  <command>mergemaster -p</command> is needed before the
-	  <buildtarget>buildworld</buildtarget> step.  These are
-	  described in <filename>UPDATING</filename>.  In general,
-	  though, this step can safely be omitted when not updating
-	  across one or more major &os; versions.</para>
-      </note>
-
-      <para>After <buildtarget>installkernel</buildtarget> finishes
-	successfully, boot into single user mode using <command>boot
-	  -s</command> from the loader prompt.</para>
-
-      <para>If using UFS, run:</para>
-
-      <screen>&prompt.root; <userinput>mount -u /</userinput>
-&prompt.root; <userinput>mount -a -t ufs</userinput></screen>
-
-      <para>If using ZFS(assuming a zpool name of zroot), run:</para>
-
-      <screen>&prompt.root; <userinput>zfs set readonly=off zroot</userinput>
-&prompt.root; <userinput>zfs mount -a</userinput></screen>
-
-      <para>Then run:</para>
-
-      <screen>&prompt.root; <userinput>adjkerntz -i</userinput>
-&prompt.root; <userinput>mergemaster -p</userinput>
-&prompt.root; <userinput>cd /usr/src</userinput>
-&prompt.root; <userinput>make installworld</userinput>
-&prompt.root; <userinput>mergemaster</userinput>
-&prompt.root; <userinput>make delete-old</userinput>
-&prompt.root; <userinput>reboot</userinput>
-&prompt.root; <userinput>make delete-old-libs</userinput></screen>
-
-      <warning>
-	<title>Read Further Explanations</title>
-
-	<para>The following sections clearly describe each step,
-	  especially when using a custom kernel configuration.</para>
-      </warning>
     </sect2>
 
     <sect2 xml:id="src-updating">
@@ -1709,6 +1650,8 @@ before running "/usr/sbin/freebsd-update
 	<primary><filename>make.conf</filename></primary>
       </indexterm>
 
+      <para>The following sections clearly describe each step,
+	  especially when using a custom kernel configuration.</para>
       <para>Available &man.make.1; options are shown in
 	&man.make.conf.5; and
 	<filename>/usr/share/examples/etc/make.conf</filename>.  These


More information about the svn-doc-head mailing list