X-Git-Url: https://code.delx.au/refind/blobdiff_plain/fa897bd1c212810ec811641d35f30269493150cf..2c127d7c9989d2b86627484e33f70ce3d0043954:/BUILDING.txt diff --git a/BUILDING.txt b/BUILDING.txt index 917a66a..0ef9fae 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -28,28 +28,26 @@ To compile rEFInd, you'll need the following: 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. 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 -binaries are about 20-30KiB smaller than those made by GNU-EFI. Also, I've +that are about 20-30KiB smaller than those made by GNU-EFI, and I can +easily build 32-bit binaries on my 64-bit Linux installations. Also, I've had problems on a 32-bit Mac Mini with the drivers produced by GNU-EFI hanging the system if I try to load more than one of them. (I haven't encountered this problem on UEFI-based PCs.) That said, the TianoCore EDK2 -package is much harder to install, so if you don't need the ability to boot -BIOS/legacy OSes from rEFInd, GNU-EFI can work as well. +package is much harder to install, so you may prefer to use GNU-EFI unless +you have a specific need for the TianoCore toolkit. It's possible to use a non-Linux platform to compile rEFInd. To the best of my knowledge, the rEFInd code doesn't rely on anything Linux-specific in @@ -72,18 +70,17 @@ GCC or Microsoft's C compiler, but I haven't tested this. Preparing Your Development Kit ============================== -If you don't care about booting BIOS-based OSes on UEFI PCs and if you're -using Linux, GNU-EFI is the easiest way to compile rEFInd. I don't describe -GNU-EFI's setup here because it's likely to be fairly easy. If your -distribution provides a recent enough version, you should be able to -install a package called gnu-efi and be done with it. If not, you'll need -to download the source code tarball, build it, and install it. This process -is fairly typical of Linux packages. Read the GNU-EFI documentation if you -need help. If you're using GNU-EFI, you can skip the rest of this section. - -If you need support for booting BIOS-based OSes on UEFI PCs, the TianoCore -toolkit is required. You might also want to use it if you have problems -with GNU-EFI or if you want to build rEFInd on a non-Linux platform. +If you're using Linux, GNU-EFI is the easiest way to compile rEFInd. I +don't describe GNU-EFI's setup here because it's likely to be fairly easy. +If your distribution provides a recent enough version, you should be able +to install a package called gnu-efi and be done with it. If not, you'll +need to download the source code tarball, build it, and install it. This +process is fairly typical of Linux packages. Read the GNU-EFI documentation +if you need help. If you're using GNU-EFI, you can skip the rest of this +section. + +You might also want to use the TianoCore toolkit if you have problems with +GNU-EFI or if you want to build rEFInd on a non-Linux platform. Unfortunately, the TianoCore toolkit is weird by Linux programming standards. It's also quite large -- it's intended as a means to develop a complete EFI firmware implementation, so it contains much more code than is