1. That is what I'm writing.
2. iPXE can load a linux kernel in 'DOS-like' mode, but if it is compiled
as an efi executable (e.g. the environment doesn't have INT13 and stuff),
it can't load a kernel.
3. I do that.
4. The "IPXE Download Protocol" is a new thing, it's a UEFI protocol that
attaches to the same device handle as PxeBaseCode. While Mtftp just does
tftp, this provides full http and other protocol support. It also
functions differently. Mtftp takes a pointer to some memory space and
plops it down in one shot (from elilo perspective). iPXE protocol instead
requests a pointer to a function to call to deliver each piece of the file
(as a buffer with length and offset into the file). *Here* is where things
get wonky. When elilo calls into uefi, uefi_call_wrapper makes life nice
and happy and performs the register swaps required to act like microsoft.
In this case, an elilo provided function is faced with the naked calling
convention of UEFI (RCX, RDX, R8,R9, stack with shadowing magic), but in
the C code expects sysv abi (RDI, RSI, RDX, RCX, R8,R9, stack).
I was looking for the gnu-efi list, which I'm now convinced is the right
place. I couldn't find it. As far as I can tell, I 'need' a converse for
uefi_call_wrapper if it exists, otherwise I'll just have a big comment
block to explain why the source code calling my function doesn't match the
source code being called.
From: jfly <fleischli-Rn4VEauK+AKRv+***@public.gmane.org>
To: Jarrod B Johnson/Raleigh/***@IBMUS
Cc: elilo-discuss-5NWGOfrQmneRv+***@public.gmane.org
Date: 08/16/2011 03:00 PM
Subject: Re: [elilo-discuss] EFI callback workings...
Hi Jarrod,
I'm confused about your post here wrt elilo.
The reasons are;
1. elilo has no specific iPXE support
2. iPXE has its own bootloader capability and can boot linux
"Although its basic role was to implement a PXE stack, iPXE can be
used as a full-featured network bootloader. It can fetch files from
multiple network protocols, such as TFTP, HTTP or,
and can boot PXE, ELF, Linux, FreeBSD, multiboot, EFI and Windows CE
images. In addition, it is scriptable and can load COMBOOT and COM32
SYSLINUX extensions. This allows for instance to build a graphical
menu for network boot."
3. you can chainload ipxe via pxe.
http://www.google.com/url?sa=t&source=web&cd=2&sqi=2&ved=0CB4QFjAB&url=http%3A%2F%2Fipxe.org%2Fhowto%2Fchainloading&rct=j&q=pxe%20vs%20ipxe&ei=27hKTvXmE-WGsgKnme3mCA&usg=AFQjCNE2JxoK98OhfwLD7zlVMAHL75vnOw&cad=rja
4. ALL UEFI callbacks are provided by gnu-efi. elilo simply calls into
them and does no reordering of the PXE data that I saw and anyway
the data types and order would be established by gnu-efi according
to the protocol handle that was passed in to UEFI of which elilo
only uses
./fs/netfs.c: netfs_start(EFI_PXE_BASE_CODE *pxe)
./fs/netfs.c: status = uefi_call_wrapper(BS->HandleProtocol, 3,
dev, &PxeBaseCodeProtocol, (VOID **)&pxe);.
Perhaps your query needs to go to the gnu-efi or ipxe project lists.
Hopefully this was helpful anyway.
Regards,
-jason
Post by Jarrod B JohnsonSo I'm working on implementing support in netfs for IPXE download
protocol, if available.
The thing I'm hitting is that when iPXE goes to invoke the callback,
the argument list seems reversed. I know how to kind of brute force
this scenario, but was wondering if there was some more sane looking
way to cope.
*context, *buffer, length, offset
0xaddf, 0xcdde, 1024, 0
0, 1024, 0xcdde, 0xaddf
I see quite a bit of dancing in gnu-efi to have code call into uefi
provided functions, but wasn't clear on the converse...
------------------------------------------------------------------------------
Post by Jarrod B JohnsonuberSVN's rich system and user administration capabilities and model
configuration take the hassle out of deploying and managing Subversion
and
Post by Jarrod B Johnsonthe tools developers use with it. Learn more about uberSVN and get a free
download at: http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
elilo-discuss mailing list
https://lists.sourceforge.net/lists/listinfo/elilo-discuss