#
e1a6d931 |
| 05-Aug-2024 |
Warner Losh <imp@FreeBSD.org> |
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 ind
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
show more ...
|
#
f4762e91 |
| 05-Aug-2024 |
Warner Losh <imp@FreeBSD.org> |
pxeboot: Allow a different default loader for pxeboot
Sometimes you need / want a different boot loader than loader_lua for pkeldr. Provide an option to get either the 4th one or the simp one.
MFC
pxeboot: Allow a different default loader for pxeboot
Sometimes you need / want a different boot loader than loader_lua for pkeldr. Provide an option to get either the 4th one or the simp one.
MFC After: 3 days Sponsored by: Netflix Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D46213
show more ...
|
#
e9ac4169 |
| 15-Jul-2024 |
Warner Losh <imp@FreeBSD.org> |
Remove residual blank line at start of Makefile
This is a residual of the $FreeBSD$ removal.
MFC After: 3 days (though I'll just run the command on the branches) Sponsored by: Netflix
|
Revision tags: release/14.1.0, release/13.3.0, release/14.0.0 |
|
#
d0b2dbfa |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
Remove $FreeBSD$: one-line sh pattern
Remove /^\s*#[#!]?\s*\$FreeBSD\$.*$\n/
|
Revision tags: release/13.2.0, release/12.4.0 |
|
#
4c8ea3ef |
| 12-Aug-2022 |
Warner Losh <imp@FreeBSD.org> |
stand: Go back to a.out format for /boot/loader
Turns out there's two hidden a.out dependencies. pxeldr.S assumes it has access to the a.out header from /boot/loader and cdboot.S assumes that /boot/
stand: Go back to a.out format for /boot/loader
Turns out there's two hidden a.out dependencies. pxeldr.S assumes it has access to the a.out header from /boot/loader and cdboot.S assumes that /boot/loader is also a.out and doesn't use boot2.
So, go back to making a.out files for these and adjust the size checks to use ls, but we only need to check loader.bin. Trim the size we check against by 2,000. The difference in size between loader and loader.bin is about 3000 bytes, but clang15 produces binaries that are a smidge bigger so we need to relax the check just a little and accept some additional risk for the moment.
Add some comments to loader's Makefile about this.
Sponsored by: Netflix Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D36142
show more ...
|
#
7d72ff90 |
| 11-Aug-2022 |
Warner Losh <imp@FreeBSD.org> |
stand: Make BIOS loader size limits settable
It's sometimes desirable to override the size limit: It's a soft limit and there are times we exceed the limit by just a little bit and don't want the bu
stand: Make BIOS loader size limits settable
It's sometimes desirable to override the size limit: It's a soft limit and there are times we exceed the limit by just a little bit and don't want the build to fail (or we are hitting runtime failures below the 510,000 byte limit).
Sponsored by: Netflix
show more ...
|
#
39fdad34 |
| 11-Aug-2022 |
Warner Losh <imp@FreeBSD.org> |
stand: impose 510,000 byte limit for /boot/loader and /boot/pxeldr
The BIOS method of booting imposes an absolute limit of 640k for the size of the program being run due to btx. In practice, this me
stand: impose 510,000 byte limit for /boot/loader and /boot/pxeldr
The BIOS method of booting imposes an absolute limit of 640k for the size of the program being run due to btx. In practice, this means that programs larger than about 500kiB will fail in odd ways as the stack / heap will overflow.
Pick 510,000 as the cutoff line semi-arbitrarily. loader_lua is now almost too big and we want to break the build when it crosses this threshold. In my experience, below 500,000 always works, above 520,000 always seems to fail with things getting bad somewhere between 512,000 to 515,000. 510,000 is as close to the line as I think we can go, though experience may dictate we need to lower this in the future.
This is at-best a stop-breakage until we have a better way to subset the boot loader for BIOS booting to allow better, more fined-tuned /boot/loaders for the many different environments they have to run in. This likely means we'll have a graphical loader than understands a few filesystmes for installation, and a non-graphical loader that understands the most filesystems possible for everything else in the future. Our build infrastructure needs some work before we can do that, however.
At this late date, it likely isn't worth the efforts to move parts of the loader into high memory. There's a number of assumptions about where the stack is, where buffers reside, etc that are fulfilled when it lives in the first 640k that would need bounce buffers and/or other counter measures if we were to split it up. All BIOS calls are done in 16-bit mode with SEG:OFF addresses, requiring them to be in the first 640k of RAM. And nearly all machines in the last decade can boot with UEFI (though there's some exceptions, so it isn't worth killing outright yet).
Sponsored by: Netflix Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D36129
show more ...
|
#
e2295b91 |
| 11-Aug-2022 |
Warner Losh <imp@FreeBSD.org> |
stand: i386/amd64: Always use elf format for /boot/loader and pxeldr
The first level boot blocks have understood how to load ELF code since 1999. Switch /boot/loader and /boot/pxeldr over to being E
stand: i386/amd64: Always use elf format for /boot/loader and pxeldr
The first level boot blocks have understood how to load ELF code since 1999. Switch /boot/loader and /boot/pxeldr over to being ELF format so that in-tree tools can examine them more closely. In addition, one could, in theory, now have a 'lo-mem' and a 'hi-mem' segment (though a lot of work would need to be done with bounce buffers, btx, code segment marking, etc for an arrangement like that to work).
As far as I can tell, this is the last a.out binary in the tree. There are several raw binaries left, but everything else is ELF.
Reviewed by: emaste, kevans Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D36130
show more ...
|
Revision tags: release/13.1.0, release/12.3.0, release/13.0.0, release/12.2.0, release/11.4.0 |
|
#
87c5e64c |
| 11-May-2020 |
Alex Richardson <arichardson@FreeBSD.org> |
Avoid using non-portable dd conv=osync option
The same thing can be achieved using the bs=$SIZE and conv=sync options. Unlike conv=osync, conv=sync is support on both Linux and macOS.
Reviewed By:
Avoid using non-portable dd conv=osync option
The same thing can be achieved using the bs=$SIZE and conv=sync options. Unlike conv=osync, conv=sync is support on both Linux and macOS.
Reviewed By: imp, jhb (earlier version) Obtained from: CheriBSD Differential Revision: https://reviews.freebsd.org/D24788
show more ...
|
Revision tags: release/12.1.0 |
|
#
aa2dd958 |
| 15-Aug-2019 |
Ed Maste <emaste@FreeBSD.org> |
stand: remove CLANG_NO_IAS from pxeldr
Many components under stand/ had CLANG_NO_IAS added when Clang's Integrated Assembler (IAS) did not handle .codeNN directives. Clang gained support quite some
stand: remove CLANG_NO_IAS from pxeldr
Many components under stand/ had CLANG_NO_IAS added when Clang's Integrated Assembler (IAS) did not handle .codeNN directives. Clang gained support quite some time ago, and we can now build stand/ with IAS. In most cases IAS- and GNU as-assembled boot components were identical, and CLANG_NO_IAS was already removed from other components.
Clang IAS produces different output for some components, including pxeldr, so CLANG_NO_IAS was not previously removed for those.
In the case of pxeldr the difference is that IAS adds a size override prefix (67h) to three instructions to specify a 32-bit address, even though the two high bytes are zero and the address fits in 16 bits. this wastes three bytes per instruction and causes some additional nop npadding to be required elsewhere in the object, but pxeboot is not size-constrained so it doesn't matter.
Sponsored by: The FreeBSD Foundation
show more ...
|
Revision tags: release/11.3.0, release/12.0.0 |
|
#
3611ec60 |
| 18-Aug-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r337646 through r338014.
|
#
9d45c24c |
| 14-Aug-2018 |
Warner Losh <imp@FreeBSD.org> |
Create a loader for each interpreter for x86 BIOS and all EFI
Create loader_{4th,lua,simp}{,.efi}. All of these are installed by default. Create LOADER_DEFAULT_INTERP to specify the default interpre
Create a loader for each interpreter for x86 BIOS and all EFI
Create loader_{4th,lua,simp}{,.efi}. All of these are installed by default. Create LOADER_DEFAULT_INTERP to specify the default interpreter when no other is specified. LOADER_INTERP is the current interpreter language building. Turn building of lua on by default to match 4th. simploader is a simplified loader build w/o any interpreter language (but with a simple loader). This is the historic behavir you got with WITHOUT_FORTH. Make a hard link to the default loader. This has to be a hard link rather than the more desirable soft link because older zfsboot blocks don't support symlinks.
RelNotes: Yes Differential Revision: https://reviews.freebsd.org/D16705
show more ...
|
Revision tags: release/11.2.0 |
|
#
55b1c6e7 |
| 15-Nov-2017 |
Hans Petter Selasky <hselasky@FreeBSD.org> |
Merge ^/head r325663 through r325841.
|
#
ca987d46 |
| 15-Nov-2017 |
Warner Losh <imp@FreeBSD.org> |
Move sys/boot to stand. Fix all references to new location
Sponsored by: Netflix
|