<div class="gmail_quote"><div><p>I have patched elilo to use IPXE exported capabilities to download kernel/initrd/config.  It probably only builds on linux/gcc/x86_64 combination due to the hackish way I coped with the calling convention situation.  I'm hoping some UEFI guru will enlighten me on the correct way.  In short, elilo code seems to have a 'uefi_call_wrapper' to swap the registers around to make calls *to* uefi, but does not have a provision for calls from UEFI to itself.  This means it expected <meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="font-size: 13px; line-height: 19px; font-family: sans-serif; ">DI, RSI, RDX, RCX, R8, R9 to be the arguments instead of </span><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="font-size: 13px; line-height: 19px; font-family: sans-serif; ">RCX, RDX, R8, R9.  I'm presuming there is GCC magic to be had that I don't understand right now.</span><br>

<br>
In 'legacy' world, you can build ipxe and the syslinux pxelinux.0 and have the latter detect and make use of the former (they go a step further and actually bundle both in a single binary).  This gives pxelinux.0 the iPXE protocol support without having to change much.<br>

<br>
This is the analogous capability for elilo.  It comes in two halves.  iPXE needed to have capabilities exposed in a UEFI protocol in much the same way it exports it in 'legacy boot'.  Those patches to ipxe are:<br>

<a href="https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/d748ebf72206dcde1379b063fd9b533f7572caa5" target="_blank">https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/d748ebf72206dcde1379b063fd9b533f7572caa5</a><br>

<a href="https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/e7b41890bc67350a9f5bcf7291ec859fa2174e26" target="_blank">https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/e7b41890bc67350a9f5bcf7291ec859fa2174e26</a><br>

<a href="https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/45a51f99fd51b231a388b1db00dfc4b18a5e9e4f" target="_blank">https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/45a51f99fd51b231a388b1db00dfc4b18a5e9e4f</a><br>

<a href="https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/23aea6c209965546c39569a770823eabf1358a71" target="_blank">https://git.ipxe.org/people/jbjohnso/ipxe.git/commit/23aea6c209965546c39569a770823eabf1358a71</a><br>

<br>
Apply those and 'make bin-x86_64-efi/snponly.efi and you have something much like undionly.kkpxe, but for UEFI.<br>
<br>
My (admittedly shoddy) patch for elilo 3.14 is attached.<br>
<br>
The fruit of my labor:<br>
88879.550706 192.168.121.208 -> 192.168.127.253 TFTP Read Request, File: snponly.efi\000, Transfer type: octet\000<br>
88879.551387 192.168.121.208 -> 192.168.127.253 TFTP Read Request, File: snponly.efi\000, Transfer type: octet\000<br>
88879.864373 192.168.121.13 -> 192.168.127.253 HTTP GET /tftpboot/xcat/xnba/nodes/fr1 HTTP/1.1 <br>
88879.865929 192.168.121.13 -> 192.168.127.253 HTTP GET /tftpboot/elilo-x64.efi HTTP/1.1 <br>
88879.872902 192.168.121.13 -> 192.168.127.253 HTTP GET /tftpboot/C0A879D0.conf HTTP/1.1 <br>
88880.466286 192.168.121.13 -> 192.168.127.253 HTTP GET /tftpboot/xcat/rhels6/x86_64/vmlinuz HTTP/1.1 <br>
88880.561916 192.168.121.13 -> 192.168.127.253 HTTP GET /tftpboot/xcat/rhels6/x86_64/initrd.img HTTP/1.1 <br><br></p></div></div>