Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Feb 2004 01:05:38 +1100
From:      Tony Frank <tfrank@optushome.com.au>
To:        D J Hawkey Jr <hawkeyd@visi.com>
Cc:        questions at FreeBSD <freebsd-questions@freebsd.org>
Subject:    Re: Clarification needed on Handbook: Tracking for Multiple Machines
Message-ID:  <20040222140538.GA16873@marvin.home.local>
In-Reply-To: <20040221172328.GA22671@sheol.localdomain>
References:  <20040221160709.GA22447@sheol.localdomain> <1455334090.20040221175633@buz.ch> <20040221172328.GA22671@sheol.localdomain>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

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/bsd.cpu.mk for specifics.

> > DJHJ> /etc/defaults/make.conf doesn't mention KERNCONF; /usr/src/Makefile.inc1
> > DJHJ> does. Since /usr/share/mk/sys.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'
eg:
KERNCONF=       MARVIN RAIDER RAIDERI GENERIC

make buildkernel builds all four.
make installkernel installs MARVIN.

Good luck,

Tony



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040222140538.GA16873>