SUBMIT BUG REPORTS HERE --> http://sourceforge.net/tracker/?group_id=91879&atid=598709 IMPORTANT NOTE FOR BUILDS ON ALL ARCHS: ------------------------- You will need the following toolchain to build elilo with the 3.7 source tarball (for all archs due to the new uefi call wrappers). 1. gnu-efi-3.0d or > .... http://sourceforge.net/project/showfiles.php?group_id=163609&package_id=185019&release_id=508306 2. gcc-4.1.1 or > 3. binutils-2.17.50.0.14 or > with Intel64 EFI support *BuildNote: efi libraries are installed to /usr/local/lib by the default gnu-efi source package. elilo expects them to be in standard linux system location /usr/lib. efi includes may be located in /usr/local/include/efi. elilo expects them to be in standard linux system location /usr/include/efi. likewise objcopy may be installed to /usr/local/bin by binutils, elilo source expects it to be in /usr/bin. On distributions using standard linux system conventions such as Debian and Ubuntu this is corrected in the binutils and gnu-efi packages. Implementation: -------------- Calls to EFI services in x86_64 require a wrapper to pass the arguments in the appropriate manner. This is implemented with efi wrapper. For IA32 and IA64, the wrapper is a macro that merely calls the EFI services directly. The elilo source has been modified to use the efi wrapper implemented in the gnu-efi-3.0d library. elilo for x86_64 and its dependent libraries are built and the final ELF image is converted into PE-COFF image using the objcopy supported by binutils-2.17.50.0.14 or above with Intel64 EFI support. On UEFI 2.0 firmware, only Graphics Output Protocol (GOP) is supported. The x86_64 elilo first queries video information from GOP failing which it queries for text mode support. The video information is passed to Linux kernel via boot parameter. The GOP support requires Linux kernel EFI framebuffer driver (kernel configuration option). Booting on EFI/x86_64 platforms ----------------------------- To use elilo on x86_64, you can put it on a floppy and on a FAT32 partition (msdos partition). You can also netboot if your network adapter has support for UNDI/PXE. Elilo/x86_64 requires efi64 enabled linux kernel (> 2.6.21). You need to compile the kernel with CONFIG_EFI option. x86_64 platforms with UEFI 2.0 firmware deprecate UGA protocol and therefore only the Graphics Output Protocol (GOP) is supported. For such platforms, the kernel must be configured with EFI_FB option. This will enable early boot messages on the console. The elilo for x86_64 attempts to query the firmware for GOP and if it fails it defaults to text mode. The x86_64 implementation converts the EFI memory map into E820 map and passes it in the bootparameter supplied to the kernel. For details on bootparameter, see x86_64/sysdeps.h. CHANGES BETWEEN 3.6 & 3.8 ------------------------- - options parsing changed to append root= after append="-- options" to accomodate xen ia64 support. without this change the option is passed to the hypervisor instead of the kernel resulting in the standard kernel panic. INTEL PATCHES - E820 memory map is added to IA32 to make it possible for Linux kernel not to depend on EFI memory map on EFI 32. - The EFI framebuffer type ID is changed in Linux kernel to conform to Linux kernel framebuffer type ID grouping rules. So the EFI framebuffer type ID setting code in ELILO is changed accordingly. - The boot loader signature of IA32 and x86_64 is redefined to make it possible for Linux kernel to distinguish whether the underlying firmware is EFI 32 or EFI 64. - updates for EFI-2.0 boot support going into linux kernel 2.6.24-rc4 - CL_MAGIC is not supported by 32-bit boot protocol. So, the kernel command line passing code is changed accordingly. - bugfix, on some machines efi memmap entries exceed the 128 maximum for e820 map entries, so consecutive memmap entries with the same type are merged to bring the count below 128. - bugfix, uninitialized e820 _nr_map in fill_e820map. - fixed compile warning for cmdline_addr assignment. ADDITIONAL CHANGES - version string updated to 3.8 - fixed x86_64 hang created by initrd images larger than 7mb due to the code always using the same efi region which on some machines is only 7mb. code changed to properly have the efi allocator decide which regions to use based on the total pagecount required by the size of the initrd to be loaded. - bugfix, for ia32 and x86_64 code, e820_map[x-1] accesses memory out of bounds when x=0.