The EFI filesystem drivers in the filesystems subdirectory require the
TianoCore UDK2010.SR1 toolkit. The drivers might compile with another
version of the TianoCore toolkit, but I've not tested them with anything
-else. (My attempts to use GNU-EFI have failed; at best, I've gotten drivers
-that load but hang the computer.)
+else. My attempts to use GNU-EFI have failed; at best, I've gotten drivers
+that load but then hang the computer.
+
+An important caveat: I suspect the TianoCore toolkit is responsible for an
+inability to use the resulting drivers on a 32-bit Mac Mini. My suspicion
+is that it produces binaries that work on UEFI 2.x systems but not on the
+EFI 1.x that the Mac uses. If this suspicion is correct, you may be unable
+to use the rEFInd binaries on at least some Macs, as well as on other older
+EFI 1.x-based computers.
Unfortunately, the TianoCore toolkit is bulky and weird by Linux
programming standards. I don't know of any Linux distribution packages for
- TARGET = RELEASE (DEBUG might work, but I've not tested it).
- TARGET_ARCH = X64 (on x86-64; leave this as IA32 on x86)
- TOOL_CHAIN_TAG = GCC45 (or other value depending on your GCC version;
- type "gcc -v" to learn your GCC version number)
+ type "gcc -v" to learn your GCC version number). Note that GCC 4.7
+ doesn't have its own entry, so use GCC46 for GCC 4.7.
The Makefile for the drivers reads some of these variables from this
file and uses them when accessing directories, so be sure to type these
- entries in the case specified. Note that 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.
+ entries in the case specified.
+
+10) 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.
+ (I haven't used GCC 4.7 on other platforms, so this may well be
+ necessary on other systems, too.) With that setup, I found it
+ necessary to change the following line:
+ *_GCC46_X64_ASM_FLAGS = DEF(GCC46_ASM_FLAGS) -m64 -melf_x86_64
+ to:
+ *_GCC46_X64_ASM_FLAGS = DEF(GCC46_ASM_FLAGS) -m64
11) Type "make -C /usr/local/UDK2010/MyWorkSpace/BaseTools/Source/C".
(This step is not documented on the EDK Web page.)
Once the toolkit is installed, you can build the filesystem drivers. If you
installed in a location other than the one I've specified, you must edit
the EDK2BASE variable in the filesystems/Make.common file in the rEFInd
-source package.. You can then type "make" in the "filesystems" directory,
+source package. You can then type "make" in the "filesystems" directory,
or "make fs" in the main source directory, to build all the drivers. If you
want to build just one driver, you can change into the "filesystems"
directory and type "make {fsname}", where {fsname} is a filesystem name --
The drivers all rely on filesystem wrapper code created by rEFIt's author,
Christoph Phisterer. Most of the drivers seem to have passed through
-Oracle's VirtualBox project ((https://www.virtualbox.org) and the Clover
+Oracle's VirtualBox project (https://www.virtualbox.org) and the Clover
boot loader project (https://sourceforge.net/projects/cloverefiboot/),
which I used as the source for this build.