Jump to content
ErmaC

Clover General discussion

21,094 posts in this topic

Recommended Posts

Advertisement

Does not work on my X299 clone.....and I tried all of these options......using Clover 4861

 

Now, I added nothing else, no BootChime stuff, just selected the options and rebooted, each one.  Do I need to do something special?  Do I have to use a specific Theme? (because I just used my standard Buttons theme).  My computer uses a Vega 64 and normally plays it's output on my HDMI, but for this test, I connected a speaker to my green port on the rear of my computer (which, in my computer is seen as internal speakers).  I tested to make sure I got sound, and then went through the rebooting I described earlier.   Three of the HDMI/AMD outputs locked up the computer entirely (only a power off or reset would restore control). 

 

I did use the SVG option, didn't make any difference.....

 

Screen Shot 2019-01-24 at 12.37.05 PM.png

Edited by meaganmargaret
added comments

Share this post


Link to post
Share on other sites
Does not work on my X299 clone.....and I tried all of these options......using Clover 4861
 
Now, I added nothing else, no BootChime stuff, just selected the options and rebooted, each one.  Do I need to do something special?  Do I have to use a specific Theme? (because I just used my standard Buttons theme).  My computer uses a Vega 64 and normally plays it's output on my HDMI, but for this test, I connected a speaker to my green port on the rear of my computer (which, in my computer is seen as internal speakers).  I tested to make sure I got sound, and then went through the rebooting I described earlier.   Three of the HDMI/AMD outputs locked up the computer entirely (only a power off or reset would restore control). 
 
I did use the SVG option, didn't make any difference.....
 
301340704_ScreenShot2019-01-24at12_37_05PM.png.769b4506a8a70d769986698ead2f60bc.png

You need to have the sound file (named sound.wav) in the theme folder that you are you using to hear the sound. The wav file also must be converted properly or you can copy and paste the one supplied in the Clovy folder to your current theme folder.


Sent from my iPhone using Tapatalk

Share this post


Link to post
Share on other sites
35 minutes ago, SavageAUS said:


You need to have the sound file (named sound.wav) in the theme folder that you are you using to hear the sound. The wav file also must be converted properly or you can copy and paste the one supplied in the Clovy folder to your current theme folder.


Sent from my iPhone using Tapatalk

 

So, that worked.  I wish the sound it made was better.  Comparing it to being played outside Clover and when Clover plays it at boot, well, there's a world of difference. The other thing that concerns me is no AMD on HDMI support........oh well, baby steps, I guess.....

Edited by meaganmargaret

Share this post


Link to post
Share on other sites

I have sound when in GUI F7, but when booting Mojave, computer resets, need to delete AudioDxe.efi in order to boot, is there a missed bug somewhere?

Edited by STLVNUB

Share this post


Link to post
Share on other sites
4 hours ago, SavageAUS said:

Kext injection appears to be broken in macOS Mojave 10.14.4 beta.


Sent from my iPhone using Tapatalk

No worries, I have fixed it up!

 

 

EDIT:

Please see https://www.insanelymac.com/forum/topic/284656-clover-general-discussion/?do=findComment&comment=2661179 for the final fix!

Edited by PMheart

Share this post


Link to post
Share on other sites
3 hours ago, meaganmargaret said:

 

So, that worked.  I wish the sound it made was better.  Comparing it to being played outside Clover and when Clover plays it at boot, well, there's a world of difference. The other thing that concerns me is no AMD on HDMI support........oh well, baby steps, I guess.....

My laptop had issues playing the startup sound from a theme. It played but it was buzzy - nasally. I converted the sound.wav from 8000 to 48000 and now it sounds fine. You may want to try it. I used audacity. 

Share this post


Link to post
Share on other sites

In Mojave 10.14.4 Dev Beta 1. Clover fail to inject kext. PMHeart make modification of clover injection and can do that, please make a fix default_smile.pngc4a37badcddedec87a21444671349d57.jpg&key=aefe070544bd15337895a0ec6bcb52ffa0f16f68c90123252b5d5a833dcbd1a3

 

Sent from my Mi Note 2 using Tapatalk

 

 

 

 

 

 

Share this post


Link to post
Share on other sites

Hi again,

 

I have cleaned up kext_inject.c once more. (See here)

Now that a friend has confirmed that it did work, let me post the diff here.

 

--- kext_inject_org.c	2019-01-25 10:20:46.000000000 +0800
+++ kext_inject_mod.c	2019-01-25 10:42:03.000000000 +0800
@@ -665,16 +665,30 @@
 UINT8   KBEMojaSearchEXT[]       = { 0xE8, 0xAF, 0x00, 0x00, 0x00, 0xEB, 0x05, 0xE8 };
 UINT8   KBEMojaReplaceEXT[]      = { 0xE8, 0xAF, 0x00, 0x00, 0x00, 0x90, 0x90, 0xE8 };
 
-// High Sierra/Mojave (SIP)
-// PMheart: checked KBEHighSie*SIP
+// High Sierra / Mojave 10.14 - 10.14.3 (SIP)
+// PMheart: for 10.14.4+, see KBEMoja4SearchSIP and KBEMoja4ReplaceSIP below
+// PMheart: checked KBEHighSieMoja3*SIP
 // Need to pair with KBEMoja*EXT
-UINT8   KBEHighSieMojaSearchSIP[]    = { 0xC3, 0x48, 0x85, 0xDB, 0x74, 0x69, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
-UINT8   KBEHighSieMojaReplaceSIP[]   = { 0xC3, 0x48, 0x85, 0xDB, 0xEB, 0x12, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
+UINT8   KBEHighSieMoja3SearchSIP[]    = { 0xC3, 0x48, 0x85, 0xDB, 0x74, 0x69, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
+UINT8   KBEHighSieMoja3ReplaceSIP[]   = { 0xC3, 0x48, 0x85, 0xDB, 0xEB, 0x12, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
 
+// Mojave 10.14.4+ (SIP)
+// PMheart: checked KBEMoja4*SIP
+// Need to pair with KBEMoja*EXT
+UINT8   KBEMoja4SearchSIP[]           = { 0x48, 0x85, 0xC0, 0x74, 0x6C, 0x48, 0x89, 0xC3, 0x48, 0x8B, 0x00, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
+UINT8   KBEMoja4ReplaceSIP[]          = { 0x48, 0x85, 0xC0, 0xEB, 0x15, 0x48, 0x89, 0xC3, 0x48, 0x8B, 0x00, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
+
+// Mojave 10.14 - 10.14.3
 // Avoid race condition in OSKext::removeKextBootstrap when using booter kexts without keepsyms=1.
-UINT8   KBEMojaSearchKxldUnmap[]     = { 0x00, 0x0F, 0x85, 0xB2, 0x01, 0x00, 0x00, 0x48 };
-UINT8   KBEMojaReplaceKxldUnmap[]    = { 0x00, 0x90, 0xE9, 0xB2, 0x01, 0x00, 0x00, 0x48 };
+// by vit9696
+UINT8   KBEMoja3SearchKxldUnmap[]     = { 0x00, 0x0F, 0x85, 0xB2, 0x01, 0x00, 0x00, 0x48 };
+UINT8   KBEMoja3ReplaceKxldUnmap[]    = { 0x00, 0x90, 0xE9, 0xB2, 0x01, 0x00, 0x00, 0x48 };
 
+// Mojave 10.14.4+
+// Avoid race condition in OSKext::removeKextBootstrap when using booter kexts without keepsyms=1.
+// by PMheart, based on vit9696's work
+UINT8   KBEMoja4SearchKxldUnmap[]     = { 0x00, 0x0F, 0x85, 0xB1, 0x01, 0x00, 0x00, 0x48 };
+UINT8   KBEMoja4ReplaceKxldUnmap[]    = { 0x00, 0x90, 0xE9, 0xB1, 0x01, 0x00, 0x00, 0x48 };
 
 //
 // We can not rely on OSVersion global variable for OS version detection,
@@ -689,100 +703,114 @@
 VOID EFIAPI KernelBooterExtensionsPatch(IN UINT8 *Kernel, LOADER_ENTRY *Entry)
 {
   UINTN   Num = 0;
-  UINTN   NumSnow_i386 = 0;
-  UINTN   NumSnow_X64 = 0;
-  UINTN   NumLion_i386 = 0;
-  UINTN   NumLion_X64 = 0;
-  UINTN   NumMLMav = 0;
-  UINTN   NumMLDebug = 0;
-  UINTN   NumYos = 0;
-  UINTN   NumMavYosDebug = 0;
-  UINTN   NumEC = 0;
-  UINTN   NumECDebug = 0;
-  UINTN   NumSie = 0;
-  UINTN   NumSieDebug = 0;
-  UINTN   NumHighSieMoja = 0;
-  UINTN   NumMoja = 0;
+  UINTN   NumSnow_i386_EXT   = 0;
+  UINTN   NumSnow_X64_EXT    = 0;
+  UINTN   NumLion_i386_EXT   = 0;
+  UINTN   NumLion_X64_EXT    = 0;
+  UINTN   NumMLMavEXT        = 0;
+  UINTN   NumMLDebugEXT      = 0;
+  UINTN   NumYosEXT          = 0;
+  UINTN   NumMavYosDebugEXT  = 0;
+  UINTN   NumECSIP           = 0;
+  UINTN   NumECDebugSIP      = 0;
+  UINTN   NumSieSIP          = 0;
+  UINTN   NumSieDebugSIP     = 0;
+  UINTN   NumHighSieMoja3SIP = 0; // 10.13.X - 10.14.3
+  UINTN   NumMojaEXT         = 0; // 10.14.X
+  UINTN   NumMoja4SIP        = 0; // 10.14.4+
 
   
   DBG_RT(Entry, "\nPatching kernel for injected kexts...\n");
   
   if (is64BitKernel) {
-    NumSnow_X64    = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_X64, sizeof(KBESnowSearchEXT_X64));
-    NumLion_X64    = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_X64, sizeof(KBELionSearchEXT_X64));
-    NumMLMav       = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLMavSearchEXT, sizeof(KBEMLMavSearchEXT));
-    //NumMLDebug     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLDebugSearchEXT, sizeof(KBEMLDebugSearchEXT));
-    NumYos         = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT));
-    //NumMavYosDebug = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMavYosDebugSearchEXT, sizeof(KBEMavYosDebugSearchEXT));
-    NumEC          = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECSearchSIP, sizeof(KBEECSearchSIP));
-    //NumECDebug     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchSIP, sizeof(KBEECDebugSearchSIP));
-    NumSie         = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieSearchSIP, sizeof(KBESieSearchSIP));
-    NumSieDebug    = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchSIP, sizeof(KBESieDebugSearchSIP));
-    NumHighSieMoja = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEHighSieMojaSearchSIP, sizeof(KBEHighSieMojaSearchSIP));
-    NumMoja        = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT));
-  }
-  else {
-    NumSnow_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_i386, sizeof(KBESnowSearchEXT_i386));
-    NumLion_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_i386, sizeof(KBELionSearchEXT_i386));
+    NumSnow_X64_EXT     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_X64, sizeof(KBESnowSearchEXT_X64));
+    NumLion_X64_EXT     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_X64, sizeof(KBELionSearchEXT_X64));
+    NumMLMavEXT         = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLMavSearchEXT, sizeof(KBEMLMavSearchEXT));
+    //NumMLDebugEXT     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLDebugSearchEXT, sizeof(KBEMLDebugSearchEXT));
+    NumYosEXT           = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT));
+    //NumMavYosDebugEXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMavYosDebugSearchEXT, sizeof(KBEMavYosDebugSearchEXT));
+    NumECSIP            = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECSearchSIP, sizeof(KBEECSearchSIP));
+    //NumECDebugSIP     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchSIP, sizeof(KBEECDebugSearchSIP));
+    NumSieSIP           = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieSearchSIP, sizeof(KBESieSearchSIP));
+    NumSieDebugSIP      = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchSIP, sizeof(KBESieDebugSearchSIP));
+    NumHighSieMoja3SIP  = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEHighSieMoja3SearchSIP, sizeof(KBEHighSieMoja3SearchSIP));
+    NumMojaEXT          = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT));   // general EXT patch, for all 10.14.x
+    NumMoja4SIP         = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMoja4SearchSIP, sizeof(KBEMoja4SearchSIP)); // SIP patch, ONLY for 10.14.4+
+  } else {
+    NumSnow_i386_EXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_i386, sizeof(KBESnowSearchEXT_i386));
+    NumLion_i386_EXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_i386, sizeof(KBELionSearchEXT_i386));
   }
   
-  if (NumSnow_i386 + NumSnow_X64 + NumLion_i386 + NumLion_X64 + NumMLMav > 1) {
+  if (NumSnow_i386_EXT + NumSnow_X64_EXT + NumLion_i386_EXT + NumLion_X64_EXT + NumMLMavEXT > 1) {
     // more then one pattern found - we do not know what to do with it
     // and we'll skipp it
-    AsciiPrint("\nERROR patching kernel for injected kexts:\nmultiple patterns found (Snowi386: %d, SnowX64: %d, Lioni386: %d, LionX64: %d, MLMav: %d) - skipping patching!\n", NumSnow_i386, NumSnow_X64, NumLion_i386, NumLion_X64, NumMLMav);
+    AsciiPrint("\nERROR patching kernel for injected kexts:\nmultiple patterns found (Snowi386: %d, SnowX64: %d, Lioni386: %d, LionX64: %d, MLMav: %d) - skipping patching!\n", NumSnow_i386_EXT, NumSnow_X64_EXT, NumLion_i386_EXT, NumLion_X64_EXT, NumMLMavEXT);
     gBS->Stall(10000000);
     return;
   }
   
   // X64
-  if (NumMoja == 1) {
-    Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT), KBEMojaReplaceEXT, 1) +
-          SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMojaSearchSIP, sizeof(KBEHighSieMojaSearchSIP), KBEHighSieMojaReplaceSIP, 1) +
-          SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchKxldUnmap, sizeof(KBEMojaSearchKxldUnmap), KBEMojaReplaceKxldUnmap, 1);
-    DBG_RT(Entry, "==> kernel Mojave: %d replaces done.\n", Num);
-  } else if (NumHighSieMoja == 1) {
+  if (NumMojaEXT == 1) {
+    // apply EXT patch first
+    Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT), KBEMojaReplaceEXT, 1);
+    // then apply corresponding patches based on what we found
+    if (NumMoja4SIP == 1) {
+      // firstly, try to patch 10.14.4+
+      Num += SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMoja4SearchSIP, sizeof(KBEMoja4SearchSIP), KBEMoja4ReplaceSIP, 1) +
+             SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMoja4SearchKxldUnmap, sizeof(KBEMoja4SearchKxldUnmap), KBEMoja4ReplaceKxldUnmap, 1);
+      DBG_RT(Entry, "==> kernel Mojave (10.14.4+): %d replaces done.\n", Num);
+    } else if (NumHighSieMoja3SIP == 1) {
+      // then 10.14 - 10.14.3
+      Num += SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMoja3SearchSIP, sizeof(KBEHighSieMoja3SearchSIP), KBEHighSieMoja3ReplaceSIP, 1) +
+             SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMoja3SearchKxldUnmap, sizeof(KBEMoja3SearchKxldUnmap), KBEMoja3ReplaceKxldUnmap, 1);
+      DBG_RT(Entry, "==> kernel Mojave (10.14 - 10.14.3): %d replaces done.\n", Num);
+    } else {
+      // no SIP and KxldUnmap pattern found!
+      DBG_RT(Entry, "==> kernel Mojave WARNING: pattern NOT found - only %d replaces done.\nKext Injection will NOT work!\n", Num);
+    }
+  } else if (NumHighSieMoja3SIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1) +
-          SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMojaSearchSIP, sizeof(KBEHighSieMojaSearchSIP), KBEHighSieMojaReplaceSIP, 1);
+          SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMoja3SearchSIP, sizeof(KBEHighSieMoja3SearchSIP), KBEHighSieMoja3ReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel High Sierra: %d replaces done.\n", Num);
-  } else if (NumSieDebug == 1) {
+  } else if (NumSieDebugSIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchEXT, sizeof(KBESieDebugSearchEXT), KBESieDebugReplaceEXT, 1) +
           SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchSIP, sizeof(KBESieDebugSearchSIP), KBESieDebugReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel Sierra Debug: %d replaces done.\n", Num);
-  } else if (NumSie == 1) {
+  } else if (NumSieSIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1) +
           SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieSearchSIP, sizeof(KBESieSearchSIP), KBESieReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel Sierra: %d replaces done.\n", Num);
-  } else if (NumECDebug == 1) {
+  } else if (NumECDebugSIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchEXT, sizeof(KBEECDebugSearchEXT), KBEECDebugReplaceEXT, 1) +
           SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchSIP, sizeof(KBEECDebugSearchSIP), KBEECDebugReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel El Capitan Debug: %d replaces done.\n", Num);
-  } else if (NumEC == 1) {
+  } else if (NumECSIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1) +
           SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECSearchSIP, sizeof(KBEECSearchSIP), KBEECReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel El Capitan: %d replaces done.\n", Num);
-  } else if (NumMavYosDebug == 1) {
+  } else if (NumMavYosDebugEXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMavYosDebugSearchEXT, sizeof(KBEMavYosDebugReplaceEXT), KBEMavYosDebugReplaceEXT, 1);
     DBG_RT(Entry, "==> kernel Yosemite Debug: %d replaces done.\n", Num);
-  } else if (NumYos == 1) {
+  } else if (NumYosEXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1);
     DBG_RT(Entry, "==> kernel Yosemite: %d replaces done.\n", Num);
-  } else if (NumMLDebug == 1) {
+  } else if (NumMLDebugEXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMLDebugSearchEXT, sizeof(KBEMLDebugSearchEXT), KBEMLDebugReplaceEXT, 1);
     DBG_RT(Entry, "==> kernel Mountain Lion Debug: %d replaces done.\n", Num)
-  } else if (NumMLMav == 1) {
+  } else if (NumMLMavEXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMLMavSearchEXT, sizeof(KBEMLMavSearchEXT), KBEMLMavReplaceEXT, 1);
     DBG_RT(Entry, "==> kernel Mountain Lion/Mavericks: %d replaces done.\n", Num);
-  } else if (NumLion_X64 == 1) {
+  } else if (NumLion_X64_EXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_X64, sizeof(KBELionSearchEXT_X64), KBELionReplaceEXT_X64, 1);
     DBG_RT(Entry, "==> kernel Lion X64: %d replaces done.\n", Num);
-  } else if (NumSnow_X64 == 1) {
+  } else if (NumSnow_X64_EXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_X64, sizeof(KBESnowSearchEXT_X64), KBESnowReplaceEXT_X64, 1);
     DBG_RT(Entry, "==> kernel Snow Leopard X64: %d replaces done.\n", Num);
   // i386
-  } else if (NumLion_i386 == 1) {
+  } else if (NumLion_i386_EXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_i386, sizeof(KBELionSearchEXT_i386), KBELionReplaceEXT_i386, 1);
     DBG_RT(Entry, "==> kernel Lion i386: %d replaces done.\n", Num);
-  } else if (NumSnow_i386 == 1) {
+  } else if (NumSnow_i386_EXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_i386, sizeof(KBESnowSearchEXT_i386), KBESnowReplaceEXT_i386, 1);
     DBG_RT(Entry, "==> kernel Snow Leopard i386: %d replaces done.\n", Num);
   } else {

 

Here is the full kext_inject.c, if needed.

cleanup_kext_inject.zip

 

Thanks!

Share this post


Link to post
Share on other sites
44 minutes ago, PMheart said:

Hi again,

 

I have cleaned up kext_inject.c once more. (See here)

Now that a friend has confirmed that it did work, let me post the diff here.

...

Here is the full kext_inject.c, if needed.

cleanup_kext_inject.zip

Thanks once again, also tested on 10.11.6 (Normal) 10.13.6 (Recovery) and 10.14.4 for sure;

KextInject is working fine on my case yeiy..!!! 

Edited by Badruzeus

Share this post


Link to post
Share on other sites
1 hour ago, PMheart said:

Hi again,

 

I have cleaned up kext_inject.c once more. (See here)

Now that a friend has confirmed that it did work, let me post the diff here.

 


--- kext_inject_org.c	2019-01-25 10:20:46.000000000 +0800
+++ kext_inject_mod.c	2019-01-25 10:42:03.000000000 +0800
@@ -665,16 +665,30 @@
 UINT8   KBEMojaSearchEXT[]       = { 0xE8, 0xAF, 0x00, 0x00, 0x00, 0xEB, 0x05, 0xE8 };
 UINT8   KBEMojaReplaceEXT[]      = { 0xE8, 0xAF, 0x00, 0x00, 0x00, 0x90, 0x90, 0xE8 };
 
-// High Sierra/Mojave (SIP)
-// PMheart: checked KBEHighSie*SIP
+// High Sierra / Mojave 10.14 - 10.14.3 (SIP)
+// PMheart: for 10.14.4+, see KBEMoja4SearchSIP and KBEMoja4ReplaceSIP below
+// PMheart: checked KBEHighSieMoja3*SIP
 // Need to pair with KBEMoja*EXT
-UINT8   KBEHighSieMojaSearchSIP[]    = { 0xC3, 0x48, 0x85, 0xDB, 0x74, 0x69, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
-UINT8   KBEHighSieMojaReplaceSIP[]   = { 0xC3, 0x48, 0x85, 0xDB, 0xEB, 0x12, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
+UINT8   KBEHighSieMoja3SearchSIP[]    = { 0xC3, 0x48, 0x85, 0xDB, 0x74, 0x69, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
+UINT8   KBEHighSieMoja3ReplaceSIP[]   = { 0xC3, 0x48, 0x85, 0xDB, 0xEB, 0x12, 0x48, 0x8B, 0x03, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
 
+// Mojave 10.14.4+ (SIP)
+// PMheart: checked KBEMoja4*SIP
+// Need to pair with KBEMoja*EXT
+UINT8   KBEMoja4SearchSIP[]           = { 0x48, 0x85, 0xC0, 0x74, 0x6C, 0x48, 0x89, 0xC3, 0x48, 0x8B, 0x00, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
+UINT8   KBEMoja4ReplaceSIP[]          = { 0x48, 0x85, 0xC0, 0xEB, 0x15, 0x48, 0x89, 0xC3, 0x48, 0x8B, 0x00, 0x48, 0x89, 0xDF, 0xFF, 0x50, 0x28, 0x48 };
+
+// Mojave 10.14 - 10.14.3
 // Avoid race condition in OSKext::removeKextBootstrap when using booter kexts without keepsyms=1.
-UINT8   KBEMojaSearchKxldUnmap[]     = { 0x00, 0x0F, 0x85, 0xB2, 0x01, 0x00, 0x00, 0x48 };
-UINT8   KBEMojaReplaceKxldUnmap[]    = { 0x00, 0x90, 0xE9, 0xB2, 0x01, 0x00, 0x00, 0x48 };
+// by vit9696
+UINT8   KBEMoja3SearchKxldUnmap[]     = { 0x00, 0x0F, 0x85, 0xB2, 0x01, 0x00, 0x00, 0x48 };
+UINT8   KBEMoja3ReplaceKxldUnmap[]    = { 0x00, 0x90, 0xE9, 0xB2, 0x01, 0x00, 0x00, 0x48 };
 
+// Mojave 10.14.4+
+// Avoid race condition in OSKext::removeKextBootstrap when using booter kexts without keepsyms=1.
+// by PMheart, based on vit9696's work
+UINT8   KBEMoja4SearchKxldUnmap[]     = { 0x00, 0x0F, 0x85, 0xB1, 0x01, 0x00, 0x00, 0x48 };
+UINT8   KBEMoja4ReplaceKxldUnmap[]    = { 0x00, 0x90, 0xE9, 0xB1, 0x01, 0x00, 0x00, 0x48 };
 
 //
 // We can not rely on OSVersion global variable for OS version detection,
@@ -689,100 +703,114 @@
 VOID EFIAPI KernelBooterExtensionsPatch(IN UINT8 *Kernel, LOADER_ENTRY *Entry)
 {
   UINTN   Num = 0;
-  UINTN   NumSnow_i386 = 0;
-  UINTN   NumSnow_X64 = 0;
-  UINTN   NumLion_i386 = 0;
-  UINTN   NumLion_X64 = 0;
-  UINTN   NumMLMav = 0;
-  UINTN   NumMLDebug = 0;
-  UINTN   NumYos = 0;
-  UINTN   NumMavYosDebug = 0;
-  UINTN   NumEC = 0;
-  UINTN   NumECDebug = 0;
-  UINTN   NumSie = 0;
-  UINTN   NumSieDebug = 0;
-  UINTN   NumHighSieMoja = 0;
-  UINTN   NumMoja = 0;
+  UINTN   NumSnow_i386_EXT   = 0;
+  UINTN   NumSnow_X64_EXT    = 0;
+  UINTN   NumLion_i386_EXT   = 0;
+  UINTN   NumLion_X64_EXT    = 0;
+  UINTN   NumMLMavEXT        = 0;
+  UINTN   NumMLDebugEXT      = 0;
+  UINTN   NumYosEXT          = 0;
+  UINTN   NumMavYosDebugEXT  = 0;
+  UINTN   NumECSIP           = 0;
+  UINTN   NumECDebugSIP      = 0;
+  UINTN   NumSieSIP          = 0;
+  UINTN   NumSieDebugSIP     = 0;
+  UINTN   NumHighSieMoja3SIP = 0; // 10.13.X - 10.14.3
+  UINTN   NumMojaEXT         = 0; // 10.14.X
+  UINTN   NumMoja4SIP        = 0; // 10.14.4+
 
   
   DBG_RT(Entry, "\nPatching kernel for injected kexts...\n");
   
   if (is64BitKernel) {
-    NumSnow_X64    = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_X64, sizeof(KBESnowSearchEXT_X64));
-    NumLion_X64    = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_X64, sizeof(KBELionSearchEXT_X64));
-    NumMLMav       = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLMavSearchEXT, sizeof(KBEMLMavSearchEXT));
-    //NumMLDebug     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLDebugSearchEXT, sizeof(KBEMLDebugSearchEXT));
-    NumYos         = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT));
-    //NumMavYosDebug = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMavYosDebugSearchEXT, sizeof(KBEMavYosDebugSearchEXT));
-    NumEC          = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECSearchSIP, sizeof(KBEECSearchSIP));
-    //NumECDebug     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchSIP, sizeof(KBEECDebugSearchSIP));
-    NumSie         = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieSearchSIP, sizeof(KBESieSearchSIP));
-    NumSieDebug    = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchSIP, sizeof(KBESieDebugSearchSIP));
-    NumHighSieMoja = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEHighSieMojaSearchSIP, sizeof(KBEHighSieMojaSearchSIP));
-    NumMoja        = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT));
-  }
-  else {
-    NumSnow_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_i386, sizeof(KBESnowSearchEXT_i386));
-    NumLion_i386 = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_i386, sizeof(KBELionSearchEXT_i386));
+    NumSnow_X64_EXT     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_X64, sizeof(KBESnowSearchEXT_X64));
+    NumLion_X64_EXT     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_X64, sizeof(KBELionSearchEXT_X64));
+    NumMLMavEXT         = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLMavSearchEXT, sizeof(KBEMLMavSearchEXT));
+    //NumMLDebugEXT     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMLDebugSearchEXT, sizeof(KBEMLDebugSearchEXT));
+    NumYosEXT           = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT));
+    //NumMavYosDebugEXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMavYosDebugSearchEXT, sizeof(KBEMavYosDebugSearchEXT));
+    NumECSIP            = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECSearchSIP, sizeof(KBEECSearchSIP));
+    //NumECDebugSIP     = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchSIP, sizeof(KBEECDebugSearchSIP));
+    NumSieSIP           = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieSearchSIP, sizeof(KBESieSearchSIP));
+    NumSieDebugSIP      = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchSIP, sizeof(KBESieDebugSearchSIP));
+    NumHighSieMoja3SIP  = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEHighSieMoja3SearchSIP, sizeof(KBEHighSieMoja3SearchSIP));
+    NumMojaEXT          = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT));   // general EXT patch, for all 10.14.x
+    NumMoja4SIP         = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBEMoja4SearchSIP, sizeof(KBEMoja4SearchSIP)); // SIP patch, ONLY for 10.14.4+
+  } else {
+    NumSnow_i386_EXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_i386, sizeof(KBESnowSearchEXT_i386));
+    NumLion_i386_EXT = SearchAndCount(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_i386, sizeof(KBELionSearchEXT_i386));
   }
   
-  if (NumSnow_i386 + NumSnow_X64 + NumLion_i386 + NumLion_X64 + NumMLMav > 1) {
+  if (NumSnow_i386_EXT + NumSnow_X64_EXT + NumLion_i386_EXT + NumLion_X64_EXT + NumMLMavEXT > 1) {
     // more then one pattern found - we do not know what to do with it
     // and we'll skipp it
-    AsciiPrint("\nERROR patching kernel for injected kexts:\nmultiple patterns found (Snowi386: %d, SnowX64: %d, Lioni386: %d, LionX64: %d, MLMav: %d) - skipping patching!\n", NumSnow_i386, NumSnow_X64, NumLion_i386, NumLion_X64, NumMLMav);
+    AsciiPrint("\nERROR patching kernel for injected kexts:\nmultiple patterns found (Snowi386: %d, SnowX64: %d, Lioni386: %d, LionX64: %d, MLMav: %d) - skipping patching!\n", NumSnow_i386_EXT, NumSnow_X64_EXT, NumLion_i386_EXT, NumLion_X64_EXT, NumMLMavEXT);
     gBS->Stall(10000000);
     return;
   }
   
   // X64
-  if (NumMoja == 1) {
-    Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT), KBEMojaReplaceEXT, 1) +
-          SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMojaSearchSIP, sizeof(KBEHighSieMojaSearchSIP), KBEHighSieMojaReplaceSIP, 1) +
-          SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchKxldUnmap, sizeof(KBEMojaSearchKxldUnmap), KBEMojaReplaceKxldUnmap, 1);
-    DBG_RT(Entry, "==> kernel Mojave: %d replaces done.\n", Num);
-  } else if (NumHighSieMoja == 1) {
+  if (NumMojaEXT == 1) {
+    // apply EXT patch first
+    Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMojaSearchEXT, sizeof(KBEMojaSearchEXT), KBEMojaReplaceEXT, 1);
+    // then apply corresponding patches based on what we found
+    if (NumMoja4SIP == 1) {
+      // firstly, try to patch 10.14.4+
+      Num += SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMoja4SearchSIP, sizeof(KBEMoja4SearchSIP), KBEMoja4ReplaceSIP, 1) +
+             SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMoja4SearchKxldUnmap, sizeof(KBEMoja4SearchKxldUnmap), KBEMoja4ReplaceKxldUnmap, 1);
+      DBG_RT(Entry, "==> kernel Mojave (10.14.4+): %d replaces done.\n", Num);
+    } else if (NumHighSieMoja3SIP == 1) {
+      // then 10.14 - 10.14.3
+      Num += SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMoja3SearchSIP, sizeof(KBEHighSieMoja3SearchSIP), KBEHighSieMoja3ReplaceSIP, 1) +
+             SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMoja3SearchKxldUnmap, sizeof(KBEMoja3SearchKxldUnmap), KBEMoja3ReplaceKxldUnmap, 1);
+      DBG_RT(Entry, "==> kernel Mojave (10.14 - 10.14.3): %d replaces done.\n", Num);
+    } else {
+      // no SIP and KxldUnmap pattern found!
+      DBG_RT(Entry, "==> kernel Mojave WARNING: pattern NOT found - only %d replaces done.\nKext Injection will NOT work!\n", Num);
+    }
+  } else if (NumHighSieMoja3SIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1) +
-          SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMojaSearchSIP, sizeof(KBEHighSieMojaSearchSIP), KBEHighSieMojaReplaceSIP, 1);
+          SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEHighSieMoja3SearchSIP, sizeof(KBEHighSieMoja3SearchSIP), KBEHighSieMoja3ReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel High Sierra: %d replaces done.\n", Num);
-  } else if (NumSieDebug == 1) {
+  } else if (NumSieDebugSIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchEXT, sizeof(KBESieDebugSearchEXT), KBESieDebugReplaceEXT, 1) +
           SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieDebugSearchSIP, sizeof(KBESieDebugSearchSIP), KBESieDebugReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel Sierra Debug: %d replaces done.\n", Num);
-  } else if (NumSie == 1) {
+  } else if (NumSieSIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1) +
           SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESieSearchSIP, sizeof(KBESieSearchSIP), KBESieReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel Sierra: %d replaces done.\n", Num);
-  } else if (NumECDebug == 1) {
+  } else if (NumECDebugSIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchEXT, sizeof(KBEECDebugSearchEXT), KBEECDebugReplaceEXT, 1) +
           SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECDebugSearchSIP, sizeof(KBEECDebugSearchSIP), KBEECDebugReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel El Capitan Debug: %d replaces done.\n", Num);
-  } else if (NumEC == 1) {
+  } else if (NumECSIP == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1) +
           SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEECSearchSIP, sizeof(KBEECSearchSIP), KBEECReplaceSIP, 1);
     DBG_RT(Entry, "==> kernel El Capitan: %d replaces done.\n", Num);
-  } else if (NumMavYosDebug == 1) {
+  } else if (NumMavYosDebugEXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMavYosDebugSearchEXT, sizeof(KBEMavYosDebugReplaceEXT), KBEMavYosDebugReplaceEXT, 1);
     DBG_RT(Entry, "==> kernel Yosemite Debug: %d replaces done.\n", Num);
-  } else if (NumYos == 1) {
+  } else if (NumYosEXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEYosECSieHighSearchEXT, sizeof(KBEYosECSieHighSearchEXT), KBEYosECSieHighReplaceEXT, 1);
     DBG_RT(Entry, "==> kernel Yosemite: %d replaces done.\n", Num);
-  } else if (NumMLDebug == 1) {
+  } else if (NumMLDebugEXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMLDebugSearchEXT, sizeof(KBEMLDebugSearchEXT), KBEMLDebugReplaceEXT, 1);
     DBG_RT(Entry, "==> kernel Mountain Lion Debug: %d replaces done.\n", Num)
-  } else if (NumMLMav == 1) {
+  } else if (NumMLMavEXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBEMLMavSearchEXT, sizeof(KBEMLMavSearchEXT), KBEMLMavReplaceEXT, 1);
     DBG_RT(Entry, "==> kernel Mountain Lion/Mavericks: %d replaces done.\n", Num);
-  } else if (NumLion_X64 == 1) {
+  } else if (NumLion_X64_EXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_X64, sizeof(KBELionSearchEXT_X64), KBELionReplaceEXT_X64, 1);
     DBG_RT(Entry, "==> kernel Lion X64: %d replaces done.\n", Num);
-  } else if (NumSnow_X64 == 1) {
+  } else if (NumSnow_X64_EXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_X64, sizeof(KBESnowSearchEXT_X64), KBESnowReplaceEXT_X64, 1);
     DBG_RT(Entry, "==> kernel Snow Leopard X64: %d replaces done.\n", Num);
   // i386
-  } else if (NumLion_i386 == 1) {
+  } else if (NumLion_i386_EXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBELionSearchEXT_i386, sizeof(KBELionSearchEXT_i386), KBELionReplaceEXT_i386, 1);
     DBG_RT(Entry, "==> kernel Lion i386: %d replaces done.\n", Num);
-  } else if (NumSnow_i386 == 1) {
+  } else if (NumSnow_i386_EXT == 1) {
     Num = SearchAndReplace(Kernel, KERNEL_MAX_SIZE, KBESnowSearchEXT_i386, sizeof(KBESnowSearchEXT_i386), KBESnowReplaceEXT_i386, 1);
     DBG_RT(Entry, "==> kernel Snow Leopard i386: %d replaces done.\n", Num);
   } else {

 

Here is the full kext_inject.c, if needed.

cleanup_kext_inject.zip

 

Thanks!

Thanks, committed to 4862

Share this post


Link to post
Share on other sites

Regarding the Chime sound in Clover.......It's great that it works.  And recompiling it at 48 Khz did make it sound better. 

 

But, are there any parameters I can use to set a time for it to chime?  Can I delay the chime with some parameter?

And if that capability exists, where would it be entered (and how?)

Share this post


Link to post
Share on other sites

Having freeze on wake issues since latest clover release. One more person on the German hackintosh-forum confirmed the issue so far. Anyone in here having the same problem?

Share this post


Link to post
Share on other sites
39 minutes ago, Sherlocks said:

still need osxfatbinary for old mac os x

나의 LG-F800S 의 Tapatalk에서 보냄
 

On which OS AppleImageLoader started to support?

Share this post


Link to post
Share on other sites
17 minutes ago, Sherlocks said:

idk. i'm just checked it that works or not.

나의 LG-F800S 의 Tapatalk에서 보냄
 

But how would i know if one does not work? I mean, tried both from 10.8-10.14 and both booted. (One at a time of course)

Edited by ellaosx

Share this post


Link to post
Share on other sites
But how would i know if one does not work? I mean, tried both from 10.9-10.14 and both booted. (One at a time of course)
we need osxfatbinary to boot snow leopard. i don't know file so that boot 10.7 upto 10.8. if your system can boot only modern macos, actually you don't need it.


나의 LG-F800S 의 Tapatalk에서 보냄

Share this post


Link to post
Share on other sites

@slice, PMheart,

 

Does clover 4862 account for kernel patching for lapic error in 10.14.4b1,  it throws a lapic error kernel panic for me.

 

Regards

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   1 member

  • Similar Content

    • By Klaidonis
      I am making a minimal Clover build for the fastest boot possible with the boot6 file in legacy mode.
      While looking at the preboot.log, I noticed that there is a line without explanation (at 0:892). Apparently, whatever it is, the execution time of it is close to 2 seconds, more than 55% of the total logged boot time in the current configuration. This does not change whether I use USB 2 or USB 3 port.
       
      Is there a way to eliminate or speed up the above? Also, is there anything else you can suggest to improve the performance based on the below log file? Which moment in the boot process corresponds to the start time in preboot.log?  
      The last thing I would like to understand is the delay/timeout after the boot6 file has loaded, and the number 6 disappears from the screen. For about 2 seconds or slightly less, I can press any key, and then it will enter the BIOS-like interface from the boot6 file. Without further knowledge, it seems like those 2 seconds are just delay time, and only after that is CLOVERX64.efi actually started, which, I presume, is approximately when the preboot.log timer starts. So, if the aforementioned is correct, can I get rid of this delay as well? Note that I am using the boot1f32 file to chain-load boot6, which does not include the initial 2-second wait period for a keypress.
       
      === preboot.log ===
      0:100 0:100 MemLog inited, TSC freq: 2394459554 0:100 0:000 CPU was calibrated with ACPI PM Timer 0:100 0:000 LegacyRegion2: Chipset/proc: 0x0A048086 0:100 0:000 Next Generation Core processors (PAM 0x80-0x86) 0:100 0:000 Test PAM1=(0x41=90, 0x5a=90, 0x81=11, 0x91=00) at chipset 0A048086 0:100 0:000 , Install = Success 0:112 0:012 BiosVideoDriverBindingStart! 0:112 0:000 BiosVideoCheckForVbe 0:112 0:000 EdidOverride not found 0:121 0:009 Edid1+ 0:121 0:000 found Detail Timing 1920x1080 0:121 0:000 timing string after 0xFE:AUO 0:121 0:000 timing string after 0xFE:B156HAN01.2 0:122 0:000 0 1280x1024 attr=9B - ok, edid- 0:122 0:000 1 1024x768 attr=9B - ok, edid-, 1024x768, working, highest, pref=1 0:122 0:000 2 640x480 attr=9B - ok, edid-, 640x480, working 0:122 0:000 3 800x600 attr=9B - ok, edid-, 800x600, working 0:123 0:000 4 1920x1080 attr=9B - ok, edid+, working, highest, pref=4 0:123 0:000 BV new mode: 4 1920x1080 0:398 0:275 SetMode pref 4 (4) = Success 0:892 0:493 VGA Pci.Hdr.Command=6 - not enabled 2:623 1:731 2:623 0:000 Now is 21.02.2020, 13:03:21 (GMT) 2:623 0:000 Starting Clover revision: 5103 (master, commit 3f3b85da0) on CLOVER EFI 2:623 0:000 Build with: [Args: -D NO_GRUB_DRIVERS_EMBEDDED -t GCC53 | -D NO_GRUB_DRIVERS_EMBEDDED --conf=/Users/sergey/src/CloverHackyColor/Conf -D USE_LOW_EBDA -a X64 -b RELEASE -t GCC53 -n 5 | OS: 10.14.6] 2:623 0:000 SelfDevicePath=PcieRoot(0x0)\Pci(0x1D,0x0)\USB(0x0,0x0)\USB(0x4,0x0)\HD(1,MBR,0x04944021,0x3F,0x3BC1042) @940C9698 2:623 0:000 SelfDirPath = \EFI\CLOVER 2:623 0:000 SimpleTextEx Status=Success 2:623 0:000 === [ Get Smbios ] ======================================== 2:623 0:000 Type 16 Index = 0 2:623 0:000 Total Memory Slots Count = 2 2:623 0:000 Type 17 Index = 0 2:623 0:000 SmbiosTable.Type17->Speed = 1600MHz 2:623 0:000 SmbiosTable.Type17->Size = 4096MB 2:623 0:000 SmbiosTable.Type17->Bank/Device = BANK 0 DIMM0 2:623 0:000 SmbiosTable.Type17->Vendor = Hynix 2:623 0:000 SmbiosTable.Type17->SerialNumber = 00000000 2:623 0:000 SmbiosTable.Type17->PartNumber = HMT451S6MFR6A-PB 2:623 0:000 Type 17 Index = 1 2:623 0:000 SmbiosTable.Type17->Speed = 1600MHz 2:623 0:000 SmbiosTable.Type17->Size = 8192MB 2:623 0:000 SmbiosTable.Type17->Bank/Device = BANK 2 DIMM1 2:623 0:000 SmbiosTable.Type17->Vendor = Kingston 2:623 0:000 SmbiosTable.Type17->SerialNumber = 5A060A8A 2:623 0:000 SmbiosTable.Type17->PartNumber = KHX1600C9S3L/8G 2:623 0:000 Boot status=0 2:623 0:000 Running on: 'Aspire V5-573G' with board 'Dazzle_HW' 2:623 0:000 === [ GetCPUProperties ] ================================== 2:623 0:000 CPU Vendor = 756E6547 Model=40651 2:623 0:000 The CPU supported SSE4.1 2:623 0:000 BrandString = Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz 2:623 0:000 The CPU supported turbo 2:623 0:000 MSR 0x35 20004 2:623 0:000 MSR 0xE2 before patch 1E008405 2:623 0:000 MSR 0xE2 is locked, PM patches will be turned on 2:623 0:000 MSR 0xCE 0008083D_F3011800 2:623 0:000 corrected FLEX_RATIO = 0 2:623 0:000 MSR 0x1B0 00000000 2:623 0:000 FSBFrequency = 71 MHz, DMI FSBFrequency = 100 MHz, Corrected FSBFrequency = 100 MHz 2:623 0:000 MaxDiv/MinDiv: 24.0/8 2:623 0:000 Turbo: 27/27/27/30 2:623 0:000 Features: 0xBFEBFBFF 2:623 0:000 Threads: 4 2:623 0:000 Cores: 2 2:623 0:000 FSB: 100 MHz 2:623 0:000 CPU: 1700 MHz 2:623 0:000 TSC: 1700 MHz 2:623 0:000 PIS: 100 MHz 2:623 0:000 ExternalClock: 25 MHz 2:623 0:000 === [ GetDevices ] ======================================== 2:623 0:000 GOP found at: PcieRoot(0x0)/Pci(0x2,0x0)/AcpiAdr(0x80010100) 2:623 0:000 PCI (00|00:00.00) : 8086 0A04 class=060000 2:623 0:000 PCI (00|00:02.00) : 8086 0A16 class=030000 2:623 0:000 - GOP: Provided by device 2:623 0:000 - GFX: Model=Intel HD Graphics 4400 (Intel) 2:623 0:000 PCI (00|00:03.00) : 8086 0A0C class=040300 2:623 0:000 PCI (00|00:14.00) : 8086 9C31 class=0C0330 2:623 0:000 PCI (00|00:16.00) : 8086 9C3A class=078000 2:623 0:000 PCI (00|00:1B.00) : 8086 9C20 class=040300 2:623 0:000 PCI (00|00:1C.00) : 8086 9C10 class=060400 2:623 0:000 PCI (00|00:1C.02) : 8086 9C14 class=060400 2:623 0:000 PCI (00|04:00.00) : 168C 0034 class=028000 2:623 0:000 - WIFI: Vendor=Atheros 2:623 0:000 PCI (00|00:1C.03) : 8086 9C16 class=060400 2:623 0:000 PCI (00|05:00.00) : 10EC 5287 class=FF0000 2:623 0:000 PCI (00|05:00.01) : 10EC 8168 class=020000 2:623 0:000 - LAN: 0 Vendor=Realtek 2:623 0:000 PCI (00|00:1C.04) : 8086 9C18 class=060400 2:624 0:000 PCI (00|01:00.00) : 10DE 0FE4 class=030200 2:624 0:000 PCI (00|00:1D.00) : 8086 9C26 class=0C0320 2:624 0:000 PCI (00|00:1F.00) : 8086 9C43 class=060100 2:624 0:000 PCI (00|00:1F.02) : 8086 9C03 class=010601 2:624 0:000 PCI (00|00:1F.03) : 8086 9C22 class=0C0500 2:624 0:000 === [ GetDefaultSettings ] ================================ 2:624 0:000 Clover load options size = 0 bytes 2:624 0:000 CheckOEMPathExists tried EFI\CLOVER\OEM\Aspire V5-573G--00-00-00-00-00-00. Dir not exists 2:624 0:000 CheckOEMPathExists tried EFI\CLOVER\OEM\Aspire V5-573G. Dir not exists 2:624 0:000 CheckOEMPathExists tried EFI\CLOVER\OEM\Aspire V5-573G-1700. Dir not exists 2:624 0:000 CheckOEMPathExists tried EFI\CLOVER\OEM\Dazzle_HW. Dir not exists 2:624 0:000 CheckOEMPathExists tried EFI\CLOVER\OEM\Dazzle_HW-1700. Dir not exists 2:624 0:000 set OEMPath by default: EFI\CLOVER 2:637 0:012 EFI\CLOVER\config.plist loaded: Success 2:637 0:000 === [ GetListOfThemes ] =================================== 2:637 0:000 === [ Found config plists ] =============================== 2:637 0:000 - config.plist 2:637 0:000 === [ GetEarlyUserSettings ] ============================== 2:637 0:000 timeout set to 0 2:637 0:000 Custom boot CUSTOM_BOOT_DISABLED (0x0) 2:637 0:000 Default theme: embedded 2:637 0:000 === [ LoadDrivers ] ======================================= 2:637 0:000 === [ InitScreen ] ======================================== 2:637 0:000 Console modes reported: 4, available modes: 2:637 0:000 - [01]: 80x25 2:637 0:000 - [02]: 80x50 2:637 0:000 - [03]: 100x31 2:637 0:000 - [04]: 240x56 (current mode) 2:637 0:000 SetScreenResolution: 1920x1080 - already set 2:637 0:000 SetScreenResolution: 1920x1080 - already set 2:637 0:000 reinit: self device path=PcieRoot(0x0)\Pci(0x1D,0x0)\USB(0x0,0x0)\USB(0x4,0x0)\HD(1,MBR,0x04944021,0x3F,0x3BC1042) 2:637 0:000 === [ GetMacAddress ] ===================================== 2:637 0:000 === [ ScanSPD ] =========================================== 2:637 0:000 Scanning SMBus [8086:9C22], mmio: 0xB3619004, ioport: 0x5040, hostc: 0x1 2:656 0:018 Slot: 2 Type 24 8192MB 1600MHz Vendor=Kingston PartNo=KHX1600C9S3L8G SerialNo=050A0006000A080A 2:657 0:000 === [ GetAcpiTablesList ] ================================= 2:657 0:000 Get Acpi Tables List from RSDT: 2:657 0:000 - [00]: FACP ACRPRDCT len=268 2:657 0:000 - [01]: UEFI ACRPRDCT len=566 2:657 0:000 - [02]: FPDT ACRPRDCT len=68 2:657 0:000 - [03]: ASF! ACRPRDCT len=165 2:657 0:000 - [04]: HPET ACRPRDCT len=56 2:657 0:000 - [05]: APIC ACRPRDCT len=140 2:657 0:000 - [06]: MCFG ACRPRDCT len=60 2:657 0:000 - [07]: BOOT ACRPRDCT len=40 2:657 0:000 - [08]: LPIT ACRPRDCT len=148 2:657 0:000 - [09]: ASPT ACRPRDCT len=52 2:657 0:000 - [10]: DBGP ACRPRDCT len=52 2:657 0:000 - [11]: SSDT ACRPRDCT len=1337 2:657 0:000 - [12]: SSDT ACRPRDCT len=2776 2:657 0:000 - [13]: SSDT ACRPRDCT len=12013 2:657 0:000 - [14]: SSDT ACRPRDCT len=11433 2:657 0:000 - [15]: SSDT ACRPRDCT len=2230 2:657 0:000 Calibrated TSC Frequency = 2394459554 = 2394MHz 2:657 0:000 === [ GetUserSettings ] =================================== 2:657 0:000 === [ Found DSDT tables ] ================================= 2:657 0:000 === [ ScanVolumes ] ======================================= 2:657 0:000 Found 8 volumes with blockIO 2:657 0:000 - [00]: Volume: PcieRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0x0,0x0) 2:659 0:001 Result of bootcode detection: bootable Linux (grub,linux) 2:659 0:000 - [01]: Volume: PcieRoot(0x0)\Pci(0x1F,0x2)\Sata(0x1,0x0,0x0) 2:660 0:001 Result of bootcode detection: bootable unknown (legacy) 2:660 0:000 - [02]: Volume: PcieRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0x0,0x0)\HD(1,GPT,8017BD66-1E24-4B31-8E09-BC49BECD6CC4,0x800,0x21330000) 2:661 0:001 Result of bootcode detection: bootable Windows (vista,win) 2:661 0:000 - [03]: Volume: PcieRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0x0,0x0)\HD(2,GPT,82F3B738-65E9-458E-B2F1-BB55D4F00885,0x21331000,0x3D0800) 2:663 0:001 - [04]: Volume: PcieRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0x0,0x0)\HD(3,GPT,E701DCD8-E3C5-4BFA-B61B-BFF4D80153FD,0x21701800,0x18C4F000) 2:664 0:001 - [05]: Volume: PcieRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0x0,0x0)\HD(4,GPT,4DB1239A-A9D7-4045-A162-7EF1B3A5913B,0x3A350C21,0x3A3B616E) 2:665 0:001 Result of bootcode detection: bootable Windows (vista,win) 2:665 0:000 - [06]: Volume: PcieRoot(0x0)\Pci(0x1D,0x0)\USB(0x0,0x0)\USB(0x4,0x0) 2:677 0:011 Result of bootcode detection: bootable unknown (legacy) 2:677 0:000 USB volume 2:677 0:000 USB volume 2:677 0:000 - [07]: Volume: PcieRoot(0x0)\Pci(0x1D,0x0)\USB(0x0,0x0)\USB(0x4,0x0)\HD(1,MBR,0x04944021,0x3F,0x3BC1042) 2:688 0:011 Result of bootcode detection: bootable unknown (legacy) 2:688 0:000 USB volume 2:688 0:000 USB volume 2:688 0:000 This is SelfVolume !! 2:688 0:000 PutNvramPlistToRtVars: nvram.plist not found 2:689 0:000 No AudioIoProtocols, status=Not Found 2:689 0:000 === [ InitTheme ] ========================================= 2:689 0:000 use daylight theme 2:689 0:000 using embedded theme 2:689 0:000 got embedded sound 2:689 0:000 Channels: 2 Sample rate: 8000 Hz Bits: 16 2:689 0:000 output to channel 0 with volume 70, len=25600 2:689 0:000 sound channels=2 bits=16 freq=8000 2:689 0:000 sound converted to 48kHz 2:689 0:000 not found AudioIo to play 2:689 0:000 sound play end with status=Not Found 2:690 0:001 Using embedded font: Success 2:691 0:000 theme inited 2:691 0:000 Chosen embedded theme 2:691 0:000 after NVRAM boot-args= 2:691 0:000 === [ Dump SMC keys from NVRAM ] ========================== 2:691 0:000 no AppleSMC protocol 2:691 0:000 Entry scan disabled 2:691 0:000 === [ AddCustomTool ] ===================================== 2:692 0:000 === [ GetEfiBootDeviceFromNvram ] ========================= 2:692 0:000 Default boot entry not found 2:692 0:000 DefaultIndex=-1 and MainMenu.EntryCount=4 2:973 0:281 GUI ready  
    • By Jancey
      I used this command: diskutil info disk0s2 | grep -i "Partition UUID" | rev | cut -d' ' -f 1 | rev

      But I accidentally removed the wrong disk and now my main windows drive is not appearing in the bootloader. I can't figure out how to get it back. I tried resetting my windows drive, but I kept getting an error. I also reset my mac and reinstalled Catalina.
    • By gengstapo
      @Hervé
       
      Im having similar issue with my HS setup, dell latitute 3480, i5-7200U
      Once the hdmi plugged in, the laptop display went blank, only could see the external tv
      But, when i put my laptop to sleep & wake up again, both screen got display (hdmi still connected)
      Even the hdmi could be plugged off & in (after sleep), the laptop display is fine
       
      What could be the culprit?
      Dell’s MacBook Pro IORegistry.zip
      config.plist.zip
    • By TomZanna
      Hi, I'm trying to install Mac Os Catalina on a HP 550-132NL.
      The system has:
      i7-6700
      RAM 12 GB
      GT 730
      LAN Realtek RTL8161
      ALC3863
       
      It passes the verbose phase but after the Apple logo goes away, it gets stuck on a grey screen and I can only move the pointer.
      Can I try to boot with the iGPU?
       
      origin.zip
      CLOVER_dGPU_USB_3.zip
    • By MaLd0n
      ---TUTORIAL---
      https://www.olarila.com/topic/5794-guide-install-macos-with-olarila-image-step-by-step-install-and-post-install-windows-or-mac/
       
      --Original Post--
      https://www.olarila.com/topic/6531-olarila-hackbeast-z390-designare-thunderbolt-full-dsdt-patches-clover-opencore/
       
      --Bios/UEFI Settings--
       
      *Update bios/uefi to F7+*
      1- Go to M.I.T./Advanced Frequency Settings tab
       
      Extreme Memory Profile (X.M.P.) - Profile 1
       
      2- Go to BIOS tab
       
      CSM Support - Disabled
       
      3- Go to Peripherals/Thunderbolt(TM) Configuration tab
       
      Security Level - No Security
      Thunderbolt USB Support - Enabled
      GPIO3 Force Pwr - Enabled
       
      4- Go to Chipset tab
       
      Internal Graphics - Enable
       
      ---CLOVER FOLDER---
      https://olarila.com/files/Clover.Folder/EFI CLOVER Z390 DESIGNARE.zip
      *Use this folder with FULL DSDT PATCHED
       
      ---OPENCORE FOLDER---
      https://www.olarila.com/topic/6364-mojave-catalina-on-mobos-series-100200300-with-opencore-bootloader/
      *Use this folder with FULL DSDT PATCHED
       
       
      ---Extract one Full dump for DSDT edits, post files---
       
      RunMe.app
       
       
       
      ---HARDWARE---
       
      --MOBO

      GIGABYTE Z390 DESIGNARE
      -Link
      https://www.amazon.com/Z390-DESIGNARE-Gigabyte-Thunderbolt-Motherboard/dp/B07K8RJZRG/ref=sr_1_1?keywords=Z390+DESIGNARE&qid=1565492390&s=electronics&sr=1-1

      --PROCESSOR

      Intel Core i9-9900K
      -Link
      https://www.amazon.com/Intel-i9-9900K-Desktop-Processor-Unlocked/dp/B005404P9I/ref=sr_1_1_sspa?keywords=Intel+Core+i9-9900K&qid=1553358099&s=gateway&sr=8-1-spons&psc=1

      --COOLER

      CORSAIR H100i RGB PLATINUM AIO Liquid CPU Cooler
      -Link
      https://www.amazon.com/CORSAIR-H100i-PLATINUM-Liquid-Cooler/dp/B07JWB5BSN/ref=sr_1_4?keywords=WATER+COOLER+CPU&qid=1565492509&s=gateway&sr=8-4

      --MEMORY

      Corsair CMW32GX4M2C3200C16 Vengeance RGB PRO 32GB (2x16GB) DDR4 3200 (PC4-25600)
      -Link
      https://www.amazon.com/Corsair-CMW32GX4M2C3200C16-Vengeance-PC4-25600-Desktop/dp/B07GTG2T7L/ref=sr_1_15?keywords=memory+ddr4+32&qid=1553358238&s=gateway&sr=8-15

      --GPU

      MSI RX Vega 64 AIR Boost 8G OC
      -Link
      https://www.amazon.com/MSI-RX-64-AIR-8G/dp/B07DH7S1X1/ref=sr_1_2?keywords=vega+64+gigabyte&qid=1565492819&s=electronics&sr=1-2

      --SSD

      Samsung 970 EVO 1TB SSD (MZ-V7E1T0BW) NVMe M.2 V-NAND
      -Link
      https://www.amazon.com/Samsung-970-EVO-1TB-MZ-V7E1T0BW/dp/B07BN217QG/ref=sr_1_1?keywords=s+samsung+970+evo+1tb&qid=1565493002&s=electronics&sr=1-1

      --POWER SUPPLY

      EVGA Supernova 1000 P2 80+ Platinum, 1000W ECO Mode Fully Modular 
      -Link
      https://www.amazon.com/EVGA-Supernova-Platinum-Crossfire-220-P2-1000-XR/dp/B00EKJQM5E/ref=sr_1_3?keywords=power+supply+1000w&qid=1565493196&s=gateway&sr=8-3

      --WIRELESS

      TP-Link Archer T9E
      -Link
      https://www.amazon.com/TP-Link-Archer-T9E-Beamforming-Technology/dp/B00TQEX7AQ/ref=sr_1_1?keywords=TP-Link+Archer+T9E&qid=1553358397&s=gateway&sr=8-1

      --CASE

      Thermaltake Core P5 Tempered Glass Black Edition ATX Open Frame Panoramic Viewing
      -Link
      https://www.amazon.com/Thermaltake-Tempered-Panoramic-Certified-CA-1E7-00M1WN-03/dp/B01N4IGVSC/ref=sr_1_2?keywords=Thermaltake+Core+P5&qid=1565493567&s=gateway&sr=8-2

      --DSDT Patches--
      -FIX ACPI ERRORS -FIX OEM SSDTs to AVOID ERRORS AND WARNINGS -REMOVE UNUSED SCOPES / DEVICES -HIGH PRECISION EVENT TIMER -SATA -DMAC -REMOVE PROBLEMATIC AND UNUSED DEVICES -FIX K.P in REBOOT -SLPB -DARWIN / WINDOWS 2015 -XHCI -PLUGIN TYPE -HDAS to HDEF -HDEF -REAL TIME CLOCK -ARTC -IRQs -SBUS -BUS1 -MCHC -ALS0 -SHUTDOWN -LAN -FWHD -USBX -PMCR -PPMC -XSPI -CNVW -GMM -IMEI -EC -PNLF -ARPT -GFX0 -NVME -DTGP -ACQUIRE MUT0 0XFFFF -MUTEX MUT0 0x00 -EXTERNAL REFERENCES -UNKNOWNOBJ -HDMI / HDAU -FULL RENAMED DEVICES ---SCREENSHOTs---




















      -Credits and thanks to the old and new people in the community who developed patches, kexts and bootloaders!
      Thanks to KGP for SSDT Thunderbolt
      Slice, Kabyl, usr-sse2, jadran, Blackosx, dmazar, STLVNUB, pcj, apianti, JrCs, pene, FrodoKenny, skoczy, ycr.ru, Oscar09, xsmile, SoThOr, RehabMan, Download-Fritz, Zenit432, cecekpawon, Intel, Apple, Oracle, Chameleon Team, crazybirdy, Mieze, Mirone, Oldnapalm, netkas, Elconiglio, artut-pt, ErmaC, Pavo, Toleda, Master Chief and family, bcc9, The King, PMheart, Sherlocks, Micky1979, vit9696, vandroiy2013, Voodoo Team, Pike R. Alpha, lvs1974, Austere.J, CVad, Sampath007, onemanosx, erroruser, Jenny David, Olarila Facebook Community, Hackintosh Facebook Community and many others!
      We're all here to have fun and learn from each other!
×