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