I've been trying for a week solid to get any Linux to boot using elilo on the Intel EFI Sample Implementation. I have EFI working great, but everytime I try to load a kernel I get a lockup.
Is there something I am missing?
Does elilo work under this setup?
I havent tried the sample implementation with ELILO, but on a different EFI, it was possible for me to boot linux via ELILO.
What did you mean by "lockup"??
But you can try the following if you have not already...
0.5. Is the EFAT partition mounting and are you in the first place seeing a ELILO on the EFAT and a kernel somewhere where elilo can locate it?
1. Did you try adding some debug prints before start_kernel at various locations, is ELILO executing in the first place.
2. Did you check if the linux is loaded at 100000 and the headers at 90000. You can check the second one, by checking the "Hdrs" signature in setup.S and the first one, by may be checking the first 8 bytes. Note that compressed/head.S gets loaded at 100000.
3. Are you at all seeing Uncompressing Linux...???
By lockup I mean it just freezes. I have to hard restart at that point.
EFI loads fine.
I can see all of the files on the FAT partition.
the kernel is located in the root of the FAT partition as well as elilo and elilo.conf
important contents of elilo.conf are as follows:
typing the following at the shell:
Loading file \initrd.gz...done
then cursor drops down and freezes.
and cursor drops down and locks.
I have tried several different kernels at this point with and without an initrd file.
Everytime a hard lock follows.
I suspect the print out loading file initrd.gz is from load_initrd function in initrd.c in ELILO.
There are a few options that you could try out, depending on the kind of tool chain set-up you have at your disposal.
1. If you have a GNU-EFI compilation environment, you can recompile ELILO, by adding a few more Prints. I would suggest adding a Print just after load_initrd call in elilo.c and just before start_kernel call in elilo.c again.
<p>That would make it clear whether the linux is gettin a control transfer or not, and you will know where to look, (ELILO or Linux).
2. If you do not have a GNU-EFI/ELILO source compilation environemnt, you could try building a new linux kernel, modify compressed/head.S and make it print something whatsoever(by writing at 0xb8000(unreal) address), to figure out whether it is getting loaded at all. The results of this experiments will give you the following inferences
<p>If print out does not come, probably the control is transfered somewhere else and linux is not loaded properly by Elilo.
<p>If you see the printout. then linux gets loaded properly at 0x100000, but may be the header is not properly loaded @ 0x90000.
It is highly likely that if you try out these experiments, you might stumble upon some clue, which will help resolve the issue. But I am able to clearly see, its not a EFI issue, but a ELILO issue.
My EFI is IA32 on a 915 chipset machine, with a P4 with HT processor. I burnt a EFI flash for this machine.
The EFI you used, was this one a ia32 or ia64 system?
What kernel did you successfully boot? It could just be the kernels I am using.
My EFI is IA32 on a 945 chipset machine. Specifically I am using an Intel D945GCZ motherboard with a Celeron D 331 (supports EMT64).
You say you burnt an EFI flash for the machine? The motherboard I am using is EFI ready per Intel, but is currently using BIOS. I am loading the Intel EFI sample implementation from a CD. Once it is loaded however the CD can be ejected. My settings are all on the FAT volume and save properly (boot options).
All of the current ia32 2.6 kernels are supposed to have EFI support in them, correct?
I will look into compiling a new kernel as soon as I get the chance. To try and get some sort of direction.
Would be nice if I could simply flash this motherboard to load EFI instead BIOS to avoid booting from this CD I compiled, but that is another issue altogether.
I suspect the kernel is the issue in my scenario however.
Try adding "legacy-free" in your elilo.conf configuration file. Without this, elilo will switch the processor back into real mode; with this keyword, it will keep it in protected mode and just start executing the kernel...