mirror of
https://github.com/ipxe/ipxe
synced 2026-05-08 15:02:55 +03:00
5a17d8daf3c5247a95df88bcd651b61675058592
When we fall back to using our own loaded image's device handle (instead of the most recently opened SNP device handle), we may find that some protocols (e.g. EFI_SIMPLE_FILE_SYSTEM_PROTOCOL) are already present on this handle. Fix by creating a child device handle with an added Uri() device path component, and installing EFI_SIMPLE_FILE_SYSTEM_PROTOCOL and others onto this handle instead of onto the identified parent device handle. This also provides a way for us to communicate the image URI to a chainloaded iPXE, so that that iPXE can set its current working URI appropriately. A side effect of this change is that the EFI_SIMPLE_NETWORK_PROTOCOL will be found on the parent of the loaded image's device handle, rather than directly on the loaded image's device handle. This will not cause problems for a chainloaded iPXE, since that will already use LocateDevicePath() to find EFI_SIMPLE_NETWORK_PROTOCOL (or the EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL created by MnpDxe) and so will already find the instance on the parent device handle. If other UEFI executables are found to exist that do require the protocols to be installed directly on the loaded image's device handle, then we could potentially install copies of these protocol instances on the device handle. Signed-off-by: Michael Brown <mcb30@ipxe.org>
iPXE network bootloader
iPXE is the leading open source network boot firmware. It provides a full PXE implementation enhanced with additional features such as:
-
boot from a web server via HTTP or HTTPS,
-
boot from an iSCSI, FCoE, or AoE SAN,
-
control the boot process with a script,
You can use iPXE to replace the existing PXE ROM on your network card, or you can chainload into iPXE to obtain the features of iPXE without the hassle of reflashing.
iPXE is free, open-source software licensed under the GNU GPL (with some portions under GPL-compatible licences).
You can download the rolling release binaries (built from the latest commit), or use the most recent stable release.
For full documentation, visit the iPXE website.
Languages
C
96.9%
Assembly
1.5%
Perl
0.6%
Python
0.4%
Makefile
0.4%