release 3.16
https://sourceforge.net/projects/elilo/files/elilo/elilo-3.16/
This commit is contained in:
parent
82f7288853
commit
2b5c5002e1
21 changed files with 708 additions and 109 deletions
39
ChangeLog
39
ChangeLog
|
@ -1,4 +1,22 @@
|
||||||
2011-1-10 signed off by Jason Fleischli <jason.fleischli@hp.com>
|
2013-03-27 signed off by Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
|
* ADD CROSSBUILD
|
||||||
|
* intake edited version of Debian x86x crossbuild patches.
|
||||||
|
* Fixed Makefile clean to include crossbuild envs.
|
||||||
|
* Fixed ia32 system.c compile warning
|
||||||
|
* Simplified efi no GOP warning so it doesnt look like an error.
|
||||||
|
* MAJOR: Fixed Fault crash when EFI memory map changes from under elilo.
|
||||||
|
(from an outside interrupt in this case). When the EFI Memory map
|
||||||
|
changes after elilo has already built boot params to pass to the
|
||||||
|
kernel the EFI call to ExitBootSvcs just prior to boot will fail
|
||||||
|
because elilo has the old map key. This is valid EFI behavior, elilo
|
||||||
|
retries to pick up the new memory map and valid key but had already
|
||||||
|
freed the start params portion of boot params resulting in a NULL
|
||||||
|
DEREF crash reset.
|
||||||
|
* Add console reset call during initialization. thanks A. Steinmetz
|
||||||
|
* minor bugfix, fixed -m option broken. thanks Allan-lsk.
|
||||||
|
* tag 3_16 for release
|
||||||
|
|
||||||
|
2011-1-10 signed off by Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* Uptake of SUSE patches
|
* Uptake of SUSE patches
|
||||||
- add sysfs support for efi vars (formerly /proc/efi/vars)
|
- add sysfs support for efi vars (formerly /proc/efi/vars)
|
||||||
- fix strncpy overflow
|
- fix strncpy overflow
|
||||||
|
@ -12,7 +30,7 @@
|
||||||
* replace error output on GOP handle failed, downgraded to normal
|
* replace error output on GOP handle failed, downgraded to normal
|
||||||
print status with more informative output.
|
print status with more informative output.
|
||||||
|
|
||||||
2009-10-22 signed off by Jason Fleischli <jason.fleischli@hp.com>
|
2009-10-22 signed off by Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* elilo 3.12 release commit
|
* elilo 3.12 release commit
|
||||||
* Added additional #defines for debug levels to reduce the output
|
* Added additional #defines for debug levels to reduce the output
|
||||||
* Added Mac console patch rework from Julien Blache @ debian
|
* Added Mac console patch rework from Julien Blache @ debian
|
||||||
|
@ -34,7 +52,8 @@
|
||||||
x86_64... this is a legacy design hold over from original design and
|
x86_64... this is a legacy design hold over from original design and
|
||||||
needs to be re-written to do dynamic size memory management based on
|
needs to be re-written to do dynamic size memory management based on
|
||||||
the size of the actual vmlinuz image, as ia64/gzip does.
|
the size of the actual vmlinuz image, as ia64/gzip does.
|
||||||
2008-04-02 signed off by Jason Fleischli <jason.fleischli@hp.com>
|
|
||||||
|
2008-04-02 signed off by Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* elilo 3.10 release commit
|
* elilo 3.10 release commit
|
||||||
* Bumped version string to 3.10
|
* Bumped version string to 3.10
|
||||||
* added PTR_FMT 32bit & 64bit pointer translation for correct output
|
* added PTR_FMT 32bit & 64bit pointer translation for correct output
|
||||||
|
@ -54,10 +73,10 @@
|
||||||
* bugfix loader_probe now correctly errors out if no loaders
|
* bugfix loader_probe now correctly errors out if no loaders
|
||||||
registered.
|
registered.
|
||||||
|
|
||||||
2008-01-11 signed off by Jason Fleischli <jason.fleischli@hp.com>
|
2008-01-11 signed off by Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* Various compile warning cleanups.
|
* Various compile warning cleanups.
|
||||||
|
|
||||||
2008-01-03 signed off by Jason Fleischli <jason.fleischli@hp.com>
|
2008-01-03 signed off by Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* Patch contribution from Scott Davilla <davilla@4pi.com>
|
* Patch contribution from Scott Davilla <davilla@4pi.com>
|
||||||
when x is zero for the first call to add_memory_region, e820_map[-1]
|
when x is zero for the first call to add_memory_region, e820_map[-1]
|
||||||
will access memory outside the bounds of e820_map. While this does
|
will access memory outside the bounds of e820_map. While this does
|
||||||
|
@ -66,7 +85,7 @@
|
||||||
bootloader, the code should not access outside the bounds of
|
bootloader, the code should not access outside the bounds of
|
||||||
structures.
|
structures.
|
||||||
|
|
||||||
2008-01-03 Jason Fleischli <jason.fleischli@hp.com>
|
2008-01-03 Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* initrd.c -- Let the allocator decide where to grab the memory from
|
* initrd.c -- Let the allocator decide where to grab the memory from
|
||||||
the efi memory map. Current start_addr=image->start_addr forces the
|
the efi memory map. Current start_addr=image->start_addr forces the
|
||||||
same efi region everytime, and has a 7mb limit. ramdisk (initrd.img)
|
same efi region everytime, and has a 7mb limit. ramdisk (initrd.img)
|
||||||
|
@ -75,10 +94,10 @@
|
||||||
NULL at initialization forces alloc_pages to get a memory region
|
NULL at initialization forces alloc_pages to get a memory region
|
||||||
sufficient for the size of the initrd image.
|
sufficient for the size of the initrd image.
|
||||||
|
|
||||||
2007-12-19 Jason Fleischli <jason.fleischli@hp.com>
|
2007-12-19 Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* bumping version string to 3.8
|
* bumping version string to 3.8
|
||||||
|
|
||||||
2007-12-19 Jason Fleischli <jason.fleischli@hp.com>
|
2007-12-19 Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* MORE PATCHES FROM INTEL FOR IA32 X86_64.
|
* MORE PATCHES FROM INTEL FOR IA32 X86_64.
|
||||||
* Fix compile warning for cmdline_addr assignment.
|
* Fix compile warning for cmdline_addr assignment.
|
||||||
* Fix an issue caused by uninitialized e820_nr_map in fill_e820map.
|
* Fix an issue caused by uninitialized e820_nr_map in fill_e820map.
|
||||||
|
@ -103,13 +122,13 @@
|
||||||
* E820 memory map is added to IA32 to make it possible for
|
* E820 memory map is added to IA32 to make it possible for
|
||||||
Linux kernel not to depend on EFI memory map on EFI 32.
|
Linux kernel not to depend on EFI memory map on EFI 32.
|
||||||
|
|
||||||
2007-09-27 Jason Fleischli <jason.fleischli@hp.com>
|
2007-09-27 Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* updating changelog for last commit that was omitted
|
* updating changelog for last commit that was omitted
|
||||||
* incorporating AGriffis patches to enhance parsing
|
* incorporating AGriffis patches to enhance parsing
|
||||||
passes root= option to kernel options and accounts for -- option
|
passes root= option to kernel options and accounts for -- option
|
||||||
designation.
|
designation.
|
||||||
|
|
||||||
2007-07-19 Jason Fleischli <jason.fleischli@hp.com>
|
2007-07-19 Jason Fleischli <fleischli@users.sourceforge.net>
|
||||||
* Integrated x86_64 support patches from Chandramouli Narayanan
|
* Integrated x86_64 support patches from Chandramouli Narayanan
|
||||||
<mouli@linux.intel.com> changes summarized in following bullets.
|
<mouli@linux.intel.com> changes summarized in following bullets.
|
||||||
* alloc.c -- adds patch contributors credit to copyright
|
* alloc.c -- adds patch contributors credit to copyright
|
||||||
|
|
|
@ -61,14 +61,17 @@ EFICRT0 = /usr/lib
|
||||||
|
|
||||||
CDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
|
CDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
|
||||||
TOPDIR =
|
TOPDIR =
|
||||||
|
ALLSUBDIRS = ia32 ia64 x86_64 fs choosers devschemes tools
|
||||||
|
|
||||||
ARCH = $(shell uname -m | sed s,i[3456789]86,ia32,)
|
HOSTARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH | sed s,i[3456789]86,ia32, | sed s,amd64,x86_64, )
|
||||||
|
ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH | sed s,i[3456789]86,ia32, | sed s,amd64,x86_64, )
|
||||||
INCDIR = -I. -I$(TOPDIR) -I$(EFIINC) -I$(EFIINC)/$(ARCH) -I$(EFIINC)/protocol -I$(TOPDIR)/efi110
|
INCDIR = -I. -I$(TOPDIR) -I$(EFIINC) -I$(EFIINC)/$(ARCH) -I$(EFIINC)/protocol -I$(TOPDIR)/efi110
|
||||||
CPPFLAGS = -DCONFIG_$(ARCH)
|
CPPFLAGS = -DCONFIG_$(ARCH)
|
||||||
|
|
||||||
OPTIMFLAGS = -O2
|
OPTIMFLAGS = -O2
|
||||||
DEBUGFLAGS = -Wall
|
DEBUGFLAGS = -Wall
|
||||||
CFLAGS = $(OPTIMFLAGS) -fno-stack-protector -fno-strict-aliasing -fpic -fshort-wchar $(DEBUGFLAGS)
|
CFLAGS = $(ARCH3264) $(OPTIMFLAGS) -fno-stack-protector -fno-strict-aliasing -fpic -fshort-wchar $(DEBUGFLAGS)
|
||||||
|
ASFLAGS = $(ARCH3264)
|
||||||
LDFLAGS = -nostdlib -znocombreloc
|
LDFLAGS = -nostdlib -znocombreloc
|
||||||
INSTALL = install
|
INSTALL = install
|
||||||
|
|
||||||
|
@ -108,10 +111,30 @@ OBJCOPY = $(prefix)objcopy
|
||||||
|
|
||||||
# Use Modified binutils that supports x86_64 using UEFI ABI
|
# Use Modified binutils that supports x86_64 using UEFI ABI
|
||||||
ifeq ($(ARCH), x86_64)
|
ifeq ($(ARCH), x86_64)
|
||||||
|
ifeq ($(HOSTARCH), ia32)
|
||||||
|
ARCH3264 = -m64
|
||||||
|
LD3264 = -melf_x86_64
|
||||||
|
|
||||||
|
GNUEFILIB := $(GNUEFILIB)64
|
||||||
|
EFILIB := $(EFILIB)64
|
||||||
|
EFICRT0 := $(EFICRT0)64
|
||||||
|
endif
|
||||||
|
|
||||||
CFLAGS += -DEFI_FUNCTION_WRAPPER
|
CFLAGS += -DEFI_FUNCTION_WRAPPER
|
||||||
OBJCOPY = /usr/bin/objcopy
|
OBJCOPY = /usr/bin/objcopy
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(ARCH), ia32)
|
||||||
|
ifeq ($(HOSTARCH), x86_64)
|
||||||
|
ARCH3264 = -m32
|
||||||
|
LD3264 = -melf_i386
|
||||||
|
|
||||||
|
GNUEFILIB := /usr/lib32
|
||||||
|
EFILIB := /usr/lib32
|
||||||
|
EFICRT0 := /usr/lib32
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(ARCH),ia64)
|
ifeq ($(ARCH),ia64)
|
||||||
GCC_VERSION=$(shell $(CROSS_COMPILE)$(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' | cut -f1 -d'.')
|
GCC_VERSION=$(shell $(CROSS_COMPILE)$(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' | cut -f1 -d'.')
|
||||||
|
|
||||||
|
|
17
Makefile
17
Makefile
|
@ -25,15 +25,19 @@
|
||||||
# to use this program.
|
# to use this program.
|
||||||
#
|
#
|
||||||
|
|
||||||
include Make.defaults
|
SRCDIR = .
|
||||||
TOPDIR=.
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
|
||||||
|
include $(SRCDIR)/Make.defaults
|
||||||
|
TOPDIR = $(SRCDIR)
|
||||||
|
|
||||||
|
|
||||||
CRTOBJS = $(EFICRT0)/crt0-efi-$(ARCH).o
|
CRTOBJS = $(EFICRT0)/crt0-efi-$(ARCH).o
|
||||||
LDSCRIPT = $(EFICRT0)/elf_$(ARCH)_efi.lds
|
LDSCRIPT = $(EFICRT0)/elf_$(ARCH)_efi.lds
|
||||||
|
|
||||||
LDFLAGS += -T $(LDSCRIPT) -shared -Bsymbolic -L$(EFILIB) -L$(GNUEFILIB) $(CRTOBJS)
|
LDFLAGS += -T $(LDSCRIPT) -shared -Bsymbolic -L$(EFILIB) -L$(GNUEFILIB) $(CRTOBJS)
|
||||||
LOADLIBES = -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name)
|
LOADLIBES = -lefi -lgnuefi $(shell $(CC) $(ARCH3264) -print-libgcc-file-name)
|
||||||
FORMAT = efi-app-$(ARCH)
|
FORMAT = efi-app-$(ARCH)
|
||||||
|
|
||||||
FILESYSTEM =
|
FILESYSTEM =
|
||||||
|
@ -87,12 +91,13 @@ fileops.o : Make.defaults
|
||||||
chooser.o : Make.defaults
|
chooser.o : Make.defaults
|
||||||
|
|
||||||
$(SUBDIRS): dummy
|
$(SUBDIRS): dummy
|
||||||
$(MAKE) -C $@
|
mkdir -p $@
|
||||||
|
$(MAKE) -C $@ -f $(SRCDIR)/../$@/Makefile SRCDIR=$(SRCDIR)/../$@ ARCH=$(ARCH)
|
||||||
|
|
||||||
dummy:
|
dummy:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@set -e ; for d in $(SUBDIRS) ; do $(MAKE) -C $$d $@ ; done
|
@set -e ; for d in $(ALLSUBDIRS) ; do $(MAKE) -C $$d $@ ; done
|
||||||
rm -f $(TARGETS) *~ *.so $(FILES)
|
rm -f $(TARGETS) *~ *.so $(FILES)
|
||||||
|
|
||||||
.PRECIOUS: elilo.so
|
.PRECIOUS: elilo.so
|
||||||
|
@ -106,4 +111,4 @@ ifeq ($(GCC_VERSION),2)
|
||||||
@exit 1
|
@exit 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
include Make.rules
|
include $(SRCDIR)/Make.rules
|
||||||
|
|
|
@ -67,9 +67,6 @@ create_boot_params(CHAR16 *args, memdesc_t *initrd, memdesc_t *vmcode, UINTN *co
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate memory for boot parameters.
|
* Allocate memory for boot parameters.
|
||||||
* This CANNOT be EfiLoaderData or EfiLoaderCode as the kernel
|
|
||||||
* frees this region when initializing.
|
|
||||||
* FIXME: Is this a bug? (since the memory type *is* EfiLoaderData)
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bp = (boot_params_t *)alloc(BOOT_PARAM_MEMSIZE, EfiLoaderData);
|
bp = (boot_params_t *)alloc(BOOT_PARAM_MEMSIZE, EfiLoaderData);
|
||||||
|
|
|
@ -23,10 +23,15 @@
|
||||||
# to use this program.
|
# to use this program.
|
||||||
#
|
#
|
||||||
|
|
||||||
include ../Make.defaults
|
SRCDIR = .
|
||||||
include ../Make.rules
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.defaults
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
|
||||||
|
TOPDIR=$(SRCDIR)/..
|
||||||
|
|
||||||
TOPDIR=$(CDIR)/..
|
|
||||||
|
|
||||||
FILES=
|
FILES=
|
||||||
|
|
||||||
|
@ -47,7 +52,8 @@ $(TARGET): $(TOPDIR)/Make.defaults $(FILES)
|
||||||
echo "You need to define at least one chooser in Make.defaults"; \
|
echo "You need to define at least one chooser in Make.defaults"; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
$(LD) -o $@ -r $(FILES)
|
$(LD) $(LD3264) -o $@ -r $(FILES)
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -f $(TARGET) $(FILES)
|
$(RM) -f $(TARGET) $(FILES)
|
||||||
|
|
|
@ -23,10 +23,15 @@
|
||||||
# to use this program.
|
# to use this program.
|
||||||
#
|
#
|
||||||
|
|
||||||
include ../Make.defaults
|
SRCDIR = .
|
||||||
include ../Make.rules
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.defaults
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
|
||||||
|
TOPDIR=$(SRCDIR)/..
|
||||||
|
|
||||||
TOPDIR=$(CDIR)/..
|
|
||||||
|
|
||||||
FILES=simple.o
|
FILES=simple.o
|
||||||
|
|
||||||
|
@ -40,7 +45,7 @@ all: $(TARGET)
|
||||||
# without doing make clean.
|
# without doing make clean.
|
||||||
#
|
#
|
||||||
$(TARGET): $(FILES)
|
$(TARGET): $(FILES)
|
||||||
$(LD) -r -o $@ $(FILES)
|
$(LD) $(LD3264) -r -o $@ $(FILES)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -f $(TARGET) $(FILES)
|
$(RM) -f $(TARGET) $(FILES)
|
||||||
|
|
522
docs/README.txt
Normal file
522
docs/README.txt
Normal file
|
@ -0,0 +1,522 @@
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
ELILO.EFI: Linux boot loader for
|
||||||
|
EFI/IA-64,EFI/IA-32 and EFI/x86_64 based systems
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
Stephane Eranian <eranian@hpl.hp.com>
|
||||||
|
|
||||||
|
August 2003
|
||||||
|
|
||||||
|
Copyright (C) 2000-2012 Hewlett-Packard Co.
|
||||||
|
Copyright (C) 2006-2010 Intel Co.
|
||||||
|
|
||||||
|
|
||||||
|
I/ Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
This document describes how to use ELILO on for IA-64, IA-32 and x86_64 EFI-based platforms.
|
||||||
|
This document describes ELILO version 3.7 - 3.14.
|
||||||
|
|
||||||
|
II/ Command line options
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
elilo [-hDpPVvaE] [-d nsec] [-C config] [-i initrd] [-c chooser] [kernel [kernel options...]]
|
||||||
|
|
||||||
|
-h Display a list of all possible command line options.
|
||||||
|
|
||||||
|
-V Print the version number and exit.
|
||||||
|
|
||||||
|
-d nsec Specify the number of 10th of seconds before loading the
|
||||||
|
kernel.
|
||||||
|
|
||||||
|
-C file Specify the config file to use. The default is elilo.conf in the directory
|
||||||
|
that elilo.efi was loaded from.
|
||||||
|
|
||||||
|
-P Verify config file syntax only. this option causes ELILO to
|
||||||
|
parse the config file and generate a report on the console.
|
||||||
|
No kernel is loaded.
|
||||||
|
|
||||||
|
-v Turn on verbose mode. ELILO prints more message about what it
|
||||||
|
is doing. For each occurrence of this option the verbosity level
|
||||||
|
is increased by one. The maximum level is 5.
|
||||||
|
|
||||||
|
-a Always check for alternate kernel image. The default behavior
|
||||||
|
of ELILO is to NOT look for an alternate image. This
|
||||||
|
option overrides this behavior and ELILO is checking for
|
||||||
|
alternate images no matter what. Alternate images are
|
||||||
|
specified using the EliloAlt EFI variable.
|
||||||
|
|
||||||
|
-p force interactive prompt mode. Valid when no kernel image is
|
||||||
|
specified on the command line.
|
||||||
|
|
||||||
|
-D print debug output.
|
||||||
|
|
||||||
|
-E don't force EDD30 variable to TRUE when FALSE.
|
||||||
|
|
||||||
|
-i file Use file as the initial ramdisk (initrd).
|
||||||
|
|
||||||
|
-c name Specify which kernel chooser to use. Default is 'simple', and
|
||||||
|
the only other choice at present is 'textmenu'.
|
||||||
|
|
||||||
|
In addition, elilo supports platform specific options:
|
||||||
|
|
||||||
|
For IA-64:
|
||||||
|
----------
|
||||||
|
-r the kernel image can be relocated if initial load address is not
|
||||||
|
available. This options requires a special version of the kernel.
|
||||||
|
|
||||||
|
-F file will try to load the FPSWA driver indicated by 'file'. Only this file
|
||||||
|
will be attempted. When no specific file is given, elilo will try
|
||||||
|
loading \efi\intel firmware\fpswa.efi from all accessible EFI system
|
||||||
|
partitions.
|
||||||
|
For IA-32:
|
||||||
|
----------
|
||||||
|
no option defined.
|
||||||
|
|
||||||
|
All file names (including the kernel file) can include a device name using the
|
||||||
|
following syntax:
|
||||||
|
|
||||||
|
dev_name:/path/to/my/kernel
|
||||||
|
|
||||||
|
The 'dev_name' component depends on the naming scheme selected and the detected
|
||||||
|
devices for your system. Some choosers may print the information automatically
|
||||||
|
or on demand, see chooser specific documentation for more on this. See README.devschemes
|
||||||
|
for more information on device naming schemes. The slash character '/' can be used as
|
||||||
|
a directory separator on any file systems including the EFI file system (FAT32).
|
||||||
|
|
||||||
|
For x86_64:
|
||||||
|
----------
|
||||||
|
none
|
||||||
|
|
||||||
|
III/ Configuration File
|
||||||
|
------------------
|
||||||
|
|
||||||
|
ELILO supports a config file with options similar to the LILO/x86 boot loader.
|
||||||
|
|
||||||
|
Elilo will use the following sequence (shown in order) when looking for its config
|
||||||
|
file when none is specified on the command line:
|
||||||
|
|
||||||
|
1/ AABBCCDD.conf (netbooting with regular DHCP)
|
||||||
|
where AABBCCDD is the hexadecimal representation
|
||||||
|
of the IP address assigned during the DHCP phase.
|
||||||
|
|
||||||
|
2/ elilo-ia64.conf or elilo-ia32.conf or elilo-x86_64.conf
|
||||||
|
The choice depends on the client platform. This step allows
|
||||||
|
the same DHCP/PXE server to provide files for both types of clients.
|
||||||
|
|
||||||
|
3/ elilo.conf
|
||||||
|
|
||||||
|
Unless explicitly specified on the command line, elilo looks for its config file
|
||||||
|
in the filesystem and directory it was loaded from. For instance, if elilo.efi
|
||||||
|
is invoked as:
|
||||||
|
|
||||||
|
fs0:\> \efi\debian\elilo.efi
|
||||||
|
|
||||||
|
Then elilo will look for its configuration file in fs0:\efi\debian and not
|
||||||
|
in the root directory of fs0:. The prefix fs0:\efi\debian will be used for
|
||||||
|
all other files that elilo needs to download when their paths are specified
|
||||||
|
as being relative.
|
||||||
|
|
||||||
|
IMPORTANT:
|
||||||
|
This rule also applies when a specific config file is passed via the -C
|
||||||
|
option. For example:
|
||||||
|
|
||||||
|
fs0:\> \efi\debian\elilo.efi -C elilo.conf
|
||||||
|
|
||||||
|
This will look for elilo.conf in fs0:\efi\debian and not in fs0:\.
|
||||||
|
To get to the elilo.conf in fs0:\, you need to specify the absolute
|
||||||
|
path:
|
||||||
|
|
||||||
|
fs0:\> \efi\debian\elilo.efi -C \elilo.conf
|
||||||
|
|
||||||
|
|
||||||
|
The configuration file is an ASCII file and not a UNICODE file.
|
||||||
|
|
||||||
|
The config file contains additional options to change the behavior of the loader.
|
||||||
|
If the same option is specified in the config file AND on the command line, the
|
||||||
|
latter takes precedence. Not all options available in the config file have an
|
||||||
|
equivalent on command line.
|
||||||
|
|
||||||
|
When elilo is invoked with the -h option, it prints the list of support command line
|
||||||
|
options but also the list of config file options. For each option it also prints
|
||||||
|
the type of data expected.
|
||||||
|
|
||||||
|
The config file options are divided in 2 groups:
|
||||||
|
|
||||||
|
|
||||||
|
- image options which are specific to a particular kernel image. Each kernel image
|
||||||
|
must be identified with a logical name called a label.
|
||||||
|
|
||||||
|
- global options which affect the behavior of ELILO and apply to all images.
|
||||||
|
|
||||||
|
The ELILO config file follows the LILO/x86 syntax. First come the global
|
||||||
|
options, then the list of images and options for each of them, if
|
||||||
|
necessary. At least one image MUST be defined and it is possible to have
|
||||||
|
an empty list of global options.
|
||||||
|
|
||||||
|
Options have types. Three types are defined:
|
||||||
|
- boolean: set or not set
|
||||||
|
- string : a string of characters which can be quoted if necessary
|
||||||
|
- number (in decimal)
|
||||||
|
- filename: a string interpreted as a file name
|
||||||
|
|
||||||
|
|
||||||
|
The config file supports the following options:
|
||||||
|
|
||||||
|
Global Options:
|
||||||
|
---------------
|
||||||
|
default=value Name the default image to boot. If not defined ELILO
|
||||||
|
will boot the first defined image.
|
||||||
|
|
||||||
|
timeout=number The number of 10th of seconds to wait while in
|
||||||
|
interactive mode before auto booting default kernel.
|
||||||
|
Default is infinity.
|
||||||
|
|
||||||
|
delay=number The number of 10th of seconds to wait before
|
||||||
|
auto booting when not in interactive mode.
|
||||||
|
Default is 0.
|
||||||
|
|
||||||
|
prompt Force interactive mode
|
||||||
|
|
||||||
|
verbose=number Set level of verbosity [0-5]. Default 0 (no verbose)
|
||||||
|
|
||||||
|
root=filename Set global root filesystem for Linux/ia64
|
||||||
|
|
||||||
|
read-only Force root filesystem to be mounted read-only
|
||||||
|
|
||||||
|
append=string Append a string of options to kernel command line
|
||||||
|
|
||||||
|
initrd=filename Name of initrd file
|
||||||
|
|
||||||
|
image=filename Define a new image
|
||||||
|
|
||||||
|
chooser=name Specify kernel chooser to use: 'simple' or 'textmenu'.
|
||||||
|
|
||||||
|
message=filename a message that is printed on the main screen if supported by
|
||||||
|
the chooser.
|
||||||
|
|
||||||
|
fX=filename Some choosers may take advantage of this option to
|
||||||
|
display the content of a file when a certain function
|
||||||
|
key X is pressed. X can vary from 1-12 to cover
|
||||||
|
function keys F1 to F12.
|
||||||
|
|
||||||
|
noedd30 do not force the EDD30 EFI variable to TRUE when FALSE. In other
|
||||||
|
words, don't force the EDD30 mode if not set.
|
||||||
|
|
||||||
|
Image options:
|
||||||
|
--------------
|
||||||
|
root=filename Set root filesystem for kernel
|
||||||
|
|
||||||
|
read-only Force root filesystem to be mounted read-only
|
||||||
|
|
||||||
|
append=string Append a string of options to kernel command line
|
||||||
|
|
||||||
|
initrd=filename Name of initrd file
|
||||||
|
|
||||||
|
label=string Logical name of image (used in interactive mode)
|
||||||
|
|
||||||
|
description=string One line text description of the image.
|
||||||
|
|
||||||
|
IA-64 specific options:
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Global options:
|
||||||
|
---------------
|
||||||
|
fpswa=file Specify the filename for a specific FPSWA to load.
|
||||||
|
If this option is used then no other file will be tried.
|
||||||
|
|
||||||
|
relocatable In case of memory allocation error at initial load point of
|
||||||
|
kernel, allow attempt to relocate (assume kernels is relocatable)
|
||||||
|
|
||||||
|
Image options:
|
||||||
|
--------------
|
||||||
|
relocatable In case of memory allocation error at initial load point of
|
||||||
|
kernel, allow attempt to relocate (assume this kernel is relocatable)
|
||||||
|
|
||||||
|
IA-32 specific options:
|
||||||
|
-----------------------
|
||||||
|
legacy-free Indicate that the host machine does not have a legacy BIOS at all.
|
||||||
|
|
||||||
|
|
||||||
|
The user can specify a kernel and related kernel options using the image label. Alternatively,
|
||||||
|
the user can also specify a kernel file that is not specified in the config file. In any case,
|
||||||
|
some of the global options (such as append) are always concatenated to whatever the user type.
|
||||||
|
|
||||||
|
x86_64 specific options:
|
||||||
|
-----------------------
|
||||||
|
text-mode elilo>=3.14 boolean, image config option to force text console mode.
|
||||||
|
|
||||||
|
IV/ Booting from the local system
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
The elilo.efi binary must be in an EFI system partition (FAT32). The config
|
||||||
|
file, kernel image, and optional initrd ramdisk can be on the same partition
|
||||||
|
or even another EFI partition. In the following discussion we assume that all
|
||||||
|
files are on the same EFI partition which is recognized by the EFI shell (nshell)
|
||||||
|
as fs0. The kernel and initrd can be copied from the any linux filesystems to the
|
||||||
|
EFI partition using either the mtools (mcopy) or by mounting the EFI partition as
|
||||||
|
a vfat partition. However you do not really need this because most linux
|
||||||
|
distributions install both files in the EFI partition and mount this partition in /boot/efi.
|
||||||
|
|
||||||
|
To boot a kernel, simply power cycle the machine. Once you get to the EFI
|
||||||
|
shell prompt, change to the filesystem that maps to the partition where elilo is.
|
||||||
|
|
||||||
|
Shell> fs0:
|
||||||
|
fs0:\>
|
||||||
|
|
||||||
|
You might need to make sure that the Shell Path is set such that it will load
|
||||||
|
ELILO from fs0:. You can verify this by typing:
|
||||||
|
fs0:\> set
|
||||||
|
path : fs0:\
|
||||||
|
|
||||||
|
At this point you can invoke ELILO:
|
||||||
|
|
||||||
|
fs0:\> elilo
|
||||||
|
|
||||||
|
If there is no config file, then it will:
|
||||||
|
- pick up the kernel image named vmlinux if it exists, otherwise it will abort.
|
||||||
|
- pass no argument to the kernel.
|
||||||
|
|
||||||
|
You can specify the kernel image and its options on the command line.
|
||||||
|
For instance you can do:
|
||||||
|
|
||||||
|
fs0:\> elilo vmlinux root=/dev/sda5
|
||||||
|
|
||||||
|
You can specify as many parameters as you want. The syntax follows the kernel
|
||||||
|
rule, i.e., list of value pairs (or even single values) separated by space.
|
||||||
|
A more complicated example would be:
|
||||||
|
|
||||||
|
fs0:\> elilo -i initrd-2.4.9 vmlinuz-2.4.9 root=/dev/sda2 console=tty0 console="ttyS0,115200n8"
|
||||||
|
|
||||||
|
In this example, notice the double quotes. They are required because the comma is a control
|
||||||
|
character for nshell.
|
||||||
|
|
||||||
|
In the case a config file is found, then elilo will behave according to
|
||||||
|
the options in that file. However if elilo is invoked with command line options, they
|
||||||
|
will be combined or they will override (if conflicting) what is defined in the config file.
|
||||||
|
|
||||||
|
As of version 3.3, elilo is fully compliant with the EFI specification (1.10) with regards
|
||||||
|
to where the bootloader (elilo.efi) must be located in the EFI system partition. In
|
||||||
|
section 11.2.1.3 of the EFI1.10 specification, it is said that in order to avoid conflicts
|
||||||
|
between various loaders for various OSes or distributions of the same OS, every vendor MUST
|
||||||
|
use a dedicated directory: \EFI\vendor\. The bootloader must be placed in this directory.
|
||||||
|
This has always been possible as this is a matter of creating the directory and copying
|
||||||
|
the elilo.efi file in it. However up until version 3.3, elilo would look for its config file
|
||||||
|
and kernel/initrd in the root (/) of the partition it was loaded from. As of version 3.3,
|
||||||
|
elilo will now ONLY look for its configuration file FROM THE DIRECTORY IT WAS LOADED FROM.
|
||||||
|
The same applies to the kernel and initrd files unless absolute paths are specified. Let us
|
||||||
|
look at a simple example:
|
||||||
|
|
||||||
|
- suppose elilo.efi is in \EFI\DIST if fs0: (for the EFI Shell)
|
||||||
|
|
||||||
|
- if you invoke elilo as follows:
|
||||||
|
|
||||||
|
fs0:\> \efi\dist\elilo -v -p
|
||||||
|
default file path: \efi\dist\
|
||||||
|
config file : \efi\dist\elilo.conf
|
||||||
|
ELILO boot:
|
||||||
|
|
||||||
|
|
||||||
|
Note that this is the same if you invoke elilo directly from \efi or \efi\dist.
|
||||||
|
|
||||||
|
File references in the configuration file are treated as relative to the directory
|
||||||
|
elilo was loaded from except if they use an absolute path.
|
||||||
|
|
||||||
|
As of version 3.4 a similar rule applies to the network boot sequence, see netbooting.txt
|
||||||
|
for details.
|
||||||
|
|
||||||
|
V/ Interactive mode
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Elilo can be forced into interactive mode using the "prompt" option in the config
|
||||||
|
file or with the -p option. In this mode, the user can select a kernel to load.
|
||||||
|
|
||||||
|
The interface depends on the chooser, it may be a simple command line prompt as provided
|
||||||
|
by the simple chooser or a more sophisticated screen with scroll menus as provided by
|
||||||
|
textmenu. Most choosers depends on the elilo config file to get the information they
|
||||||
|
display. The simple chooser can operated without the elilo config file. However it
|
||||||
|
is always better to have this file, to create handy logical names for each possible
|
||||||
|
boot choices. The logical names are specified with the "label" option in the config
|
||||||
|
file. They represent a specific kernel "image" and its specific options.
|
||||||
|
|
||||||
|
In elilo, the user can select a particular kernel image using the corresponding label
|
||||||
|
name. A simple example is as follows:
|
||||||
|
|
||||||
|
If we suppose that the following is defined in elilo.conf:
|
||||||
|
|
||||||
|
image=vmlinuz-2.4.9
|
||||||
|
label=linux-up
|
||||||
|
initrd=initrd-2.4.9
|
||||||
|
root=/dev/sda2
|
||||||
|
append="console=tty0 console=ttyS0,115200n8"
|
||||||
|
|
||||||
|
then the user can specify linux-up at the prompt and elilo will load the
|
||||||
|
vmlinuz-2.4.9 kernel file and the initrd-2.4.9 ramdisk and will pass
|
||||||
|
|
||||||
|
"root=/dev/sda2 console=tty0 console=ttyS0,115200n8"
|
||||||
|
|
||||||
|
as command line arguments to the kernel.
|
||||||
|
|
||||||
|
This behavior is identical to Lilo/x86. However, elilo further allows the user
|
||||||
|
to specify actual kernel files names as well, i.e., kernels that are not defined
|
||||||
|
in the configuration file. If we reuse the above example and the simple chooser,
|
||||||
|
the user can type:
|
||||||
|
|
||||||
|
ELILO boot: vmlinux-2.4.18 root=/dev/sda2
|
||||||
|
|
||||||
|
and elilo will boot the vmlinuz-2.4.18 kernel if it exists.
|
||||||
|
|
||||||
|
VI/ The alternate kernel image
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Oftentimes when debugging kernels you want to reboot the machine once with
|
||||||
|
your test kernel and, if something goes wrong, you want to fall back to a more
|
||||||
|
stable kernel. In addition you want to be able to do this from a remote machine.
|
||||||
|
Many things can go wrong when doing kernel debugging. It could be that you don't
|
||||||
|
even reach user-mode. In this case however, you still want to fall back to
|
||||||
|
a stable kernel. The feature you'd like from a boot loader is 'boot once and
|
||||||
|
then fall back to safe kernel'.
|
||||||
|
|
||||||
|
Elilo offers this feature and it's called 'alternate kernel image'.
|
||||||
|
You can configure elilo to load a kernel only once and then whatever
|
||||||
|
happens the next reboot falls back to a different kernel hopefully more stable.
|
||||||
|
|
||||||
|
To do this, elilo relies on an EFI variable called 'EliloAlt' with a NULL GUID.
|
||||||
|
The content of this variable is a UNICODE string containing the kernel file name
|
||||||
|
and its command line options.
|
||||||
|
|
||||||
|
When the -a option is specified on the command line or if the "checkalt" option
|
||||||
|
is present in the config file, elilo will check for the presence of this variable.
|
||||||
|
If found and the content is a valid UNICODE string, elilo will use it as the kernel
|
||||||
|
to boot. There is no verification made on the validity of the kernel name or options.
|
||||||
|
Then the variable is deleted. If the variable is rejected because it does not look
|
||||||
|
sane, it is also deleted.
|
||||||
|
|
||||||
|
The variable can be set from a running Linux system using the /proc/efi/vars
|
||||||
|
interface. In the tools directory of this package, there is a Linux tool called
|
||||||
|
elilovar which can be used to create, modify, print, and delete the EliloAlt
|
||||||
|
variable. Refer to eliloalt.txt for more information on this tool.
|
||||||
|
|
||||||
|
VII/ Auto booting the machine
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Once you're satisfied with your machine setup, it is good to install an
|
||||||
|
auto boot procedure. You have two options to do this:
|
||||||
|
- from the EFI boot manager menu
|
||||||
|
- from the EFI shell
|
||||||
|
|
||||||
|
The first option is preferred and is used by most Linux distributions.
|
||||||
|
Elilo can be invoked directly from the boot manager. You need to get into
|
||||||
|
the 'boot maintenance' menu and use load file a file. This can be tedious
|
||||||
|
so instead it is recommended that you use a Linux tool called efibootmgr
|
||||||
|
which is also shipped in most distributions. With this tool, you can
|
||||||
|
create your own boot option and change the boot order.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The second approach use the EFI shell and a shell script with a special name: 'startup.nsh'.
|
||||||
|
|
||||||
|
When the system boots, it looks for EFI partitions and if it finds
|
||||||
|
a 'startup.nsh' file in ANY of these it will jumpstart execution from it.
|
||||||
|
|
||||||
|
So the typical way of auto booting your Linux/ia64 system is to simply create
|
||||||
|
such a file with the following content:
|
||||||
|
|
||||||
|
# cat /boot/startup.nsh
|
||||||
|
elilo vmlinuz root=/dev/sda2
|
||||||
|
|
||||||
|
Of course, this can be simplified if there is a configuration file.
|
||||||
|
|
||||||
|
|
||||||
|
VII/ Netbooting
|
||||||
|
----------
|
||||||
|
|
||||||
|
Please refer to netbooting.txt for a complete description of how to boot
|
||||||
|
from the network.
|
||||||
|
|
||||||
|
|
||||||
|
XII/ Booting on EFI/ia32 platforms
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
Until PC comes with the EFI firmware built in, you need to boot from a
|
||||||
|
floppy that has the EFI firmware on it. Such floppy can be
|
||||||
|
constructed from the EFI sample implementation and toolkit that is
|
||||||
|
available from the Intel Developer Web site at:
|
||||||
|
|
||||||
|
http://developer.intel.com/technology/efi/
|
||||||
|
|
||||||
|
To use elilo on IA-32, you can put it on a floppy and
|
||||||
|
on a FAT32 partition (msdos partition). You can also
|
||||||
|
netbooting if you network adapter has support for UNDI/PXE.
|
||||||
|
|
||||||
|
Elilo/ia32 is capable of booting unmodified 2.2.x. and 2.4.x kernels
|
||||||
|
as they are shipped by distributors today (such as Redhat7.2). You don't need
|
||||||
|
to recompile the kernel with special options. Elilo ONLY takes compressed kernel
|
||||||
|
image which are typically obtained via a 'make bzImage'. Plain elf/32 kernel can't
|
||||||
|
be booted (plain vmlinux will not work). Similarly, existing initial ramdisks can
|
||||||
|
be used without modifications.
|
||||||
|
|
||||||
|
XIII/ 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. Elilo ONLY takes compressed kernel image which are
|
||||||
|
typically obtained via a 'make bzImage'. Plain elf/x86_64 kernel can't
|
||||||
|
be booted (plain vmlinux will not work). Similarly, existing initial
|
||||||
|
ramdisks can be used without modifications.
|
||||||
|
|
||||||
|
The x86_64 implementation converts the EFI memory map into E820 map and
|
||||||
|
passes it in the bootparameter supplied to the OS. For details on
|
||||||
|
bootparameter, see x86_64/sysdeps.h.
|
||||||
|
|
||||||
|
IX/ Credits
|
||||||
|
-------
|
||||||
|
|
||||||
|
Contributors:
|
||||||
|
Intel Corp.
|
||||||
|
Stephane Eranian <eranian@hpl.hp.com>
|
||||||
|
David Mosberger <davidm@hpl.hp.com>
|
||||||
|
Johannes Erdfelt <jerdfelt@valinux.com>
|
||||||
|
Richard Hirst <rhirst@linuxcare.com>
|
||||||
|
Chris Ahna <christopher.j.ahna@intel.com>
|
||||||
|
Mike Johnston <michael.johnston@intel.com>
|
||||||
|
Fenghua Yu <fenghua.yu@intel.com>
|
||||||
|
Bibo Mao <bibo.mao@intel.com>
|
||||||
|
Brett Johnson <brett@hp.com>
|
||||||
|
Jason Fleischli <Jason.Fleischli@hp.com>
|
||||||
|
Chandramouli Narayanan <mouli@linux.intel.com>
|
||||||
|
|
||||||
|
Maintainers:
|
||||||
|
Jason Fleischli <Jason.Fleischli@hp.com>
|
||||||
|
|
||||||
|
X/ Bug reports
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Use the sourceforge bug submission system on the elilo sourceforge
|
||||||
|
project page for reporting including errors or descrepancies in this
|
||||||
|
document.
|
||||||
|
|
||||||
|
XIII/ Reference
|
||||||
|
---------
|
||||||
|
|
||||||
|
UEFI 2.0 specifications are available from the following web site:
|
||||||
|
|
||||||
|
http://www.uefi.org/home
|
||||||
|
|
||||||
|
EFI v1.02 specifications are available from the following web site:
|
||||||
|
|
||||||
|
http://developer.intel.com/technology/efi/
|
||||||
|
|
||||||
|
The latest sources of ELILO can be downloaded at:
|
||||||
|
|
||||||
|
https://sourceforge.net/projects/elilo/files/
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
August 2003
|
August 2003
|
||||||
|
|
||||||
Copyright (C) 2000-2003 Hewlett-Packard Co.
|
Copyright (C) 2000-2012 Hewlett-Packard Co.
|
||||||
Copyright (C) 2006-2010 Intel Co.
|
Copyright (C) 2006-2010 Intel Co.
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ I/ Introduction
|
||||||
------------
|
------------
|
||||||
|
|
||||||
This document describes how to use ELILO on for IA-64, IA-32 and x86_64 EFI-based platforms.
|
This document describes how to use ELILO on for IA-64, IA-32 and x86_64 EFI-based platforms.
|
||||||
This document describes ELILO version 3.7.
|
This document describes ELILO version 3.7 - 3.14.
|
||||||
|
|
||||||
II/ Command line options
|
II/ Command line options
|
||||||
--------------------
|
--------------------
|
||||||
|
@ -85,7 +85,7 @@ II/ Command line options
|
||||||
|
|
||||||
For x86_64:
|
For x86_64:
|
||||||
----------
|
----------
|
||||||
No new options.
|
none
|
||||||
|
|
||||||
III/ Configuration File
|
III/ Configuration File
|
||||||
------------------
|
------------------
|
||||||
|
@ -243,7 +243,7 @@ III/ Configuration File
|
||||||
|
|
||||||
x86_64 specific options:
|
x86_64 specific options:
|
||||||
-----------------------
|
-----------------------
|
||||||
None yet.
|
text-mode elilo>=3.14 boolean, image config option to force text console mode.
|
||||||
|
|
||||||
IV/ Booting from the local system
|
IV/ Booting from the local system
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
@ -481,6 +481,7 @@ XIII/ Booting on EFI/x86_64 platforms
|
||||||
IX/ Credits
|
IX/ Credits
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
Contributors:
|
||||||
Intel Corp.
|
Intel Corp.
|
||||||
Stephane Eranian <eranian@hpl.hp.com>
|
Stephane Eranian <eranian@hpl.hp.com>
|
||||||
David Mosberger <davidm@hpl.hp.com>
|
David Mosberger <davidm@hpl.hp.com>
|
||||||
|
@ -490,14 +491,19 @@ IX/ Credits
|
||||||
Mike Johnston <michael.johnston@intel.com>
|
Mike Johnston <michael.johnston@intel.com>
|
||||||
Fenghua Yu <fenghua.yu@intel.com>
|
Fenghua Yu <fenghua.yu@intel.com>
|
||||||
Bibo Mao <bibo.mao@intel.com>
|
Bibo Mao <bibo.mao@intel.com>
|
||||||
|
Brett Johnson <brett@hp.com>
|
||||||
|
Jason Fleischli <Jason.Fleischli@hp.com>
|
||||||
Chandramouli Narayanan <mouli@linux.intel.com>
|
Chandramouli Narayanan <mouli@linux.intel.com>
|
||||||
|
|
||||||
|
Maintainers:
|
||||||
|
Jason Fleischli <Jason.Fleischli@hp.com>
|
||||||
|
|
||||||
X/ Bug reports
|
X/ Bug reports
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
You can submit bugs to <eranian@hpl.hp.com> or to the Linux/ia64
|
Use the sourceforge bug submission system on the elilo sourceforge
|
||||||
mailing list at linux-ia64@linuxia64.org. Visit http://www.linuxia64.org
|
project page for reporting including errors or descrepancies in this
|
||||||
to subscribe to this list.
|
document.
|
||||||
|
|
||||||
XIII/ Reference
|
XIII/ Reference
|
||||||
---------
|
---------
|
||||||
|
@ -512,5 +518,5 @@ XIII/ Reference
|
||||||
|
|
||||||
The latest sources of ELILO can be downloaded at:
|
The latest sources of ELILO can be downloaded at:
|
||||||
|
|
||||||
ftp://ftp.hpl.hp.com/pub/linux-ia64
|
https://sourceforge.net/projects/elilo/files/
|
||||||
|
|
||||||
|
|
BIN
elilo-ia32.efi
BIN
elilo-ia32.efi
Binary file not shown.
BIN
elilo-ia64.efi
BIN
elilo-ia64.efi
Binary file not shown.
BIN
elilo-x86_64.efi
BIN
elilo-x86_64.efi
Binary file not shown.
11
elilo.c
11
elilo.c
|
@ -46,7 +46,7 @@
|
||||||
#include "loader.h"
|
#include "loader.h"
|
||||||
#include "config.h" /* for config_init() */
|
#include "config.h" /* for config_init() */
|
||||||
|
|
||||||
#define ELILO_SHARED_CMDLINE_OPTS L"pPMC:aDhd:i:vVc:E"
|
#define ELILO_SHARED_CMDLINE_OPTS L"pPMC:aDhd:i:m:vVc:E"
|
||||||
|
|
||||||
elilo_config_t elilo_opt;
|
elilo_config_t elilo_opt;
|
||||||
|
|
||||||
|
@ -240,7 +240,7 @@ main_loop(EFI_HANDLE dev, CHAR16 **argv, INTN argc, INTN index, EFI_HANDLE image
|
||||||
}
|
}
|
||||||
|
|
||||||
do_launch:
|
do_launch:
|
||||||
r =subst_vars(cmdline_tmp, cmdline, CMDLINE_MAXLEN);
|
r = subst_vars(cmdline_tmp, cmdline, CMDLINE_MAXLEN);
|
||||||
|
|
||||||
VERB_PRT(3, Print(L"final cmdline(%d): %s\n", r, cmdline));
|
VERB_PRT(3, Print(L"final cmdline(%d): %s\n", r, cmdline));
|
||||||
|
|
||||||
|
@ -481,7 +481,12 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *system_tab)
|
||||||
* mode.
|
* mode.
|
||||||
* XXX: clean this up !
|
* XXX: clean this up !
|
||||||
*/
|
*/
|
||||||
uefi_call_wrapper(BS->SetWatchdogTimer, 4, 0, 0x0, 0, NULL);
|
uefi_call_wrapper(BS->SetWatchdogTimer, 4, 0, 0x0, 0, NULL);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* start a clean console
|
||||||
|
*/
|
||||||
|
uefi_call_wrapper(systab->ConOut->Reset, 2, systab->ConOut, FALSE);
|
||||||
|
|
||||||
/* initialize memory allocator */
|
/* initialize memory allocator */
|
||||||
if (alloc_init() == -1) return EFI_LOAD_ERROR;
|
if (alloc_init() == -1) return EFI_LOAD_ERROR;
|
||||||
|
|
2
elilo.h
2
elilo.h
|
@ -29,7 +29,7 @@
|
||||||
#ifndef __ELILO_H__
|
#ifndef __ELILO_H__
|
||||||
#define __ELILO_H__
|
#define __ELILO_H__
|
||||||
|
|
||||||
#define ELILO_VERSION L"3.14"
|
#define ELILO_VERSION L"3.16"
|
||||||
|
|
||||||
#include <efi.h>
|
#include <efi.h>
|
||||||
|
|
||||||
|
|
13
fs/Makefile
13
fs/Makefile
|
@ -23,10 +23,15 @@
|
||||||
# to use this program.
|
# to use this program.
|
||||||
#
|
#
|
||||||
|
|
||||||
include ../Make.defaults
|
SRCDIR = .
|
||||||
include ../Make.rules
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.defaults
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
|
||||||
|
TOPDIR=$(SRCDIR)/..
|
||||||
|
|
||||||
TOPDIR=$(CDIR)/..
|
|
||||||
|
|
||||||
FILES=
|
FILES=
|
||||||
ifeq ($(CONFIG_localfs),y)
|
ifeq ($(CONFIG_localfs),y)
|
||||||
|
@ -59,7 +64,7 @@ $(TARGET): $(TOPDIR)/Make.defaults $(FILES)
|
||||||
echo "You need to define at least one filesystem in Make.defaults"; \
|
echo "You need to define at least one filesystem in Make.defaults"; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
$(LD) -r -o $@ $(FILES)
|
$(LD) $(LD3264) -r -o $@ $(FILES)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -f $(TARGET) $(FILES)
|
$(RM) -f $(TARGET) $(FILES)
|
||||||
|
|
|
@ -23,10 +23,15 @@
|
||||||
# to use this program.
|
# to use this program.
|
||||||
#
|
#
|
||||||
|
|
||||||
include ../Make.defaults
|
SRCDIR = .
|
||||||
include ../Make.rules
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.defaults
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
|
||||||
|
TOPDIR=$(SRCDIR)/..
|
||||||
|
|
||||||
TOPDIR=$(CDIR)/..
|
|
||||||
|
|
||||||
FILES=system.o config.o bzimage.o plain_loader.o gzip_loader.o gzip.o
|
FILES=system.o config.o bzimage.o plain_loader.o gzip_loader.o gzip.o
|
||||||
|
|
||||||
|
@ -37,13 +42,13 @@ all: $(TARGET)
|
||||||
system.o: rmswitch.h
|
system.o: rmswitch.h
|
||||||
|
|
||||||
rmswitch.h: bin_to_h.c rmswitch.S
|
rmswitch.h: bin_to_h.c rmswitch.S
|
||||||
$(CC) -o bin_to_h bin_to_h.c
|
$(CC) -o bin_to_h $(SRCDIR)/bin_to_h.c
|
||||||
$(AS) -o rmswitch.o rmswitch.S
|
$(AS) -o rmswitch.o $(SRCDIR)/rmswitch.S
|
||||||
$(LD) -Ttext 0x0 -s --oformat binary -o rmswitch rmswitch.o
|
$(LD) -Ttext 0x0 -s --oformat binary -o rmswitch rmswitch.o
|
||||||
./bin_to_h <rmswitch >rmswitch.h
|
./bin_to_h <rmswitch >rmswitch.h
|
||||||
|
|
||||||
$(TARGET): $(FILES)
|
$(TARGET): $(FILES)
|
||||||
$(LD) -r -o $@ $(FILES)
|
$(LD) $(LD3264) -r -o $@ $(FILES)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -f $(TARGET) $(FILES)
|
$(RM) -f $(TARGET) $(FILES)
|
||||||
|
|
|
@ -207,19 +207,8 @@ static INTN get_video_info(boot_params_t * bp) {
|
||||||
(VOID **)Gop_handle);
|
(VOID **)Gop_handle);
|
||||||
|
|
||||||
if (EFI_ERROR(efi_status) && efi_status != EFI_BUFFER_TOO_SMALL) {
|
if (EFI_ERROR(efi_status) && efi_status != EFI_BUFFER_TOO_SMALL) {
|
||||||
Print(L"LocateHandle GopProtocol failed.\n");
|
Print(L"EFI returned no GoP handle, No Graphics Output Device?\n");
|
||||||
Print(L"--Either no graphics head is installed,\n" \
|
Print(L"--Elilo will try to default to console text mode.\n");
|
||||||
"--efi console is set to serial, or,\n" \
|
|
||||||
"--the EFI firmware version of this machine is\n" \
|
|
||||||
"--older than UEFI 2.0. and does not support GOP");
|
|
||||||
Print(L"you can SAFELY IGNORE this error. elilo will\n" \
|
|
||||||
"default to text-mode.\n Alternatively you can " \
|
|
||||||
"now force text mode by setting config variable\n" \
|
|
||||||
"text_mode=1 for x86 in elilo.conf or via cmdline.\n\n");
|
|
||||||
Print(L"However if this is the last text output you see\n" \
|
|
||||||
"ensure that your kernel console command line\n " \
|
|
||||||
"variable matches up with the actual efi boot menu\n" \
|
|
||||||
"console output settings. for example efi console\n\n");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
Gop_handle = alloc(size, 0);
|
Gop_handle = alloc(size, 0);
|
||||||
|
@ -488,9 +477,6 @@ sysdeps_create_boot_params(
|
||||||
*/
|
*/
|
||||||
if (param_start != NULL) {
|
if (param_start != NULL) {
|
||||||
CopyMem(bp, param_start, 0x2000);
|
CopyMem(bp, param_start, 0x2000);
|
||||||
free(param_start);
|
|
||||||
param_start = NULL;
|
|
||||||
param_size = 0;
|
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Save off our header revision information.
|
* Save off our header revision information.
|
||||||
|
|
|
@ -23,10 +23,15 @@
|
||||||
# to use this program.
|
# to use this program.
|
||||||
#
|
#
|
||||||
|
|
||||||
include ../Make.defaults
|
SRCDIR = .
|
||||||
include ../Make.rules
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.defaults
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
|
||||||
|
TOPDIR=$(SRCDIR)/..
|
||||||
|
|
||||||
TOPDIR=$(CDIR)/..
|
|
||||||
|
|
||||||
FILES=system.o config.o fpswa.o plain_loader.o gzip_loader.o \
|
FILES=system.o config.o fpswa.o plain_loader.o gzip_loader.o \
|
||||||
gzip.o memset.o memcpy.o setjmp.o longjmp.o
|
gzip.o memset.o memcpy.o setjmp.o longjmp.o
|
||||||
|
|
|
@ -1,44 +1,47 @@
|
||||||
3 . 1 4 R E L E A S E N O T E S
|
3 . 1 6 R E L E A S E N O T E S
|
||||||
===================================
|
===================================
|
||||||
|
|
||||||
QUICK CHANGE SUMMARY
|
QUICK CHANGE SUMMARY
|
||||||
====================
|
====================
|
||||||
* Fixes for newly emerging x86_64 UEFI-2 boxes where long standing old
|
* Adds native x86x crossbuild functionality
|
||||||
assumptions are borked.
|
build 32bit or 64bit versions from either environment via
|
||||||
* Uptake of SUSE and community patches
|
make ARCH=ia32|x86_64 (the ARCH IS case sensitive).
|
||||||
- add sysfs support for efi vars (formerly /proc/efi/vars)
|
make by itself will default to the native host arch.
|
||||||
- fix strncpy overflow
|
* Add console reset call during initialization. thanks A. Steinmetz
|
||||||
- fix bzimage alloc
|
* simplify output of no GOP warning text so it no longer looks like an error.
|
||||||
- cleanups
|
* MAJOR: Fixed Fault crash when EFI memory map changes from under elilo.
|
||||||
- support longer command line
|
(from an outside interrupt in this case). When the EFI Memory map
|
||||||
- yet some more mac fixes
|
changes after elilo has already built boot params to pass to the
|
||||||
- align elilo with latest kernel boot protocol format.
|
kernel the EFI call to ExitBootSvcs just prior to boot will fail
|
||||||
- new memory management strategy for initrd and kernel image loading.
|
because elilo has the old map key. This is valid EFI behavior, elilo
|
||||||
* add text-mode command line option, force text-mode (bypass graphics probes).
|
retries to pick up the new memory map and key but had already freed
|
||||||
* replace error output on GOP handle failed, downgraded to normal
|
the start params portion of boot params resulting in a NULL DEREF
|
||||||
print status with more informative output.
|
crash reset once it hands the now bogus boot params to the kernel on
|
||||||
* Fix ia32 build issue with new gcc due to stack protector enforcement.
|
the 2nd successful call to exit efi and boot.
|
||||||
|
Thanks to Jerry Hoemann @ HP for reporting this bug.
|
||||||
|
* minor bugfix, fixed -m option broken. thanks Allan-lsk.
|
||||||
|
|
||||||
BUILD NOTES
|
BUILD NOTES
|
||||||
====================
|
====================
|
||||||
You will need the following toolchain to build elilo-3.14 from source
|
You will need the following toolchain to build elilo-3.14 from source
|
||||||
the elilo build environment is optimized for Debian and Debian based distros.
|
the elilo build environment is optimized for Debian and Debian based distros.
|
||||||
elilo-3.14 was built in the Debian Lenny (Ubuntu 10.04) build environment.
|
elilo-3.16 was built in the squeeze+(ubuntu 11.x) build environments except
|
||||||
|
for itanium which is unchanged to best support legacy enterprise configs.
|
||||||
Toolchain versions for this release were:
|
Toolchain versions for this release were:
|
||||||
x86x(32 &64)
|
x86x(32 & 64bit versions)
|
||||||
* gnu-efi --> 3.0i-2ubuntu1
|
* gnu-efi --> 3.0i-3
|
||||||
* gcc ------> 4.4.3-1ubuntu1
|
* gcc ------> 4:4.4.4-1ubuntu2
|
||||||
* binutils -> 2.20.1-3ubuntu7
|
* binutils -> 2.20.51.20100908-0ubuntu2
|
||||||
ia64
|
ia64
|
||||||
* gnu-efi --> 3.0e-2
|
* gnu-efi --> 3.0e-2
|
||||||
* gcc ------> 4.3.2-2
|
* gcc ------> 4.3.2-2
|
||||||
* binutils -> 2.18.1~cvs20080103-7
|
* binutils -> 2.18.1~cvs20080103-7
|
||||||
|
|
||||||
* if you use a debian based (lenny)build environment you will have no problems
|
* if you use a debian based build environment you will have no problems
|
||||||
and setting it up is simple. you will be able to build elilo in 3 steps:
|
and setting it up is simple. you will be able to build elilo in 3 steps:
|
||||||
1. apt-get install gnu-efi, gcc, binutils
|
1. apt-get install gnu-efi, gcc, binutils
|
||||||
2. apt-get source elilo (or download elilo-3.14.tar.gz from SourceForge.)
|
2. apt-get source elilo (or download elilo-3.16 source from SourceForge.)
|
||||||
3. extract source tarball and cd ./elilo-3.14 and type $> make
|
3. extract source tarball and cd to ./$your-elilo-source and type $> make
|
||||||
|
|
||||||
|
|
||||||
** If you use the upstream toolchain tarballs(i.e. pre distro) you will need
|
** If you use the upstream toolchain tarballs(i.e. pre distro) you will need
|
||||||
|
@ -113,3 +116,4 @@ Additionally from ...kernel-source/Documentation/Boot.txt...
|
||||||
description="Ubuntu 2.6.32-27-generic kernel"
|
description="Ubuntu 2.6.32-27-generic kernel"
|
||||||
initrd=/initrd.img-2.6.32-27-generic
|
initrd=/initrd.img-2.6.32-27-generic
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,15 @@
|
||||||
# to use this program.
|
# to use this program.
|
||||||
#
|
#
|
||||||
|
|
||||||
include ../Make.defaults
|
SRCDIR = .
|
||||||
include ../Make.rules
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.defaults
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
|
||||||
|
TOPDIR=$(SRCDIR)/..
|
||||||
|
|
||||||
TOPDIR=$(CDIR)/..
|
|
||||||
|
|
||||||
FILES=eliloalt.o
|
FILES=eliloalt.o
|
||||||
TARGET=eliloalt
|
TARGET=eliloalt
|
||||||
|
|
|
@ -23,10 +23,15 @@
|
||||||
# to use this program.
|
# to use this program.
|
||||||
#
|
#
|
||||||
|
|
||||||
include ../Make.defaults
|
SRCDIR = .
|
||||||
include ../Make.rules
|
|
||||||
|
VPATH = $(SRCDIR)
|
||||||
|
|
||||||
|
include $(SRCDIR)/../Make.defaults
|
||||||
|
include $(SRCDIR)/../Make.rules
|
||||||
|
|
||||||
|
TOPDIR=$(SRCDIR)/..
|
||||||
|
|
||||||
TOPDIR=$(CDIR)/..
|
|
||||||
|
|
||||||
FILES=system.o config.o bzimage.o plain_loader.o gzip_loader.o gzip.o
|
FILES=system.o config.o bzimage.o plain_loader.o gzip_loader.o gzip.o
|
||||||
#FILES=system.o config.o plain_loader.o
|
#FILES=system.o config.o plain_loader.o
|
||||||
|
@ -38,13 +43,13 @@ all: $(TARGET)
|
||||||
system.o: rmswitch.h
|
system.o: rmswitch.h
|
||||||
|
|
||||||
rmswitch.h: bin_to_h.c rmswitch.S
|
rmswitch.h: bin_to_h.c rmswitch.S
|
||||||
$(CC) -o bin_to_h bin_to_h.c
|
$(CC) -o bin_to_h $(SRCDIR)/bin_to_h.c
|
||||||
$(AS) -o rmswitch.o rmswitch.S
|
$(AS) -o rmswitch.o $(SRCDIR)/rmswitch.S
|
||||||
$(LD) -Ttext 0x0 -s --oformat binary -o rmswitch rmswitch.o
|
$(LD) -Ttext 0x0 -s --oformat binary -o rmswitch rmswitch.o
|
||||||
./bin_to_h <rmswitch >rmswitch.h
|
./bin_to_h <rmswitch >rmswitch.h
|
||||||
|
|
||||||
$(TARGET): $(FILES)
|
$(TARGET): $(FILES)
|
||||||
$(LD) -r -o $@ $(FILES)
|
$(LD) $(LD3264) -r -o $@ $(FILES)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) -f $(TARGET) $(FILES)
|
$(RM) -f $(TARGET) $(FILES)
|
||||||
|
|
|
@ -641,10 +641,8 @@ sysdeps_create_boot_params(
|
||||||
*/
|
*/
|
||||||
if (param_start != NULL) {
|
if (param_start != NULL) {
|
||||||
CopyMem(bp, param_start, 0x2000);
|
CopyMem(bp, param_start, 0x2000);
|
||||||
free(param_start);
|
|
||||||
param_start = NULL;
|
|
||||||
param_size = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Save off our header revision information.
|
* Save off our header revision information.
|
||||||
*/
|
*/
|
||||||
|
@ -703,10 +701,8 @@ sysdeps_create_boot_params(
|
||||||
DBG_PRT((L"initrd->start_addr="PTR_FMT" initrd->pgcnt=%d\n",
|
DBG_PRT((L"initrd->start_addr="PTR_FMT" initrd->pgcnt=%d\n",
|
||||||
initrd->start_addr, initrd->pgcnt));
|
initrd->start_addr, initrd->pgcnt));
|
||||||
|
|
||||||
/* These RAMdisk flags are not needed, just zero them. NOT!*/
|
|
||||||
/* 'ramdisk_flags' (@0x1F8) is called 'ram_size' in the meantime, */
|
/* 'ramdisk_flags' (@0x1F8) is called 'ram_size' in the meantime, */
|
||||||
/* see Documentation/x86/boot.txt. */
|
/* see Documentation/x86/boot.txt. */
|
||||||
|
|
||||||
if (initrd->start_addr && initrd->pgcnt) {
|
if (initrd->start_addr && initrd->pgcnt) {
|
||||||
if ( (UINT64)initrd->start_addr > UINT32_MAX ) {
|
if ( (UINT64)initrd->start_addr > UINT32_MAX ) {
|
||||||
ERR_PRT((L"Start of initrd out of reach (>4GB)."));
|
ERR_PRT((L"Start of initrd out of reach (>4GB)."));
|
||||||
|
|
Loading…
Reference in a new issue