Jump to content
ErmaC

Clover Problems and Solutions

3,004 posts in this topic

Recommended Posts

 

8:696  0:001  Found internal video device FFFF@3BD2, unusable
What's 3BD2 ?

 

3BD2 is the offset in the DSDT where the device is found.

 

Instead of viewing your DSDT with MaciASL.app, use the command line to disassemble it and display offset and bytes of each line using this command:

~/src/opt/local/bin/iasl -l -d pathtoyourdsdtfile
You may want to know what devadr, devsize, j and j+10 are too:

DBG("Found internal video device FFFF@%x (size=%d), unusable devadr=%x, devsize=%d j=%x j+10=%x\n", devadr1, devsizel, devadr, devsize, j, j+10);
The "Advanced Configuration and Power Interface Specification Version 6.1 [January, 2016]" can tell you what the bytes mean - their meaning should correspond to the disassembly output.

Share this post


Link to post
Share on other sites
Advertisement

Latest Updated to  r3575 at r3578

 

Clover EFI

v2.3k r3575:3578  
 
Why two revision in one Package ???
 
================= Post =================
[bUILD] Post
### /Applications/Xcode.app/Contents/Developer/usr/bin/Rez - SysError -37 during create of "sym/Clover_v2.3k_r3575:3578.pkg".
### /Applications/Xcode.app/Contents/Developer/usr/bin/Rez - Fatal error trying to open the resource file "sym/Clover_v2.3k_r3575:3578.pkg" for writing.
Fatal Error!
### /Applications/Xcode.app/Contents/Developer/usr/bin/Rez - Fatal Error, can't recover.
### /Applications/Xcode.app/Contents/Developer/usr/bin/Rez - Since errors occurred, sym/Clover_v2.3k_r3575:3578.pkg's resource fork was not completely updated.
### /Applications/Xcode.app/Contents/Developer/usr/bin/Rez - SysError -43 during set file info.
 
 --------------------------
 Building process complete!
 --------------------------
 
 Build info.
 ===========
  Package name: Clover_v2.3k_r3575:3578.pkg
  MD5:          da7e508297e3d86180758ffe3ac7fde3
  Version:      v2.3k
  Stage:        v2.3k
  Date/Time:    2016-06-26 11:11:24
  Built by:     chris
  Copyright     2012
 
edit*****  SOLVED
Now I am going to try a completed new Build!
 
Solved with a completed new Build!

Share this post


Link to post
Share on other sites

 

To my seems more simple to create a key (supportedOSes) as string where you can write the supported OSes in a component separated by the "," char inside each KextsToPatch dictionary:

supportedOSes = 10.11,10.12,10.11.7

just an idea.

Clover should create an array by split the components separated by "," as supported Os for the relative patch. So can be dinamically applied  when the OS version match.

 

Another good idea.

But more complicate to release.

These way we can edit OS specific settings in GUI, in more huge GUI.

 

Very good, but it can't be applied to Clover sources without some refactoring.

#include <string.h> is impossible in the project. All string functions must be replaced by analogous. And I seems have no analog for strtok()

 

Hi Slice I have a working solution (made my own functions):

Platform.h.zip

Settings.c.zip

 

Only, I don't know where to keep the OSVersion, as you can see at line 1121 (Settings.c):

struct MatchOSes currOStoc; GetStrArraySeparatedByChar("10.11.6" /* need GetOSversion here */, '.',  &currOStoc);

..I had to do it manually and must be changed.

 

Usage:

 

MatchOS = 10.10.5,10.7,10.11.6,10.12.x

a string contains the OSes  separated by commas intrested for the KextsToPatch to be enabled. Can also be a sigle OS (w/o comma(s) in this case)

                       <dict>
				<key>MatchOS</key>
				<string>10.7.x,10.8.x,10.9.x,10.10.x,10.11.x</string>
				<key>Comment</key>
				<string>Zeroing 11d41983 codec (patched by AppleHDA Patcher.app)</string>
				<key>Find</key>
				<data>gxnUEQ==</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>AAAAAA==</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>Zeroing 11d4198a codec (patched by AppleHDA Patcher.app)</string>
				<key>MatchOS</key>
				<string>10.12.x</string>
				<key>Find</key>
				<data>ihnUEQ==</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>AAAAAA==</data>
			</dict> 

format like 10.12.x or 10.7.x means that all revisions of 10.12 or 10.7 are good to run the patch. Specific component like 10.11.6 mean that this patch will be activated only for 10.11.6 (not for 10.11.5 for example).

 

Limits:

MatchOS string should not begin or end with the separator (',') otherwise the patch will be disabled. In the event it would be a user error.

 

struct MatchOSes {

    UINTN   count;

    CHAR8  * array[100];

} MatchOSes;

 

the array is actually set to 100 components.. edit if you want a bigger/smaller capacity.

 

Log:

0:137  0:000  KextsToPatch: 6 requested
0:137  0:000  KextsToPatch 0: IOAHCIBlockStorage (Enable TRIM for SSD) (no MatchOS)
0:137  0:000   Kext bin patch, data len: 11
0:137  0:000  KextsToPatch 1: AppleUSBXHCIPCI (remove usb limit) (no MatchOS)
0:137  0:000   Kext bin patch, data len: 7
0:137  0:000  KextsToPatch 2: AppleHDA (Zeroing 11d41983 codec) (enabled by MatchOS)
0:137  0:000   Kext bin patch, data len: 4
0:137  0:000  KextsToPatch 3: AppleHDA (Zeroing 11d4198a codec (patched by AppleHDA Patcher.app)) (disabled by MatchOS)
0:137  0:000  KextsToPatch 4: AppleHDA (Zeroing 11d41984 codec (patched by AppleHDA Patcher.app)) (no MatchOS)
0:137  0:000   Kext bin patch, data len: 4
0:137  0:000  KextsToPatch 5: AppleHDA (Patching 11d4198b with 111d76e0 codec (patched by AppleHDA Patcher.app)) (no MatchOS)
0:137  0:000   Kext bin patch, data len: 4 

KextsToPatch 2 enabled and KextsToPatch 3 disabled because running in 10.11.6, all others have no "MatchOS" set and are working as usual  :D

This is an example, but the Scenario is cool because patching new Sierra's AppleHDA (for example) I need to zeroing one codec, instead in El Capitan another one.... like can be for other kexts :lol:

 

Need to be well tested but hope you like it  :)

Share this post


Link to post
Share on other sites

Usage:

 

MatchOS = 10.10.5,10.7,10.11.6,10.12.x

a string contains the OSes  separated by commas intrested for the KextsToPatch to be enabled. Can also be a sigle OS (w/o comma(s) in this case)

 

format like 10.12.x or 10.7.x means that all revisions of 10.12 or 10.7 are good to run the patch. Specific component like 10.11.6 mean that this patch will be activated only for 10.11.6 (not for 10.11.5 for example).

 

Limits:

MatchOS string should not begin or end with the separator (',') otherwise the patch will be disabled. In the event it would be a user error.

 

the array is actually set to 100 components..

I would like to see a regular expression library added to Clover (such as the one at https://github.com/cesanta/slre). It could be used in so many places to match strings in config.plist. In this case you're MatchOS string could look like this:

<key>MatchOS</key>
<string>^10\.(7|8|9|10|11)\..*</string>
In a more general case example, for "Arbitrary" properties, the "PciAddr" string could be replaced by a regular expression that can match to any properties of a device which Clover can concatenate into a larger string. Clover can construct a string using a known format containing the PciAddr, device id, vendor id, class code, name, device path, etc. Then the match string can be a regular expression that matches to any combination of those properties. This could make matching even more capable than Apple's info.plist IOKitPersonalities matches.

 

The regular expression could contain capture strings that could be used in subsequent regular expressions. For example, "Find", then "Replace".

 

A benefit of a regular expression is that it could be used to make a config setting applicable to more systems without modification. In the above PciAddr example, matching to a device id and vendor id might be more compatible (system independent) than a hard coded PciAddr (system dependent). In another case, a patch to rename an ACPI device could apply to multiple DSDTs if the Find string could be a regular expression containing all the source possibilities; example: Find "(AZAL|HDAS)" Replace: "HDEF".

Share this post


Link to post
Share on other sites

 

 

 

Hi Slice I have a working solution (made my own functions):

attachicon.gifPlatform.h.zip

attachicon.gifSettings.c.zip

 

Only, I don't know where to keep the OSVersion, as you can see at line 1121 (Settings.c):

struct MatchOSes currOStoc; GetStrArraySeparatedByChar("10.11.6" /* need GetOSversion here */, '.',  &currOStoc);

..I had to do it manually and must be changed.

 

Usage:

 

MatchOS = 10.10.5,10.7,10.11.6,10.12.x

a string contains the OSes  separated by commas intrested for the KextsToPatch to be enabled. Can also be a sigle OS (w/o comma(s) in this case)

                       <dict>
				<key>MatchOS</key>
				<string>10.7.x,10.8.x,10.9.x,10.10.x,10.11.x</string>
				<key>Comment</key>
				<string>Zeroing 11d41983 codec (patched by AppleHDA Patcher.app)</string>
				<key>Find</key>
				<data>gxnUEQ==</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>AAAAAA==</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>Zeroing 11d4198a codec (patched by AppleHDA Patcher.app)</string>
				<key>MatchOS</key>
				<string>10.12.x</string>
				<key>Find</key>
				<data>ihnUEQ==</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>AAAAAA==</data>
			</dict> 

format like 10.12.x or 10.7.x means that all revisions of 10.12 or 10.7 are good to run the patch. Specific component like 10.11.6 mean that this patch will be activated only for 10.11.6 (not for 10.11.5 for example).

 

Limits:

MatchOS string should not begin or end with the separator (',') otherwise the patch will be disabled. In the event it would be a user error.

 

struct MatchOSes {

    UINTN   count;

    CHAR8  * array[100];

} MatchOSes;

 

the array is actually set to 100 components.. edit if you want a bigger/smaller capacity.

 

Log:

0:137  0:000  KextsToPatch: 6 requested
0:137  0:000  KextsToPatch 0: IOAHCIBlockStorage (Enable TRIM for SSD) (no MatchOS)
0:137  0:000   Kext bin patch, data len: 11
0:137  0:000  KextsToPatch 1: AppleUSBXHCIPCI (remove usb limit) (no MatchOS)
0:137  0:000   Kext bin patch, data len: 7
0:137  0:000  KextsToPatch 2: AppleHDA (Zeroing 11d41983 codec) (enabled by MatchOS)
0:137  0:000   Kext bin patch, data len: 4
0:137  0:000  KextsToPatch 3: AppleHDA (Zeroing 11d4198a codec (patched by AppleHDA Patcher.app)) (disabled by MatchOS)
0:137  0:000  KextsToPatch 4: AppleHDA (Zeroing 11d41984 codec (patched by AppleHDA Patcher.app)) (no MatchOS)
0:137  0:000   Kext bin patch, data len: 4
0:137  0:000  KextsToPatch 5: AppleHDA (Patching 11d4198b with 111d76e0 codec (patched by AppleHDA Patcher.app)) (no MatchOS)
0:137  0:000   Kext bin patch, data len: 4 

KextsToPatch 2 enabled and KextsToPatch 3 disabled because running in 10.11.6, all others have no "MatchOS" set and are working as usual  :D

This is an example, but the Scenario is cool because patching new Sierra's AppleHDA (for example) I need to zeroing one codec, instead in El Capitan another one.... like can be for other kexts :lol:

 

Need to be well tested but hope you like it  :)

 

Interesting, but in addition to what @joevt said, you're missing the whole point of a structure. The structures in C were created in order to bypass the limitation of a predetermined array.

 

Try to solve the below problem and you'll understand what I mean.

http://cdn.cs50.net/2016/x/psets/5/pset5/pset5.html

Anyway, good try.  :) 

 

Best regards.

 

Share this post


Link to post
Share on other sites

 

 

 

Hi Slice I have a working solution (made my own functions):

attachicon.gifPlatform.h.zip

attachicon.gifSettings.c.zip

 

Only, I don't know where to keep the OSVersion, as you can see at line 1121 (Settings.c):

struct MatchOSes currOStoc; GetStrArraySeparatedByChar("10.11.6" /* need GetOSversion here */, '.',  &currOStoc);

..I had to do it manually and must be changed.

 

 

 

This is very significant note as OS version is not available at the time of reading config.plist.

But I like this idea and rework it using these procedures.

So, when reading config.plist we just remember what patch for a what and show this in debug.log.

When starting a Mac OS we determine its version and then apply patches if they allowed.

Some reformatting to Teano Code Style and some security improvements.

Revision 3580.

Share this post


Link to post
Share on other sites

I just built 3580 because I could really use this OS-specific patching to tidy things up.

 

However, it's not applying patches that are shared between OS versions. So if I'm booting 10.10.5 and have a patch that's valid for 10.10.x and 10.11.x it gets skipped. It will only apply patches that have MatchOS set to 10.10.x.

 

In bdmesg it shows the matched OSes for the patches so I'm guessing I have the syntax right for the MatchOS line (10.10.x,10.11.x,10.12.x).

Share this post


Link to post
Share on other sites

I just built 3580 because I could really use this OS-specific patching to tidy things up.

 

However, it's not applying patches that are shared between OS versions. So if I'm booting 10.10.5 and have a patch that's valid for 10.10.x and 10.11.x it gets skipped. It will only apply patches that have MatchOS set to 10.10.x.

 

In bdmesg it shows the matched OSes for the patches so I'm guessing I have the syntax right for the MatchOS line (10.10.x,10.11.x,10.12.x).

Please set

	<key>KernelAndKextPatches</key>
	<dict>
		<key>Debug</key>
		<true/>

and look on the screen what is happen.

Share this post


Link to post
Share on other sites

 

Micky1979

 

Support 10.6 too.

Thanks

should work with all supported OS by Clover

 

Interesting, but in addition to what @joevt said, you're missing the whole point of a structure. The structures in C were created in order to bypass the limitation of a predetermined array.

 

Try to solve the below problem and you'll understand what I mean.

http://cdn.cs50.net/2016/x/psets/5/pset5/pset5.html

Anyway, good try.   :) 

 

Best regards.

 

Thanks. In truth the struct must have a fixed size known at compile time otherwise we have to use malloc to dinamically allocate space for it and then free it as soon as possible/where it possible. And no one can stop Slice to make it this way, I just thought this is really enough, to handle the new key. (I guess users don't make their thesis there ha ha)

Thanks also for the link that refear to some Academic stuff. Just 4 days ago I had my last "High School" diploma exam (explain my Thesis) as "Accountant"  programmers branch (chose that instead of commerce branch after the first two years) and now I need to think about college, but really do not know if it will have to deal with softwares since I'm already an active Dev on the Apple Store since last years (I'm selling softwares  :hysterical: ) What I mean is that also today I receive a small amount from "Payments and Finacial Reports" on Itunes, but Its not enough. Maybe I will look to maintain the interests of the family, but it requires a degree in Mechanical Engineering.. (90%)

I would like to see a regular expression library added to Clover (such as the one at https://github.com/cesanta/slre). It could be used in so many places to match strings in config.plist. In this case you're MatchOS string could look like this:

<key>MatchOS</key>

<string>^10\.(7|8|9|10|11)\..*</string>

Yep the idea is cool but is less simple for noobs, powerfull for advanced user.

 

This is very significant note as OS version is not available at the time of reading config.plist.

But I like this idea and rework it using these procedures.

So, when reading config.plist we just remember what patch for a what and show this in debug.log.

When starting a Mac OS we determine its version and then apply patches if they allowed.

Some reformatting to Teano Code Style and some security improvements.

Revision 3580.

Thanks  :thumbsup_anim:

 

I just built 3580 because I could really use this OS-specific patching to tidy things up.

 

However, it's not applying patches that are shared between OS versions. So if I'm booting 10.10.5 and have a patch that's valid for 10.10.x and 10.11.x it gets skipped. It will only apply patches that have MatchOS set to 10.10.x.

 

In bdmesg it shows the matched OSes for the patches so I'm guessing I have the syntax right for the MatchOS line (10.10.x,10.11.x,10.12.x).

 

I'm at Home just now.. going to try me too..

Share this post


Link to post
Share on other sites

Please set

	<key>KernelAndKextPatches</key>
	<dict>
		<key>Debug</key>
		<true/>

and look on the screen what is happen.

 

Yep, that's what I've done. This is how I can see that when booting Yosemite on my X79 it's only applying the patches where the MatchOS is "10.10.x".

 

The patches where it's "10.10.x,10.11.x" or "10.10.x,10.11.x,10.12.x" aren't being applied.

 

I've attached a screengrab of a video I recorded of the debug boot. See how patches 7, 8 and 10 are applied. But 9 is disallowed.

 

Here's the relevant patch section of bdmesg. See that patch 9 is multi-OS while 7, 8 and 10 are only for Yosemite:

 

 

0:108  0:000  KextsToPatch 7: AppleIntelCPUPowerManagement (Sandy Bridge-E patch for 10.10 (1/7))Matched OSes: 10.10.x

0:108  0:000   Kext bin patch, data len: 12

0:108  0:000  KextsToPatch 8: AppleIntelCPUPowerManagement (Sandy Bridge-E patch for 10.10 (2/7))Matched OSes: 10.10.x

0:108  0:000   Kext bin patch, data len: 3

0:108  0:000  KextsToPatch 9: AppleIntelCPUPowerManagement (Sandy Bridge-E patch for 10.10 (3/7))Matched OSes: 10.10.x,10.11.x,10.12.x

0:108  0:000   Kext bin patch, data len: 4

0:108  0:000  KextsToPatch 10: AppleIntelCPUPowerManagement (Sandy Bridge-E patch for 10.10 (4/7))Matched OSes: 10.10.x

0:108  0:000   Kext bin patch, data len: 12

0:108  0:000  KextsToPatch 11: AppleIntelCPUPowerManagement (Sandy Bridge-E patch for 10.10 (5/7))Matched OSes: 10.10.x

0:108  0:000   Kext bin patch, data len: 3

0:108  0:000  KextsToPatch 12: AppleIntelCPUPowerManagement (Sandy Bridge-E patch for 10.10 (6/7))Matched OSes: 10.10.x,10.11.x,10.12.x

0:108  0:000   Kext bin patch, data len: 5

0:108  0:000  KextsToPatch 13: AppleIntelCPUPowerManagement (Sandy Bridge-E patch for 10.10 (7/7))Matched OSes: 10.10.x,10.11.x

 

post-267996-0-66273900-1467654554_thumb.jpg

Share this post


Link to post
Share on other sites

looks like a problem comparing strings with "AsciiStrCmp". Each components of the MacOS key in config are splitted and the null character added to each one. Also 'CurrOS' have it?

EDIT not this problem looking at your spoiler. But what's it show running Sierra?


Asked this because if not applied you should not see "Kext bin patch, data len: 4" because the for loop "continue" w/o apply the patch.. I'm wrong?

Share this post


Link to post
Share on other sites

looks like a problem comparing strings with "AsciiStrCmp". Each components of the MacOS key in config are splitted and the null character added to each one. Also 'CurrOS' have it?

EDIT not this problem looking at your spoiler. But what's it show running Sierra?

Asked this because if not applied you should not see "Kext bin patch, data len: 4" .. I'm wrong?

 

With Sierra it only applied the three patches that had MatchOS as "10.12.x" and then panicked because it had skipped the others.

 

As for the "Kext bin patch, data len: 4", I wasn't expecting to see that either.  But it seems that Clover still runs through all the patches, it just doesn't apply the ones that don't match the target OS.

Share this post


Link to post
Share on other sites

Sorry, only first chunk 10.10.5 is analysed

+BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS)
+{
+  /* example for valid matches are:
+   10.7, only 10.7 (10.7.1 will be skipped)
+   10.10.2 only 10.10.2 (10.10.1 or 10.10.5 will be skipped)
+   10.10.x (or 10.10.X), in this case is valid for all minor version of 10.10 (10.10.(0-9))
+   */
+  struct MatchOSes osToc;
+  struct MatchOSes currOStoc;
+  BOOLEAN ret = FALSE;
+  INTN i;
+  
+  if (!MatchOS || !CurrOS) {
+    return TRUE; //undefined matched corresponds to old behavior
+  }
+  
+  GetStrArraySeparatedByChar(MatchOS, '.', &osToc);

Tomorrow will rework the algo.

Share this post


Link to post
Share on other sites

Yep the idea is cool but is less simple for noobs, powerfull for advanced user.

Of course we wouldn't want any change to affect existing config.plist's, so adding regular expression support would require a method to determine that the match string is a regular expression. Probably the best way to do that is by using a different key name, maybe with an RE suffix.

Share this post


Link to post
Share on other sites

The ones with only one component. Can you edit these keys (7, 8 and 11) something like that: MatchOS = "10.10.x,10.10.x" instead of only one? ...just to ensure that this is the problem

Share this post


Link to post
Share on other sites

I changed the "10.10.x" entries to "10.10.x,10.11.x" and none of the patches were applied.

 

This was with my earlier compile of 3580, not the one you posted here. I rolled back so I could boot into Yosemite OK without the KP from partial patching.

Share this post


Link to post
Share on other sites

Ok you are right. Booting into el capitan works good, but booting in Sierra sure something is not applied even though the bdmesg apperar to be good:

0:384  0:000  KextsToPatch: 6 requested
0:384  0:000  KextsToPatch 0: IOAHCIBlockStorage (Enable TRIM for SSD) Kext bin patch, data len: 11
0:384  0:000  KextsToPatch 1: AppleUSBXHCIPCI (remove usb limit) Kext bin patch, data len: 7
0:384  0:000  KextsToPatch 2: AppleHDA (Zeroing 11d41983 codec)Matched OSes: 10.7.x,10.8.x,10.9.x,10.10.x,10.11.x
0:384  0:000   Kext bin patch, data len: 4
0:384  0:000  KextsToPatch 3: AppleHDA (Zeroing 11d4198a codec (patched by AppleHDA Patcher.app))Matched OSes: 10.12.x
0:384  0:000   Kext bin patch, data len: 4
0:384  0:000  KextsToPatch 4: AppleHDA (Zeroing 11d41984 codec (patched by AppleHDA Patcher.app)) Kext bin patch, data len: 4
0:384  0:000  KextsToPatch 5: AppleHDA (Patching 11d4198b with 111d76e0 codec (patched by AppleHDA Patcher.app)) Kext bin patch, data len: 4

They are all enabled.. In El Capitan my audio still work because Clover cannot find KextsToPatch 3

Share this post


Link to post
Share on other sites

Looks good

Sergeys-iMac:1 slice$ gcc test_micky.c -o test_micky
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.10.1
patch 10.10.x,10.7,10.6.8 is enabled for 10.10.1End
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.10.5
patch 10.10.x,10.7,10.6.8 is enabled for 10.10.5End
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.8
patch 10.10.x,10.7,10.6.8 is not enabled for 10.8End
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.7.5
patch 10.10.x,10.7,10.6.8 is enabled for 10.7.5End
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.6.3
patch 10.10.x,10.7,10.6.8 is not enabled for 10.6.3End
Sergeys-iMac:1 slice$ 

test_micky.c.zip

Share this post


Link to post
Share on other sites

I tried 3581 but it only applied patches 9, 12 and 13 and panicked afterwards. So now it's applying the patches with multiple OSes but skipping the ones with just a single matched OS.

Share this post


Link to post
Share on other sites

Looks good

Sergeys-iMac:1 slice$ gcc test_micky.c -o test_micky
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.10.1
patch 10.10.x,10.7,10.6.8 is enabled for 10.10.1End
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.10.5
patch 10.10.x,10.7,10.6.8 is enabled for 10.10.5End
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.8
patch 10.10.x,10.7,10.6.8 is not enabled for 10.8End
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.7.5
patch 10.10.x,10.7,10.6.8 is enabled for 10.7.5End
Sergeys-iMac:1 slice$ ./test_micky 10.10.x,10.7,10.6.8 10.6.3
patch 10.10.x,10.7,10.6.8 is not enabled for 10.6.3End
Sergeys-iMac:1 slice$ 

attachicon.giftest_micky.c.zip

 

I tried 3581 but it only applied patches 9, 12 and 13 and panicked afterwards. So now it's applying the patches with multiple OSes but skipping the ones with just a single matched OS.

 

Yes appear to be good less when only one os is given:

else {
    // str contains only one component and it is our string!
    mo->array[0] = str;
  }

when  is only one "token" fails because later we call "FreePool" but  is not allocated by malloc (AllocatePool). We have to use "AllocatePool" also for that otherwise cannot be freed.  

EDIT

 

or skip it if the count == 1

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By gengik84
      Ciro82==>>Thanks
      Uno dei tre Requisiti:
      Hack funzionante Mac vero Macchina virtuale Impostazioni Bios per il boot:
      Cercate una voce  del tipo “Sata Mode”e settatela  in AHCI
      Secure Boot: disabilitare o altri sistemi operativi
      CSM: UEFI o LEGACY, oppure a secondo del tipo di installazione
      VT-x / VT-d disable
      *Nota: Secure boot e csm valido solo per bios UEFI
      Materiale Occorrente 
      "OS X (Versione App.Store)”
      USB 8GB  *nota: nel caso di usb superiori dovrà essere partizionata, in modo da avere una partizione su cui "lavoreremo,di questa dimensione
      ShowAllfiles 
      kext Wizard 
      Bootloader Clover_2.3k_r xxx:                   http: //sourceforge.n.../cloverefiboot/
      Clover Configurator:                                    http: //mackie100proj...a.org/download/
      FakeSmc.kext:                                            https://github.com/kozlek/HWSensors/releases
      In allegato,a fondo pagina troverete un "pacchetto" contenente : ShowAllfiles, Kext Wizard, FakeSmc.kext: 
      App alternative:
      ESP Mounter Pro: per montare la partizione EFI
      Vi illustrerò tre metodi per creare la usb, ma sono ben distinti… quindi usatene soltanto uno
      Metodo 1: “Install Mac_OS_X.command” Metodo 2: “Create Install Media di Apple” Metodo 3:  Metodo Manuale Alla fine delle preparazione dell’installer, tutti i metodi necessitano l’installazione del Bootloader Clover sulla a vostra USB.
      “CONDIZIONI OBBLIGATORIE”
      PUNTO 1: che la vostra usb sia stata preventivamente nominata USB (caratteri maiuscoli) Tabella di partizione GUID e la formattazione in  Mac esteso Journaled.
      PUNTO 2: che l’installer di OSX si trovi in Applicazioni
      Utility Disco 
      Selezionate la pendrive, andate su “partizione”, selezionate “1 partizione”, impostate Mac OS esteso journaled e date il nome USB, poi in basso cliccate su opzioni e scegliete Tabella partizione (GUID), poi “applica”.
      Immagine 
      Riporto nuovamente l’operazione sopra citata adoperando dal nuovo Utility Disco introdotto su El Capitan.
      Rimane ovviamente invariato nome della usb in ==>> USB (maiuscolo), la formattazione in Mac esteso Journaled e sia la mappa partizione in GUID
      Da utility disco selezionate la usb, cliccate su inizializza.
      dal menù a tendina scegliete la relative impostazioni
      Immagine  
      Procedura effettua da High Sierra è la stessa della precedente, l'unica attenzione e operazione da aggiungere in primis  è cliccare nel menù a tendina in alto sulla sinistra di utility disco e selezionare "mostra tutti i dispositivi"
      Immagine 
       
      =====================
        METODO 1: "Install_Mac_OS_X.Command" Lo script che trovate allegato in fondo alla guida permette la creazione dell’installer in maniera automatica
      Include la possibilità di scelta di tre versioni di osx
      Yosemite El Capitan Sierra Il risultato finale è come quello del metodo "manuale" descritto nella guida, per cui l'installazione avverrà in un solo passaggio, non in due come con il metodo createinstallmedia. 
      Offre inoltre la possibilità di inserire un kernel patchato, utile, per esempio, per chi usa AMD.
      Rimane invariato il nome dato alla usb in USB, mappa partizione e tipo di formattazione
      Se la vostra usb non sarà rinominata nel modo corretto, verrete avvisati dal terminale, quindi non dovrete far altro che apportare la relativa modifica e rilanciare nuovamente lo script
      Esempio
      ===========================
      Metodo 2 
      L'intento è quello di usare la procedura fornitaci direttamente da Apple, "createinstallmedia", introdotta  con Mavericks. 
      Tale metodo prevede l’uso del terminale che via via se ne sta perdendo il “valore e l’uso”
      Inizialmente per i neofiti potrà sembrare problematico ma alla fine non è così.
      Durante il post installazione alcune operazioni ne richiedono l’ uso.
      Perciò mi sono chiesto perchè, qualora uno volesse, non far conoscere da subito un po’ questo “strumento”???
      Per favorirvi vi ho allegato i comandi già  “pronti”, i quali li potrete copiare ed incollare sul terminale.
      A questo punto aprite il terminale, copiate ed incollate il comando sottostante e premete invio, digitate la vostra password e premete nuovamente invio.
      Comando per creare USB con Yosemite:
      sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ Yosemite.app --nointeraction  
      Comando per creare USB con El Capitan
      sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app --nointeraction Comando per creare USB con Sierra 
      sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ Sierra.app/ --nointeraction Per creare USB con Hight Sierra o Mojave usate --> C_I_M (aggiornato per 10.14)
       
      Funziona con il drag & drop sul terminale, in questo caso non vi è necessità che la usb sia nominata in un determinato modo ed essendo basato su create install media ovviamente funziona da 10.9 a 10.14.... 
      BENE…IL PROCESSO DI CREAZIONE E’ INIZIATO…
      AVREMO CIRCA 20/30 MINUTI DI TEMPO LIBERO A CUI DEDICARSI A CIO’ CHE VOGLIAMO………………………………………..  
      COLGO L’OCCASIONE PER FARVI NOTARE LA VELOCITA’ E LA SICUREZZA DI QUESTO METODO
      CONFRONTATE QUESTO CON IL TERZO METODO E NOTERETE CHE CON UN SOLO PASSAGGIO, OSSIA IL COMANDO DATO AL TERMINALE, FACCIAMO IN UNA SINGOLA OPERAZIONE TUTTI I VARI STEP DESCRITTI SULL’ ALTRO METODO.
      DETTO QUESTO, MOLTO IMPORTANTE E’ SOTTOLINEARE CHE COSI’ FACENDO EVITEREMO ERRORI  DI DISTRAZIONE RIGUARDO AI PASSAGGI O FRAINTENDIMENTI.
      Immagine 
      Potete adesso passare ad installare il bootloader Clover sulla vostra usb.
      *NOTA*:
      Avendo usato questo metodo l'installazione si dividerà in due fasi, perciò dopo il primo riavvio e necessario far partire nuovamente l'installer, selezionare lo stesso disco senza formattarlo.
      Finita questa ulteriore fase , l'installazione sarà terminata
      =========================
      METODO "MANUALE"....  (lascio per futura memoria-Compatibile fino a 10.12)
      ==========================
      Bootloader
      **Nota:** Installazione in UEFI  dipenderà dalla scheda madre in vostro possesso, quindi se non supporta tale opzione , il bootloader dovrà essere installato in  modalità Legacy.
       Vi invito, qualora non sapeste questa informazione, a recarvi nel sito ufficiale del produttore e controllare le informazioni a riguardo
      Fatto questo dobbiamo installare  Clover sulla usb.
      A seconda del tipo di Bios o al tipo di installazione che vogliamo fare UEFI o Legacy avremo ovviamente configurazioni diverse in questa fase.
      Lanciate il pkg.
      Immagine 

       
      Cambiate la destinazione di installazione ad USB oppure Install Mac_OS_X (a secondo del tipo di creazione eseguita)
      Successivamente clicchiamo su "Ad Hoc"
      Per Installazione UEFI
      Mettete i flag   : Installazione solo per avvio UEFI
                               : installare Clover nella ESP
                               : Driver64UEFI  AptioMemory --> (consigliato) 
                               : Driver64UEFI  ApfsDriverLoader --> (consigliato) --> sostituisce l'uso del driver apfs.efi
                               : Selezionate l'altri driver come da successiva immagine,
       
      *Nota: Altri driver che si possono usare  al suo posto  sono:
       informazioni 
       
      Proseguite con l’installazione.
      Immagine 
      ** Ricordate che avrete accesso a questa cartella dopo aver montato la partizione EFI**
      ===========================
      Per installazione Legacy
      Immagine 
      ===========================
      Impostazione per config.plist:
      Con clover configurator “montate” la partizione EFI della usb.
      1) Per fare questo nel menù di sinistra, cliccate su “Mount EFI”
      2) individuate la partizione relativa alla vostra usb, a questo punto montiamo la relativa partizione EFI  selezionando l’apposito pulsante “Mount Partition”
      Immagine 
      3) Successivamente cliccate su “Open Partition”.. recatevi in EFI/Clover ed aprite il config.plist
      4) Sezione ACPI: Disabilitate tutti i fix sia del menù 1 che del menù 2
      Immagine 
      5) Sezione BOOT: Sole se si sta installando Yosemite mettete il flag su kext-dev-mode=1
      Immagine 
      6) Sezione RT Variables: Se si sta installando El Capitan oppure Sierra, aggiungere i valori: BooterConfig= 0x28, CsrActiveConfig= 0x67
      Immagine 
      7) Sezione System Parameters: Su inject kext mettete YES
      Immagine 
      ===========================
      Nota: Su El Capitan, è stato introdotto SIP (System Integrity Protection)
      Info:
      ===========================
      Recatevi in EFI/Clover/kext/10.x 
      X= alla versione di osx che state installando. Per esempio se installerete Yosemite dovrete recarvi nella cartella 10.10, con El Capitan in 10.11….ecc
      Se non ci fosse tale cartella, createla e nominatela voi a “modo”.
      Copiatevi all’interno FakeSmc.kext
      *Nota se venite già da altre vostre configurazioni, oltre kext sopra citato ,potete mettere gli altri necessari per il vostro hardware
      Stessa cosa se avete DSDT e/o SSDT potete copiarli in EFI/Clover/Acpi/Patched
      Immagine 
      
      Per High Sierra:
      Scaricare il driver apfs.efi a fine guida, collocarlo:
          --> EFI/clover/Driver64UEFI se stiamo usando UEFI
      --> EFI/Clover/Driver64 se stiamo usando Legacy
       
      Per chi volesse continuare ad usare HFS vi rimando a questo post:
        Come installare High Sierra in HFS direttamente dalla usb  
      Utenti Laptop:  Nel 99% è obbligatorio disattivare la grafica discreta Nvidia/Amd per installare questo nuovo osx
                                     Quindi aggiungete --> SSDT-Disable_DGPU.aml.zip
                                     in EFI/Clover/acpi/Patched della usb
      --------------------------------------------------------------------
      Per Mojave:
      Scaricare il driver apfs.efi per 10.14 a fine guida, collocarlo:
          --> EFI/clover/Driver64UEFI se stiamo usando UEFI
      --> EFI/Clover/Driver64 se stiamo usando Legacy
      Versione di clover non antecedente a V_4015
      Volete usare HFS?
      E' possibile fare un installazione diretta su altro disco o partizione, nel caso può essere usato anche per effettuare aggiornamenti...
      nel caso guardate...
       Mojave in HFS 
       Oppure direttamente da usb  
       
      Fatto questo avrete la vostra USB bootable per installare OSX.
      ………Non scordatevi Fakesmc.kext da mettere nella relativa cartella…. senza il quale non farete mai il Boot......
      *NOTA: se usato il terminale per la creazione della usb, l'installazione si dividerà in due fasi, perciò dopo il primo riavvio e necessario far partire nuovamente l'installer, selezionare lo stesso disco senza formattarlo.
      Finita questa ulteriore fase , l'installazione sarà terminata
      **NOTA** Se avete processori Broadwell,Skylake o Kabylake...usate FakeSmc.kext e relativi sensors che trovate all'interno del secondo pacchetto.. (potete usarlo anche sui precedenti senza problemi, essendo una versione più aggiornata ha ulteriore supporto per le cpu più recenti)
      Update: Fakesmc e sensors versione 6.26
      Post installazione... post #2           
       Buon Hack….. 
      Aggiornamento:Install_Mac_OS_X.command.zip (compatibile da 10.10 a 10.12)
      le info le trovate a questo post
      Ringrazio @Ciro82 che mi ha aiutato nel preparare questa guida.
      Pacchetto.zip
      Pacchetto-2.zip
      apfs.efi-10.13-NoLog.zip
      Pacchetto-Fake+Sensors 6.26.1440.zip
      apfs.efi-10.13.1-No_LOG.zip
      apfs.efi-10.13.2_No_Log.zip
      apfs.efi-10.13.3-No_Log.zip
      apfs.efi-10.13.4-No_Log.zip
      apfs.efi-10.13.5_No_Log.zip
      C_I_M.zip
       
      apfs.efi-10.14-beta1_No_Log.zip






    • By tbianco
      Ho comprato da poco un Acer Aspire 5750G e girando su internet ho trovato la cartella efi che garantiva quasi tutto funzionante perfino il wifi (https://github.com/zipippino/HighSierraAspire5750G).
      Allora felicissimo installo macOS e a parte incappare in errori stupidi, riesco a fare tutto, ma quando sono riuscito ad installare clover Legacy e sostituendo la roba con la 'mia' efi clover si avvia ma macOS no, semplicemente non carica (si nota anche pk la spia dell'hdd che dice se è in attivitá è spenta.
      Qualcuno può aiutarmi?
    • By RougeOne
      Budget Workstation MacOS 10.14.1 build: z370 AORUS Gaming 5 - i5-8600K - RX 580 - UHD 630
      flawless iGPU/dGPU integration, fast FCPX editing/rendering, great overall performance for ~$1200 / ~£1000
       
      I'm gonna come straight out and admit it - I used newb tools which are considered taboo on InsanelyMac, and so this isn't so much an installation guide as it is a green flag to anyone considering the same hardware. My first and previous Hackintosh project was just over ten years ago and this site was massively helpful, so this is my (very small) way of giving back.
       
      EFI DIRECTORY
      http://s000.tinyupload.com/index.php?file_id=97606131925137056003
       
      HARDWARE
      CPU: Intel i5-8600K 3.6GHz hexacore (contains UHD 630 iGPU)
      CPU Cooler: be quiet! Pure Rock Slim (no paste needed, and fan facing front)
      Mobo: GIGABYTE z370 AORUS Gaming 5 (WIFI)
      RAM: 1x 8GB CORSAIR Vengeance LPX C16 2666MHz (in first slot)
      GFX Card: Sapphire RX 580 NITRO+ SE
      SATA: used ports 0, 1, 3, 5 (HDD problems when connected to port 4)
      HDD: generic
      DVD Drive: generic
      PSU: EVGA 500W Semi Modular (but you should get 650W!)
      Case: CoolerMaster CM590 III
      Fans: 2x stock case fans (one sucky on front, one blowy on back), 3x be quiet! BL046 120mm fans (two blowy on top, one sucky on front). Airflow near-perfectly balanced.
       
      ADVICE
      With the Clover configuration, you want to pay close attention to all things relating to graphics. There are some specific settings for ACPI, Boot, Devices and Graphics which should be copied exactly in order to get the iGPU and dGPU to work in perfect harmony. For instance, make sure you use ig-platform-id 59120003 rather than 59120000 if you want FCPX to be usable. With the right settings, FCPX will not only run, but run flawlessly.
       
      I was not able to figure out how to make NVRAM/PRAM behave itself, and I got errors when I tried to issue relevant commands. As a result, I could not get iMessage to work properly. It worked precisely once, on my first installation attempt. This Clover configuration therefore has no consideration whatsoever toward iMessage reliability - if you can get NVRAM/PRAM working properly on this hardware, please do edit the config as you see fit.
       
      Onboard WiFi does not work. There is no driver for it. I'm using wired ethernet to a bridge router as it was cheaper than getting a compatible PCI card.
       
      Audio is working well after I installed the z370 audio patch, then the ALC1220 codecs, then AppleALC.
       
      With kexts for generic 3rd party SATA and generic 3rd party eSATA, my HDDs and DVD drive work perfectly well.
       
      Sleep/Wake functions run perfectly. iCloud functions run perfectly. Shutdown leaves the mobo LEDs on, annoyingly.
       
      Overall, this system appears to run about as well under MacOS 10.14 Mojave as it does under Windows 7. I would solidly recommend this build to anyone looking to build a computer for workstation purposes, on a budget.
    • By Drovosek
      Hello.
      I extracted .aml files via F2 to Clover, then moved iasl and patchmatic to .../bin and DSDT converted.aml to DSDT.dsl
      Then I patched the DSDT.dsl patch battery_HP-G6-2221ss.txt and clicked "Compile".

      11750, 6126, syntax error, unexpected PARSEOP_ARG1
      19689, 6126, syntax error, unexpected PARSEOP_METHOD
      19735, 6126, syntax error, unexpected PARSEOP_CLOSE_PAREN
      19738, 6126, syntax error, unexpected '}', expecting $end and premature End-Of-File

      The first error disappears if you remove all the "args", the third if you remove the closing parenthesis (but I do not know how this is the correct solution to the errors)
       

      debug_9278.zip
      battery_HP-G6-2221ss.txt
      DSDT after bat patching.dsl
      DSDT primary.dsl
    • By JLMOX
      I think, at this point converting to hfs+ is out of the question, Apple has been pushing the apfs file policy very aggressively, so does anybody solved the missing "Boot macOS from Mojave " (this last word may be different). I have installed the latest clover in HDD and USB, but I can only see 3 Mac Os related tabs but not the one for actually loading the Mojabe mac OS. I updated high sierra to Mojave and everything went fine. My laptop (Dell E6530) booted up normally, Mojave system loaded up, I finished the setup and spent sometime exploring. I updated clover to the latest version and turned of machine. When I restarted, I noticed Clover did not have an option for booting into the system like High sierra had it. I tried adding the apfs.efi or the ApfsDriverLoader-64.efi driver to the clover efi folder in the HDD and also tried with a USB clover installation and the result is the same: No boot option for the Mojave OS. I used the recovery option and I was able to explore the partion where the system is located but that´s as far as I could go. Does anybody has an idea of what happened?

×