Jump to content
Andy Vandijck

decompkernelcache V1.8 for Win+Mac - apps to decompress kernel cache of Yosemite and older (LZVN+LZSS) and updated kext_tools for Mavericks

69 posts in this topic

Recommended Posts

@Andy, thank you! It is encouraging to know that at least everything necessary for the build is available from the Apple open source site.

 

After you pointed me at libbless, I got it from there. ;)

 

But if you don't mind, I'd appreciate a bit more "cooked"  info. For example, to complete the build, you probably had to add all the necessary frameworks and libraries to the project. Maybe you could post your project.pbxproj file? And/or help me remove my confusion and understand why the project.pbxproj file included in your kext_tools-326.90.2-AnV_R2 does not seem to contain all these references (or at least those references do not show in my Xcode)?

 

Also, I tried to google for Private OSXSDK, and got nothing useful - so obviously I'm not looking at the right place. Could you please point me at its location?

 

Thank you!

 

P.S. If it isn't too big a time-sink (and I understand you're probably busy enough), perhaps you could post a list of those extra things needed for kext_tools build?

From the README file:

OSXPrivateSDK
=============

SDK target for opensource.apple.com code

1. Quit Xcode
2. `$ git clone git@github.com:samdmarshall/OSXPrivateSDK.git PrivateSDK`
3. `$ cd PrivateSDK`
4. `$ git submodule update --init --recursive`
5. `$ cd SDKBuilder`
2. `$ python SDKBuilder.py --sdk /full/path/to/PrivateSDK/PrivateSDK/`
3. Open Xcode and select "Private (10.9)" as your SDK Target


This is based on many of the projects on opensource.apple.com to build in a proper environment. 
Looking for contributions and fixes to add more compatibility to existing projects.

And you have it.

Similar for 10.10...

Just change the path to the downloaded private SDK...

Just use google for every missing header (look for .h errors) and copy them into your target SDK.

There are too many libraries needed to list them all (I don't even remember them all but they are on http://opensource.apple.com)

Takes a bit of work and a lot of headers but then it builds fine...

Some libraries are required such as libbless but there are others, use google, copy built results to SDK and resume build each time.

Share this post


Link to post
Share on other sites
Advertisement

I have been successful up to step 7.

 

I assume step 6 meant in my case:

$ sudo python SDKBuilder.py --sdk /Users/uri/src/PrivateSDK/PrivateSDK10.9/

Because otherwise when I didn't specify 10.9 subdir it could not find SDKSettings.plist, and when I invoked it as non-privileged user it failed with 

OSError: [Errno 13] Permission denied: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/PrivateMacOSX10.9.sdk'

 

But once PrivateMacOSX10.9.sdk has been created in that root-owned directory (after I invoked python as root), I'm confused how to proceed - what to point Xcode at.

 

And my apologies for my significant ignorance of Apple/OSX/Xcode intrinsics (which I'm trying to remedy, but the progress is slow, and the learning curve appears steep). I swear that I'm better when it is straight Unix/Linux and make. :)

 


It looks like in the project I was trying to build (AppleRAID in this case, needed for lib bless, which in turn is needed for kext_tools) I needed to replace Base SDK with this Private SDK (10.9). Once I've done that, I got a Missing file error on

#include <MediaKit/MKMedia.h>

/System/Library/PrivateFrameworks/MediaKit.framework on my system does not include any headers :-(

 

Again, I used to think my Google-fu was adequate, but I can't find a pointer to those headers. :-(

Share this post


Link to post
Share on other sites

I have been successful up to step 7.

 

I assume step 6 meant in my case:

$ sudo python SDKBuilder.py --sdk /Users/uri/src/PrivateSDK/PrivateSDK10.9/
Because otherwise when I didn't specify 10.9 subdir it could not find SDKSettings.plist, and when I invoked it as non-privileged user it failed with

OSError: [Errno 13] Permission denied: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/PrivateMacOSX10.9.sdk'

But once PrivateMacOSX10.9.sdk has been created in that root-owned directory (after I invoked python as root), I'm confused how to proceed - what to point Xcode at.

 

And my apologies for my significant ignorance of Apple/OSX/Xcode intrinsics (which I'm trying to remedy, but the progress is slow, and the learning curve appears steep). I swear that I'm better when it is straight Unix/Linux and make. :)

 

 

It looks like in the project I was trying to build (AppleRAID in this case, needed for lib bless, which in turn is needed for kext_tools) I needed to replace Base SDK with this Private SDK (10.9). Once I've done that, I got a Missing file error on

#include <MediaKit/MKMedia.h>
/System/Library/PrivateFrameworks/MediaKit.framework on my system does not include any headers :-(

 

Again, I used to think my Google-fu was adequate, but I can't find a pointer to those headers. :-(

If you can't fix up something then (like in case of this mediakit part) you have 2 options:

Some things aren't absolutely required thus remove references as they aren't used on a hackintosh.

Other option:

Reverse engineer or in case of ObjC use a tool like class-dump to get the headers directly.

MediaKit.framework ;) (hence the MK prefix...)

It is private but ObjC RTTI has no secrets...

Look for class-dump sources and learn :D

I got many private headers including app store (CommerceKit.framework) that way ;)

Share this post


Link to post
Share on other sites

Thank you!

 

Regarding option 1 (removing references) - I'd rather avoid it, because I'm trying to replace the full-functioning component of a "native" Mavericks (10.9.5) installation. So I'm concerned of unwittingly crippling it.

 

I got class-dump-3.5 build (so Xcode actually can do something useful :)), though to my surprise it did not even try to install the executables despite me configuring Build rules to do exactly that. Oh well, another small problem to solve. :-)

 

I copied class-dump manually to where it belongs, and will start attacking MediaKit.framework.

 

Probably I'll cry for help here many more times yet before it all runs. ;)

Share this post


Link to post
Share on other sites

While I'm struggling, maybe you could clarify this point:

Just use google for every missing header (look for .h errors) and copy them into your target SDK

Say, using class-dump I get those .h files that Apple thoughtfully omitted from MediaKit.framework. What's the best way to add them to the build?

 

Also, how do I add more frameworks, libraries, and include files to this PrivateOSXSDK? Re-create it every time with the python script included? Or...?

 

Thanks!

Share this post


Link to post
Share on other sites

While I'm struggling, maybe you could clarify this point:

Say, using class-dump I get those .h files that Apple thoughtfully omitted from MediaKit.framework. What's the best way to add them to the build?

 

Also, how do I add more frameworks, libraries, and include files to this PrivateOSXSDK? Re-create it every time with the python script included? Or...?

 

Thanks!

If the MediaKit.framework is not present, copy it from /System/Library/Frameworks or /System/Library/PrivateFrameworks.

Add underneath the required folder Headers and copy the headers you created in there.

Make sure that if it is a Private framework that you add it to the framework search paths before you build ;)

Share this post


Link to post
Share on other sites

Added Github page for decompkernelcache.

Now has also updated lzvndec.c file by Pike R. Alpha and new lzvn.h (includes compression code).

Only thing needed is conversion from lzvnenc.s from LZVN project to C and needs to be adapted for compression of kernel cache.

Then LZVN project is fully finished...

See first post for Github link (includes updated decompkernelcache 1.8, 1.9 will follow with compression support soon).

Share this post


Link to post
Share on other sites

Hi Andy,

 

there is a possibility to extract the kernel from the decompressed kernelcache or unlink the PRELINKED kexts?

Thanks

There can be an extraction of the kernel alone but it would need some kind of tool which removes the prelink segment from the binary and realigns it with PAGE_SIZE.

Then it would get recognized (and it would work) as a kernel alone.

The prelink segment preincludes some binaries and plists of the drivers (bare minimum per driver).

XNU sources contain info on which segment.

EDIT: Some more info:

      cmd LC_SEGMENT_64
  cmdsize 152
  segname __PRELINK_TEXT
   vmaddr 0xffffff8000c47000
   vmsize 0x000000000240c000
  fileoff 0xa22000
 filesize 37797888
  maxprot 0x00000007
 initprot 0x00000003
   nsects 1
    flags 0x0
Section
  sectname __text
   segname __PRELINK_TEXT
      addr 0xffffff8000c47000
      size 0x000000000240c000
    offset 0xa22000
     align 2^0 (1)
    reloff 0x0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Load command 8
      cmd LC_SEGMENT_64
  cmdsize 232
  segname __PRELINK_STATE
   vmaddr 0xffffff8000b2f000
   vmsize 0x0000000000000000
  fileoff 0x8ba000
 filesize 0
  maxprot 0x00000007
 initprot 0x00000003
   nsects 2
    flags 0x0
Section
  sectname __kernel
   segname __PRELINK_STATE
      addr 0xffffff8000b2f000
      size 0x0000000000000000
    offset 0x8ba000
     align 2^0 (1)
    reloff 0x0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Section
  sectname __kexts
   segname __PRELINK_STATE
      addr 0xffffff8000b2f000
      size 0x0000000000000000
    offset 0x8ba000
     align 2^0 (1)
    reloff 0x0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Load command 9
      cmd LC_SEGMENT_64
  cmdsize 152
  segname __PRELINK_INFO
   vmaddr 0xffffff8003053000
   vmsize 0x0000000000279000
  fileoff 0x2e2e000
 filesize 2592291
  maxprot 0x00000007
 initprot 0x00000003
   nsects 1
    flags 0x0
Section
  sectname __info
   segname __PRELINK_INFO
      addr 0xffffff8003053000
      size 0x0000000000278e23
    offset 0x2e2e000
     align 2^0 (1)
    reloff 0x0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0

Share this post


Link to post
Share on other sites

I'v found a simply method do reduce the linked kexts to only one from the kernelcache decompressed with your tool. can be intrestering?

Sorry but now I'm away from Home..

Share this post


Link to post
Share on other sites

I'v found a simply method do reduce the linked kexts to only one from the kernelcache decompressed with your tool. can be intrestering?

Sorry but now I'm away from Home..

Segments and sections and sizes and count adjusted?

Cool!

Share this post


Link to post
Share on other sites

Hey Andy and thanks for your (h)andy tool (ba dumm tsss).

 

Anyway, I just used it to decompress the prelinkedkernel (which is equal to kernelcache) on El Capitan Public Beta 1 (= Developer Beta 3) and at first sight it works great. Though I did a comparison between the original uncompressed kernel and the kernel decompressed by your tool and I noticed 21 changes varying between changing single and inserting/deleting multiple bytes. The kernel have exactly the same length and all strings are intact. I rebuild the cache twice to make sure it's not an older kernel version cached.

 

Two options: Either the decompression code needs an update to El Cap, or Apple manipulates the kernel before caching... Any ideas?

Share this post


Link to post
Share on other sites

FYI: I ran LZVN on the prelinkedkernel and compared it. Here's the result:

 

cmp -l prelinkedkernel_15A244d_unpacked /S*/L*/Kernels/kernel

3123 306 264
3130  40   0
3131  44   0
3132   2   0
3138 140   0
3139 243 214
3146  40   0
3147  44   0
3148   2   0
3203 306 264
3210  40   0
3211  44   0
3212   2   0
3218 140   0
3219 243 214
3506 120  60
3507 352 264
3508   2   0
3514 200   0
3515  53   0
3522 200   0
3523 307 214
3524   2   0
3529 315   0
3530 166   0
3531  53   0
3586 120  60
3587 352 264
3588   2   0
3593 315   0
3594 166   0
3595  53   0
3602 200   0
3603 307 214
3604   2   0l
Nothing fancy going on. Only the _PRELINKED_TEXT and _PRELINKED_INFO load commands changed. Of course.

Share this post


Link to post
Share on other sites

Oh yeah, of course. Got a little confused by Hex Workshop displaying a chunk that was barely altered entirely as 'replaced'. Thanks for clearing up.

Yeah HexWorkshop even is the best windows hex editor(IMHO) sucks on compare function, use UltraCompare or other tool for windows...

Share this post


Link to post
Share on other sites

Hello, sorry to bump this old thread. Months ago Apple has release LZFSE compressor including LZVN into public. Is there any major differences with yours? It would be awesome if someone can port it to work with EDK2, because I cannt make it run to decode simple AppleLogoPacked :) With this approach (EmbeddedOSFirmware, some people told its an part of watchOS applied to new touchbar) they can easily decompress bundled kernelcache / dmg with LZFSE, but not with macos kernelcache / LZVN:

 

 

THRSH:bin cecekpawon$ hexdump -n32 -C kernelcache.release.x619
00000000  30 83 58 f8 ba 16 04 49  4d 34 50 16 04 6b 72 6e  |0.X....IM4P..krn|
00000010  6c 16 1c 4b 65 72 6e 65  6c 43 61 63 68 65 42 75  |l..KernelCacheBu|
00000020
THRSH:bin cecekpawon$ hexdump -n32 -C 058-68845-001.dmg
00000000  30 84 01 29 6e 06 16 04  49 4d 34 50 16 04 6f 73  |0..)n...IM4P..os|
00000010  72 64 16 01 30 04 84 01  29 6d e6 62 76 78 32 d6  |rd..0...)m.bvx2.|
00000020
THRSH:bin cecekpawon$
THRSH:bin cecekpawon$
THRSH:bin cecekpawon$ tail -c +53 kernelcache.release.x619 | hexdump -n32 -C
00000000  62 76 78 32 a9 a9 00 00  64 3a 80 50 03 90 06 70  |bvx2....d:.P...p|
00000010  f1 ae 0f ed b5 72 0f 50  c3 00 00 00 33 a0 d0 02  |.....r.P....3...|
00000020
THRSH:bin cecekpawon$ tail -c +28 058-68845-001.dmg | hexdump -n32 -C
00000000  62 76 78 32 d6 38 18 00  e8 39 20 9b 03 a7 05 40  |bvx2.8...9 ....@|
00000010  0c 58 35 cc 02 3b 0d 00  cb 00 00 00 2c 80 20 08  |.X5..;......,. .|
00000020
THRSH:bin cecekpawon$
THRSH:bin cecekpawon$
THRSH:bin cecekpawon$ tail -c +53 kernelcache.release.x619 | ./lzfse -decode > kernelcache.release.x619.bin
THRSH:bin cecekpawon$ tail -c +28 058-68845-001.dmg | ./lzfse -decode > 058-68845-001.decoded.dmg
THRSH:bin cecekpawon$
THRSH:bin cecekpawon$
THRSH:bin cecekpawon$ hexdump -n32 -C kernelcache.release.x619.bin
00000000  ca fe ba be 00 00 00 01  00 00 00 0c 00 00 00 0c  |................|
00000010  00 00 00 1c 00 c6 20 00  00 00 00 00 ce fa ed fe  |...... .........|
00000020
THRSH:bin cecekpawon$ hexdump -n32 -C 058-68845-001.decoded.dmg
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000020
THRSH:bin cecekpawon$
THRSH:bin cecekpawon$
THRSH:bin cecekpawon$ ls -l
total 211696
-rw-r--r--  1 cecekpawon  staff  52596736 Dec 21 20:30 058-68845-001.decoded.dmg
-rw-r--r--  1 cecekpawon  staff  19492364 Dec  2 11:21 058-68845-001.dmg
-rwxr-xr-x  1 cecekpawon  staff  17412363 Dec 21 14:15 kernelcache
-rw-r--r--  1 cecekpawon  staff   5830847 Dec  2 11:15 kernelcache.release.x619
-rw-r--r--  1 cecekpawon  staff  12984348 Dec 21 20:30 kernelcache.release.x619.bin
-rwxr-xr-x  1 cecekpawon  staff     35576 Dec 20 10:49 lzfse
-rwxr-xr-x  1 cecekpawon  staff     23408 Dec 21 16:13 lzvn

 

 

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   0 members

    No registered users viewing this page.

  • Similar Content

    • By ludufre
      New guide available for macOS Catalina 10.15 (i3 and i5 versions)!
       
       
      Installing OS X Yosemite 10.10.3 on ASUS VivoBook S400C (also know as S400CA)
      Specifically in S400CA-CA178H model, most likely all other models are compatible
      Can't boot S400CA-CA206H due HD3000 issues (i3-2375M model)
       
        

      Updated 17/06/15 #1:
       
      - Brightness now work. DSDT patch below.
       
       
       
      - Updated attachment with DSDT.aml and missing VoodooHDA kext.
      - Added TO DO list.
       
      Updated 17/06/15 #2:
       
      - WebCam now work. Kext AnyiSightCam.
       
       
       
      - Update attachment with new WebCam kext.
       
      Updated 19/06/15 #1:
       
      - Can't boot installation in S400C-CA206H model (i3-2375M/HD3000).
       
       
       
      - VGA tested. Don't work.
      - Boot logo work. Missed CsmVideoDxe-64 on my install.
       
      Updated 21/06/15 #1:
       
      - I Forgot of the need of FakeSMC.kext.
       
       
       
       
      Updated 22/11/17 #1:
       
      - High Sierra 10.13.1 on ASUS Vivobook S400C (S400CA-CA178H).

       
      Prequel
       
      Hi, my name is Luan and today I will show how I installed the OS X Yosemite version 10.10.3 on my ultrabook.
      I know that my procedure maybe can be made in other ways, but this is about how I made it.
      I am part of this world for four years. Since the launch of XCode 7 and no need to sign the Developer Program to test applications on the iPhone, I decided to install OS X.
      God bless WWDC15 (I'm not religious, just a popular saying in my country).
       
       
      What works and what does not work
       
      - Processor ->  Work. i5-3317U @ 1.7Ghz/2.6Ghz.  SpeedStep 8 to 26 stages. AsusAICPUPM <true/> in Clover config.plist. 
      - Video Card ->  Work. HD4000. Full QE/CI.
      - Chipset ->  Work.
      - HDMI ->  Work.
      - VGA ->  Not work. I did not have time to fix yet.
      - Audio ->  Work. Kext VoodooHDA + AppleHDADisabler.
      - WiFi ->  Work. Replaced by Athero 9285 Wifi/Bluetooth.
      - Ethernet ->  Work. Kext Experimental Atheros AR81(31/32/51/52/61/62/71/72) Driver for 10.7/10.8.
      - Touchpad and keyboard ->  Work. Kext ELAN, FocalTech and Synaptics (Smart Touchpad) Driver (Mac OS X).
      - FN keyboards keys ->  Not work. I did not have time to fix yet.
      - Brightness control ->  Work. DSDT patch.
      - Sleep ->  Work.
      - Battery ->  Work. Kext ACPIBatteryManager by RehabMan and DSDT patch (below).
      - Card Reader -> Not tested. I have no adapters.
      - Integrated Camera ->  Work. Kext AnyiSightCam.
      - Bluetooth ->  Work. Kext Bluetooth Firmware Uploader and ControllerPowerState change to 1.
      - Boot Logo ->  Work.
       
       
      What I needed to install
       
      - Running install of Yosemite on VMware -> Downloaded version 10.10 via torrent (Google it). You can use a real Mac of an friend. I believe that Snow Leopard (10.6), Lion (10.7), Mountain Lion (10.8), Mavericks (10.9) also work.
      - Two USB flash drives of 8GB -> One for OSX install and another to the bootloader. This second not need to be 8GB, a 256MB is perfect.
      - OS X Yosemite install app -> Downloaded via App Store inside the virtual machine. I used version 10.10.3.
      - CloverEFI -> Also downloaded inside the virtual machine. I used build 3229.
      - DSDT patch skills -> Needed to battery works. How to patch DSDT.
       
      P.s.: You can use a single flash drive, in my install I used two because I don't wanted lose the os install created on the main flash drive.
       
       
      How I created flash cards
       
      Install flash drive:
       
      Partially used @snatch guide. More specifically this part:
       
       
       
       
       
       
      In the part above used the first flash drive (8GB).
       
      Bootloader flash drive:
       
      Format the second flash drive with GUID partition and Journaled file system type. If you want to use only one flash card, don't format!
       
      Downloaded the CloverEFI (used 3229) and installed with this options:

      Options:
       
      - Install for UEFI booting only
      - Install Clover in the ESP
      - Drivers64UEFI - CsmVideoDxe-64
      - Drivers64UEFI - OsxAptioFixDrv-64
       
      Will be created a partition named EFI. Edit the /EFI/CLOVER/config.plist and change those values:
       
      - SystemParameters - InjectKexts - <true/>
      - Graphics - Inject - ATI - <false/>
      - Graphics - Inject - Intel - <true/>
      - Graphics - ig-platform-id - 0x01660003
      - KernelAndKextPatches - AsusAICPUPM - <true/>
       
      P.s.: I will provide below my config.plist as attachment.
       
      Now you will capable to boot in installation, but your keyboard and mouse will not work. Let's fix that:
       
      - Download the Smart Touchpad kext from here. I used the version 4.3. This also enable the touchscreen.
      - Download the FakeSMC kext from here. I used the version 6.9.1315. This is very important. Can't boot without it.
      - Put the Kexts inside /EFI/CLOVER/kexts/10.10/
       
      Now you can start the instalation without problem (I guess).
       
       
      BIOS Setup Configuration
       
      - Intel Virtualization Technology: Disabled
      - VT-d: Disabled
      - USB Configuration - XHCI Pre-Boot Mode: Disabled
       
      P.s.: BIOS version 210.
       
       
      Installing indeed
       
      - Plug in the two flash drives.
      - When appear the Asus logo, press ESC once to enter Boot Menu.
      - Select the flash drive name with UEFI prefix. In my case "UEFI: KingstonDataTraveler 2.0PMAP".
      - On CloverEFI menu, use arrow to mark the flash drive with de OS X install, press Space on keyboard and select: "Boot Mac OS X in verbose mode".
      - As usual, format your HDD or SSD as GUID and Journaled. Make more partitions if you need. Take a note of the OSX partition name you entered on Disk Utillity.
      - After that, go ahead as always and start the instalation.
      - Go in the kitchen grab some lunch. You deserve it.
       
       
      Post installation
       
      What we have so far? The system installed on your ultrabook. Now you need to get rid of bootable flash drive installing the bootloader on HDD or SSD.
       
      Installing the bootloader in internal HDD or SSD:
       
      - Boot again selecting the flash drive on Boot menu. Same you did before.
      - Now select the partition you noted early.
      - If you do everything wright, the system will start normally.
      - Now you will use the CloverEFI install package again (same options from above). This time, the target will be your OS X installed partition.
       
      Our adorable ultrabook don't boot EFI if partition on the HDD or SSD if isn't MS-DOS. We will need to format and install Clover again.
       
      - Open the Terminal and enter "sudo -s".
      - Run the command: "diskutil list".
      - Take note of what location is your EFI. Usually it is "rdisk0s1". Make sure it's correct or you loose your data.
      - Now, let's format it, now execute: "newfs_msdos -v EFI -F 32 /dev/rdiskXsX". rdiskXsX is your EFI partition location from line above.
       
      Now you need to copy all data of your flash card bootloader to the root of your new created EFI partition on internal disk.
      This EFI partition is unmounted. Mount with "diskutil mount /dev/rdiskXsX".
       
      Just restart without flash drives to test.
       
      Others Kexts:
       
      Download the kexts from the links below. I strongly recommend always use newest versions. If you are too lazy, I attach on end of the post.
       
      Ethernet: ALXEthernet
      Sound: VoodooHDA (You may have to select the output there in System Preferences)
      Battery: ACPIBatteryManager
      Bluetooth: BTFirmwareUploader
      Integrated Camera: AnyiSightCam
       
      All kexts will be placed inside /EFI/CLOVER/kexts/10.10/, mount again this partition (diskutil mount /dev/rdiskXsX) for it.
       
      Now we need to add Battery patch to a new DSDT:
       
      #Maintained by: RehabMan for: Laptop Patches #battery_ASUS-N55SL.txt # created by RehabMan 8/12/2013 # created originally for jesselid # works for: # ASUS N55SL, BIOS rev. 204 # ASUS VivoBook series # ASUS Zenbook UX31A # ASUS UX301LA # ASUS X553E-SX399V # ASUS F501A # ASUS K55VM # ASUS U46SV, BIOS rev. 2.04 # ASUS N43 # ASUS PU500CA (90NB00F1-M01120) # ASUS N73SV # ASUS X401A-WX108 # ASUS F551CA Bios rev. 207 # ASUS S551LB VivoBook # ASUS ZenBook UX32VD # ASUS F550L-X455H # ASUS X53S # ASUS K550JD-XX003H # ASUS G53SX # ASUS K56CB # ASUS UX305 into method label B1B2 remove_entry; into definitionblock code_regex . insert begin Method (B1B2, 2, NotSerialized) { Return (Or (Arg0, ShiftLeft (Arg1, 8))) }\n end; # not really for battery, but might come in handy to read fan speed(s) into device label EC0 code_regex TAH0,\s+16 replace_matched begin TH00,8,TH01,8 end; into device label EC0 code_regex TAH1,\s+16 replace_matched begin TH10,8,TH11,8 end; into method label TACH code_regex \(TAH0, replace_matched begin (B1B2(TH00,TH01), end; into method label TACH code_regex \(TAH1, replace_matched begin (B1B2(TH10,TH11), end; into method label GFAN code_regex \(\\_SB\.PCI0\.LPCB\.EC0\.TAH0, replace_matched begin (B1B2(\\_SB.PCI0.LPCB.EC0.TH00,\\_SB.PCI0.LPCB.EC0.TH01), end; # battery EC into device label EC0 code_regex B0SN,\s+16 replace_matched begin B0S0,8,B0S1,8 end; into device label EC0 code_regex B1SN,\s+16 replace_matched begin B1S0,8,B1S1,8 end; into method label BIFA code_regex \(B0SN, replace_matched begin (B1B2(B0S0,B0S1), end; into method label BIFA code_regex \(B1SN, replace_matched begin (B1B2(B1S0,B1S1), end; into device label EC0 code_regex DT2B,\s+16 replace_matched begin T2B0,8,T2B1,8 end; into method label SMBR code_regex \(DT2B, replace_matched begin (B1B2(T2B0,T2B1), end; into method label SMBW code_regex Store\s+\(([^,]*),\s+DT2B\) replace_matched begin Store(%1,T2B0) Store(ShiftRight(%1,8),T2B1) end; into device label EC0 insert begin Method (RDBA, 0, Serialized)\n {\n Name (TEMP, Buffer(0x20) { })\n Store (BA00, Index(TEMP, 0x00))\n Store (BA01, Index(TEMP, 0x01))\n Store (BA02, Index(TEMP, 0x02))\n Store (BA03, Index(TEMP, 0x03))\n Store (BA04, Index(TEMP, 0x04))\n Store (BA05, Index(TEMP, 0x05))\n Store (BA06, Index(TEMP, 0x06))\n Store (BA07, Index(TEMP, 0x07))\n Store (BA08, Index(TEMP, 0x08))\n Store (BA09, Index(TEMP, 0x09))\n Store (BA0A, Index(TEMP, 0x0A))\n Store (BA0B, Index(TEMP, 0x0B))\n Store (BA0C, Index(TEMP, 0x0C))\n Store (BA0D, Index(TEMP, 0x0D))\n Store (BA0E, Index(TEMP, 0x0E))\n Store (BA0F, Index(TEMP, 0x0F))\n Store (BA10, Index(TEMP, 0x10))\n Store (BA11, Index(TEMP, 0x11))\n Store (BA12, Index(TEMP, 0x12))\n Store (BA13, Index(TEMP, 0x13))\n Store (BA14, Index(TEMP, 0x14))\n Store (BA15, Index(TEMP, 0x15))\n Store (BA16, Index(TEMP, 0x16))\n Store (BA17, Index(TEMP, 0x17))\n Store (BA18, Index(TEMP, 0x18))\n Store (BA19, Index(TEMP, 0x19))\n Store (BA1A, Index(TEMP, 0x1A))\n Store (BA1B, Index(TEMP, 0x1B))\n Store (BA1C, Index(TEMP, 0x1C))\n Store (BA1D, Index(TEMP, 0x1D))\n Store (BA1E, Index(TEMP, 0x1E))\n Store (BA1F, Index(TEMP, 0x1F))\n Return (TEMP)\n }\n end; into device label EC0 insert begin Method (WRBA, 1, Serialized)\n {\n Name (TEMP, Buffer(0x20) { })\n Store (Arg0, TEMP)\n Store (DerefOf(Index(TEMP, 0x00)), BA00)\n Store (DerefOf(Index(TEMP, 0x01)), BA01)\n Store (DerefOf(Index(TEMP, 0x02)), BA02)\n Store (DerefOf(Index(TEMP, 0x03)), BA03)\n Store (DerefOf(Index(TEMP, 0x04)), BA04)\n Store (DerefOf(Index(TEMP, 0x05)), BA05)\n Store (DerefOf(Index(TEMP, 0x06)), BA06)\n Store (DerefOf(Index(TEMP, 0x07)), BA07)\n Store (DerefOf(Index(TEMP, 0x08)), BA08)\n Store (DerefOf(Index(TEMP, 0x09)), BA09)\n Store (DerefOf(Index(TEMP, 0x0A)), BA0A)\n Store (DerefOf(Index(TEMP, 0x0B)), BA0B)\n Store (DerefOf(Index(TEMP, 0x0C)), BA0C)\n Store (DerefOf(Index(TEMP, 0x0D)), BA0D)\n Store (DerefOf(Index(TEMP, 0x0E)), BA0E)\n Store (DerefOf(Index(TEMP, 0x0F)), BA0F)\n Store (DerefOf(Index(TEMP, 0x10)), BA10)\n Store (DerefOf(Index(TEMP, 0x11)), BA11)\n Store (DerefOf(Index(TEMP, 0x12)), BA12)\n Store (DerefOf(Index(TEMP, 0x13)), BA13)\n Store (DerefOf(Index(TEMP, 0x14)), BA14)\n Store (DerefOf(Index(TEMP, 0x15)), BA15)\n Store (DerefOf(Index(TEMP, 0x16)), BA16)\n Store (DerefOf(Index(TEMP, 0x17)), BA17)\n Store (DerefOf(Index(TEMP, 0x18)), BA18)\n Store (DerefOf(Index(TEMP, 0x19)), BA19)\n Store (DerefOf(Index(TEMP, 0x1A)), BA1A)\n Store (DerefOf(Index(TEMP, 0x1B)), BA1B)\n Store (DerefOf(Index(TEMP, 0x1C)), BA1C)\n Store (DerefOf(Index(TEMP, 0x1D)), BA1D)\n Store (DerefOf(Index(TEMP, 0x1E)), BA1E)\n Store (DerefOf(Index(TEMP, 0x1F)), BA1F)\n }\n end; into device label EC0 code_regex BDAT,\s+256 replace_matched begin //BDAT, 256,\n BA00,8,BA01,8,BA02,8,BA03,8,\n BA04,8,BA05,8,BA06,8,BA07,8,\n BA08,8,BA09,8,BA0A,8,BA0B,8,\n BA0C,8,BA0D,8,BA0E,8,BA0F,8,\n BA10,8,BA11,8,BA12,8,BA13,8,\n BA14,8,BA15,8,BA16,8,BA17,8,\n BA18,8,BA19,8,BA1A,8,BA1B,8,\n BA1C,8,BA1D,8,BA1E,8,BA1F,8\n end; into method label SMBR code_regex \(BDAT, replaceall_matched begin (RDBA(), end; into method label SMBR code_regex Store\s\((.*),\sBDAT\) replaceall_matched begin WRBA(%1) end; into method label SMBW code_regex Store\s\((.*),\sBDAT\) replaceall_matched begin WRBA(%1) end; into method label ECSB code_regex Store\s\((.*),\sBDAT\) replaceall_matched begin WRBA(%1) end; into method label ECSB code_regex \(BDAT, replaceall_matched begin (RDBA(), end; into device label EC0 insert begin Method (RDBB, 0, Serialized)\n {\n Name (TEMP, Buffer(0x20) { })\n Store (BB00, Index(TEMP, 0x00))\n Store (BB01, Index(TEMP, 0x01))\n Store (BB02, Index(TEMP, 0x02))\n Store (BB03, Index(TEMP, 0x03))\n Store (BB04, Index(TEMP, 0x04))\n Store (BB05, Index(TEMP, 0x05))\n Store (BB06, Index(TEMP, 0x06))\n Store (BB07, Index(TEMP, 0x07))\n Store (BB08, Index(TEMP, 0x08))\n Store (BB09, Index(TEMP, 0x09))\n Store (BB0A, Index(TEMP, 0x0A))\n Store (BB0B, Index(TEMP, 0x0B))\n Store (BB0C, Index(TEMP, 0x0C))\n Store (BB0D, Index(TEMP, 0x0D))\n Store (BB0E, Index(TEMP, 0x0E))\n Store (BB0F, Index(TEMP, 0x0F))\n Store (BB10, Index(TEMP, 0x10))\n Store (BB11, Index(TEMP, 0x11))\n Store (BB12, Index(TEMP, 0x12))\n Store (BB13, Index(TEMP, 0x13))\n Store (BB14, Index(TEMP, 0x14))\n Store (BB15, Index(TEMP, 0x15))\n Store (BB16, Index(TEMP, 0x16))\n Store (BB17, Index(TEMP, 0x17))\n Store (BB18, Index(TEMP, 0x18))\n Store (BB19, Index(TEMP, 0x19))\n Store (BB1A, Index(TEMP, 0x1A))\n Store (BB1B, Index(TEMP, 0x1B))\n Store (BB1C, Index(TEMP, 0x1C))\n Store (BB1D, Index(TEMP, 0x1D))\n Store (BB1E, Index(TEMP, 0x1E))\n Store (BB1F, Index(TEMP, 0x1F))\n Return (TEMP)\n }\n end; into device label EC0 insert begin Method (WRBB, 1, Serialized)\n {\n Name (TEMP, Buffer(0x20) { })\n Store (Arg0, TEMP)\n Store (DerefOf(Index(TEMP, 0x00)), BB00)\n Store (DerefOf(Index(TEMP, 0x01)), BB01)\n Store (DerefOf(Index(TEMP, 0x02)), BB02)\n Store (DerefOf(Index(TEMP, 0x03)), BB03)\n Store (DerefOf(Index(TEMP, 0x04)), BB04)\n Store (DerefOf(Index(TEMP, 0x05)), BB05)\n Store (DerefOf(Index(TEMP, 0x06)), BB06)\n Store (DerefOf(Index(TEMP, 0x07)), BB07)\n Store (DerefOf(Index(TEMP, 0x08)), BB08)\n Store (DerefOf(Index(TEMP, 0x09)), BB09)\n Store (DerefOf(Index(TEMP, 0x0A)), BB0A)\n Store (DerefOf(Index(TEMP, 0x0B)), BB0B)\n Store (DerefOf(Index(TEMP, 0x0C)), BB0C)\n Store (DerefOf(Index(TEMP, 0x0D)), BB0D)\n Store (DerefOf(Index(TEMP, 0x0E)), BB0E)\n Store (DerefOf(Index(TEMP, 0x0F)), BB0F)\n Store (DerefOf(Index(TEMP, 0x10)), BB10)\n Store (DerefOf(Index(TEMP, 0x11)), BB11)\n Store (DerefOf(Index(TEMP, 0x12)), BB12)\n Store (DerefOf(Index(TEMP, 0x13)), BB13)\n Store (DerefOf(Index(TEMP, 0x14)), BB14)\n Store (DerefOf(Index(TEMP, 0x15)), BB15)\n Store (DerefOf(Index(TEMP, 0x16)), BB16)\n Store (DerefOf(Index(TEMP, 0x17)), BB17)\n Store (DerefOf(Index(TEMP, 0x18)), BB18)\n Store (DerefOf(Index(TEMP, 0x19)), BB19)\n Store (DerefOf(Index(TEMP, 0x1A)), BB1A)\n Store (DerefOf(Index(TEMP, 0x1B)), BB1B)\n Store (DerefOf(Index(TEMP, 0x1C)), BB1C)\n Store (DerefOf(Index(TEMP, 0x1D)), BB1D)\n Store (DerefOf(Index(TEMP, 0x1E)), BB1E)\n Store (DerefOf(Index(TEMP, 0x1F)), BB1F)\n }\n end; into device label EC0 code_regex BDA2,\s+256 replace_matched begin //BDA2, 256,\n BB00,8,BB01,8,BB02,8,BB03,8,\n BB04,8,BB05,8,BB06,8,BB07,8,\n BB08,8,BB09,8,BB0A,8,BB0B,8,\n BB0C,8,BB0D,8,BB0E,8,BB0F,8,\n BB10,8,BB11,8,BB12,8,BB13,8,\n BB14,8,BB15,8,BB16,8,BB17,8,\n BB18,8,BB19,8,BB1A,8,BB1B,8,\n BB1C,8,BB1D,8,BB1E,8,BB1F,8\n end; into method label SMBR code_regex \(BDA2, replaceall_matched begin (RDBB(), end; into method label SMBR code_regex Store\s\((.*),\sBDA2\) replaceall_matched begin WRBB(%1) end; into method label SMBW code_regex Store\s\((.*),\sBDA2\) replaceall_matched begin WRBB(%1) end; into method label ECSB code_regex Store\s\((.*),\sBDA2\) replaceall_matched begin WRBB(%1) end; into method label ECSB code_regex \(BDA2, replaceall_matched begin (RDBB(), end; # additional work for _BIX method present in some ASUS laptops into device label EC0 code_regex B0C3,\s+16 replace_matched begin XC30,8,XC31,8 end; into device label EC0 code_regex B1C3,\s+16 replace_matched begin YC30,8,YC31,8 end; into_all method label _BIX code_regex \(\^\^LPCB\.EC0\.B0C3, replaceall_matched begin (B1B2(^^LPCB.EC0.XC30,^^LPCB.EC0.XC31), end; into_all method label _BIX code_regex \(\^\^LPCB\.EC0\.B1C3, replaceall_matched begin (B1B2(^^LPCB.EC0.YC30,^^LPCB.EC0.YC31), end; # or could remove the _BIX method if it turns out not to work #into_all method label _BIX remove_entry; And the Brightness:
       
       
       
       
       
      #Maintained by: RehabMan for: Laptop Patches #graphics_PNLF_ivy_sandy.txt # This patch enables the brightness slider in SysPrefs->Displays # and will also enable activation of sleep mode by closing # the laptop lid. # # This particular version is intended to be used with ACPIBacklight.kext # although it can also be used with AppleBacklight.kext, # provided AppleBacklight.kext is patched to recognize your # display or an injector is used to set brightness levels. # # See this thread for more information: # http://www.tonymacx86.com/hp-probook-mavericks/121031-native-brightness-working-without-blinkscreen-using-patched-applebacklight-kext.html # (also read any linked threads) # # # Note: This patch should be applied to the DSDT or SSDT that defines # your integrated graphics device (always at _ADR 0x00020000) # into_all device label PNLF remove_entry; into_all device name_adr 0x00020000 code_regex (OperationRegion\s\(RMPC,\sPCI_Config[^\}]*\}) remove_matched; into device name_adr 0x00020000 insert begin OperationRegion (RMPC, PCI_Config, 0x10, 4)\n Field (RMPC, AnyAcc, NoLock, Preserve)\n {\n BAR1,32,\n }\n Device (PNLF)\n {\n // normal PNLF declares (note some of this probably not necessary)\n Name (_ADR, Zero)\n Name (_HID, EisaId ("APP0002"))\n Name (_CID, "backlight")\n Name (_UID, 10)\n Name (_STA, 0x0B)\n //define hardware register access for brightness\n // lower nibble of BAR1 is status bits and not part of the address\n OperationRegion (BRIT, SystemMemory, And(^BAR1, Not(0xF)), 0xe1184)\n Field (BRIT, AnyAcc, Lock, Preserve)\n {\n Offset(0x48250),\n LEV2, 32,\n LEVL, 32,\n Offset(0x70040),\n P0BL, 32,\n Offset(0xc8250),\n LEVW, 32,\n LEVX, 32,\n Offset(0xe1180),\n PCHL, 32,\n }\n // DEB1 special for setting KLVX at runtime...\n //Method (DEB1, 1, NotSerialized)\n //{\n // Store(Arg0, KLVX)\n //}\n // LMAX: use 0x710 to force OS X value\n // or use any arbitrary value\n // or use 0 to capture BIOS setting\n Name (LMAX, 0x710)\n // KMAX: defines the unscaled range in the _BCL table below\n Name (KMAX, 0x710)\n // KPCH: saved value for PCHL\n Name(KPCH, 0)\n // _INI deals with differences between native setting and desired\n Method (_INI, 0, NotSerialized)\n {\n // save value of PCHL for later\n Store(PCHL, KPCH)\n // determine LMAX to use\n If (LNot(LMAX)) { Store(ShiftRight(LEVX,16), LMAX) }\n If (LNot(LMAX)) { Store(KMAX, LMAX) }\n Store(ShiftLeft(LMAX,16), KLVX)\n If (LNotEqual(LMAX, KMAX))\n {\n // Scale all the values in _BCL to the PWM max in use\n Store(0, Local0)\n While (LLess(Local0, SizeOf(_BCL)))\n {\n Store(DerefOf(Index(_BCL,Local0)), Local1)\n Divide(Multiply(Local1,LMAX), KMAX,, Local1)\n Store(Local1, Index(_BCL,Local0))\n Increment(Local0)\n }\n // Also scale XRGL and XRGH values\n Divide(Multiply(XRGL,LMAX), KMAX,, XRGL)\n Divide(Multiply(XRGH,LMAX), KMAX,, XRGH)\n }\n // adjust values to desired LMAX\n Store(ShiftRight(LEVX,16), Local1)\n If (LNotEqual(Local1, LMAX))\n {\n Store(LEVL, Local0)\n If (LOr(LNot(Local0),LNot(Local1))) { Store(LMAX, Local0) Store(LMAX, Local1) }\n Divide(Multiply(Local0,LMAX), Local1,, Local0)\n //REVIEW: wait for vblank before setting new PWM config\n //Store(P0BL, Local7)\n //While (LEqual (P0BL, Local7)) {}\n If (LGreater(LEVL, LMAX))\n { Store(KLVX, LEVX) Store(Local0, LEVL) }\n Else\n { Store(Local0, LEVL) Store(KLVX, LEVX) }\n }\n }\n // _BCM/_BQC: set/get for brightness level\n Method (_BCM, 1, NotSerialized)\n {\n // initialize for consistent backlight level before/after sleep\n If (LNotEqual(PCHL, KPCH)) { Store(KPCH, PCHL) }\n If (LNotEqual(LEVW, 0x80000000)) { Store (0x80000000, LEVW) }\n If (LNotEqual(LEVX, KLVX)) { Store (KLVX, LEVX) }\n // store new backlight level\n Store(Match(_BCL, MGE, Arg0, MTR, 0, 2), Local0)\n If (LEqual(Local0, Ones)) { Subtract(SizeOf(_BCL), 1, Local0) }\n If (LNotEqual(LEV2, 0x80000000)) { Store(0x80000000, LEV2) }\n Store(DerefOf(Index(_BCL, Local0)), LEVL)\n }\n Method (_BQC, 0, NotSerialized)\n {\n Store(Match(_BCL, MGE, LEVL, MTR, 0, 2), Local0)\n If (LEqual(Local0, Ones)) { Subtract(SizeOf(_BCL), 1, Local0) }\n Return(DerefOf(Index(_BCL, Local0)))\n }\n Method (_DOS, 1, NotSerialized)\n {\n // Note: Some systems have this defined in DSDT, so uncomment\n // the next line if that is the case.\n //External(^^_DOS, MethodObj)\n ^^_DOS(Arg0)\n }\n // extended _BCM/_BQC for setting "in between" levels\n Method (XBCM, 1, NotSerialized)\n {\n // initialize for consistent backlight level before/after sleep\n If (LNotEqual(PCHL, KPCH)) { Store(KPCH, PCHL) }\n If (LNotEqual(LEVW, 0x80000000)) { Store (0x80000000, LEVW) }\n If (LNotEqual(LEVX, KLVX)) { Store (KLVX, LEVX) }\n // store new backlight level\n If (LGreater(Arg0, XRGH)) { Store(XRGH, Arg0) }\n If (LAnd(Arg0, LLess(Arg0, XRGL))) { Store(XRGL, Arg0) }\n If (LNotEqual(LEV2, 0x80000000)) { Store(0x80000000, LEV2) } \n Store(Arg0, LEVL)\n }\n Method (XBQC, 0, NotSerialized)\n {\n Store(LEVL, Local0)\n If (LGreater(Local0, XRGH)) { Store(XRGH, Local0) }\n If (LAnd(Local0, LLess(Local0, XRGL))) { Store(XRGL, Local0) }\n Return(Local0)\n }\n // Use XOPT=1 to disable smooth transitions\n Name (XOPT, Zero)\n // XRGL/XRGH: defines the valid range\n Name (XRGL, 40)\n Name (XRGH, 1808)\n // KLVX is initialization value for LEVX\n Name (KLVX, 0x7100000)\n // _BCL: returns list of valid brightness levels\n // first two entries describe ac/battery power levels\n Name (_BCL, Package()\n {\n 1808,\n 479,\n 0,\n 53, 55, 57, 59,\n 62, 66, 71, 77,\n 83, 91, 99, 108,\n 119, 130, 142, 154,\n 168, 183, 198, 214,\n 232, 250, 269, 289,\n 309, 331, 354, 377,\n 401, 426, 453, 479,\n 507, 536, 566, 596,\n 627, 660, 693, 727,\n 762, 797, 834, 872,\n 910, 949, 990, 1031,\n 1073, 1115, 1159, 1204,\n 1249, 1296, 1343, 1391,\n 1440, 1490, 1541, 1592,\n 1645, 1698, 1753, 1808,\n })\n }\n end;  
       
      It's done! Now go brush your teeth!
       
       
      To do list
       
      - Turn AppleHDADisabler in CloverEFI path.
      - Fix FN keyboard keys.
      - Turn Battery DSDT patch in CloverEFI path.
      - Test Cardreader.
      - Test USB3 port.
       
       
      And last but not least
       
      I would like to thank the following community members, by making these dream possible:
      @crushers, @snatch, @apianti, @blackosx, @blusseau, @dmazar, @slice2009, @autumnrain, @phpdev32, @EMlyDinEsH, @RehabMan, @Scellow, @mitch_de, @Shailua, @Andy Vandijck, @maxfierke, @ArturXXX and all others members involved directly or indirectly.
       
       
      EFI.zip
    • By fusion71au
      This is a brief guide on how to create a vanilla El Capitan (also same process for Sierra) OS X Installer USB with an updated prelinked kernel containing FakeSMC.

      It is tailored for those users who want to understand the “nuts and bolts” of how to create an installer and also to help brush up on their terminal skills (rather than have one made for them with the numerous automated “tools” available or even Apple’s createinstallmedia) :
       
       
      Specifically, it is also a “Proof of Concept” which shows that installation is possible without even having to rely on boot loader kext injection.

      Prerequisites
      Existing Yosemite installation (or Mavericks - see post#4 for steps 7,8) “Install OS X El Capitan.app" downloaded to the Applications folder Pacifist FakeSMC.kext - Slice or Kozlek branch Bootloader - Clover or Chameleon 8GB or larger USB drive (16GB recommended), formatted HFS+ (MBR or GUID) named “Installer”  
      Procedure
      1.  Boot into Yosemite with the kext-dev-mode=1 boot flag
      2.  Open OS X terminal and type the following lines, followed by <Enter> after each line.
          The image restore and file copying may take a while to complete, and at the end of the process, the Installer volume is renamed to “OS X Base System"....
       
      sudo -s hdiutil attach /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/SharedSupport/InstallESD.dmg asr restore -source /Volumes/OS\ X\ Install\ ESD/BaseSystem.dmg  -target /Volumes/Installer -erase -format HFS+ -noprompt -noverify rm /Volumes/OS\ X\ Base\ System/System/Installation/Packages cp -av /Volumes/OS\ X\ Install\ ESD/Packages /Volumes/OS\ X\ Base\ System/System/Installation cp -av /Volumes/OS\ X\ Install\ ESD/BaseSystem.dmg /Volumes/OS\ X\ Install\ ESD/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System diskutil unmount /Volumes/OS\ X\ Install\ ESD exit 3.  Right click on the “OS X Base System” Volume and click “Get Info”
       

      4.  Click on the lock icon and untick “Ignore ownership on this volume”
       

      5.  Extract/Copy the El Capitan Kernels folder into /System/Library/ of the USB with Pacifist.  NB It is found in the "Essentials.pkg" in /System/Installation/Packages
       

      6.  Delete or Rename the original /System/Library/PrelinkedKernels/prelinkedkernel —> OG.prelinkedkernel
       

      7.  Copy FakeSMC.kext and other necessary kexts (e.g. VoodooPS2Controller.kext for laptops) into the /Library/Extensions folder of the installer USB using Finder.
       

      8.  Back in terminal, type the following lines, followed by <Enter> after each line to rebuild the prelinkedkernel…..
       
      sudo -s chmod -R 755 /Volumes/OS\ X\ Base\ System/Library/Extensions chown -R 0:0 /Volumes/OS\ X\ Base\ System/Library/Extensions touch /Volumes/OS\ X\ Base\ System/System/Library/Extensions kextcache -u /Volumes/OS\ X\ Base\ System exit Any errors should be noted but the output below is normal e.g.


      9. Install your Bootloader targeting the OS X Base System volume
       
       
       
       
      10.  Boot your system with the USB without injected kexts into the OS X Installer GUI....
       
       
       
       
       
      Post Install
      The original prelinked kernel in a fresh install of El Capitan will also lack FakeSMC ie it will only be linked to Apple signed kexts.  In order to boot into El Capitan the first time around without boot loader kext injection, the PLK needs to be rebuilt for the El Capitan volume like we did for the installer:
       
      1.  Boot into Yosemite with the kext-dev-mode=1 boot flag
      2.  Delete or Rename the original /System/Library/PrelinkedKernels/prelinkedkernel for the El Capitan volume —> OG.prelinkedkernel
      3.  Copy FakeSMC.kext and other necessary kexts (e.g. VoodooPS2Controller.kext for laptops) into the /Library/Extensions folder of El Capitan using Finder
      4.  Back in terminal, type the following lines, followed by <Enter> after each line to rebuild the prelinkedkernel.  In this example, the El Capitan volume is named "El_Capitan" - change if you have named it something else...
      sudo -s chmod -R 755 /Volumes/El_Capitan/Library/Extensions chown -R 0:0 /Volumes/El_Capitan/Library/Extensions touch /Volumes/El_Capitan/System/Library/Extensions kextcache -u /Volumes/El_Capitan exit 5. Install your Bootloader targeting the El Capitan volume.  This step is only necessary if you are installing El Capitan on a new drive without existing boot loader (not required if installing on a disk with existing boot loader beside Yosemite).
      6. Reboot your system without injected kexts into El Capitan!
       
       
      Other links
      The All-In-One Guide to Vanilla OS X for beginners
       
      Updates for Sierra and High Sierra   Custom Prelinkedkernel Generator Tool I have made a custom prelinkedkernel generator "PLK.tool" for Sierra + El Capitan.  Instructions:   1.  Download and extract the attached BaseSystem_PLK.tool.zip into your ~/Downloads folder.   2.  Copy any extra kexts necessary for booting your hack to ~/Downloads/BaseSystem/ExtraKexts (e.g. FakeSMC, VoodooPS2Controller), making sure SIP is disabled. 3.  Copy BaseSystem.dmg to ~/Downloads/BaseSystem  4.  Open terminal and run the following commands... cd ~/Downloads/BaseSystem chmod +x PLK.tool ./PLK.tool ---> supply your admin password ---> will place your new custom prelinkedkernel on the desktop.       macOS High Sierra bypass Firmware and MBR checks in post#13.
      BaseSystem_PLK.tool_ElCap.zip
      BaseSystem_PLK.tool_Sierra.zip
      BaseSystem_PLK.tool_Mojave.zip (need to run in Mojave to avoid dependency errors)
      BaseSystem_PLK.tool_Catalina.zip
    • By kylon
      Cloud Clover Editor is an open source application that allows you to manage various Hackintosh Bootloaders configs everywhere.

      Open Cloud Clover Editor
       
      Cloud Clover Editor Wiki
      Cloud Clover Editor Sources
       
       
      Features
      Supports Clover EFI, Ozmosis, Chameleon, OpenCore GUI and Text Editor Mode CCE Bank Mobile friendly  
      Officially supported browsers
      Chrome 42+ Microsoft Edge 14+ Firefox 39+ Safari 10+ Opera 29+ Opera Mobile 12+ Chrome for Android 75+ Firefox for Android 67+  
       
      Credits
      mackie100 - took some ideas from his app Clover EFI dev team Eric Slivka - new serial number Virtual1 - new serial number cecekpawon - PHP 5.3.3 patch, , help with the ACPI Loader Mode flag and more Micky1979 - Clover flying editor  (Discontinued) crusher. - Help with the ACPI Loader Mode flag Download-Fritz - Help with the ACPI Loader Mode flag Pavo - Ozmosis fields and values stehor - Ozmosis fields and values Sherlocks - General help and support gujiangjiang - General help and support  
      Please let me know if i forgot you!
    • 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) ->  Link download
       Può essere solo aggiunto manualmente scaricando dal link sopra e collocandolo nella rispettiva cartella
       NOTA: in questo caso non selezionare nessun OsxAptioFixDRV durante l'installazione di clover oppure rimuovetelo                        successivamente. 
                               : 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
      Pacchetto-Fake+Sensors 6.26.1440.zip
      C_I_M.zip
       
       
       
       
       
       
       
       
       
       
       
       
       
    • By k.panic
      Hi to all!

      I've installed Yosemite on:
      - i5 4690
      - ASRock H87M Pro4 (with intel ethernet I219-V) (IntelMausiEthernet, AppleIntelE1000 and RehabMan for I219V kexts)
      - 8gb ddr3 RAM
      - 1tb hard disk
       
      If I disable I219-V from BIOS, when I shutdown it, don't reboots (tested with all kexts)
      If I enable I219-V from BIOS, when I shutdown it, the system reboots.
       
      How can I fix this? Thanks!
×