- 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.)
+0.4.3 (?/??/2012):
+------------------
+
+- Filesystem drivers now work on EFI 1.x systems, such as Macs.
+
0.4.2 (6/3/2012):
-----------------
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-6/3/2012, referencing rEFInd 0.4.2</p>
+6/7/2012, referencing rEFInd 0.4.2</p>
<p>I'm a technical writer and consultant specializing in Linux technologies. This Web page is provided free of charge and with no annoying outside ads; however, I did take time to prepare it, and Web hosting does cost money. If you find this Web page useful, please consider making a small donation to help keep this site up and running. Thanks!</p>
<h2>Getting rEFInd from Your OS's Repositories</h2>
-<p>If you use Arch Linux, you can obtain rEFInd from its repositories, in both <a href="https://aur.archlinux.org/packages.php?ID=57632">stable</a> and <a href="https://aur.archlinux.org/packages.php?ID=57966">git (experimental)</a> releases. The git release is likely to include pre-release bug fixes and new features, but those features may be poorly tested or undocumented.</p>
+<p>If you use Arch Linux, you can obtain rEFInd from its repositories, in both <a href="http://www.archlinux.org/packages/extra/any/refind-efi-x86_64/">stable</a> and <a href="https://aur.archlinux.org/packages.php?ID=59810">git (experimental)</a> releases. The git release is likely to include pre-release bug fixes and new features, but those features may be poorly tested or undocumented.</p>
<p>You can also obtain rEFInd from the <a href="http://nixos.org/nixpkgs/">Nix Packages collection,</a> which creates packages for a number of OSes using its own packaging system.</p>
<ul>
- <li>The drivers I've built fail to load on a 32-bit Mac Mini; I get an
- "incompatible version" error message at an EFI shell, or an error
- code of 80000019 when rEFInd tries to load them. (These two
- messages are equivalent.) I suspect the problem is related to the
- EFI version 1.<i>x</i> used on the Mac, as opposed to UEFI
- 2.<i>x</i> used on PCs. I'm looking into the problem. In the
- meantime, if you have this problem, I recommend tracking down
- equivalent drivers from other sources. (See the <a
- href="drivers.html">drivers page</a> for some pointers.) I'd
- appreciate <a href="mailto:rodsmith@rodsbooks.com">hearing from
- you</a> if you have problems along these lines. Please tell me what
- type of computer you're using, and especially the firmware version
- data (from rEFInd's "about" screen). This may help me narrow down
- the cause.</li>
+ <li>The 32-bit versions of the drivers return filesystem labels that
+ omit the first two characters of the name. If the name is shorter
+ than two characters, the driver may return the wrong volume's
+ label. The 64-bit builds seem to be unaffected by this bug.</li>
<li>Drivers for additional filesystems are required. Given the recent
shift to ext4fs, that should be the priority; however, other Linux
}
-const UINT32 _gUefiDriverRevision = 0x00020000U;
+//const UINT32 _gUefiDriverRevision = 0x00020000U;
+const UINT32 _gUefiDriverRevision = 0x00010000U;
const UINT32 _gDxeRevision = 0x00000000U;
INCLUDE_DIRS = -I $(EDK2BASE)/MdePkg \
-I $(EDK2BASE)/MdePkg/Include \
- -I $(EDK2BASE)/MdePkg/Include/$(ARCHDIR)
+ -I $(EDK2BASE)/MdePkg/Include/$(ARCHDIR) \
+ -I $(EDK2BASE)/EdkCompatibilityPkg/Foundation/Framework/Include \
+ -I $(EDK2BASE)/EdkCompatibilityPkg/Foundation/Library/Dxe/Include
FSW_NAMES = fsw_efi fsw_core fsw_efi_lib fsw_lib AutoGen
OBJS = $(FSW_NAMES:=.o)
# define DivU64x32(x,y,z) DivU64x32((x),(y))
-INTN CompareGuidEdk1(
- IN EFI_GUID *Guid1,
- IN EFI_GUID *Guid2
- );
+// INTN CompareGuidEdk1(
+// IN EFI_GUID *Guid1,
+// IN EFI_GUID *Guid2
+// );
//#define CompareGuid(x, y) CompareGuidEdk1((x),(y))
# define HOST_EFI 1
/*@}*/
-
/**
* \name Posix Mode Macros
* These macros can be used globally to test fields and bits in
*/
#include "fsw_efi.h"
+#include "fsw_core.h"
+//#include <EfiCommonLib.h>
+//#include <EfiDriverLib.h>
#define DEBUG_LEVEL 0
/** Helper macro for stringification. */
#define FSW_EFI_STRINGIFY(x) #x
/** Expands to the EFI driver name given the file system type name. */
-#define FSW_EFI_DRIVER_NAME(t) L"rEFInd 0.4.1 " FSW_EFI_STRINGIFY(t) L" File System Driver"
+#define FSW_EFI_DRIVER_NAME(t) L"rEFInd 0.4.2 " FSW_EFI_STRINGIFY(t) L" File System Driver"
// function prototypes
// load the image into memory
ReturnStatus = Status = EFI_NOT_FOUND; // in case the list is empty
for (DevicePathIndex = 0; DevicePaths[DevicePathIndex] != NULL; DevicePathIndex++) {
-// Print(L"About to try loading '%s' from '%s'\n", ImageTitle, DevicePathToStr(DevicePaths[DevicePathIndex]));
-// PauseForKey();
ReturnStatus = Status = refit_call6_wrapper(BS->LoadImage, FALSE, SelfImageHandle, DevicePaths[DevicePathIndex], NULL, 0, &ChildImageHandle);
if (ReturnStatus != EFI_NOT_FOUND)
break;