loader: Add WITH/WITHOUT_LOADER_PXEBOOT build option

Make it possible to disable pxeboot. This loader will fail to build when
it's too large. When /boot/loader needs to be larger like that, this
options will disable a component whose build will fail. It is an explicit
option rather than implicit when things are too large to force the user to
make the explicit tradeoffs rather than wonder why they have a stale pxeboot
or other odd failure mode.

MFC After:		3 days
Sponsored by:		Netflix
Differential Revision:	https://reviews.freebsd.org/D46212
This commit is contained in:
Warner Losh 2024-08-05 15:19:21 -06:00
parent 7ee781e2bf
commit 20d35d5817
4 changed files with 37 additions and 1 deletions

View File

@ -130,6 +130,7 @@ __DEFAULT_YES_OPTIONS = \
LOADER_KBOOT \
LOADER_LUA \
LOADER_OFW \
LOADER_PXEBOOT \
LOADER_UBOOT \
LOCALES \
LOCATE \

View File

@ -16,7 +16,7 @@ SUBDIR.${MK_LOADER_LUA}+= loader_lua
SUBDIR.yes+= loader_simp
# special boot programs, 'self-extracting boot2+loader'
SUBDIR.yes+= pxeldr
SUBDIR.${MK_LOADER_PXEBOOT}+= pxeldr
SUBDIR.${MK_LOADER_ZFS}+= zfsboot gptzfsboot

View File

@ -0,0 +1,10 @@
Do not build pxeboot on i386/amd64.
When the pxeboot is too large, or unneeded, it may be disabled with this option.
See
.Va WITH_LOADER_PXEBOOT
for how to adjust the defaults when you need both a larger
.Pa /boot/loader
and
.Pa /boot/pxeboot
.Pp
This option only has an effect on x86.

View File

@ -0,0 +1,25 @@
Build pxeboot on i386/amd64.
The PXE Boot loader package needs more space than we may have in the boot loader.
If you need to increase
.Va LOADERSIZE
beyond 500000, then building
.Xr pxeboot 8
will fail.
To allow a larger
.Va LOADERSIZE
for some environments, it may be necessary to disable pxeboot builds or adjust
its defaults.
You can set the default loader for pxeboot to use independently of the system
default by setting
.Va PXEBOOT_DEFAULT_INTERP
to one of
.Dq lua ,
.Dq 4th ,
or
.Dq simp .
The limit on the size of the loader used for
.Xr pxeboot 8
can be set independently with
.Va PXEBOOTSIZE .
.Pp
This option only has an effect on x86.