install this from a package called "gnu-efi"; however, rEFInd relies on
features that were added in (I think) 3.0l to provide driver-loading
capabilities. The versions I've used and that work are 3.0p, 3.0q,
- 3.0r, and 3.0s, with the caveat that 3.0s works when I installed it via
- a Gentoo package, but not when I installed it by compiling the source
- code locally. Through mid-to-late 2012, most Linux distributions
- delivered rather elderly versions of GNU-EFI, but many are catching up
- by late 2012. You should check your GNU-EFI version number; you may
- need to download the latest source code, compile it, and install it
- locally. Between rEFInd version 0.2.7 and 0.6.1, the Makefiles assumed
- a locally-compiled GNU-EFI package, but older and more recent versions
- assume GNU-EFI installation in typical locations for
- distribution-provided packages. The legacy BIOS boot support on
- UEFI-based PCs doesn't work when rEFInd is compiled under GNU-EFI, so
- as of rEFInd 0.4.6, GNU-EFI is no longer the primary build environment,
- although it's easier to set up on a Linux system.
+ 3.0r, 3.0s, and 3.0u, with a caveat: The new time-sensitive
+ default_selection feature causes rEFInd to hang when using 3.0s and
+ earlier. 3.0u works fine for this (tested with compilation on three
+ computers). I don't know if 3.0t would work. Through mid-to-late 2012,
+ most Linux distributions delivered rather elderly versions of GNU-EFI,
+ but many are catching up by late 2012. You should check your GNU-EFI
+ version number; you may need to download the latest source code,
+ compile it, and install it locally. Between rEFInd version 0.2.7 and
+ 0.6.1, the Makefiles assumed a locally-compiled GNU-EFI package, but
+ older and more recent versions assume GNU-EFI installation in typical
+ locations for distribution-provided packages. The legacy BIOS boot
+ support on UEFI-based PCs doesn't work when rEFInd is compiled under
+ GNU-EFI, so as of rEFInd 0.4.6, GNU-EFI is no longer the primary build
+ environment, although it's easier to set up on a Linux system.
Of the two toolkits, I prefer to use TianoCore because it produces binaries
that can boot BIOS/legacy-mode OSes and because the TianoCore-produced
3) Type "cd /usr/local/UDK2010".
-3) Unzip the downloaded file (UDK2010.SR1.UP1.P1.Complete.MyWorkSpace.zip)
+4) Unzip the downloaded file (UDK2010.SR1.UP1.P1.Complete.MyWorkSpace.zip)
in the current directory (/usr/local/UDK2010). This creates a handful of
files, including a tarball and a couple of .zip files.
-4) Type "unzip UDK2010.SR1.UP1.MyWorkSpace.zip". This extracts the
+5) Type "unzip UDK2010.SR1.UP1.MyWorkSpace.zip". This extracts the
platform-neutral portion of the development kit.
-5) Type "cd MyWorkSpace".
+6) Type "cd MyWorkSpace".
-6) Type "tar xvf ../BaseTools\(Unix\).tar". This extracts the
+7) Type "tar xvf ../BaseTools\(Unix\).tar". This extracts the
Linux/Unix-specific portions of the toolkit.
-7) Follow the build instructions at
+8) Follow the build instructions at
https://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Using_EDK_II_with_Native_GCC_4.4;
however, a few changes are required, as detailed below....
-8) Type "source edksetup.sh BaseTools". This sets up some environment
+9) Type "source edksetup.sh BaseTools". This sets up some environment
variables, so subsequent steps (NOT including compiling the rEFInd EFI
drivers) must be typed in the shell you use for this step.
-9) Edit Conf/target.txt and change the following:
- - ACTIVE_PLATFORM = MdePkg/MdePkg.dsc
- - TARGET = RELEASE (DEBUG might work, but I've not tested it).
- - TARGET_ARCH = X64 (on x86-64; leave this as IA32 on x86). If you plan
- to build both architectures on an x86-64 system, you can set this to
- "IA32 X64".
- - TOOL_CHAIN_TAG = GCC46 (or other value depending on your GCC version;
- type "gcc -v" to learn your GCC version number). Note that GCC 4.7
- and 4.8 don't have their own entries, so use GCC46 for them.
- The TianoCore Makefiles read some of these variables from this file
- and use them when accessing directories, so be sure to type these
- entries in the case specified.
-
-10) The documentation refers to editing Conf/tools_def.txt in addition to
+10) Edit Conf/target.txt and change the following:
+ - ACTIVE_PLATFORM = MdePkg/MdePkg.dsc
+ - TARGET = RELEASE (DEBUG might work, but I've not tested it).
+ - TARGET_ARCH = X64 (on x86-64; leave this as IA32 on x86). If you plan
+ to build both architectures on an x86-64 system, you can set this to
+ "IA32 X64".
+ - TOOL_CHAIN_TAG = GCC46 (or other value depending on your GCC version;
+ type "gcc -v" to learn your GCC version number). Note that GCC 4.7
+ and 4.8 don't have their own entries, so use GCC46 for them.
+ The TianoCore Makefiles read some of these variables from this file
+ and use them when accessing directories, so be sure to type these
+ entries in the case specified.
+
+11) The documentation refers to editing Conf/tools_def.txt in addition to
Conf/target.txt, but doesn't specify what to change in
Conf/tools_def.txt. I haven't found it necessary to make any changes in
Conf/tools_def.txt EXCEPT when using GCC 4.7 on a Fedora 17 system.
to:
*_GCC46_X64_ASM_FLAGS = DEF(GCC46_ASM_FLAGS) -m64
-11) Type "make -C /usr/local/UDK2010/MyWorkSpace/BaseTools/Source/C".
+12) Type "make -C /usr/local/UDK2010/MyWorkSpace/BaseTools/Source/C".
(This step is not documented on the EDK Web page.) Note that this
requires the g++ compiler and UUID development libraries.
-10) Type "build" to build the main set of EDK2 files. This process is
+13) Type "build" to build the main set of EDK2 files. This process is
likely to take a few minutes.
If you installed in a location other than the one I've specified, you must