build custom kernel under FreeBSD 12
Gary Jennejohn
gljennjohn at gmail.com
Fri Jul 19 07:28:04 UTC 2019
On Fri, 19 Jul 2019 08:40:05 +0200
Norbert Koch <nkoch at demig.de> wrote:
> Here is a typescript:
>
> 12.0-RELEASE-p7 (3) nk at entw-pr4 [~/src/kernel/src] $ export
> MAKEOBJDIRPREFIX=`realpath tmp`
> 12.0-RELEASE-p7 (3) nk at entw-pr4 [~/src/kernel/src] $ echo $MAKEOBJDIRPREFIX
> /usr/home/nk/src/kernel/src/tmp
>
> 12.0-RELEASE-p7 (3) nk at entw-pr4 [~/src/kernel/src] $ make buildkernel
> make[1]: "/usr/home/nk/src/kernel/src/Makefile.inc1" line 341:
> SYSTEM_COMPILER: Determined that CC=cc 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
> --------------------------------------------------------------
> ===> GENERIC
> mkdir -p /usr/src/sys
>
> --------------------------------------------------------------
> >>> stage 1: configuring the kernel
> --------------------------------------------------------------
> cd /usr/home/nk/src/kernel/src/sys/i386/conf;
> PATH=/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=$HOME/obj
> > $ make buildkernel
> >
> > Trying 'make MAKEOBJDIRPREFIX=$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 at 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.
--
Gary Jennejohn
More information about the freebsd-hackers
mailing list