Date: Thu, 1 May 2014 17:21:49 +0000 (UTC) From: Dru Lavigne <dru@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r44732 - head/en_US.ISO8859-1/books/handbook/cutting-edge Message-ID: <201405011721.s41HLnl8057798@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dru Date: Thu May 1 17:21:49 2014 New Revision: 44732 URL: http://svnweb.freebsd.org/changeset/doc/44732 Log: Editorial review of Tracking for Multiple Machines. 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 May 1 15:44:23 2014 (r44731) +++ head/en_US.ISO8859-1/books/handbook/cutting-edge/chapter.xml Thu May 1 17:21:49 2014 (r44732) @@ -2408,24 +2408,25 @@ Building everything.. </indexterm> <para>When multiple machines need to track the same source tree, - it is a waste of disk space, network bandwidth, and CPU cycles + it is a waste of disk space, network bandwidth, and <acronym>CPU</acronym> cycles to have each system download the sources and rebuild everything. The solution is to have one machine do most of the work, while - the rest of the machines mount that work via NFS. This section - outlines a method of doing so.</para> - - <sect2 xml:id="small-lan-preliminaries"> - <title>Preliminaries</title> + the rest of the machines mount that work via <acronym>NFS</acronym>. This section + outlines a method of doing so. For more information about using + <acronym>NFS</acronym>, refer to <xref + linkend="network-nfs"/>.</para> <para>First, identify a set of machines which will run the same - set of binaries, known as a <emphasis>build set</emphasis>. + set of binaries, known as a <firstterm>build set</firstterm>. 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 + <firstterm>build machine</firstterm> 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 + sufficient spare <acronym>CPU</acronym> to run <command>make buildworld</command> + and <command>make buildkernel</command>.</para> + + <para>Select a machine to + be the <firstterm>test machine</firstterm>, 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 @@ -2433,14 +2434,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> from the build machine via + <acronym>NFS</acronym>. For multiple build sets, <filename>/usr/src</filename> should be on one build machine, - and NFS mounted on the rest.</para> + and <acronym>NFS</acronym> mounted on the rest.</para> - <para>Finally, ensure that <filename>/etc/make.conf</filename> + <para>Ensure that <filename>/etc/make.conf</filename> and <filename>/etc/src.conf</filename> on all the machines in the build set agree with the build machine. That means that the build machine must build all the parts of the base system @@ -2448,51 +2447,40 @@ Building everything.. each build machine should have its kernel name set with <varname>KERNCONF</varname> in <filename>/etc/make.conf</filename>, and the build machine - should list them all in <varname>KERNCONF</varname>, listing + should list them all in its <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> - if it is going to build their kernels.</para> - </sect2> - - <sect2 xml:id="small-lan-base-system"> - <title>The Base System</title> + configuration files for each machine in its <filename + class="directory">/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>.</para> <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 - 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 + described in <xref linkend="makeworld"/>, but do not + install anything on the build machine. Instead, install the built kernel + on the test machine. On the test machine, mount + <filename>/usr/src</filename> and + <filename>/usr/obj</filename> via <acronym>NFS</acronym>. Then, run + <command>shutdown now</command> to go to single-user mode in order to + 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> + return to normal multi-user operations.</para> <para>After verifying that everything on the test machine is working properly, use the same procedure to install the new software on each of the other machines in the build set.</para> - </sect2> - - <sect2 xml:id="small-lan-ports"> - <title>Ports</title> - <para>The same ideas can be used for the ports tree. The first - critical step is to mount <filename>/usr/ports</filename> from - the same machine to all the machines in the build set. Then, - configure <filename>/etc/make.conf</filename> properly to - share distfiles. Set <varname>DISTDIR</varname> to a common + <para>The same methodology can be used for the ports tree. The first + step is to share <filename>/usr/ports</filename> via + <acronym>NFS</acronym> to all the machines in the build set. To + configure <filename>/etc/make.conf</filename> to + share distfiles, set <varname>DISTDIR</varname> to a common shared directory that is writable by whichever user <systemitem class="username">root</systemitem> is mapped to by - the NFS mounts. Each machine should set - <varname>WRKDIRPREFIX</varname> to a local build directory. - Finally, if the system is to build and distribute packages, - set <varname>PACKAGES</varname> to a directory similar to + the <acronym>NFS</acronym> mount. Each machine should set + <varname>WRKDIRPREFIX</varname> to a local build directory, if + ports are to be built locally. + Alternately, if the build system is to build and distribute + packages to the machines in the build set, + set <varname>PACKAGES</varname> on the build system to a directory similar to <varname>DISTDIR</varname>.</para> - </sect2> </sect1> </chapter>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201405011721.s41HLnl8057798>