| 6788e42d | 11-Sep-2026 |
Warner Losh <imp@FreeBSD.org> |
stand/efihttp: Support arbitrary http[N]://host[:port]/path devspecs
Until now, the "http" device only worked when firmware itself booted loader.efi via EFI HTTP Boot: efihttp_dev_init() required a
stand/efihttp: Support arbitrary http[N]://host[:port]/path devspecs
Until now, the "http" device only worked when firmware itself booted loader.efi via EFI HTTP Boot: efihttp_dev_init() required a URI node on the loader's own boot device path, and every fetch went to that same server. Add a second form, using the parse_uri() helper from libsa/dev.c, that works anywhere: http[N]://host[:port]/path (N is a network interface unit, defaulting to 0). This lets a devspec like this be used as rootdev, in loader.conf, or interactively, independent of how loader.efi itself was booted.
Network configuration is shared, loader-wide state (the myip/netmask/ gateip/nameip globals from net.h): if something has already configured them (e.g. tftp/nfs via net_open()), the http device just reuses those values, applying them to EFI_IP4_CONFIG2_PROTOCOL as a static address. If nothing has, it drives IP4Config2's own DHCP directly instead of calling netdev's net_open(): net_open() opens the NIC's SNP EFI_OPEN_PROTOCOL_EXCLUSIVE, which would disconnect the Mnp/Ip4/.../ HttpDxe driver chain this code depends on. That chain is also commonly disconnected already by whatever chained us here (e.g. iPXE excludes and exclusively opens SNP for its own raw I/O), so reconnect it explicitly with ConnectController() before giving up.
The legacy EFI HTTP Boot path is untouched.
Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D59423
show more ...
|
| afee7815 | 26-Jun-2026 |
Warner Losh <imp@FreeBSD.org> |
loader.efi: Recognize new memdisk=<url> and memcd=<url> options
Support ipxe downloading of a memory disk (either presented to the OS as a harddisk or a cd). This requires an ipxe server since it us
loader.efi: Recognize new memdisk=<url> and memcd=<url> options
Support ipxe downloading of a memory disk (either presented to the OS as a harddisk or a cd). This requires an ipxe server since it uses the ipxe download protocol to grab the disk. If there is a disk, we add it to the environment as a disk, and then the rest of the bootloader just sees it and boots from it.
I've cribbed code from https://github.com/russor/memdisk_uefi and adapted it to work in the context of the FreeBSD bootloader.
The ipxe_download.h file was created from the documentation of the interface.
So a .ipxe file with the line chain http://10.2.0.1/loader.efi memdisk=${cwduri}FreeBSD-15.1-RELEASE-amd64-bootonly.iso would use the FreeBSD boot loader to boot the FreeBSD 15.1 release.
md(9) has a bug at the moment that prevents it from probing the partitions on it.
Also, we'll automatically decompress gzip, bzip2 and zstd files automatically.
Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D57677
show more ...
|
| 784150fd | 27-Feb-2026 |
Warner Losh <imp@FreeBSD.org> |
stand/efi: Allow RELAXED or STRICT boot policies
The RELAXED boot policy will automatically search for any root filesystem (currently zfs only) on any device. STRICT policy only searches on the boot
stand/efi: Allow RELAXED or STRICT boot policies
The RELAXED boot policy will automatically search for any root filesystem (currently zfs only) on any device. STRICT policy only searches on the boot device. RELEAXED will still prefer the device we booted from, which is the smallest behavior change we should do. STRICT may be needed for releases, though.
Sponsored by: Netflix Reviewed by: glebius Differential Revision: https://reviews.freebsd.org/D55107
show more ...
|