INSTKERNNAME vs KODIR difference

Hi all! According to this manual page build(7)

Code:
make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
 nextboot -k testkernel

This should install the previously built kernel to /boot/testkernel.

But a colleague of mine advised me to do this:

make installkernel INSTKERNNAME=kernel.test

The manual mentions both ways. What's the real difference between them?
 
Code:
% rg --sort path INSTKERNNAME /usr/doc/documentation/content/en
% rg --sort path KODIR /usr/doc/documentation/content/en
% rg --sort path INSTKERNNAME /usr/src
/usr/src/Makefile.inc1
1037:KMAKE=             ${TIME_ENV} ${KMAKEENV} ${MAKE} ${.MAKEFLAGS} ${KERNEL_FLAGS} KERNEL=${INSTKERNNAME}
1725:INSTKERNNAME?=     kernel
1880:       ${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME} METALOG=${METALOG} \
1896:       ${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME}.${_kernel} METALOG=${METALOG} \
1919:       ${IMAKE_MTREE} PATH=${TMPPATH:Q} ${MAKE} KERNEL=${INSTKERNNAME} \
1936:       KERNEL=${INSTKERNNAME}.${_kernel} \

/usr/src/share/man/man7/build.7
394:.Va INSTKERNNAME
442:.Va INSTKERNNAME .
% rg --sort path KODIR /usr/src
/usr/src/UPDATING
2032:   make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel

/usr/src/share/man/man7/build.7
396:.Va KODIR

/usr/src/sys/conf/kern.post.mk
410:.if exists(${DESTDIR}${KODIR})
412:    if [ ! "`dirname "$$thiskernel"`" -ef ${DESTDIR}${KODIR} ] ; then \
413:            chflags -R noschg ${DESTDIR}${KODIR} ; \
414:            rm -rf ${DESTDIR}${KODIR} ; \
415:            rm -rf ${DESTDIR}${KERN_DEBUGDIR}${KODIR} ; \
417:            if [ -d ${DESTDIR}${KODIR}.old ] ; then \
418:                    chflags -R noschg ${DESTDIR}${KODIR}.old ; \
419:                    rm -rf ${DESTDIR}${KODIR}.old ; \
421:            mv ${DESTDIR}${KODIR} ${DESTDIR}${KODIR}.old ; \
423:                 -d ${DESTDIR}${KERN_DEBUGDIR}${KODIR} ]; then \
424:                    rm -rf ${DESTDIR}${KERN_DEBUGDIR}${KODIR}.old ; \
425:                    mv ${DESTDIR}${KERN_DEBUGDIR}${KODIR} ${DESTDIR}${KERN_DEBUGDIR}${KODIR}.old ; \
427:            sysctl kern.bootfile=${DESTDIR}${KODIR}.old/"`basename "$$thiskernel"`" ; \
430:    mkdir -p ${DESTDIR}${KODIR}
431:    ${INSTALL} -p -m ${KMODMODE} -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO} ${DESTDIR}${KODIR}/
433:    mkdir -p ${DESTDIR}${KERN_DEBUGDIR}${KODIR}
434:    ${INSTALL} -p -m ${KMODMODE} -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO}.debug ${DESTDIR}${KERN_DEBUGDIR}${KODIR}/
437:    ${INSTALL} -p -m ${KMODMODE} -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_EXTRA_INSTALL} ${DESTDIR}${KODIR}/
443:    @-chflags -R noschg ${DESTDIR}${KODIR}
444:    ${INSTALL} -p -m ${KMODMODE} -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO} ${DESTDIR}${KODIR}/
446:    ${INSTALL} -p -m ${KMODMODE} -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO}.debug ${DESTDIR}${KERN_DEBUGDIR}${KODIR}/

/usr/src/sys/conf/kern.pre.mk
41:KODIR?=              /boot/${KERNEL}
383:MKMODULESENV+=      MAKEOBJDIRPREFIX=${.OBJDIR}/modules KMODDIR=${KODIR}
%

KODIR was mentioned in UPDATING in 2005:

1728840583251.png


HTH
 
(Some overlap)

What's the real difference between [INSTKERNNAME vs KODIR]?
You're refererring to two make(1) variables, that each serve a different purpose. They are related and specific use of each may result in the same effect.

Customizing the FreeBSD Kernel ( and of course build(7) ):
Rich (BB code):
Make Variables

Some useful make(1) variables that influence the kernel build process:

    INSTKERNNAME - the installed kernel name, which defaults to “kernel”, informing the install path $DESTDIR/boot/$INSTKERNNAME/.

  1. $DESTDIR/boot/$INSTKERNNAME/
    as shown $INSTKERNNAME only designates a part.
  2. make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
    as shown in /usr/src/UPDATING, KODIR designates the whole destination; UPDATING - L2043-L2049:
    Code:
    	To test a kernel once
    	---------------------
    	If you just want to boot a kernel once (because you are not sure
    	if it works, or if you want to boot a known bad kernel to provide
    	debugging information) run
    	make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
    	nextboot -k testkernel
The use of KODIR would, for example, also be useful for Building a custom kernel on a different machine
 
Back
Top