HOW TO INSTALL EL CAPITAN ON AN UNSUPPORTED MACBOOK 2,1
Update (27th November 2016): This method has been updated on
post #1 of this thread. But in this post you can find some explanations that aren't on
post #1.
Note: This should work well with other EFI32 non-Mac-Pros Macs as iMac or whatever, but I haven't tested it because I don't have these computers.
CREDITS
- Thanks to atvusr, who confirmed me that it should be technically possible to install El Capitan cloning the hard disk from a machine running El Capitan, and gave me very valuable advices: After many hours of work, I can say that it’s true: you can have El Capitan into your old EFI32 non-Mac-Pro machine in this way.
- OS X Hackers work has been very helpful: their distros, their kexts… all the kexts used come from TRMJIJ and OS X Hackers.
- Pike’s work has been of an invaluable value: Pike's yosemite boot.efi works with El Capitan with my computer; Pike's Capitan boot.efi doesn't.
- Hackintosh Clover and kexts used by Hackintosh Community have a part into this story.
- The
@parrotgeek1's script to boot Sierra on unsupported Macs (he uses a method that is very similar to the one I'm using here). This script gave me two important keys I added to the steps 9 and 10 (how to rebuild kernel and some boot flags).
A SMALL INTRO
With these old machines, the trouble is related to USB El Capitan kexts for these machines. To install El Capitan from an USB stick, you need to have USB supported, and, as you need some USB kexts than cannot be installed into the USB stick with which you are going to install El Capitan into your machine, you cannot do that.
So,
the idea is cloning the hard disk with El Capitan from a machine running it. After that, you add some kexts to System/Library/Extensions, change the boot.efi to a Pike’s Yosemite EFI32 boot.efi (included in MacPostFactor), repair some permissions, caches… and it works.
After several attempts from my Hackintosh and from my MacBook Pro, both of them running El Capitan, I can say this process works... from both of them!
HOW I DID IT AND YOU CAN DO IT: THE TUTORIAL
1- First of all, you need an external 2,5” HDD or SSD. It has to be GUID HFS+ formatted. If you format it from El Capitan, it formats the hard disk in this way by default. I will suppose its name is "Capitann". This will create a HFS+ partition and an EFI partition automatically.
2- Clone the partition where you have El Capitan. It can be a real Mac, or even a Hackintosh. You can use Carbon Copy Clone (CCC) or SuperDuper! I have used both of them and they worked well. I cloned the disk having SIP disabled. To do that, boot from your El Capitan Mac from Recovery Partition, go to utilities, open a terminal, and write
csrutil disable and reboot.
You need to do all the steps from a El Capitan with SIP disabled.
3- The EFI partition should be a real Mac one. Two possibilities: it’s blank or it has only one file: /EFI/APPLE/EXTENSIONS/Firmware.scap. We may come from three scenarios.
a) If you have cloned from a real Mac, EFI could have some firmware from your source machine, which is different than your machine. CCC and SuperDuper clone the EFI partition automatically, so you have it.
b) If you have cloned from a Hackintosh with Legacy Clover, you should have the EFI partition empty.
c) If you have cloned from a Hackintosh with UEFI Clover, you have Clover into the EFI Partition. We want to delete it.
We want to be sure the EFI partition is empty.
4- You need to mount the EFI partition to be sure it's blank. You can use an app called “Clover configurator”, for example (
http://mackie100projects.altervista.org/download-clover-configurator/). Go to “TOOLS/Mount EFI”. Click “Check partition”. Locate your external hard drive (disk0, disk1, disk2…). Click “Mount EFI partition” and select our cloned hard drive by its name (its name will be disk0s1 or disk1s1 or similar). Click “Open Partition”. Finder will open the EFI Partition of your hard drive.
If there’s something there, delete it and leave it blank. Unmount the partition.
5- Now we need to change the boot.efi so we will use the one I've attached. First, we need to change flags. From terminal (I'm supposing your Capitan partition is called "Capitann"):
cd /Volumes/Capitann/System/Library/CoreServices/
sudo chflags nouchg boot.efi
cd /Volumes/Capitann/usr/standalone/i386/
sudo chflags nouchg boot.efi
6- From Finder, use the "Go" menu and select "Go to folder..."
Open
/Volumes/Capitann/System/Library/CoreServices/ and copy there the new boot.efi from where you have it (probably your Downloads folder).
Open
/Volumes/Capitann/usr/standalone/i386/ and do the same.
We will assign the correct owner to them. From terminal:
cd /Volumes/Capitann/System/Library/CoreServices/
sudo chown root:wheel boot.efi
cd /Volumes/Capitann/usr/standalone/i386/
sudo chown root:wheel boot.efi
7- We need kexts. We are using tones of kext from TRMJIJ - OS X Hackers (for example,
Beta-USB-Kexts). To make the things easy, you have them all zipped in this link:
https://www.dropbox.com/s/oqtz4ozluwb6xx5/all-kexts.zip?dl=1. Download, unzip and copy them into
/Volumes/Capitann/System/Library/Extensions/.
There are two more kexts, attached (more-kexts.zip), that come from Hackintoshes. You only need them if you are cloning from your hackintosh. Without them, El Capitan won't boot.
Note: If you have cloned from a hackintosh, check your kexts into /Volumes/Capitann/System/Library/Extensions/ and /Volumes/Capitann/Library/Extensions/. Maybe you have things you don't need. Some of them can give you problems, for example, AppleACPIPS2Nub.kext or ApplePS2Controller.kext. I can say the same if you have some HDAEnablerx.kext or whatever that is "very hackintosh".
If you have in these folders kexts like FakeSMC.kext and/or NullCPUPowerManagement.kext, remove them and change them by the ones I'm providing into the attached file, more-kexts.zip. These two kexts have to be into /Volumes/Capitann/System/Library/Extensions/. If they are in /Volumes/Capitann/Library/Extensions/, delete them: they have to be only in one place and its place is /Volumes/Capitann/System/Library/Extensions/.
8a- Before doing 8b, you need to be sure you have an important folder, which is not usually cloned.
Open in Finder /Volumes/Capitann/System/Library/Caches/ Do you have com.apple.kext.caches/ folder?
If not, open in another window of the finder /System/Library/Caches/, and drag and drop com.apple.kext.caches/ from /System/Library/Caches/ to /Volumes/Capitann/System/Library/Caches/.
After that, open a terminal and:
cd /Volumes/Capitann/System/Library/Caches/
sudo chown -R root:wheel *.*
Note: If you don't have com.apple.kext.caches/, in step 8b you can get a message like:
or Can't create /Volumes/Capitann/System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext.JzU7 - No such file or directory. Or, in step 10, you can get a message like:
Can't create /Volumes/Capitann/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache.l9a9 - No such file or directory and El Capitan won't boot.
8b- Now we need to rebuild permissions in the cloned disk. From terminal:
sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /Volumes/Capitann/
9- Now we will set boot flags and use them every time we boot. From terminal:
cd /Volumes/Capitann//Library/Preferences/SystemConfiguration/
sudo nano com.apple.Boot.plist
You will see:
<key>Kernel Flags</key>
<string></string>
You want to have:
<key>Kernel Flags</key>
<string>-no_compat_check kext-dev-mode=1 mbasd=1</string>
Or, if you want verbose mode, too, add
-v flag:
<key>Kernel Flags</key>
<string>-no_compat_check kext-dev-mode=1 mbasd=1 -v</string>
Note: we need these flags, they are mandatory to have all the kexts loaded.
To go out from nano editor, Ctrl+X and say "y".
10- Now we want to have permissions in good condition, and rebuilding kext cache. From terminal:
cd /Volumes/Capitann/System/Library/Extensions/
sudo chown -R root:wheel *.*
sudo chmod -R 755 *.*
sudo kextcache -v 1 -a x86_64 -m /Volumes/Capitann/System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /Volumes/Capitann/System/Library/Extensions
The terminal shoud give you messages like these:
/Volumes/Capitann locked; waiting for lock.
Lock acquired; proceeding.
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOUSBHostFamily.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext IOUSBHIDDriverSafeBoot.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOUSBHIDDriverPM.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOUSBFamily.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext AppleWWANSupport.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext IOHIDUserClient.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext IOHIDSystem.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext IOHIDEventDriverSafeBoot.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext IOHIDEventDriver.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext IOBluetoothUSBDFU.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleUSBTopCase.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleTopCase.kext
kext-dev-mode allowing invalid signature -67054 0xFFFFFFFFFFFEFA12 for kext AppleStorageDrivers.kext
kext-dev-mode allowing invalid signature -67050 0xFFFFFFFFFFFEFA16 for kext AppleIntelIntegratedFramebuffer.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleIntelGMA950.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext IOHDAFamily.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext DspFuncLib.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleMikeyDriver.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleHDAHardwareConfigDriver.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleHDAController.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleHDA.kext
AppleDataSetManagement.kext - dependency for com.apple.iokit.IOAHCIBlockStorage lacks valid OSBundleCompatibleVersion.
AppleDataSetManagement.kext is missing dependencies (including anyway; dependencies may be available from elsewhere)
Created mkext archive /Volumes/Capitann/System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext.
Note 1: AppleDataSetManagement.kext messages will be shown if you have an SSD and TRIM enabled.
Note 2: If you get messages saying permissions are not correct, or omitting... repeat steps 7, 8 and 10, until you get these messages saying "kext-dev-mode allowing invalid signature..". Be sure you are doing all the steps (especially the terminal commands) correct, and in the correct order.
Note 3: If you get a message saying "Can't create...", do the step 8a again, it hasn't been done.
11- Now we are going to build the prelinked kernel and kernelcache:
sudo kextcache -prelinked-kernel /Volumes/Capitann/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache -K /Volumes/Capitann/System/Library/Kernels/kernel /Volumes/Capitann/System/Library/Extensions /Volumes/Capitann/Library/Extensions
The output of the terminal should be similar to the prior one, because we are rebuilding kernel, but rebuilding caches, too.
Note: if you are on a hackintosh, you can get messages like:
SoftRAID.kext has incorrect permissions; omitting.
PromiseSTEX.kext has incorrect permissions; omitting.
hp_io_enabler_compound.kext has incorrect permissions; omitting.
HighPointRR.kext has incorrect permissions; omitting.
HighPointIOP.kext has incorrect permissions; omitting.
HandsOff.kext has incorrect permissions; omitting.
CalDigitHDProDrv.kext has incorrect permissions; omitting.
ATTOExpressSASRAID2.kext has incorrect permissions; omitting.
ATTOExpressSASHBA2.kext has incorrect permissions; omitting.
ATTOCelerityFC8.kext has incorrect permissions; omitting.
ArcMSR.kext has incorrect permissions; omitting.
ACS6x.kext has incorrect permissions; omitting.
Some of these kexts are from hackintosh and will not be needed. Other ones, like HandsOff.kext, can be from some app you have installed. Be sure you are not omitting something important, as the kexts the prior command has loaded (AppleHDA.kext or similar), and don't care for the rest.
12- Now we can change flags to boot.efi, and protect it again. From terminal:
cd /Volumes/Capitann/System/Library/CoreServices/
sudo chflags uchg boot.efi
cd /Volumes/Capitann/usr/standalone/i386/
sudo chflags uchg boot.efi
13- Unmount the USB external drive, and connect it to your unsupported EFI32 Mac.
14- Boot you unsupported Mac as the external drive wasn't there. When I boot, I have OS X Hackers Yosemite. Once booted, go to System Preferences/Startup Disk. Select "El Capitann" and click "Restart...". You will be asked. Confirm you want to restart and... wait and be patient
15- If El Capitan boots, you have to decide what to do. Maybe you want to clone the external HDD to your internal hard disk/SSD using CCC or SuperDuper!, or having El Capitan where it is. It's your decision.
IMPORTANT: After cloning from your external drive to the internal one, if you use Carbon Copy Cloner or SuperDuper!, you need to do step 8a. If you not, El Capitan won't boot. If you have used "Stellar Drive Clone" you don't need step 8a. This is because CCC and SuperDuper doesn't clone the folder
/System/Library/Caches/com.apple.kext.caches/ and we need this folder to boot El Capitan. What happens if you don't have it? El Capitan will try to create the folder and, as it has SIP enabled, it won't load all the kexts we need, and, hence, El Capitan won't boot because the internal HDD/SSD will not be recognized.
ISSUES THAT COULD BE IMPROVED
SIP: When you boot El Capitan and go to terminal, if you write
csrutil status, it says "enabled".
GMA950 KEXTS: They could be more El Capitan-adapted; TRMJIJ has said that, if he and another developer have time, they will do that. Thank you!
So, everything is working, all the needed kexts loaded, but, remember, you don't have QE/CI on GMA950 from Mavericks to El Capitan, and you will have the same issues you'd have using MacPostFactor to install Yosemite on this machine (machine can not wake up from sleep due to the lack of QE/CI, you may want to install nosleep extension, VLC not working, and so on). Remember, last officially supported OS X version with QE/CI is Lion; and Mountain Lion, this last one thanks to OS X Hackers. For this reason, I highly recommend an SSD and 4 GB of RAM.
For watching HD videos, you can use MPEG Streamclip or the HD player included in Vuze (VLC doesn't work). You can, too, disable animations (look at the post #1 of this thread, or look at the Yosemite on Unsupported Macs thread:
https://forums.macrumors.com/threads/os-x-yosemite-on-unsupported-macs-guide.1761432/ ).
I've tried to describe all the issues you could have during the process, so I think you shoud not have any problems following this tutorial.
That's all! Thank you very much.