For anybody who's interested, I've released version 0.11.1 of rEFInd. This version exists mainly to support a changed boot loader location in macOS 10.13. (My one test system now shows two boot loaders, but some people have complained that previous versions of rEFInd weren't detecting macOS at all, so I assume my system has two copies of the boot loader for some reason, but this isn't a universal configuration.) There are a few other changes, too, as described in detail in the documentation:
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2017-10-22
I just updated to 0.11.1 and I'm seeing doubles of both OS X and Windows. One of each has the default icon and the others have my custom icons. Didn't have this issue on 0.11.0. I'm running OS X 10.13.1, so it's possible that's related but I kinda doubt it. (Edit: I downgraded back to 0.11.0 and this issue went away, so it's gotta be something specific to the new 10.13 support, I believe.)
Last edit: Anonymous 2017-10-22
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
For macOS, the details are a little obscured, but you may be able to tell something about where the OS is booting by the tag description (e.g., "Boot macOS from MyDisk", indicating that macOS is booting from MyDisk; or "Boot legacy OS from Wherever", indicating a BIOS/CSM/legacy-mode boot). Without such details, and perhaps others like what type of disk you've got (HDD, SSD, NVMe, etc.), I can't offer much advice on what's causing duplicates to appear. That said, rEFInd has always tried to find OS loaders in all the usual places. When they're duplicated by the OSes that install them, as is increasingly common, rEFInd tends to pick up all the duplicates and not remove them from its menu, since sometimes what might look like a duplicate is not a duplicate. (For instance, you might have two installations of the same OS, which rEFInd would not be able to distinguish from a stale old boot loader that's no longer functional.)
That's one of the reasons I wrote the dynamic hiding code introduced in version 0.11.0; with that, you can hide unwanted OS tags with a few keypresses. Note that there was a bug that caused this to not work unless it was explicitly enabled until version 0.11.2, and if you've modified your showtools line in refind.conf, you'll need to explicitly add this feature to that line to use it. See here for more information.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2017-10-22
Well, I can certainly provide you with some of those details now. I've got an SSD bootcamped to run Windows 7 and OS X 10.13.
The original items that showed up on 0.11.0 and prior were:
• Boot macOS from Mac ["Mac" is my hard drive name]
• Boot Windows (Legacy) from BOOTCAMP
The new loaders showing up under 0.11.1 and higher:
• Boot macOS from Preboot
• Boot Legacy OS from FAT volume [there are 1 or 2 extra spaces before the name "FAT volume" for some reason]
Hope these details are useful. I'll use the option to hide the duplicates for now.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Any description with "legacy" in the name refers to a BIOS/CSM/legacy-mode boot. (Unless you put that word in a partition's name, a directory name, etc.) Thus, the extra entry is a mis-detected BIOS-mode boot loader. I recall getting problem reports that APFS volumes were showing up incorrectly as BIOS-bootable, and I definitely recall investigating this. I thought I'd done something to fix it, but I don't see anything in the release notes, so either I'm not remembering that correctly or I forgot to add it to the notes. In any event, if an incorrect entry is showing up for you, and even if I did code a fix, it's obviously not working for you.
The macOS Preboot entry refers to the new location of the macOS boot loader -- on a subvolume called Preboot that doesn't show up in Finder by default. This addition to rEFInd was deliberate, since on some peoples' computers, the other entry (the one that's equivalent to the loader on your "Mac" drive) is not present. Thus, rEFInd either generates duplicates on some peoples' computers or shows no macOS boot loader on other peoples' computers. I don't know of a way to reliably detect that the two entries are actually duplicates, as opposed to separate macOS installations. Thus, this particular problem is not likely to go away -- but there is an easy workaround....
For both of these entries, you can remove duplicates in any of several ways, as described here:
The easiest method is to use the new dynamic hiding feature -- but I recommend upgrading to rEFInd 0.11.2, since there was a bug in 0.11.0 and 0.11.1 that caused this feature to not work unless you explicitly enabled it. Because of the conundrum described above with respect to bootable macOS entries, if you see duplicate entries, you'll either have to live with that or explicitly hide one yourself for the forseeable future. You should be able to hide whichever tag you prefer, with the caveat that if Apple decides to delete the one you leave in the rEFInd menu, you'll then have no boot loader entry for macOS -- but you should be able to get the one you hit back via the recycle icon. For the stray legacy entry, hiding it is also likely to be far easier than debugging the problem in the code, so I suggest you do that. If I'm flooded with complaints, I'll look into the issue some more; but frankly, BIOS-mode boot code is a pain to maintain and is flaky. rEFInd's code for this on Macs is inherited from rEFIt, and it includes some mysterious undocumented stuff that I dare not touch, despite the fact that I receive frequent problem reports about BIOS-mode booting on Macs. (Most of these relate to booting from USB drives.) As far as I'm concerned, the sooner BIOS-mode booting goes the way of the dodo the better. Sooner or later I'll probably change the configuration to disable it by default on Macs, which is already the case on UEFI-based PCs. I'd like to live long enough to rip the code out and gleefully stomp on it, but legacy stuff tends to linger on for decades, so BIOS-mode booting may outlive me. None of this is particularly relevant to your current problem; but you may want to consider this a further incentive to ditch Windows 7 in favor of Windows 10, which can boot in EFI mode on Macs.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
For anybody who's interested, I've released version 0.11.1 of rEFInd. This version exists mainly to support a changed boot loader location in macOS 10.13. (My one test system now shows two boot loaders, but some people have complained that previous versions of rEFInd weren't detecting macOS at all, so I assume my system has two copies of the boot loader for some reason, but this isn't a universal configuration.) There are a few other changes, too, as described in detail in the documentation:
http://www.rodsbooks.com/refind/revisions.html
I just updated to 0.11.1 and I'm seeing doubles of both OS X and Windows. One of each has the default icon and the others have my custom icons. Didn't have this issue on 0.11.0. I'm running OS X 10.13.1, so it's possible that's related but I kinda doubt it. (Edit: I downgraded back to 0.11.0 and this issue went away, so it's gotta be something specific to the new 10.13 support, I believe.)
Last edit: Anonymous 2017-10-22
For macOS, the details are a little obscured, but you may be able to tell something about where the OS is booting by the tag description (e.g., "Boot macOS from MyDisk", indicating that macOS is booting from MyDisk; or "Boot legacy OS from Wherever", indicating a BIOS/CSM/legacy-mode boot). Without such details, and perhaps others like what type of disk you've got (HDD, SSD, NVMe, etc.), I can't offer much advice on what's causing duplicates to appear. That said, rEFInd has always tried to find OS loaders in all the usual places. When they're duplicated by the OSes that install them, as is increasingly common, rEFInd tends to pick up all the duplicates and not remove them from its menu, since sometimes what might look like a duplicate is not a duplicate. (For instance, you might have two installations of the same OS, which rEFInd would not be able to distinguish from a stale old boot loader that's no longer functional.)
That's one of the reasons I wrote the dynamic hiding code introduced in version 0.11.0; with that, you can hide unwanted OS tags with a few keypresses. Note that there was a bug that caused this to not work unless it was explicitly enabled until version 0.11.2, and if you've modified your
showtools
line inrefind.conf
, you'll need to explicitly add this feature to that line to use it. See here for more information.Well, I can certainly provide you with some of those details now. I've got an SSD bootcamped to run Windows 7 and OS X 10.13.
The original items that showed up on 0.11.0 and prior were:
• Boot macOS from Mac ["Mac" is my hard drive name]
• Boot Windows (Legacy) from BOOTCAMP
The new loaders showing up under 0.11.1 and higher:
• Boot macOS from Preboot
• Boot Legacy OS from FAT volume [there are 1 or 2 extra spaces before the name "FAT volume" for some reason]
Hope these details are useful. I'll use the option to hide the duplicates for now.
Any description with "legacy" in the name refers to a BIOS/CSM/legacy-mode boot. (Unless you put that word in a partition's name, a directory name, etc.) Thus, the extra entry is a mis-detected BIOS-mode boot loader. I recall getting problem reports that APFS volumes were showing up incorrectly as BIOS-bootable, and I definitely recall investigating this. I thought I'd done something to fix it, but I don't see anything in the release notes, so either I'm not remembering that correctly or I forgot to add it to the notes. In any event, if an incorrect entry is showing up for you, and even if I did code a fix, it's obviously not working for you.
The macOS Preboot entry refers to the new location of the macOS boot loader -- on a subvolume called
Preboot
that doesn't show up in Finder by default. This addition to rEFInd was deliberate, since on some peoples' computers, the other entry (the one that's equivalent to the loader on your "Mac" drive) is not present. Thus, rEFInd either generates duplicates on some peoples' computers or shows no macOS boot loader on other peoples' computers. I don't know of a way to reliably detect that the two entries are actually duplicates, as opposed to separate macOS installations. Thus, this particular problem is not likely to go away -- but there is an easy workaround....For both of these entries, you can remove duplicates in any of several ways, as described here:
http://www.rodsbooks.com/refind/configfile.html#hiding
The easiest method is to use the new dynamic hiding feature -- but I recommend upgrading to rEFInd 0.11.2, since there was a bug in 0.11.0 and 0.11.1 that caused this feature to not work unless you explicitly enabled it. Because of the conundrum described above with respect to bootable macOS entries, if you see duplicate entries, you'll either have to live with that or explicitly hide one yourself for the forseeable future. You should be able to hide whichever tag you prefer, with the caveat that if Apple decides to delete the one you leave in the rEFInd menu, you'll then have no boot loader entry for macOS -- but you should be able to get the one you hit back via the recycle icon. For the stray legacy entry, hiding it is also likely to be far easier than debugging the problem in the code, so I suggest you do that. If I'm flooded with complaints, I'll look into the issue some more; but frankly, BIOS-mode boot code is a pain to maintain and is flaky. rEFInd's code for this on Macs is inherited from rEFIt, and it includes some mysterious undocumented stuff that I dare not touch, despite the fact that I receive frequent problem reports about BIOS-mode booting on Macs. (Most of these relate to booting from USB drives.) As far as I'm concerned, the sooner BIOS-mode booting goes the way of the dodo the better. Sooner or later I'll probably change the configuration to disable it by default on Macs, which is already the case on UEFI-based PCs. I'd like to live long enough to rip the code out and gleefully stomp on it, but legacy stuff tends to linger on for decades, so BIOS-mode booting may outlive me. None of this is particularly relevant to your current problem; but you may want to consider this a further incentive to ditch Windows 7 in favor of Windows 10, which can boot in EFI mode on Macs.