Clarification needed on Handbook: Tracking for Multiple Machines
tfrank at optushome.com.au
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_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'
KERNCONF= MARVIN RAIDER RAIDERI GENERIC
make buildkernel builds all four.
make installkernel installs MARVIN.
More information about the freebsd-questions