Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jun 2014 22:43:10 +0200
From:      Oliver Pinter <oliver.pntr@gmail.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        gavin@freebsd.org, freebsd-current@freebsd.org
Subject:   Re: building i386 kernel on amd64 host
Message-ID:  <CAPjTQNFiy%2B_-GWRykMyyA2nAnM-WQ6zQ7u0ZNOqB6w4WB9euaw@mail.gmail.com>
In-Reply-To: <66AD5DED-0B46-4C59-849E-AC84B25F06AB@gmail.com>
References:  <CAPjTQNF6rnwMBzcdMbeLFn_%2B6Ej-uamDuqeYHxp9KbxC44h1Gw@mail.gmail.com> <201406131059.01450.jhb@freebsd.org> <CAPjTQNEpGixRAtr1M6g=nq%2BJa6keaJncDR88UuJ3v3ocb1YHEg@mail.gmail.com> <66AD5DED-0B46-4C59-849E-AC84B25F06AB@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 6/15/14, Warner Losh <imp@bsdimp.com> wrote:
>
> On Jun 14, 2014, at 3:57 PM, Oliver Pinter <oliver.pntr@gmail.com> wrote:
>
>> On 6/13/14, John Baldwin <jhb@freebsd.org> wrote:
>>> On Friday, June 13, 2014 6:21:28 am Oliver Pinter wrote:
>>>> Hi All!
>>>>
>>>> When I try to build i386 kernel on amd64 host running compile error
>>>> due wrong cpufunc.h picked up by build system.
>>>>
>>>> I used the attached script to build the kernel, and I attached a build
>>>> log.
>>>>
>>>> Any suggestion how can I fix this?
>>>
>>> To build an i386 kernel on an amd64 host do this:
>>>
>>> cd /usr/src (or some other tree)
>>> make TARGET=i386 kernel-toolchain
>>> make TARGET=i386 buildkernel
>>> make TARGET=i386 installkernel DESTDIR=/some/place
>>>
>>> And your i386 kernel will end up in /some/place/boot/kernel/kernel.
>>> (You
>>> can
>>> set things like KERNCONF to pick an alternate kernel config just as with
>>> normal 'make buildkernel'.)
>>>
>>> (Your attachment was size zero for me btw)
>>>
>>> --
>>> John Baldwin
>>>
>>
>> I used this script to build the kernel:
>> http://svnweb.freebsd.org/socsvn/soc2014/op/tools/build_kernel_32bit.csh?view=log
>>
>> And the error log are there:
>> https://gist.github.com/opntr/cf8aa0e404c0c5ed6f90 .
>> I get this error, when I first build kernel for amd64 system, and
>> after that i386 kernel, and only the kernel.
>>
>> Now seems like I can build the whole system with buildworld
>> buildkernel on vanilla master, I removed the objdir and do a clean
>> buildworld. Now I test the modified kernel build, after the
>> buildworld.
>>
>> It is broken too. When I do only make kernel-toolchain buildkernel,
>> than this are broken for vanilla freebsd source and for my version to.
>>
>> summary:
>> OK: make buildworld buildkernel
>> BROKEN: make kernel-toolchain buildkernel
>
> On the same line? O?r is that just a summary?
>
>> Seems like someone in build environment bootstrapping are broken.
>
> I've not been able to reproduce this.
>
> rm -rf $OBJDIR
> make TARGET=i386 kernel-toolchain
> make TARGET=i386 buildkernel
>
> works just fine on current with a clean tree and an empty/missing make.conf
> and src.conf.
>
> As for your script, don't define MACHINE and MACHINE_ARCH. That's almost
> always wrong since that overrides things on the command line, which is what
> make buildkernel winds up translating to. You never need to define those
> yourself in any supported environment, and likely most unsupported ones.
>
> Also, I'd strongly recommend doing it as two invocations to make, not one.
> kernel-toolchain likely doesn't have all the right guards in place for it
> that buildworld likely does. Or you can dive in and figure that out. You
> can't really do anything *kernel* related until kernel-toolchain finishes...
>
> Warner

Warner, thanks!

Splitting up to two part the build script, working fine!

https://github.com/HardenedBSD/tools/blob/f98ec30cbe6f155c9f15c0d4b1ecbf74fc970e32/build_kernel_32bit.csh

>
>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPjTQNFiy%2B_-GWRykMyyA2nAnM-WQ6zQ7u0ZNOqB6w4WB9euaw>