95 lines
4.8 KiB
Text
95 lines
4.8 KiB
Text
|
|
||
|
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.
|