VMX support on Intel CPUs.
+0.8.4 (11/??/2014):
+-------------------
+
+- Tweaked default for dont_scan_volumes: Removed "Recovery HD". This change
+ better suits the needs of OS X 10.10 ("Yosemite") installations, but may
+ result in some stray Recovery HD entries on some Macs.
+
+- Updated icons for Fedora and Ubuntu and added an icon for Xubuntu.
+
+- Added new configuration option, "enable_and_lock_vmx", which sets an
+ Intel CPU feature that's required for some types of virtualization to
+ work. Most EFIs enable setting this feature in their own setup utilities,
+ but some (such as most Macs) don't.
+
0.8.3 (7/6/2014):
-----------------
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-7/6/2014, referencing rEFInd 0.8.3</p>
+7/28/2014, referencing rEFInd 0.8.3</p>
<p>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>
<div style="float:right; width:55%">
-<p>Many casual users will be able to use rEFInd without making changes to its settings; in its default configuration, the boot manager automatically detects all the EFI boot loader programs you have on your ESP (or your OS X boot partition, in the case of Macs) and displays icons for them. On Macs, rEFInd also presents legacy BIOS boot options by default. Sometimes, though, you may want to tweak rEFInd's configuration. Sometimes you can obtain your desired results by adjusting the filenames of your boot loaders. Other times, you can edit rEFInd's configuration file, <tt>refind.conf</tt>, which resides in the same directory as its binary file (<tt>refind_x64.efi</tt> or whatever you've renamed it).</p>
+<p>Many casual users will be able to use rEFInd without making changes to its settings; in its default configuration, the boot manager automatically detects all the EFI boot loader programs you have on your EFI System Partition (ESP) (or your OS X boot partition, in the case of Macs) and displays icons for them. On Macs, rEFInd also presents legacy BIOS boot options by default. Sometimes, though, you may want to tweak rEFInd's configuration. Sometimes you can obtain your desired results by adjusting the filenames of your boot loaders. Other times, you can edit rEFInd's configuration file, <tt>refind.conf</tt>, which resides in the same directory as its binary file (<tt>refind_x64.efi</tt> or whatever you've renamed it).</p>
</div>
<tr>
<td><tt>dont_scan_volumes</tt> or <tt>don't_scan_volumes</tt></td>
<td>filesystem or partition label(s)</td>
- <td>Adds the specified volume or volumes to a volume "blacklist"—these filesystems are <i>not</i> scanned for EFI boot loaders. This may be useful to keep unwanted EFI boot entries, such as for a Macintosh recovery partition, from appearing on the main list of boot loaders. The default value is <tt>"Recovery HD", LRS_ESP</tt>, to keep the Mac OS X and Lenovo Windows recovery volumes from appearing. (These should get their own tools icon instead—see the <tt>showtools</tt> token.) Note that on a Macintosh with whole-disk encryption, you may need to uncomment this token and leave <tt>"Recovery HD"</tt> <i>off</i> the list to boot the system. You can use <tt>dont_scan_volumes</tt> to hide disks or partitions from legacy-mode scans, too. In this case, you can enter any part of the description that appears beneath the icons to hide entries that include the string you specify.</td>
+ <td>Adds the specified volume or volumes to a volume "blacklist"—these filesystems are <i>not</i> scanned for EFI boot loaders. This may be useful to keep unwanted EFI boot entries, such as for a Macintosh recovery partition, from appearing on the main list of boot loaders. The default value is <tt>LRS_ESP</tt>, to keep the Lenovo Windows recovery volume from appearing. (This volume should get its own tools icon instead—see the <tt>showtools</tt> token.) You can use <tt>dont_scan_volumes</tt> to hide disks or partitions from legacy-mode scans, too. In this case, you can enter any part of the description that appears beneath the icons to hide entries that include the string you specify.</td>
</tr>
<tr>
<td><tt>dont_scan_dirs</tt> or <tt>don't_scan_dirs</tt></td>
<td>directory path(s)</td>
- <td>Adds the specified directory or directories to a directory "blacklist"—these directories are <i>not</i> scanned for boot loaders. You may optionally precede a directory path with a volume name and a colon to limit the blacklist to that volume; otherwise all volumes are affected. For instance, <tt>EFI/BOOT</tt> prevents scanning the <tt>EFI/BOOT</tt> directory on <i>all</i> volumes, whereas <tt>ESP:EFI/BOOT</tt> blocks scans of <tt>EFI/BOOT</tt> on the volume called <tt>ESP</tt> but not on other volumes. You can use a filesystem number, as in <tt>fs0</tt>, in place of a volume name. This token may be useful to keep duplicate boot loaders out of the menu; or to keep drivers or utilities out of the boot menu, if you've stored them in a subdirectory of <tt>EFI</tt>. This option takes precedence over <tt>also_scan_dirs</tt>; if a directory appears in both lists, it will <i>not</i> be scanned. To add directories to the default list rather than replace the list, specify <tt>+</tt> as the first option, as in <tt>dont_scan_dirs + EFI/dontscan</tt>.</td>
+ <td>Adds the specified directory or directories to a directory "blacklist"—these directories are <i>not</i> scanned for boot loaders. You may optionally precede a directory path with a volume name and a colon to limit the blacklist to that volume; otherwise all volumes are affected. For instance, <tt>EFI/BOOT</tt> prevents scanning the <tt>EFI/BOOT</tt> directory on <i>all</i> volumes, whereas <tt>ESP:EFI/BOOT</tt> blocks scans of <tt>EFI/BOOT</tt> on the volume called <tt>ESP</tt> but not on other volumes. You can use a filesystem number, as in <tt>fs0</tt>, in place of a volume name. This token may be useful to keep duplicate boot loaders out of the menu; or to keep drivers or utilities out of the boot menu, if you've stored them in a subdirectory of <tt>EFI</tt>. This option takes precedence over <tt>also_scan_dirs</tt>; if a directory appears in both lists, it will <i>not</i> be scanned. To add directories to the default list rather than replace the list, specify <tt>+</tt> as the first option, as in <tt>dont_scan_dirs + EFI/dontscan</tt>. The default for this token is <tt>EFI/tools, EFI/tools/memtest86, EFI/tools/memtest, EFI/memtest86, EFI/memtest, com.apple.recovery.boot</tt>.</td>
</tr>
<tr>
<td><tt>dont_scan_files</tt> or <tt>don't_scan_files</tt></td>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 4/19/2012; last Web page update:
-7/6/2014, referencing rEFInd 0.8.3</p>
+7/28/2014, referencing rEFInd 0.8.3</p>
<p>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>
<!-- <p class="sidebar"><b>Tip:</b> Some Linux installation media come as <i>hybrid ISO</i> files, which can be written to either optical discs or USB flash drives for installation. Some of these media, though, are useless for installing to EFI systems from USB flash drives—unless your computer supports ISO-9660 on non-optical media. rEFInd's ISO-9660 driver provides this support. To use such a hybrid image from USB flash drive, you must boot using rEFInd on another disk that has the ISO-9660 driver installed. rEFInd should then provide an option to boot from the USB flash drive. I cannot guarantee that the installer will boot at this point, but it might.</p> -->
-<li>You can load a filesystem driver to gain access to files on a filesystem other than FAT (or HFS+ on Macs or ISO-9660 on some systems). This is most likely to be useful on a Linux installation, since a filesystem driver can enable you to store a Linux kernel with EFI stub loader or for use by ELILO on a Linux-native filesystem if your ESP is getting crowded.</li>
+<li>You can load a filesystem driver to gain access to files on a filesystem other than FAT (or HFS+ on Macs or ISO-9660 on some systems). This is most likely to be useful on a Linux installation, since a filesystem driver can enable you to store a Linux kernel with EFI stub loader or for use by ELILO on a Linux-native filesystem if your EFI System Partition (ESP) is getting crowded.</li>
<li>You can load a driver for a plug-in disk controller to give the EFI access to its disks. Note that this is <i>not</i> required if you place your boot loader (and perhaps your OS kernel) on another disk, or if the plug-in disk controller includes EFI-capable firmware. It could be handy, perhaps in conjunction with a filesystem driver, to enable the EFI to read a boot loader or kernel from a disk on a plug-in controller, though.</li>
collection</a></b>—This site creates packages for a number of
OSes using its own packaging system.</li>
-<li><b>Slackware</b>—Although it doesn't seem to provide an official
- build, <a href="http://franck-barbenoire.fr/spip.php?article198">this
- site</a> has links to rEFInd binary packages for Slackware 13.37 and
- 14.0.</li>
-
</ul>
<p>To the best of my knowledge, no other Linux distribution yet includes rEFInd in its repositories. That's likely to change in time. If you hear of rEFInd being included in an OS's official package set, feel free to <a href="mailto:rodsmith@rodsbooks.com">drop me a line.</a></p>
<li class="tight"><a href="installing.html">Installing rEFInd</a>—Instructions for installing rEFInd, using Linux, OS X, and Windows</li>
+<li class="tight"><a href="yosemite.html">rEFInd and OS X 10.10 (Yosemite)</a>—Apple's latest OS X makes some changes that require your attention</li>
+
<li class="tight"><a href="using.html">Using rEFInd</a>—Basic usage instructions for the boot loader</li>
<li class="tight"><a href="configfile.html">Configuring the Boot Manager</a>—For advanced users, information on customizing a rEFInd installation</li>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/14/2012; last Web page update:
-7/6/2014, referencing rEFInd 0.8.3</p>
+8/14/2014, referencing rEFInd 0.8.3</p>
<p>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>
<p><b>Don't be scared by the length of this page!</b> Only portions of this page apply to any given user, and most people can install rEFInd from an RPM or Debian package in a matter of seconds or by using the <tt>install.sh</tt> script in minute or two.</p>
-<p>Once you've obtained a rEFInd binary file, you must install it to your computer's ESP (or conceivably to some other location). The details of how you do this depend on your OS and your computer (UEFI-based PC vs. Macintosh). The upcoming sections provide details. See the Contents sidebar to the left for links to specific installation procedures. For most Linux users, an RPM or Debian package is the best way to go. If your Linux system doesn't support these formats, though, or if you're running OS X, using the <tt>install.sh</tt> script can be a good way to go. If you're using Windows, you'll have to install manually.</p>
+<p>Once you've obtained a rEFInd binary file, you must install it to your computer's EFI System Partition (ESP) (or conceivably to some other location). The details of how you do this depend on your OS and your computer (UEFI-based PC vs. Macintosh). The upcoming sections provide details. See the Contents sidebar to the left for links to specific installation procedures. For most Linux users, an RPM or Debian package is the best way to go. If your Linux system doesn't support these formats, though, or if you're running OS X, using the <tt>install.sh</tt> script can be a good way to go. If you're using Windows, you'll have to install manually.</p>
<p class="sidebar" style="width:95%"><b>Important:</b> A rEFInd zip file, when uncompressed, creates a directory called <tt>refind-<i>version</i></tt>, where <tt><i>version</i></tt> is the version number. This directory includes a subdirectory called <tt>refind</tt> that holds the boot loader, along with another that holds documentation, as well as miscellaneous files in <tt>refind-<i>version</i></tt> itself. When I refer to "the <tt>refind</tt> directory" on this page, I mean the directory with that precise name, not the <tt>refind-<i>version</i></tt> directory that is its parent.</p>
<p>Either command produces output similar to that described for <a href="#installsh">using the <tt>install.sh</tt> script,</a> so you can check it for error messages and other signs of trouble. The package file installs rEFInd and registers it with the EFI to be the default boot loader. The script that runs as part of the installation process tries to determine if you're using Secure Boot, and if so it will try to configure rEFInd to launch using shim; however, this won't work correctly on all systems. Ubuntu 12.10 users who are booting with Secure Boot active should be wary, since the resulting installation will probably try to use Ubuntu's version of shim, which won't work correctly with rEFInd.</p>
-<p>If you're using Ubuntu, you should be able to install the PPA as follows:</p>
+<a name="ppa">
+<p>If you're using Ubuntu, you should be able to install the PPA as follows:</p></a>
<pre class="listing">$ <tt class="userinput">sudo apt-add-repository ppa:rodsmith/refind</tt>
$ <tt class="userinput">sudo apt-get update</tt>
<li>Type <b><tt>cd EFI\refind</tt></b> to change into the <tt>refind</tt> subdirectory</li>
-<li>Type <b><tt>del refind_ia32.efi</tt></b> to delete the unused 32-bit version of rEFInd. (Windows only supports EFI boots on 64-bit EFI implementations and in 64-bit versions of Windows.)</li>
-
-<li>Optionally type <tt class="userinput">rd /s drivers_ia32</tt> to delete the <tt>drivers_ia32</tt> directory and its contents. You may also want to selectively delete some of the drivers in the <tt>drivers_x64</tt> directory, depending on your needs. Unnecessary drivers may slow the rEFInd start process. See the <a href="drivers.html">page on drivers</a> for more on this topic.</li>
+<li>You may want to selectively delete some of the drivers in the <tt>drivers_x64</tt> or <tt>drivers_ia32</tt> directory, depending on your architecture and needs. Unnecessary drivers will slow the rEFInd start process. See the <a href="drivers.html">page on drivers</a> for more on this topic.</li>
<li>Type <b><tt>rename refind.conf-sample refind.conf</tt></b> to rename rEFInd's configuration file.</li>
-<li>Type <b><tt>bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi</tt></b> to set rEFInd as the default EFI boot program. Note that <tt>{bootmgr}</tt> is entered as such; that's not a notation for a variable.</li>
+<li>Type <b><tt>bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi</tt></b> to set rEFInd as the default EFI boot program. Note that <tt>{bootmgr}</tt> is entered as such; that's not a notation for a variable. Also, change <tt>refind_x64.efi</tt> to <tt>refind_ia32.efi</tt> on systems with 32-bit EFIs. Such computers are rare, and most of them are tablets. Check your Windows bit depth to determine which binary you should use.</li>
<li>If you like, type <b><tt>bcdedit /set {bootmgr} description "<i>rEFInd description</i>"</tt></b> to set a description (change <tt><i>rEFInd description</i></tt> as you see fit).</li>
<li>You can rename files on the ESP. as described in the next section, <a href="#naming">Alternative Naming Options.</a></li>
-<li>You can boot from an optical disc into an emergency OS to do the job. Ubuntu, for instance, provides an EFI-bootable installer with a "try before installation" mode. You'll need to type <b><tt>sudo apt-get install efibootmgr</tt></b> to install <tt>efibootmgr</tt>, but you can then use that program as described <a href="#efibootmgr">earlier</a>. (If you're using Ubuntu, you'll need to precede the command with <b><tt>sudo</tt></b>.</li>
+<li>You can boot from an optical disc into an emergency OS to do the job. Ubuntu, for instance, provides an EFI-bootable installer with a "try before installation" mode. You'll need to type <b><tt>sudo apt-get install efibootmgr</tt></b> to install <tt>efibootmgr</tt>, but you can then use that program as described <a href="#efibootmgr">earlier</a>. (If you're using Ubuntu, you'll need to precede the command with <b><tt>sudo</tt></b>. If you use an Ubuntu image, you can install rEFInd <a href="#ppa">via its PPA,</a> which is an easy way to do the job. (In fact, the rEFInd PPA depends on the <tt>efibootmgr</tt> package, so you shouldn't need to manually install it.) The PPA approach may even be easier than installing from Windows using its tools, at least if you're familiar with Linux and have an Ubuntu desktop image handy.</li>
<li>You may be able to use rEFInd's bootable CD image to use rEFInd to boot an OS that's been installed but rendered inoperable because of changes to your boot order. You can then use <tt>efibootmgr</tt>, <tt>bless</tt>, or some other tool to restore rEFInd as the default boot loader.</li>
<p><a href="index.html">Go to the main rEFInd page</a></p>
-<p><a href="using.html">Learn how to use rEFInd</a></p>
+<p><a href="yosemite.html">Comments on rEFInd and OS X 10.10 (Yosemite)</a></p>
<p><a href="http://www.rodsbooks.com/">Return</a> to my main Web page.</p>
</body>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 3/19/2012; last Web page update:
-7/6/2014, referencing rEFInd 0.8.3</p>
+7/28/2014, referencing rEFInd 0.8.3</p>
<p>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>
<li>Copy the relevant driver file for your filesystem and architecture to
the <tt>drivers</tt> or <tt>drivers_<tt class="variable">arch</tt></tt>
- subdirectory of the rEFInd installation directory on the ESP. You may
- need to create this subdirectory, too.</li>
+ subdirectory of the rEFInd installation directory on the EFI System
+ Partition (ESP). You may need to create this subdirectory, too.</li>
<li>Create a <tt>refind_linux.conf</tt> file in your <tt>/boot</tt>
directory. The <tt>mkrlconf.sh</tt> script that comes with rEFInd
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 11/13/2012; last Web page update:
-7/6/2014, referencing rEFInd 0.8.3</p>
+7/28/2014, referencing rEFInd 0.8.3</p>
<p>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>
<p class="sidebar">Shim's author is working on merging it and PreLoader. Thus, future versions of shim may provide the advantages of both programs.</p>
-<p>PreLoader is easier to set up on a distribution that doesn't support shim because PreLoader doesn't rely on keys; instead, you tell it which binaries you trust and it will let you launch them. This works well on a system with boot managers, boot loaders, and kernels that seldom change. It's not a good solution for distribution maintainers, though, because it requires that users manually add binaries to PreLoader's list of approved binaries when the OS is installed and every time those binaries change. Also, PreLoader relies on a helper program, HashTool, to enroll hashes. (This is Geek for "tell the computer that a binary is OK.") Unfortunately, HashTool can enroll hashes only from the partition from which it was launched, so if you want to use rEFInd to launch Linux kernels directly, it's easiest if you mount your ESP at <tt>/boot</tt> in Linux or copy your kernels to the ESP. Another approach is to copy <tt>HashTool.efi</tt> to the partition that holds your kernel and rename it to almost anything else. rEFInd will then treat it like an OS boot loader and create a menu entry for it, enabling you to launch it as needed.</p>
+<p>PreLoader is easier to set up on a distribution that doesn't support shim because PreLoader doesn't rely on keys; instead, you tell it which binaries you trust and it will let you launch them. This works well on a system with boot managers, boot loaders, and kernels that seldom change. It's not a good solution for distribution maintainers, though, because it requires that users manually add binaries to PreLoader's list of approved binaries when the OS is installed and every time those binaries change. Also, PreLoader relies on a helper program, HashTool, to enroll hashes. (This is Geek for "tell the computer that a binary is OK.") Unfortunately, HashTool can enroll hashes only from the partition from which it was launched, so if you want to use rEFInd to launch Linux kernels directly, it's easiest if you mount your EFI System Partition (ESP) at <tt>/boot</tt> in Linux or copy your kernels to the ESP. Another approach is to copy <tt>HashTool.efi</tt> to the partition that holds your kernel and rename it to almost anything else. rEFInd will then treat it like an OS boot loader and create a menu entry for it, enabling you to launch it as needed.</p>
<p>Beginning with version 0.5.0, rEFInd can communicate with the shim system to authenticate boot loaders. If a boot loader has been signed by a valid UEFI Secure Boot key, a valid shim key, or a valid MOK key, rEFInd will launch it. rEFInd will also launch unsigned boot loaders or those with invalid signatures <i>if</i> Secure Boot is disabled in or unsupported by the firmware. (If that's your situation, you needn't bother reading this page.) PreLoader is designed in such a way that it requires no explicit support in rEFInd to work.</p>
href="mailto:rodsmith@rodsbooks.com">rodsmith@rodsbooks.com</a></p>
<p>Originally written: 4/19/2012; last Web page update:
-7/6/2014, referencing rEFInd 0.8.3</p>
+11/6/2014, referencing rEFInd 0.8.3</p>
<p>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>
<li>Zhu Qunying has created a <a href="http://zhu-qy.blogspot.com/2014/02/a-slackware-banner-logo-for-refind-boot.html">Slackware-themed banner logo</a> for rEFInd. Although it's not a full theme, I thought I'd mention it here.</li>
+<li>naymlezwun has created an <a href="http://naymlezwun.deviantart.com/art/rEFInd-OS-X-Theme-469807750">OS X theme</a> for rEFInd.</li>
+
+<li>jamaladdeen on deviantART has created an <a href="http://jamaladdeen.deviantart.com/art/rEFInd-OSX-Standard-Theme-1-0-492876132?ga_submit_new=10%253A1415269035&ga_type=edit&ga_changes=1&ga_recent=1">OS X theme</a> that resembles the OS X environment.</li>
+
</ul>
<p>If you've created or discovered another rEFInd theme, please <a href="mailto:rodsmith@rodsbooks.com">tell me about it</a> so that I can provide a link to it from this page.</p>
stanzas override auto-detected boot loader definitions for the same
boot loader file.</li>
+ <li>Along similar lines, some users have asked for a way to take
+ detected boot programs and create a set of manual boot stanzas for
+ them, so that they can be modified manually.</li>
+
+ <li>GRUB provides a configuration-file command called <tt>outb</tt>
+ that enables manipulating hardware registers. Something similar,
+ via the <tt>mm</tt> command, can be done in the EFI shell. I'd like
+ to add such a feature to rEFInd, since it enables doing things like
+ disabling one or another video output on Macs with two video
+ cards.</li>
+
<li>I have thoughts about creating an EFI configuration tool and
information utility—something to tell you about your hard
disks, enable you to manage MOKs, adjust boot loader priority in
<li class="tight"><a href="#legacy">Booting Legacy OSes</a></li>
+<li class="tight"><a href="#delays">Reducing Startup Delays</a></li>
+
</ul>
</div>
</tr>
<tr>
<td><i>F10</i></td>
- <td>Saves an image of the current screen in the file <tt>screenshot_<tt class="variable">###</tt>.bmp</tt>, where <tt class="variable">###</tt> is a sequence number starting with <tt>001</tt>, in the ESP's root directory</td>
+ <td>Saves an image of the current screen in the file <tt>screenshot_<tt class="variable">###</tt>.bmp</tt>, where <tt class="variable">###</tt> is a sequence number starting with <tt>001</tt>, in the EFI System Partition's (ESP's) root directory</td>
</tr>
<tr>
<td><i>F12</i> or (on some keyboards) <i>Eject</i></td>
<p>On both PCs and Macs, if you see non-functional legacy boot options, you can remove them by using the <tt>dont_scan_volumes</tt> token in <tt>refind.conf</tt>: Add any substring from the description that appears when you highlight the non-functional option to the set of options to have rEFInd ignore that entry. (Note that you must provide a complete volume name when excluding EFI volumes from scanning. The legacy-mode exclusion operation is more flexible in this regard.)</p>
+<a name="delays">
+<h2>Reducing Startup Delays</h2>
+</a>
+
+<p>You may discover that rEFInd takes a while to appear on the screen compared to other boot managers and boot loaders. Ultimately, the reason is that rEFInd is doing more—it's reading more filesystems, scanning for bootable files, and so on. In most cases, rEFInd takes just a second or two longer than other boot loaders, but I've heard of (and seen) much longer delays on computers that are configured sub-optimally. Some things you can do to reduce these delays include:</p>
+
+<ul>
+
+<li><b>Remove unnecessary drivers</b>—Simply loading a driver takes a certain amount of time, and if a filesystem driver finds a filesystem to read, rEFInd will spend time scanning that filesystem for bootable files. If there are no such files, or if you're not using them, then this is wasted time. Thus, you should check the <tt>drivers</tt>, <tt>drivers_x64</tt>, or other architecture-specific drivers subdirectory to be sure it doesn't hold unnecessary drivers.</li>
+
+<li><b>Use FAT for <tt>/boot</tt></b>—This tip is a corollary of the preceding one. If you use rEFInd to boot the Linux kernel directly, and if you rely on a driver to read the Linux kernel, then you'll have to live with the time to load the driver and to scan at least one extra filesystem. If you mount your ESP at <tt>/boot</tt>, or even if you create a separate FAT <tt>/boot</tt> partition, you'll save a little time. Note, however, that most Linux distributions don't allow you to install to a system with a FAT <tt>/boot</tt> partition, so you may need to set this up after doing your initial installation. If you see symbolic links in <tt>/boot</tt>, be wary; your distribution may rely upon them, and because FAT doesn't support symbolic links, this action may cause problems when upgrading kernels. On Macs, you can use HFS+ for this purpose, since Apple's EFI implementation includes an HFS+ driver.</li>
+
+<li><b>Minimize the number of scanned filesystems</b>—There's overhead associated with every additional filesystem rEFInd scans. Thus, if you have, say, separate ext4fs root (<tt>/</tt>), <tt>/boot</tt>, <tt>/usr</tt>, <tt>/home</tt>, and <tt>/var</tt> filesystems, and if you install rEFInd's ext4fs driver, rEFInd will end up scanning at least six filesystems (counting the FAT ESP), although only one of those has Linux kernels. You can use FAT for <tt>/boot</tt> and remove the ext4fs driver to speed up the boot process, as just described; but if you prefer to avoid the downsides of that action, you can switch <tt>/boot</tt> to some other filesystem, such as ext2fs or ReiserFS. This plan will reduce the number of filesystems to be scanned and improve boot time. Alternatively, if you re-install Linux, you can reduce the number of partitions or use LVM (which rEFInd can't read) for all of your filesystems except for <tt>/boot</tt>.</li>
+
+<li><b>Use a speedier filesystem</b>—In my tests, rEFInd's ReiserFS driver is the fastest and ext2fs is the slowest, with Btrfs and ext4fs falling in-between these two. The difference is trivial on some computers but it's noticeable on others. Filesystem speed differences are more likely to be noticeable in the time it takes to boot the OS; rEFInd's own startup time is less likely to be affected by a filesystem change.</li>
+
+<li><b>Use a speedier driver</b>—rEFInd 0.7.0 introduced a read-ahead cache in its filesystem drivers, which greatly improved their speed on some systems. If you're using an older driver, try using a newer one. Pete Batard's <a href="https://github.com/pbatard/efifs">efifs drivers</a> are an alternative to rEFInd's drivers. The efifs drivers are still very new and rapidly changing. My initial impression is that some of them are quite speedy, but others are very slow.</li>
+
+<li><b>Delete or move files and directories</b>—By default, rEFInd scans the root (<tt>/</tt>) directory, <tt>/boot</tt>, and most subdirectories of <tt>/EFI</tt> on every partition that it scans. If these locations exist but contain no bootable files, they'll just slow rEFInd down. Likewise, if you use <tt>dont_scan_files</tt> to keep unused boot loaders out of the menu, rEFInd will still do much of the work of scanning those files. In all of these cases, deleting or moving the directories or files that are being scanned but that don't contain bootable options you want to see can speed things up.</li>
+
+<li><b>Use the <tt>also_scan_dirs</tt> option sparingly</b>—Using <tt>also_scan_dirs</tt> is useful in some situations, but it does add to rEFInd's task list. Use it only if you must.</li>
+
+<li><b>Reduce the <tt>scanfor</tt> list</b>—Removing items from the <tt>scanfor</tt> list in <tt>refind.conf</tt> can speed things up a bit. This is especially true on Macs, which scan for BIOS-mode boot loaders by default. If you never boot a Mac in BIOS mode, try uncommending <tt>scanfor</tt> and ensure that the <tt>hdbios</tt>, <tt>biosexternal</tt>, and <tt>cd</tt> options are <i>not</i> present. The <tt>external</tt> and <tt>optical</tt> items won't add delays <i>unless</i> the relevant media are inserted, which brings us to....</li>
+
+<li><b>Don't boot with removable media attached (unless you intend to boot from them)</b>—If you insert an optical disc into your drive or plug in a removable device like a USB flash drive, rEFInd will attempt to scan it. This will slow down rEFInd's startup process, so you shouldn't make a habit of booting with such media inserted. In fact, there's another reason not to boot with external media attached: If such a medium is infected with malware, and if your firmware is configured to boot from external media first, you'll end up running the malware, possibly infecting your computer.</li>
+
+</ul>
+
+<p>I hope these tips will help you to overcome any speed problems you're experiencing. As I said, rEFInd is reasonably fast on many computers, so you might not run into problems in the first place. If you do, though, reducing rEFInd's workload can help.</p>
+
<hr />
<p>copyright © 2012–2014 by Roderick W. Smith</p>
InstallDir=`echo $EspLine | cut -d " " -f 6`
if [[ -n "$InstallDir" ]] ; then
- EspFilesystem=`grep "$InstallDir" /etc/mtab | uniq | grep -v autofs | cut -d " " -f 3`
+ EspFilesystem=`grep -w "$InstallDir" /etc/mtab | uniq | grep -v autofs | cut -d " " -f 3`
fi
if [[ $EspFilesystem != 'vfat' ]] ; then
FindLinuxESP
# OSes' file browsers.
# For legacy-mode scans, you can specify any subset of the boot loader
# description shown when you highlight the option in rEFInd.
-# The default is "Recovery HD,LRS_ESP".
+# The default is "LRS_ESP".
#
#dont_scan_volumes "Recovery HD"
# Directories that should NOT be scanned for boot loaders. By default,
# rEFInd doesn't scan its own directory, the EFI/tools directory, the
-# EFI/memtest directory, or the EFI/memtest86 directory. Using the
-# dont_scan_dirs option enables you to "blacklist" other directories;
-# but note that using this option removes the EFI/memtest and
-# EFI/memtest86 directories, so if you don't want them scanned, be
-# sure to include them in your new list. You might use this token to
-# keep EFI/boot/bootx64.efi out of the menu if that's a duplicate of
-# another boot loader or to exclude a directory that holds drivers
-# or non-bootloader utilities provided by a hardware manufacturer. If
-# a directory is listed both here and in also_scan_dirs, dont_scan_dirs
-# takes precedence. Note that this blacklist applies to ALL the
-# filesystems that rEFInd scans, not just the ESP, unless you precede
-# the directory name by a filesystem name, as in "myvol:EFI/somedir"
-# to exclude EFI/somedir from the scan on the myvol volume but not on
-# other volumes.
+# EFI/memtest directory, the EFI/memtest86 directory, or the
+# com.apple.recovery.boot directory. Using the dont_scan_dirs option
+# enables you to "blacklist" other directories; but be sure to use "+"
+# as the first element if you want to continue blacklisting existing
+# directories. You might use this token to keep EFI/boot/bootx64.efi out
+# of the menu if that's a duplicate of another boot loader or to exclude
+# a directory that holds drivers or non-bootloader utilities provided by
+# a hardware manufacturer. If a directory is listed both here and in
+# also_scan_dirs, dont_scan_dirs takes precedence. Note that this
+# blacklist applies to ALL the filesystems that rEFInd scans, not just
+# the ESP, unless you precede the directory name by a filesystem name,
+# as in "myvol:EFI/somedir" to exclude EFI/somedir from the scan on the
+# myvol volume but not on other volumes.
#
#dont_scan_dirs ESP:/EFI/boot,EFI/Dell,EFI/memtest86
#default_selection Maintenance 23:30 2:00
#default_selection "Maintenance,OS X" 1:00 2:30
+# Enable VMX bit and lock the CPU MSR if unlocked.
+# On some Intel Apple computers, the firmware does not lock the MSR 0x3A.
+# The symptom on Windows is Hyper-V not working even if the CPU
+# meets the minimum requirements (HW assisted virtualization and SLAT)
+# DO NOT SET THIS EXCEPT ON INTEL CPUs THAT SUPPORT VMX! See
+# http://www.thomas-krenn.com/en/wiki/Activating_the_Intel_VT_Virtualization_Feature!
+# for more on this subject.
+# The default is false: Don't try to enable and lock the MSR.
+#
+#enable_and_lock_vmx false
+
# Include a secondary configuration file within this one. This secondary
# file is loaded as if its options appeared at the point of the "include"
# token itself, so if you want to override a setting in the main file,
# its GRUB 2 boot loader. Note uses of Linux-style forward slashes
menuentry Ubuntu {
loader /EFI/ubuntu/grubx64.efi
- icon /EFI/refined/icons/os_linux.png
+ icon /EFI/refind/icons/os_linux.png
disabled
}
} else if (StriCmp(TokenList[0], L"max_tags") == 0) {
HandleInt(TokenList, TokenCount, &(GlobalConfig.MaxTags));
+ } else if (StriCmp(TokenList[0], L"enable_and_lock_vmx") == 0) {
+ GlobalConfig.EnableAndLockVMX = HandleBoolean(TokenList, TokenCount);
+
} else if ((StriCmp(TokenList[0], L"include") == 0) && (TokenCount == 2) &&
(StriCmp(FileName, GlobalConfig.ConfigFilename) == 0)) {
if (StriCmp(TokenList[1], FileName) != 0) {
#define CONFIG_FILE_NAME L"refind.conf"
// Note: Below is combined with MOK_NAMES to make default
#define DONT_SCAN_FILES L"shim.efi,shim-fedora.efi,shimx64.efi,PreLoader.efi,TextMode.efi,ebounce.efi,GraphicsConsole.efi,bootmgr.efi"
-#define DONT_SCAN_VOLUMES L"Recovery HD,LRS_ESP"
+#define DONT_SCAN_VOLUMES L"LRS_ESP"
#define ALSO_SCAN_DIRS L"boot"
EFI_STATUS ReadFile(IN EFI_FILE_HANDLE BaseDir, CHAR16 *FileName, REFIT_FILE *File, UINTN *size);
BOOLEAN TextOnly;
BOOLEAN ScanAllLinux;
BOOLEAN DeepLegacyScan;
+ BOOLEAN EnableAndLockVMX;
UINTN RequestedScreenWidth;
UINTN RequestedScreenHeight;
UINTN BannerBottomEdge;
L"Insert or F2 for more options; Esc to refresh" };
static REFIT_MENU_SCREEN AboutMenu = { L"About", NULL, 0, NULL, 0, NULL, 0, NULL, L"Press Enter to return to main menu", L"" };
-REFIT_CONFIG GlobalConfig = { FALSE, TRUE, FALSE, 0, 0, 0, DONT_CHANGE_TEXT_MODE, 20, 0, 0, GRAPHICS_FOR_OSX, LEGACY_TYPE_MAC, 0, 0,
- { DEFAULT_BIG_ICON_SIZE / 4, DEFAULT_SMALL_ICON_SIZE, DEFAULT_BIG_ICON_SIZE }, BANNER_NOSCALE,
+REFIT_CONFIG GlobalConfig = { FALSE, TRUE, FALSE, FALSE, 0, 0, 0, DONT_CHANGE_TEXT_MODE, 20, 0, 0, GRAPHICS_FOR_OSX, LEGACY_TYPE_MAC,
+ 0, 0, { DEFAULT_BIG_ICON_SIZE / 4, DEFAULT_SMALL_ICON_SIZE, DEFAULT_BIG_ICON_SIZE }, BANNER_NOSCALE,
NULL, NULL, CONFIG_FILE_NAME, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
{ TAG_SHELL, TAG_MEMTEST, TAG_GDISK, TAG_APPLE_RECOVERY, TAG_WINDOWS_RECOVERY, TAG_MOK_TOOL,
TAG_ABOUT, TAG_SHUTDOWN, TAG_REBOOT, TAG_FIRMWARE, 0, 0, 0, 0, 0, 0 }
if (AboutMenu.EntryCount == 0) {
AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT);
- AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.8.3");
+ AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.8.3.2");
AddMenuInfoLine(&AboutMenu, L"");
AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer");
AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012-2014 Roderick W. Smith");
// EFI OS loader functions
//
+// See http://www.thomas-krenn.com/en/wiki/Activating_the_Intel_VT_Virtualization_Feature
+// for information on Intel VMX features
+static VOID DoEnableAndLockVMX(VOID)
+{
+ UINT32 msr = 0x3a;
+ UINT32 low_bits = 0, high_bits = 0;
+
+ // is VMX active ?
+ __asm__ volatile ("rdmsr" : "=a" (low_bits), "=d" (high_bits) : "c" (msr));
+
+ // enable and lock vmx if not locked
+ if ((low_bits & 1) == 0) {
+ high_bits = 0;
+ low_bits = 0x05;
+ msr = 0x3a;
+ __asm__ volatile ("wrmsr" : : "c" (msr), "a" (low_bits), "d" (high_bits));
+ }
+} // VOID DoEnableAndLockVMX
+
static VOID StartLoader(LOADER_ENTRY *Entry, CHAR16 *SelectionName)
{
UINTN ErrorInStep = 0;
+ if (GlobalConfig.EnableAndLockVMX) {
+ DoEnableAndLockVMX();
+ }
+
BeginExternalScreen(Entry->UseGraphicsMode, L"Booting OS");
StoreLoaderName(SelectionName);
StartEFIImage(Entry->DevicePath, Entry->LoadOptions, TYPE_EFI,