Jump to content

[Solved] What makes Clover to recognize drive as OS to boot?


sebus
 Share

20 posts in this topic

Recommended Posts

Just for testing I tried APFS Bootable Clone With Command Line

External USB gets created fine, ofcourse at the end I installed Clover on its EFI (same content as Internal drive), but during USB boot, Clover only gives the choice of internal drive. There is no USB at all (even Clover was booted from it)

 

So what makes a drive show up in Clover as OS bootable?

 

The above procedure is for real Apple hardware, but it should also work for Hack/Clover

 

Thanks

 

sebus

 

edit:

apianti came up with solution, apfs.efi neess to be copied to EFI partition

 

The issue most likely is that the bless command from the method lacks --setBoot as explained here

Edited by sebus
Link to comment
Share on other sites

Hmmm....

0:100  0:000  Build with: [Args: -nb -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED | -D DISABLE_USB_SUPPORT -D NO_GRUB_DRIVERS_EMBEDDED -D USE_BIOS_BLOCKIO -D USE_LOW_EBDA -D HAVE_LEGACY_EMURUNTIMEDXE -a X64 -b RELEASE -t XCODE8 -n 5 | OS: 10.13.6 | XCODE: 10.1]
...
2:502  0:003  - [00]: Volume: PciRoot(0x0)\Pci(0x1D,0x0)\USB(0x1,0x0)\USB(0x2,0x0)
2:512  0:009          USB volume
2:515  0:003          USB volume
2:519  0:003  - [01]: Volume: PciRoot(0x0)\Pci(0x1D,0x0)\USB(0x1,0x0)\USB(0x2,0x0)\HD(1,GPT,61A8C219-C0D7-4966-B209-DA740178AB8B,0x28,0x64000)
2:526  0:007          Result of bootcode detection: bootable unknown (legacy)
2:529  0:003          USB volume
2:532  0:003          USB volume
2:538  0:005          This is SelfVolume !!
2:541  0:003  - [02]: Volume: PciRoot(0x0)\Pci(0x1D,0x0)\USB(0x1,0x0)\USB(0x2,0x0)\HD(2,GPT,59B8B6A9-B2E8-48A9-A4A3-CED06023459E,0x64028,0x1BEC0460)
2:551  0:009          Result of bootcode detection: bootable unknown (legacy)
2:554  0:003          USB volume
2:558  0:003          USB volume

 

Link to comment
Share on other sites

And ofcourse I do have boot.efi in /System/Library/CoreServices as well as in Preboot/GUID/System/Library/CoreServices

 

So that is not an issue here...

 

M73:~ sebus$ sudo systemsetup liststartupdisks
/Volumes/Sandisk/System/Library/CoreServices
/System/Library/CoreServices

And yet the Sandisk USB never shows in Clover while booted from IT

Edited by sebus
Link to comment
Share on other sites

8 hours ago, apianti said:

Why are you using those build options? Also unhide the Preboot volume, apparently I didn't copy that line like I thought I had.

 

That is Clover downloaded from Sourceforge, I did not build it!

Why would I unhide Preboot? I have it hidden on every build, and never seen any problem with it

 

 

5 hours ago, millusions said:

Macs use bless to make a volume bootable, but nobody knows what it does, it communicates with heaven i suspect

 

No, it does NOT work in same way for APFS

 

Well, it is not big secret what bless does - here or here, even if it might be complex

Edited by sebus
Link to comment
Share on other sites

9 hours ago, millusions said:

bro. i like testing things too, but rsync?

that's pure masochism.

 

Macs use bless to make a volume bootable, but nobody knows what it does, it communicates with heaven i suspect

bless is opensource and everybody can look what it does.

Link to comment
Share on other sites

5 hours ago, sebus said:

That is Clover downloaded from Sourceforge, I did not build it!

Why would I unhide Preboot? I have it hidden on every build, and never seen any problem with it

 

You are not being serious right? You already answered yourself....

 

19 hours ago, sebus said:

And ofcourse I do have boot.efi in /System/Library/CoreServices as well as in Preboot/GUID/System/Library/CoreServices

 

......?

 

11 hours ago, millusions said:

bro. i like testing things too, but rsync?

that's pure masochism.

 

Macs use bless to make a volume bootable, but nobody knows what it does, it communicates with heaven i suspect

 

5 hours ago, millusions said:

try this command:

 

apt-get install -f sense-of-humour

 

i dont think it will work, you'll be missing tons of dependencies

 

There's no need to antagonize him for asking a question about something you personally wouldn't do. It would be fine to joke if you were helping or adding to the conversation but you're just looking like a jerk here, man.

Link to comment
Share on other sites

Guest millusions
2 minutes ago, apianti said:

 

You are not being serious right? You already answered yourself....

 

 

......?

 

 

 

There's no need to antagonize him for asking a question about something you personally wouldn't do. It would be fine to joke if you were helping or adding to the conversation but you're just looking like a jerk here, man.

 

yea. your contribution of

 

....?

 

is truly outstanding

 

please refrain from butting in to people's conversations with your opionions.

thanks

Link to comment
Share on other sites

2 minutes ago, millusions said:

 

yea. your contribution of

 

....?

 

is truly outstanding

 

please refrain from butting in to people's conversations with your opionions.

thanks

His contribution to Clover is truly outstanding.

  • Thanks 1
Link to comment
Share on other sites

On 4/11/2019 at 1:35 PM, apianti said:
On 4/11/2019 at 7:28 AM, sebus said:

That is Clover downloaded from Sourceforge, I did not build it!

Why would I unhide Preboot? I have it hidden on every build, and never seen any problem with it

 

You are not being serious right? You already answered yourself....

 

Sorry, did not get what you meant here at all.

I do have Preboot hidden on every build I tried & every build boots fine. Why would here be any different?

 

I did not expect this to be such massive problem (apart from the idiotic non-related replies from people that have obviously nothing better to do in life)

 

Just tried this Sandisk USB boot on real Apple hardware and... it did NOT boot either!

 

So it seems that the "method" does not seem to work correctly & not Clover issue at all! SORRY!

Edited by sebus
Link to comment
Share on other sites

Actually, there is something wrong with the disk. It is not actually being used as APFS, otherwise you would have entries like these:

2:595  0:004  - [06]: Volume: PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(2,GPT,F4185928-69E8-451B-BBAA-944E0F891E29,0x64028,0xEE18260)
2:603  0:007          Result of bootcode detection: bootable unknown (legacy)
2:606  0:003  - [07]: Volume: PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(2,GPT,F4185928-69E8-451B-BBAA-944E0F891E29,0x64028,0xEE18260)\VenMedia(BE74FCF7-0B7C-49F3-9147-01F4042E6842,F5074605EE67754F9CC4A5345DF1B3E5)
2:615  0:008          hiding this volume
2:618  0:003  - [08]: Volume: PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(2,GPT,F4185928-69E8-451B-BBAA-944E0F891E29,0x64028,0xEE18260)\VenMedia(BE74FCF7-0B7C-49F3-9147-01F4042E6842,716C107335260F3B857082F63F730E86)
2:625  0:006  - [09]: Volume: PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(2,GPT,F4185928-69E8-451B-BBAA-944E0F891E29,0x64028,0xEE18260)\VenMedia(BE74FCF7-0B7C-49F3-9147-01F4042E6842,C5809751584BBF4AB74D713E1EC04A4A)
2:634  0:008          hiding this volume
2:637  0:003  - [10]: Volume: PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(2,GPT,F4185928-69E8-451B-BBAA-944E0F891E29,0x64028,0xEE18260)\VenMedia(BE74FCF7-0B7C-49F3-9147-01F4042E6842,3BF72D2BDC8B4341A12BE15CE3606967)

Notice the vendor media extension on the end of the device path for the volumes? That's where the information is accessible, the other from above is just seen as a raw partition because it's never scanned:

2:957  0:005  === [ ScanLoader ] ========================================
3:096  0:139  - [01]: 'EFI'
3:105  0:008          AddLoaderEntry for Volume Name=EFI
3:108  0:003          skipped because entry is hidden
3:112  0:003  - [05]: 'EFI'
3:121  0:009          AddLoaderEntry for Volume Name=EFI
3:124  0:003          skipped because entry is hidden
3:128  0:003  - [07]: 'Preboot', hidden
3:134  0:006  - [08]: 'ToshibaQ128'
3:199  0:064          AddLoaderEntry for Volume Name=ToshibaQ128
3:214  0:014      Check if volume Is Hibernated:
3:217  0:003      Check sleep image 'by signature':
3:239  0:021      read prefs \Library\Preferences\com.apple.PowerManagement.plist status=Success
3:242  0:003      using default sleep image name = \private\var\vm\sleepimage
3:259  0:017      sleepimage not found -> Not Found
3:262  0:003      hibernated: no - sign
3:270  0:007  - [09]: 'Recovery', hidden
3:276  0:006  - [10]: 'VM'

Notice it skips 0, 2, 3, 4, and 6? Those are all the volumes that do not have a file system procotol so they cannot be searched. 2 is your APFS container, it should then have at least two volumes with vendor media extensions, the installer and the Preboot. This means that APFS is not loaded for that disk. Are you using Apfs.efi or ApfsDriverLoader.efi? Also see here about install and Preboot, https://sourceforge.net/p/cloverefiboot/code/HEAD/tree/rEFIt_UEFI/entry_scan/loader.c#l1162, otherwise, https://sourceforge.net/p/cloverefiboot/code/HEAD/tree/rEFIt_UEFI/entry_scan/loader.c#l1093.

 

EDIT: I forgot to answer about the Preboot, I wanted to see if it would detect boot.efi from the preboot, which would also start the installer/system. Then I realized that the problem is with the disk and APFS when I saw what I posted from your log again. I was actually in the middle of class, posting from my phone so I didn't have a bunch of time to look at what was happening. But as soon as I got home, I saw immediately that I am an idiot.

Edited by apianti
Link to comment
Share on other sites

Ok so I see from your log you are using ApfsDriverLoader, which seems that there is no embedded Apfs.efi driver in the APFS container on the USB disk which means that this is caused by an issue with that driver specifically implied by point three:

 

Quote

ApfsDriverLoader
Open source apfs.efi loader based on reverse-engineered Apple's ApfsJumpStart driver. It chain loads the apfs.efi driver that is already embedded in the APFS container from this container.

Loads apfs.efi from APFS container located on the block device.
Apfs driver verbose logging suppressed.
Version system: connects each apfs.efi to the device from which it was retrieved.
Embedded signature verification of chainloaded apfs.efi driver, what prevents possible implant injection.

 

Therefore please replace ApfsDriverLoader with /usr/standalone/i386/apfs.efi from either the installer or your current system volume.

 

EDIT: I think that you have to mount the base image from the installer, unsure. If they are different OS versions, use the one from the installer.

Edited by apianti
  • Thanks 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...