rEFInd Question: Remove multiple boot items?
There are a number of ways to do what you want, but first, understand that you've got three (or maybe four) entries that boot Ubuntu in different ways:
- The
grubx64.efi
entry launches GRUB, which in turn launches the Linux kernel (and may also offer its own menu for booting other things, depending on how it's configured). - The
boot\vmlinuz-3.11.0-18-generic.efi.signed
entry launches the 3.11.0-18-generic kernel without using GRUB. (It boots via the EFI stub loader, which is built into the kernel itself.) - The
boot\vmlinuz-3.11.0-15-generic.efi.signed
entry launches the 3.11.0-15-generic kernel -- a slightly older kernel than the preceding one. - The "Boot Legacy OS..." option might launch a BIOS-mode version of GRUB -- you don't describe what happens when you select that option, so it's not really clear if it does this or is useful at all.
In any event, the big distinction here is between GRUB and the EFI stub loader. In most cases, both approaches to booting Linux work equally well, but sometimes one works better than the other. Personally, I dislike GRUB; IMHO it's bloated and unnecessarily complex. It's also an extra step in your boot path, given that you probably need rEFInd to manage your triple-boot on a Mac. OTOH, GRUB is the standard way of booting Ubuntu. Note that, although GRUB has just one entry in rEFInd, its own menu (if you set it to appear) will probably enable you to boot either of the two Linux kernels that rEFInd lets you boot directly.
Personally, I'd keep all of those three entries (GRUB and the two kernels), at least if they all work. The reason is that they give you multiple options to boot your computer; if one fails, you'll have the others as fallbacks. Note that your kernel selection is likely to increase as you upgrade your system and new kernels are released. You can keep the list to two or three by using sudo apt-get autoremove
once the list grows beyond that limit.
If you want to remove entries, you have several options, most of which involve editing refind.conf
(which is probably in /boot/efi/EFI/refind
under Linux):
- Add the filename(s) you want to avoid scanning to
dont_scan_files
. Note that hiding individual kernels in this way is inefficient, since you'll need to update the list when new kernels are installed. This could be a good way to hide GRUB, though. - Add the directory/ies where unwanted boot loaders are described to
dont_scan_dirs
. (For instance,boot
to remove the Linux kernels orEFI/ubuntu
to remove GRUB.) - Add the volume names associated with unwanted boot loaders to
dont_scan_volumes
. Note that this is the onlydont_scan_*
option that works with BIOS/CSM/legacy boot options; add any subset of the relevant name to block that entry. - To disable all disk-based BIOS/CSM/legacy boot options, uncomment
scanfor
and ensure thathdbios
is not among the options. This is probably undesirable in your case, though, since you say you're booting Windows 7, and that usually boots in BIOS/CSM/legacy mode. If you managed to install Windows in EFI mode, though, this might be a good option. - To remove both the kernel options, and all future kernel options, you can remove the EFI filesystem driver for your Linux filesystem from the
drivers
(ordrivers_x64
ordrivers_ia32
, depending on your architecture) subdirectory of theEFI/refind
directory on your ESP. This will render rEFInd unable to locate the Linux kernels, so those options will disappear. GRUB does not rely on these drivers, so it will continue to work. - BIOS/CSM/legacy options appear only when rEFInd thinks it's detected boot code on a disk's MBR or in a partition. Given the description of your "Boot Legacy OS..." option, rEFInd has probably found boot code in the MBR. (Bugs in some recent versions of rEFInd cause misidentification of the location, though, so if you're not using version 0.8.7, that identification may be incorrect.) Wiping the boot code can therefore remove an entry from rEFInd's menu. This approach is DANGEROUS, though. I recommend trying it only if you already understand how to do it, which is why I am deliberately not providing explicit instructions on doing it -- I could write a whole answer about how to do this task and it would still probably be incomplete.
The refind.conf
options are described in more detail in comments within refind.conf
and on the rEFInd configuration documentation page.
Easy Fix
In rEFInd bootloader menu, you can hide the excess entries by selecting the extra entries by arrow keys in keyboard and then pressing the Delete key! A confirmation will pop up...upon selecting yes, the entry gets hidden and your bootloader is good to go!!
Cheers!