[ipxe-devel] [PATCH] [efi] make load file protocol optional

Gerd Hoffmann kraxel at redhat.com
Fri Feb 13 08:12:12 UTC 2015


  Hi,

> > This issue might be fixable in several ways:
> > (a) Rework edk2 to provide EFI_PXE_BASE_CODE_PROTOCOL independently of
> >      EFI_LOAD_FILE_PROTOCOL.
> >
> > (b) Or, implement EFI_PXE_BASE_CODE_PROTOCOL in iPXE, and install it
> >      alongside EFI_LOAD_FILE_PROTOCOL, in efi_snp_probe().
> >
> > (c) Or, drop EFI_LOAD_FILE_PROTOCOL from step 2.1 (dependent on build
> >      time configuration).
> >
> > (d) Or, modify shim.efi, and possibly the other boot loader mentioned in
> >      step 1.5, to use EFI_LOAD_FILE_PROTOCOL. This would also require all
> >      relevant EFI_LOAD_FILE_PROTOCOL implementations to adhere to the
> >      FilePath parameter.
> >
> > Option (c) is by far the least intrusive, and the proposed patch does
> > that.
> 
> The problem is that option (c) also destroys the user's ability to use 
> most features of iPXE.  It's a quick hack rather than a solution.

I'm fine with using that as temporary stopgap only, until we have some
better solution.

> Option (d) sounds like the best idea, not least because it would allow 
> for the use of non-braindead network protocols (i.e. almost anything 
> except TFTP).  iPXE could quite easily have code in efi_snp_load_file() 
> which would open and autoconfigure the network device, interpret 
> FileName as a URI, and thereby allow shim.efi (or others) to download 
> files via HTTP, HTTPS, etc.

Pointless for the specific case of shim.efi (and see also Peter's
reply).  I don't think there a way around EFI_PXE_BASE_CODE_PROTOCOL, be
that the edk2 implementation or one provided by ipxe.

For grub.efi it certainly would make sense to use EFI_LOAD_FILE_PROTOCOL
to load files (maybe except grub.cfg), so one can have http urls in
grub.cfg and don't need to copy the kernels to tftproot when using ipxe.

cheers,
  Gerd





More information about the ipxe-devel mailing list