Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Jul 2019 11:19:11 +0200
From:      Norbert Koch <nkoch@demig.de>
To:        <freebsd-hackers@freebsd.org>
Subject:   Re: build custom kernel under FreeBSD 12
Message-ID:  <d3aa06b6-9fb8-41ba-07e0-61211556e9bf@demig.de>
In-Reply-To: <20190719092801.06bc415e@ernst.home>
References:  <14ad0148-ebe6-5d13-54fa-f6711c4b43ab@demig.de> <CAFMmRNxyHQLi6dorUDYqk1yrN2DhZ06%2BExX2xvMPs%2BvKXwWVsw@mail.gmail.com> <fb4819d6-164f-66f7-9e04-dd121e12b2bf@demig.de> <20190719092801.06bc415e@ernst.home>

next in thread | previous in thread | raw e-mail | index | archive | help
I did some more testing.

When I copy the src tree and set $MAKEOBJDIRPREFIX accordingly, I can
run "make kernel-toolchain && make buildkernel" without problems.

The permission denied error comes only when I symlink /usr/src/* and only
copy sys/ to my local directory. So, my idea is that=C2=A0 FreeBSD12 differ=
s
from 11 and 10 by using something like realpath in either some Makefile
or make itself.



*****************************************
* demig Prozessautomatisierung GmbH     *
*                                       *
* Anschrift:          Haardtstrasse 40  *
*                       D-57076 Siegen  *
* Registergericht:     Siegen HRB 2819  *
* Geschaeftsfuehrer:   Joachim Herbst,  *
*                        Winfried Held  *
* Telefon:              +49 271 772020  *
* Telefax:              +49 271 74704   *
* E-Mail:                info@demig.de  *
*                  http://www.demig.de  *
*****************************************
Am 2019-07-19 um 09:28 schrieb Gary Jennejohn:
> On Fri, 19 Jul 2019 08:40:05 +0200
> Norbert Koch <nkoch@demig.de> wrote:
>
>> Here is a typescript:
>>
>> =1B12.0-RELEASE-p7 (3) nk@entw-pr4 [~/src/kernel/src] $ export
>> MAKEOBJDIRPREFIX=3D`realpath tmp`
>> 12.0-RELEASE-p7 (3) nk@entw-pr4 [~/src/kernel/src] $ echo $MAKEOBJDIRPRE=
FIX
>> /usr/home/nk/src/kernel/src/tmp
>>
>> =1B12.0-RELEASE-p7 (3) nk@entw-pr4 [~/src/kernel/src] $ make buildkernel
>> make[1]: "/usr/home/nk/src/kernel/src/Makefile.inc1" line 341:
>> SYSTEM_COMPILER: Determined that CC=3Dcc matches the source tree. Not
>> bootstrapping a cross-compiler.
>> make[1]: "/usr/home/nk/src/kernel/src/Makefile.inc1" line 348:
>> SYSTEM_LINKER: libclang will be built for bootstrapping a cross-linker.
>>
>> --------------------------------------------------------------
>>   >>> Kernel build for GENERIC started on Fri Jul 19 08:34:27 CEST 2019
>> --------------------------------------------------------------
>> =3D=3D=3D> GENERIC
>> mkdir -p /usr/src/sys
>>
>> --------------------------------------------------------------
>>   >>> stage 1: configuring the kernel
>> --------------------------------------------------------------
>> cd /usr/home/nk/src/kernel/src/sys/i386/conf;
>> PATH=3D/usr/src/tmp/legacy/usr/sbin:/usr/src/tmp/legacy/usr/bin:/usr/src=
/tmp/legacy/bin:/usr/src/tmp/usr/sbin:/usr/src/tmp/usr/bin:/sbin:/bin:/usr/=
sbin:/usr/bin
>> config__ -d /usr/src/sys/GENERIC__ -I
>> '/usr/home/nk/src/kernel/src/sys/i386/conf'
>> '/usr/home/nk/src/kernel/src/sys/i386/conf/GENERIC'
>> config: /usr/src/sys/GENERIC: Permission denied
>> *** Error code 2
>>
>> Stop.
>> make[1]: stopped in /usr/home/nk/src/kernel/src
>> *** Error code 1
>>
>> Stop.
>> make: stopped in /usr/home/nk/src/kernel/src
>>
> It's peculiar that you have a mix of /usr/src and /usr/home/nk/src.
> Looking at /usr/src/Makefile.inc1 it would appear that you may also
> have to set KRNLOBJDIR to /usr/home/nk/src/kernel/src.
>
> Does the tmp directory really exist?  Seems like a weird choice.
>
> I did what Ryan suggested and was able to make build{kernel,world}
> from /usr/src with no problem.  But I haven't modified the kernel
> sources.
>
>> Am 2019-07-18 um 19:22 schrieb Ryan Stone:
>>> How are you setting MAKEOBJDIRPREFIX?  It needs to be set in your
>>> environment, i.e.
>>>
>>> $ export MAKEOBJDIRPREFIX=3D$HOME/obj
>>> $ make buildkernel
>>>
>>> Trying 'make MAKEOBJDIRPREFIX=3D$HOME/obj buildkernel' will fail in
>>> strange ways due to how make passes arguments to sub-makes.
>>>
>>> On Thu, Jul 18, 2019 at 9:53 AM Norbert Koch <nkoch@demig.de> wrote:
>>>> Hello.
>>>>
>>>> I am obviously too stupid to figure out how to build a custom kernel
>>>> as non-root user in a non-standard directory.
>>>> Under FreeBSD9/10/11 I could put src/ under my own directory
>>>> and start a kernel-compilation by just setting $MAKEOBJDIRPREFIX
>>>> accordingly. Doing this under FreeBSD12 gives me 'permission denied'
>>>> with 'config -d /usr/src/sys/GENERIC ...'. Seems like ${KRNLOBJDIR} is
>>>> not set correctly while the other parameters to config are.
>>>> I see that Makefiles differ between 12 and older releases.
>>>> ${OBJTOP} vs. ${OBJTREE}?
>>>>
>>>> So, what am I doing wrong?
>>>>
>>>> Thank you for any help.

--=20
Dipl.-Ing. Norbert Koch
Entwicklung Prozessregler





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d3aa06b6-9fb8-41ba-07e0-61211556e9bf>