boot/platform/efi: Add network booting support

Similar to open firmware implementation.
This allows to load the kernel from a remote_disk_server.

IP address is recovered using LoadOptions with a syntax similar to the
Linux kernel network boot "ip" parameter. If this is not set, no network
booting is attempted, in order to not slow down normal booting by
waiting on network traffic.

Change-Id: I17738bbcde85921672965b9936a2b484f1e57c6c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3678
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
This commit is contained in:
Alexander von Gluck IV
2025-12-18 10:45:08 +00:00
committed by Adrien Destugues
parent ea58f1fc7c
commit b157c2179a
6 changed files with 452 additions and 10 deletions
@@ -13,7 +13,7 @@ extern efi_guid DevicePathProtocol;
typedef struct efi_device_path_protocol {
uint8_t Type;
uint8_t SubType;
uint8_t Length[2];
uint16_t Length;
} efi_device_path_protocol;
#define DEVICE_PATH_HARDWARE 0x01
@@ -12,6 +12,9 @@
{0x5b1b31a1, 0x9562, 0x11d2, {0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b}}
extern efi_guid LoadedImageProtocol;
#define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID \
{0xbc62157e, 0x3e33, 0x4fec, {0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf}}
#define EFI_LOADED_IMAGE_PROTOCOL_REVISION 0x1000
typedef struct {