X-Git-Url: https://code.delx.au/refind/blobdiff_plain/0d5ee58bd6562186ea980fcca99484d8272369bf..849bd62e3cc11418d8645c067dea5ec088b3c30a:/docs/refind/drivers.html diff --git a/docs/refind/drivers.html b/docs/refind/drivers.html index 879c680..5b24292 100644 --- a/docs/refind/drivers.html +++ b/docs/refind/drivers.html @@ -8,6 +8,8 @@ + +

The rEFInd Boot Manager:
Using EFI Drivers

@@ -15,10 +17,10 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com

Originally written: 4/19/2012; last Web page update: -5/9/2012, referencing rEFInd 0.3.4

+12/12/2015, referencing rEFInd 0.10.1

-

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!

+

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!

@@ -26,49 +28,82 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com

+ - - - - + + -
Donate $2.50 Donate $5.00 Donate $10.00Donate $20.00 Donate another value
- + +
+ + - + + - + + + -
- + +
+ + - + + - + + + -
- + + +
+ + - + + - + + + -
- + +
+ + - + + - + + + + +
+ + + + + + + + + +
@@ -78,11 +113,10 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com

- -Donate with PayPal +
+
@@ -90,15 +124,42 @@ href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com


-

Beginning with version 0.2.7, rEFInd has been able to load EFI drivers. Although EFI implementations should be able to do this prior to rEFInd's launch, in my experience, most EFI implementations offer such poor control over EFI driver loading that they can't be counted on to do this. Thus, if you want to use EFI drivers, rEFInd's ability to do so can be useful. This page tells you why you might want to use drivers, where you can go to find them, and provides tips on a few specific drivers.

+
+ +

Beginning with version 0.2.7, rEFInd has been able to load EFI drivers, and as of version 0.4.0, it has shipped with some EFI filesystem drivers. Although EFI implementations should be able to load drivers prior to rEFInd's launch, in my experience, most EFI implementations offer such poor control over EFI driver loading that they can't be counted on to do this. Thus, if you want to use EFI drivers, rEFInd's ability to do so can be useful. This page tells you why you might want to use drivers, how you can install and use rEFInd's own drivers, where you can go to find other drivers, and provides tips on a few specific drivers.

+ +
+ + + +
+

Why Should You Use EFI Drivers?

+

EFI supports drivers, which can activate hardware or filesystems in the pre-boot environment. At the moment, EFI drivers are few and far between; but you can or might want to use them for various reasons:

+

If you want to use one or more of these drivers, you can install them from the rEFInd binary package from the refind/drivers_arch directory, where arch is a CPU architecture code—x64 or ia32. The files are named after the filesystems they handle, such as ext4_x64.efi for the 64-bit ext4fs driver. You should copy the files for the filesystems you want to use to the drivers or drivers_arch subdirectory of the main rEFInd installation directory. (You may need to create this subdirectory.) Be careful to install drivers only for your own architecture. Attempting to load drivers for the wrong CPU type will cause a small delay at best, or may cause the computer to crash at worst. I've placed rEFInd's drivers in directories that are named to minimize this risk, but you should exercise care when copying driver files.

-

Most of these cross-project drivers appear to be related. For instance, the ISO-9660 drivers are both based on code written by Christoph Phisterer for rEFIt (although he doesn't seem to have finished and released it in binary form himself).

+ -

As you can see, pickings are rather slim. Nonetheless, the drivers that exist are useful for certain purposes. The options could increase in the future, too. Source code to a wide variety of filesystems is available in GRUB Legacy, GRUB 2, Linux, various BSD kernels, and in other projects. Sooner or later somebody's likely to begin porting those drivers to EFI. If you do so, or if you know of additional EFI drivers, please tell me about it, so I can share the information here. Likewise if you know of a source for other EFI drivers—say, for a video card or disk controller card.

+

When you reboot after installing drivers, rEFInd should automatically detect and use the drivers you install. There's likely to be an extra delay, typically from one to five seconds, as rEFInd loads the drivers and tells the EFI to detect the filesystems they handle. For this reason, and because of the possibility of drivers harboring bugs, I recommend installing only those drivers that you need. If you like, you can install drivers you don't plan on using to some other directory, such as /drivers on the ESP's root. You can then load these drivers manually with the EFI shell's load command if the need arises in the future. You can then tell the shell to re-assign drive identifiers with map -r:

- +
+fs0: load btrfs_x64.efi
+fs0: map -r
+
-

Once you've obtained an EFI driver or two, you can install it in rEFInd by creating a subdirectory of the rEFInd directory called drivers—for instance, EFI/refind/drivers, if you've installed rEFInd to EFI/refind on the ESP. Alternatively, you can create a directory of any other name and use the scan_driver_dirs option in refind.conf to tell rEFInd where to look for drivers. Either way, rEFInd attempts to load all the EFI drivers from these directories, so placing your files there and rebooting will do the trick.

+ +

Finding Additional EFI Drivers

+
-

rEFInd is likely to take slightly longer to start up when you use drivers, but the effect is likely to be small. On my systems, it's usually just a second or so. This effect could be greater with some drivers or on some systems, though.

+

As already noted, I know of no EFI drivers for EFI hardware, aside from those that are built into motherboards' EFI implementations. I do, however, know of a few EFI filesystem drivers, in addition to those provided with rEFInd:

-

Notes on Specific Drivers

+ + +

The rEFIt, Clover, and VirtualBox drivers are related, and all of them +have fed into rEFInd's drivers. Specific versions can have their own +quirks, though. For instance, the Clover (and I suspect VirtualBox) drivers +don't return volume labels, which causes rEFInd to display loaders on those +volumes as being on a disk called Unknown. (I fixed that bug for +rEFInd's version, and it wasn't present in the original rEFIt drivers.) +Most of these drivers also suffer from speed problems on some computers. +This is worst with the ext2fs drivers under VirtualBox; on my main +computer, that combination takes 3 minutes to load a Linux kernel and +initial RAM disk file! Most real computers don't suffer nearly so badly, +but some can take an extra five seconds or so to boot a kernel. I've fixed +the speed problems in rEFInd's drivers as of version 0.7.0.

+ +

Driver availability could increase in the future. If you know of +additional EFI drivers, please tell +me about them, so I can share the information here. Likewise if you +know of a source for other EFI drivers—say, for a video card or disk +controller card.

+ +

Once you've obtained an EFI driver, you can install it in rEFInd just as you would install rEFInd's own drivers, as described earlier.

+ + +

Notes on Specific Drivers

+
+ + + +

I've tested several of the drivers described on this page on a handful +of systems. The Pfisterer ext2fs driver (from any source) works on both +ext2fs and ext3fs, but not on ext4fs—but Agner's derivative ext4fs +driver handles ext4fs, so that's not a problem. The ReiserFS driver is +obviously useful only on ReiserFS partitions. (Reiser4 is not supported, as +far as I know.) The Btrfs driver is the newest of the Linux filesystem +drivers included with rEFInd, and so I've tested it the least, but it's +worked for me on several test systems. Given that ext2fs, ext3fs, and +ReiserFS are getting a bit on in age by Linux standards, you might do well +to use them on a separate Linux /boot partition; however, if +you're willing to use ext3fs, ext4fs, Btrfs, or ReiserFS on your root +(/) filesystem, you can use the EFI drivers to read your kernel +from it. Note that this assumes you use conventional partitions; to the +best of my knowledge, there's no EFI driver for Linux's Logical Volume +Manager (LVM) or Redundant Array of Independent Disks (RAID) +configurations, so the EFI can't access filesystems stored in these +ways.

+ +

As noted earlier, rEFInd's drivers prior to version 0.7.0, as well as related drivers from rEFIt, Clover, and VirtualBox, suffer from speed problems. These problems are mostly minor, adding a second or two to boot times; but on some computers, the speed problems can be dramatic, boosting kernel-load times up to as much as three minutes (under VirtualBox). If you run into excessive boot times with such a driver, try switching to the latest rEFInd driver instead. You might also try Pete Batard's efifs drivers.

+ +

Although ext2fs, ext3fs, ext4fs, and ReiserFS are all case-sensitive, these drivers treat them in a case-insensitive way. Symbolic links work; however, rEFInd 0.6.11 and later ignore symbolic links, since many distributions use them in a way that creates redundant or non-functional entries in the rEFInd menu. You should be able to use hard links if you want to use a single kernel file in multiple ways (say for two distributions).


-

copyright © 2012 by Roderick W. Smith

+

copyright © 2012–2015 by Roderick W. Smith

This document is licensed under the terms of the GNU Free Documentation License (FDL), version 1.3.