Clarification needed on Handbook: Tracking for Multiple Machines

Tony Frank tfrank at
Sun Feb 22 06:05:48 PST 2004


On Sat, Feb 21, 2004 at 11:23:28AM -0600, D J Hawkey Jr wrote:
> On Feb 21, at 05:56 PM, Gabriel Ambuehl wrote:
> > 
> > DJHJ> Second, two machines are of the same architecture, but they have different
> > DJHJ> CPUs: One is an Intel PIII, but the other is a PII. Will the world built
> > DJHJ> on a PIII be correct for a PII? Similarly, will the kernel for the PII
> > DJHJ> built on a PIII be correct for the PII, given the different variables and
> > DJHJ> settings in the two kernel configuration files?
> > 
> > Just make sure you build for 686. If that doesn't work, make it 586 (I
> > think the PI qualifies as 686 but I'm not entirely sure). I think the extensions such as
> > SSE etc are detected dynamically and shouldn't cause any problem.
> > In all my years of messing with builds, I never run into this problem,
> > so I guess it's pretty safe.
> Yes, both [my] machines define I686_CPU.
> "Dynamically", as in "at runtime"? I think you're right, but I don't
> know for certain, either. This is exactly what I'm wondering about;
> the PII has only MMX, for instance, while the PIII has SSE and MMX2.
> I assume the world's codebase is CPU-agnostic within an architecture,
> but I really don't want to assume this; I'd rather know this.

I have PII, Celeron, PIII and P4 in my environment.
All these use "I686_CPU" in my kernel configs (I got rid of the other I[345]_CPU types.

In /etc/make.conf I include "CPUTYPE=p2" as the lowest common denominator if 
including a CPUTYPE flag.
The resulting world & kernel run fine on all the systems.

The higher flags p3 and p4 still just use -march=pentiumpro, however for SSE you
will need p3 or p4 as MACHINE_CPU does not include SSE for p2 level.
Check out /usr/share/mk/ for specifics.

> > DJHJ> /etc/defaults/make.conf doesn't mention KERNCONF; /usr/src/Makefile.inc1
> > DJHJ> does. Since /usr/share/mk/ sucks in /etc/make.conf, that should
> > DJHJ> propogate KERNCONF to /usr/src/Makefile, right?
> > You can also
> > just supply it on the command line when doing your make runs.
> Yes, but this means individual commands for each machine's kernel, as
> opposed to one command for all machines (think "issue command and go to
> bed", or even an `at` command). Are you stating definitively that what
> I saw in the makefile chain isn't what is really there?

To your original question, yes.
Just add a KERNCONF= line to /etc/make.conf.
First entry should be the local machine kernel (to install) and
any subsequent entries will also be built during 'make buildkernel'

make buildkernel builds all four.
make installkernel installs MARVIN.

Good luck,


More information about the freebsd-questions mailing list