pxeboot: Enforce a 500k limit here

Have a separate PXEBOOTSIZE variable that acts much like LOADERSIZE
variable to limit the size of the loader used for pxeldr. This allows
people to override it independently of LOADERSIZE, which they may need
to set larger for other reasons. Combined with PXEBOOT_DEFAULT_INTERP,
you can build a larger lua loader, while still being able to build pxeldr
with the 4th one, for example.

MFC After:   	  	3 days
Sponsored by:		Netflix
Reviewed by:		markj
Differential Revision:	https://reviews.freebsd.org/D46214
This commit is contained in:
Warner Losh 2024-08-05 15:19:36 -06:00
parent f4762e9135
commit e1a6d93155

View File

@ -28,6 +28,12 @@ L=${PXEBOOT_DEFAULT_INTERP}
L=${LOADER_DEFAULT_INTERP}
.endif
LOADERBIN= ${BOOTOBJ}/i386/loader_${L}/loader_${L}.bin
# pxeboot runs in an environment where there's 500k or less of space available
# due to space for packet buffers, network drivers, etc. While some environments
# may have a bit more, the limit of 500,000 (488k) provides enough margin to
# work in a huge array of environments. Larger values may work for specific
# environments.
PXEBOOTSIZE?=500000
CLEANFILES+= ${BOOT}.tmp
@ -43,6 +49,8 @@ CLEANFILES+= ${LOADER}
# Note: pxeldr.S assumes a.out and will require changes for ELF if the output
# format is changed to ELF.
${LOADER}: ${LOADERBIN} ${BTXLDR} ${BTXKERN}
@set -- `ls -l ${LOADERBIN}` ; x=$$((${PXEBOOTSIZE}-$$5)); \
echo "$$x bytes available"; test $$x -ge 0
btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
-b ${BTXKERN} ${LOADERBIN}