Booting El Capitan with RevoBoot

I received e-mails, and posts that I blocked, from people asking for help with the installation of El Capitan. Ok. So they can’t get it to run with either Chameleon, Chimera or RevoBoot. Something had changed, and we needed to figure out what it was.

The good news is that a couple new guests arrived, former co-workers loving to hack so I am there also, and they just couldn’t sleep after their flight. Well. I have more good news for you because now, two hours later… and a lot of beer for my friends; We are pleased to announce that we got the OS X installer downloaded from the Apple Store, fired it up with a modified copy of RevoBoot and the new El Capitan kernel (15.0.0) and extensions are loaded and executed.

One thing that we had to fix is that the Installer app failed to install El Capitan on the new SSD, but that was only due to a previously (broken) installation on the drive. We solved this the next day by installing Yosemite before El Capitan. Everything works now. I was just too tired to push the update to my RevoBoot Github repository the first day, but that is now also completed.

A few notes. I did not use a USB memory stick to install El Capitan on the SSD, but launched the Install OS X 10.11 Developer Beta.app from the /Application folder. This copied files to the new ElCapitanSSD and then reboots afterwards. Not that I let it boot from ElCapitanSSD, because we first had to add extensions to /System/Library/Extensions/ and the kernel to /System/Library/Kernels. Files that we extracted from the packages with help of Pacifist. The next step was to add a couple of boot arguments to .IABootFiles/com.apple.Boot.plist Here is what we added:

-f -v cs_debug=1 amfi_get_out_of_my_way=1 -zinfop zalloc_debug rootless=0

A bit overkill, but it worked with the modified version of RevoBoot. By the way. We only changed this setting in: RevoBoot/i386/config/SETTINGS/Macmini71.h (the used configuration for my hack)

#define INSTALL_ESD_SUPPORT 1

This setting is set to 0 by default, but since we want to load the installer from ElCapitanSSD… By the way. This file was created for us after running: make MODEL=Macmini71 The next step was to copy boot0, boot1h and boot to ElCapitanSSD followed by a reboot. Please note that without the proper modifications to the boot loader, you end up seeing a zone_init panic before it reboots.

Anyway. The installer ran and installed El Capitan on ElCapitanSSD, but it failed to remove files like /.IABootFiles so we had to do that ourselfs. The next boot took a little longer, time used to recreate the prelinkedkernel and (old) kernel cache, and the Apple logo seems a little wider, but at least the desktop showed up. All without a single error/problem. Ok. Audio failed, but hey that is easily fixed.

Update: The slightly wider Apple logo was caused by an error on my side. This simple change in RevoBoot/i386/config/SETTINGS/Macmini71,h solved it:

_#define STATIC_SCREEN_WIDTH 1600
+#define STATIC_SCREEN_WIDTH 1680

Note: You may notice these lines in /var/log/system.log

Jun 20 11:21:14 localhost kernel[0]: mem_actual: 0x40000000
Jun 20 11:21:14 localhost kernel[0]: legacy sane_size: 0x400000000

Edit: I changed the value (0x40000000) right after the installation of El Capitan to 0xc0000000 and then 0x3f9cba000 but the legacy sane_size is still 0x400000000. In other words; legacy installers appear to be limited to 1 GB and the installer failed with values greater than 0x40000000. . Nope. I was wrong. I now changed the RevoBoot source code to let it use the detected amount of physical memory (see in function SetupSMBIOS) and that works just fine. Much better now.

Also. After the installation I removed all Kernel Flags, including rootless=0 and kext-dev-mode=1 and everything is A OK.

Edit: I added some text, and added new text, to clarify how I did it. This should help other people to get El Capitan booting with Chameleon/Chimera/RevoBoot 😉

p.s. Sorry. I forgot to mention that I also added a couple of files in /Extra on the ElCapitanSSD:

/Extra/ACPI/dsdt.aml (or a tiny SSDT.aml)
/Extra/ACPI/ssdt_pr.aml
/Extra/EFI/Macmini71.bin

The latter can be extracted from a working Yosemite setup, by using a little one liner script. See the RevoBoot WiKi for additional information. You can also compile and run smbios2struct3.c

Advertisements