當有多部機器需要追蹤同一個原始碼樹, 會浪費磁碟空間,網路頻寬,和 中央處理器周期來讓每個系統下載原始碼和編譯所有東西。 解決方法是有解決方法是有一台機器做大部份的工作,剩下的機器經由 NFS來掛載這個工作。這一節概述了一個如此做的方法。 更多關於使用 NFS的資訊,請參考節 28.3, “Network File System (NFS)”。
First, identify a set of machines which will run the same
set of binaries, known as a build set.
Each machine can have a custom kernel, but will run the same
userland binaries. From that set, choose a machine to be the
build machine that the world and kernel
are built on. Ideally, this is a fast machine that has
sufficient spare CPU to run make
buildworld
and make
buildkernel
.
Select a machine to be the test machine, which will test software updates before they are put into production. This must be a machine that can afford to be down for an extended period of time. It can be the build machine, but need not be.
All the machines in this build set need to mount
/usr/obj
and /usr/src
from the build machine via NFS. For multiple
build sets, /usr/src
should be on one build
machine, and NFS mounted on the rest.
Ensure that /etc/make.conf
and
/etc/src.conf
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 that
any machine in the build set is going to install. Also, each
build machine should have its kernel name set with
KERNCONF
in
/etc/make.conf
, and the build machine
should list them all in its KERNCONF
,
listing its own kernel first. The build machine must have the
kernel configuration files for each machine in its /usr/src/sys/
.arch
/conf
On the build machine, build the kernel and world as
described in 節 23.6, “重新編譯 World”, but do not install
anything on the build machine. Instead, install the built
kernel on the test machine. On the test machine, mount
/usr/src
and
/usr/obj
via NFS. Then,
run shutdown now
to go to single-user mode in
order to install the new kernel and world and run
mergemaster
as usual. When done, reboot to
return to normal multi-user operations.
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.
The same methodology can be used for the ports tree. The
first step is to share /usr/ports
via
NFS to all the machines in the build set. To
configure /etc/make.conf
to share
distfiles, set DISTDIR
to a common shared
directory that is writable by whichever user root
is mapped to by the
NFS mount. Each machine should set
WRKDIRPREFIX
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 PACKAGES
on the build system to a
directory similar to DISTDIR
.
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。