Hello. This isn't strictly related to rEFInd, but i hope it can help me understand the issue.
So, i use iMac 2017 and i have a Windows 10 installed on an external usb 3.0 ssd drive . It all worked fine (i was just holding option to boot Windows when needed) before i switched the enclosure to usb 3.1/thunderbolt one. Now i can't boot to my Windows installation, it isn't shown as an option.
Here are my disks:
/dev/disk0 (internal):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme 121.3 GB disk0
1: EFI EFI 314.6 MB disk0s1
2: Apple_APFS Container disk2 121.0 GB disk0s2
/dev/disk1 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *2.0 TB disk1
1: EFI EFI 209.7 MB disk1s1
2: Apple_HFS Data 2.0 TB disk1s2
/dev/disk2 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +121.0 GB disk2
Physical Store disk0s2
1: APFS Volume System 92.0 GB disk2s1
2: APFS Volume Preboot 45.9 MB disk2s2
3: APFS Volume Recovery 517.0 MB disk2s3
4: APFS Volume VM 2.1 GB disk2s4
/dev/disk3 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: Apple_partition_scheme *256.1 GB disk3
1: Apple_partition_map 32.3 KB disk3s1
2: Apple_HFS FAST 255.9 GB disk3s3
/dev/disk4 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *250.1 GB disk4
1: EFI EFI 209.7 MB disk4s1
2: Microsoft Basic Data Boot Camp 249.8 GB disk4s2
disk0 is internal ssd, disk1 is internal hdd, disk2 is a virtual fusion drive without hdd part (common practice to use it like that), disk3 is external ssd for data and disk4 is Windows installation i'm trying to boot.
Windows installation is also visible when i boot into macOS (selecting it doesn't help):
Just to be sure, i booted from Windows 10 install, checked that the drive is still here, mounted EFI volume and ran bcdboot on it.
I think that enclosure can be unavailable for some reason on a boot level.
In order to confirm it and to be able to have more control over what's happening i installed rEFInd. It sees only two options - macOS System and macOS Preboot, both lead to the same macOS installation. How can i check if my external drives are available? Is there a way to list drives somehow?
Any advice is much appreciated.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
EFI-mode booting generally requires storing boot loaders on the disk(s) and information pointing to the boot loaders in NVRAM. When you swapped out one disk for another, the NVRAM references stopped being valid, since they referred to the boot loader on the old disk. The solution is to re-register the old boot loader in its new location with the firmware. Unfortunately, I'm not entirely sure how Apple sets this up when you use Boot Camp to dual-boot, so to get it to work in the old way, you'll need to consult Apple's Boot Camp documentation or post on a forum where that expertise hangs out.
In theory, rEFInd should have detected the Windows installation. The fact that it didn't is not an optimistic sign. You can try hitting the Esc key to have rEFInd re-scan for boot loaders. If that works, then setting the scandelay option in refind.conf should work around the problem. (Any value of 1 or above is likely to work, but you can set it higher if that proves to be necessary.) If hitting Esc in rEFInd does not help, then chances are your Mac's EFI lacks support for the new enclosure type. If so, you won't be able to boot from that disk.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I tried rescan already, it didn't help. But i used EFI shell from Clover in rEFInd and here is the output of the map command with my enclosure connected:
And without one:
It adds FS7, so it surely sees something, although i have no idea why there is just one file system. It doesn't really match the output of diskutil i posted earlier. What can i try to manually boot from it?
UPD: drivers i use for rEFInd if that makes any difference
You can try navigating to fs7 by typing fs7: in the EFI shell and then verify that it contains what you expect (presumably an EFI\Microsoft directory tree) with cd and ls. You can repeat that with other filesystems, too, if you don't see what you expect -- it looks like fs2 might be your external drive, too. Given that you've booted the EFI shell from the rEFInd emergency disk, it contains an NTFS driver, which will show your Windows volume, in addition to the Windows boot loader on the ESP. (You do not need the NTFS driver to boot Windows, and I normally advise removing all unnecessary EFI drivers, which in your case would be all of them. This is unlikely to be related to your problems, but it could reveal an extra filesystem in the EFI shell.)
It's possible that the FAT filesystem on the Windows drive's ESP has been damaged. If so, it won't turn up in the EFI shell or will have garbled or missing content. If this is the case, repairing that filesystem is in order.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It turned out that FS7 is another, non-bootable drive (disk3 in diskutil output) in that enclosure. Second disk (disk4) with Windows for whatever reason is not visible on boot.
So i did stupid but straight-forward thing - i swapped those 2 disks and now it sees the drive i want. I have no idea why it's happening and just like before both disks are available in any OS i load, but now i can boot my Windows installation with rEFInd which is great.
Thank you very much!
P.S. For future possible references and google searches - the enclosure in question is Yottamaster D25. Don't buy it i guess :)
Last edit: deseven 2019-02-19
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm glad to hear you figured it out. My guess is that the EFI is scanning for just one physical drive per enclosure. (FWIW, Windows does something similar with partitions on USB drives. That's not exactly the same, but it is precedent for this sort of thing.)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello. This isn't strictly related to rEFInd, but i hope it can help me understand the issue.
So, i use iMac 2017 and i have a Windows 10 installed on an external usb 3.0 ssd drive . It all worked fine (i was just holding option to boot Windows when needed) before i switched the enclosure to usb 3.1/thunderbolt one. Now i can't boot to my Windows installation, it isn't shown as an option.
Here are my disks:
disk0 is internal ssd, disk1 is internal hdd, disk2 is a virtual fusion drive without hdd part (common practice to use it like that), disk3 is external ssd for data and disk4 is Windows installation i'm trying to boot.
Windows installation is also visible when i boot into macOS (selecting it doesn't help):

Just to be sure, i booted from Windows 10 install, checked that the drive is still here, mounted EFI volume and ran bcdboot on it.
I think that enclosure can be unavailable for some reason on a boot level.
In order to confirm it and to be able to have more control over what's happening i installed rEFInd. It sees only two options - macOS System and macOS Preboot, both lead to the same macOS installation. How can i check if my external drives are available? Is there a way to list drives somehow?
Any advice is much appreciated.
EFI-mode booting generally requires storing boot loaders on the disk(s) and information pointing to the boot loaders in NVRAM. When you swapped out one disk for another, the NVRAM references stopped being valid, since they referred to the boot loader on the old disk. The solution is to re-register the old boot loader in its new location with the firmware. Unfortunately, I'm not entirely sure how Apple sets this up when you use Boot Camp to dual-boot, so to get it to work in the old way, you'll need to consult Apple's Boot Camp documentation or post on a forum where that expertise hangs out.
In theory, rEFInd should have detected the Windows installation. The fact that it didn't is not an optimistic sign. You can try hitting the Esc key to have rEFInd re-scan for boot loaders. If that works, then setting the
scandelay
option inrefind.conf
should work around the problem. (Any value of 1 or above is likely to work, but you can set it higher if that proves to be necessary.) If hitting Esc in rEFInd does not help, then chances are your Mac's EFI lacks support for the new enclosure type. If so, you won't be able to boot from that disk.Thank you very much, that's some useful info.
I tried rescan already, it didn't help. But i used EFI shell from Clover in rEFInd and here is the output of the

map
command with my enclosure connected:And without one:

It adds FS7, so it surely sees something, although i have no idea why there is just one file system. It doesn't really match the output of diskutil i posted earlier. What can i try to manually boot from it?
UPD: drivers i use for rEFInd if that makes any difference
Last edit: deseven 2019-02-18
You can try navigating to
fs7
by typingfs7:
in the EFI shell and then verify that it contains what you expect (presumably anEFI\Microsoft
directory tree) withcd
andls
. You can repeat that with other filesystems, too, if you don't see what you expect -- it looks likefs2
might be your external drive, too. Given that you've booted the EFI shell from the rEFInd emergency disk, it contains an NTFS driver, which will show your Windows volume, in addition to the Windows boot loader on the ESP. (You do not need the NTFS driver to boot Windows, and I normally advise removing all unnecessary EFI drivers, which in your case would be all of them. This is unlikely to be related to your problems, but it could reveal an extra filesystem in the EFI shell.)It's possible that the FAT filesystem on the Windows drive's ESP has been damaged. If so, it won't turn up in the EFI shell or will have garbled or missing content. If this is the case, repairing that filesystem is in order.
Solved it!
It turned out that FS7 is another, non-bootable drive (
disk3
indiskutil
output) in that enclosure. Second disk (disk4
) with Windows for whatever reason is not visible on boot.So i did stupid but straight-forward thing - i swapped those 2 disks and now it sees the drive i want. I have no idea why it's happening and just like before both disks are available in any OS i load, but now i can boot my Windows installation with rEFInd which is great.
Thank you very much!
P.S. For future possible references and google searches - the enclosure in question is Yottamaster D25. Don't buy it i guess :)
Last edit: deseven 2019-02-19
I'm glad to hear you figured it out. My guess is that the EFI is scanning for just one physical drive per enclosure. (FWIW, Windows does something similar with partitions on USB drives. That's not exactly the same, but it is precedent for this sort of thing.)