Upgrade to 5.3-BETA1: make installkernel - Stop in /usr/src/sys/modules

Chuck Swiger cswiger at mac.com
Tue Aug 24 12:26:26 PDT 2004

Ruslan Ermilov wrote:
> On Tue, Aug 24, 2004 at 02:26:23PM -0400, Chuck Swiger wrote:
> [...]
>> In the section quoted above by ">>> ", you state that "host doing build is 
>> the host doing an install".  In Handbook 19.5.1, the host doing the install 
>> is not the host which did the build-- the host doing the install is 
>> NFS-mounting the software trees from the host which did the build.
> Earlier I said that the install host may be different from the build
> host if and only if they are running the same __FreeBSD_version.
> This is the only guaranteed way to do it.  If __FreeBSD_version do
> not match, then I suggested an alternative: install from host that
> did a build.

OK, I believe I understand what you are saying.  I gather that the handbook 
article ought to mention these caveats, too.

[ ... ]
>> I buildworld/buildkernel under 4.5 on the build server, test 
>> the upgrade process until I am happy with the results, and then use NFS to 
>> export /usr/src and /usr/obj, and update not just the 4.3 boxes but the 
>> older 4.1 machines to 4.5.
>> Is doing the equivalent today OK, or is it not supported?
> It never been OK.  It may occasionally work, but is not guaranteed.

It's been working fine for pretty much all of 4.x.

Would running "mergemaster -p" on systems before the installkernel stage have 
helped make this work?

> The reason is simple: the bootstrap-tools stage uses __FreeBSD_version
> to determine a list of things that need to be bootstrapped.  These
> tools are used during both buildworld and installworld times.  If
> you change the OS, the expectations of installworld (that it's
> running on the same __FreeBSD_version machine) could be wrong, and
> you get what you get -- things may fail to install.  The set of
> such tools is quite small, the set of tools used during an install
> is even smaller, so it's likely that things didn't break for the
> duration of the whole RELENG_4 branch.  The point still applies:
> it's not guaranteed.

OK, thanks for your explanation.

I thought "mergemaster" was supposed to deal with upgrading the parts of the 
installed system (missing users, rc scripts, tools like make) which might be 
needed for the installkernel/installworld to run properly.  I also seem to 
recall that the build system uses the executables from the newly built world 
when building the kernel; could one use the tools from the new world to handle 
the installation if the existing tools are not adequate?

[ I suspect the answer is "What happens if the tools just built don't run on 
the kernel (or world) of the install machine because that box doesn't match 
the kernel/world of the build system?"  I see.... ]

Well, I've got all of my per-machine config info archived in CVS, so it's not 
the end of the world even if I do get surprised by something breaking, but 
being able to upgrade machines via NFS has been very convenient.

> Another point: the build host (if you NFS
> mount from it) should have its CPUTYPE unset or set to a lowest
> common denominator of all CPUs in the cluster, so the code could
> be run safely on all (possibly other) CPUs.

This is understood, but the point is worth mentioning.


More information about the freebsd-current mailing list