Old MacPro’s and Yosemite

My first blog post about Yosemite support for old MacPro’s was of course just that. A first step in the right direction, and mikeboss shoot a youtube video to show you how his good old MacPro is booting up OS X 10.10 Yosemite.

Black Mode

Note that it boots up in verbose mode, and without kernel cache, so it is still a bit slow. After the verbose data scrolls over his screen, the screen turns black and the new white Apple logo appears. Just like on the iPhone, iPad, MacBook Air and MacBook Pro. Beautiful isn’t it.

Cast Errors

Mikeboss did use a couple of un-patched files, due to cast errors in my files, but the 6:50 commit should have taken care of the errors. The problem is that the remote machine I use to compile the code is switched off, and thus I cannot compile it myself. Not right now, but I’ll do that the minute the box shows up again.

The changed LZVN code is working fine, with a test program that I use to unpack kernel cache files. I used the kernel cache of DP8, which is 16.4 MB in compressed LZVN format and 42.2 MB in uncompressed format. It took only 168 ms to convert it. From start to finish.

iMessage

I had a quick look at BlpSetupRomVariable() in Main.cpp and that makes me think that iMessage isn’t working. The stuff I see in there isn’t right. I wonder if it works with Mavericks. Please confirm this before I waste any time on it. Thanks

Update

MS dev box is back on-line. New source code compiles fine. Win-32 bit target should be fine now. Please verify the LZVN changes. Thanks!

Yikes! A find & replace went wrong somehow so let me fix that right now! Done.

Update 2

The fact that I don’t have an old MacPro myself makes things more difficult for me. That is painfully clear by now, but my determination to finish things, I mean the stuff that I start to work on, and your patience (thanks) and feedback (thanks again) will eventually pay off. Big time. Yosemite here we come. Hang in there guys and gals. We will make it work! Hmm. Food now.

Update 3

I added some call to CsPrintf(“TIANO: “) in the hope that they output information about where and when it fails, during the discovery of and load of the kernel cache file.

49 thoughts on “Old MacPro’s and Yosemite

  1. I’ve compiled the 6:50 commit. Still no luck in Win32 (x64 is ok). I need a 32bit version for my EFI32. Error is MiscUtils.cpp, line 862, converting-error UINT64 -> UINTN.

  2. good morning pike

    I’m getting an error during build: eror C2220 and warning C4244 conversion from UINT64 to UINTN possible loss of data. MuscUtils.cpp Line 862.

  3. Same here (11:25 version). Still no luck with 32bit. Tiamo’s source compiles still fine in the same environment and and the same settings.

  4. yep, this time I was able to successfully build the boot.efi. tested it right away and my MacPro2,1 bootet just fine. but it didn’t feel any faster. also I saw some errors during boot about caches. unfortunately I can’t test anymore. I have to catch a flight now…

      • I do not expect everything to work from day one – it was only meant as a hint that the issue is seemingly not my machine 🙂

        I’ve tried Chameleon/Clover in the last two month – none of them have worked on my MBP2,2. It seems there’s a difference to a MacPro ….

  5. Btw: how about to name the headline of the ‘src’ directory on GitHub with Date&Time or a version number (instead of e.g. ‘part 3’)? I guess there are still many versions necessary until it really works ….

  6. Good news: a post in the Macrumors forum gave me the idea to clone the Yosemite from my newly bought Mac mini with Carbon Copy Cloner onto a external Disk. I’ve only exchanged the original Boot.efi then with the Part3-version. My MBP2,2 boots now also Yosemite. It runs of course without graphics acceleration and without transparency (looks a little bit boring, particularly the Dark mode) – but at least it runs. It’s very questionable if appropriate Kexts for the older GPUs will ever see the daylight (already overdue for Mavericks since one year) ….

      • The folks with a MacPro can change the graphics card. There are appropriate graphics cards and Kexts available. Folks with a soldered GPU in a MacBook/Pro/Air etc. have a problem without the appropriate 64bit Kexts ….

  7. I’ve compiled now Part6 successfully. It boots fine with the cloned Yosemite, but it still doesn’t boot the Installer (hangs at Kernel cache).

    Could you make a “Beta” which is considered as stable? I would post it on the Macrumors forum, so that other can test it, especially with the Installer?

    • I first want to know if the LZVN routine is working and therefor I added a number of calls to CsPrintf() that should output strings starting with “TIANO: “. No idea if it works, but I had to give it a shot (MS dev box is down, again, and thus I cannot compile from here).

      • Part6 compiles fine. Yes, it does output three instances of TIANO: LZVN something, TIANO: kernel cache located, TIANO: back from LoadKrnl (). Boots faster.
        One weird thing: sound does not work for me. With fist revision that mikeboss posted on a MR forum it wasn’t working as well. It could be my Yose install issue: I took this HDD out of my 5,1 and just replaced boot.efi.

        Other testers: please report back about your sound. In mine it looks like this: I can incresae/decrease the volume but no sound in speakers. After reebot in Mavericks I need to unplug/replug my speakers to get the sound back.

  8. I entered some comments in the previous thread where I explained some of the difficulties involved in the NASM path, that somehow VS unable to find. That’s solved now, and the patched source compiles just fine. Unfortunately, I can’t test the Yosemite boot.efi myself, as I shouldn’t reboot my Mac Pro in at least one more week, and, in any case, not without some several hours’ advance notice to people that rely on this computer running. In any case, Pike, feel free to contact me should you need to change some part of your code and see if it compiles. That I should be able to do in a matter of minutes.

    I wouldn’t worry too much about iMessage. It appears a lot of Mac Pros have been kicked out of iMessage/Messages and FaceTime by Apple servers, and that includes machines running both Chameleon/Clover and Tiamo’s boot.efi. The issue is solved by calling Apple Support.

    What is left for the project to be finalised? Some people say there is no sound. Sadly, I can’t test this myself. There’s also the issue of whether the modified boot.efi can be copied to a Yosemite installer.

    • i called them, they said they unblocked it but it still giving me same registration redirection with request code

  9. I’ve tried now the CsPrintf-version. Compiling was ok.

    Booting the cloned Yosemite: 3 messages – ‘TIANO: Kernel cache located. TIANO: Calling BlDecompressedLZVN(). TIANO: Returning from LdrLoadKernelCache().’ After that the MBP2,2 boots fine in Verbose mode.

    Booting the patched Yosemite-Installer: 2 messages – ‘TIANO: Kernel cache located. TIANO: Returning from LdrLoadKernelCache().’ After that the MBP2,2 hangs with same picture as in http://forums.macrumors.com/showpost.php?p=19990537&postcount=572 .

  10. Can confirm that sound is working (only tested internal speaker 🙂 on Mac Pro 2,1 with Yosemite pb 4 running on “mikes compiled” boot.efi from 3october from macrumors forum.

    Because the yosemite disk came from another vanilla installed machine with only a dummyhda.kext, I removed the dumnyhda.kext, did a “sudo touch /S*/L*/Extensions” and “sudo kextcache -U /Volumes/youryosemitediskname” rebooted in normal mode (not the -x safe mode) and than audio was working!

    Even the Yosemite installer booted up 🙂 (still have to patch the OSInstall.mpkg machine check) but it gave the error that Yosemite was already installed…, but you do have to make the installer the manual way, With Extensions and Kernels folder directly available on the usb volume instead of inside the BaseSystem.dmg!

    • I might need to add that for the bootable and starting Yosemite USB installer I probably put ‘-x’ in /Library/Preferences/SystemConfiguration/com.apple.Boot.plist to skip the caches of probably both kernel and kexts. And I have a kernel file in /S*/L*/Kernels

      • The md5 of the older boot.efi that was used which has audio (internal speaker) successful working (probably a lot more) was boot.efi:md5:33ed83cc0f53507df5830ed78d6d3245

        Is it possible to compile a boot.efi file that can not only be stored in EFI partition /EFI/BOOT/BOOTIA32.efi but will also boot incase when the /System/Library/CoreServices/boot.efi file was inaccidently overwritten by a system upgrade?

        Right know as a fallback/recovery option refind/refit/grub2 installed on the EFI partition can be used to chain load the non overwritten backup “boot.efi” file called “toot.efi” in /System/Library/CoreServices/toot.efi. It will be easier to place a special bootia32.efi file that can directly boot the yosemite volume instead of installing refind/refit/grub2 loader?

  11. Good news: Error found – I was able to boot now the patched Yosemite Installer.

    Thanks a lot to vmacpro for the hint.

    I’ve placed the Kernel from a already installed Yosemite in /System/Library/Kernels/. The missing Kernel has caused the error described in http://forums.macrumors.com/showpost.php?p=19990537&postcount=572 . I thought the extra Kernel was only necessary for Chameleon/Clover.

    Question is how to extract the Kernel from the Installer, downloaded from the App Store?

    • I’m surprised that it didn’t boot straight from the kernelcache. In that case you won’t need the kernel. But then again, maybe there is no: /System/Library/Caches/*kext*/Startup/kernelcache file? Or are you booting in safe mode?

      You can use Pacifist to extract the kernel from one of the packages.

    • “I thought the extra Kernel was only necessary for Chameleon/Clover.”

      A separate kernel file is only needed if you can’t boot directly its caches or want to force kexts to be loaded seperate, since Clover boots the native yosemite boot.efi which support the native new compression of caches it worked directly as in a native mac. Chameleon is really a different thing, since Clover is real efi firmware in software, Clover can also boot native efi within the efi mac environment or patch a efi mac (spoof Board-id/modelname/etc).

      “Question is how to extract the Kernel from the Installer, downloaded from the App Store?”

      This didn’t seem necessary with Clover, but I was also impossible to get it done since the pkg containing the kernel BaseSystemBinaries.pkg uses a unknown compression method compared to mavericks. In this link it explaind howto unpack it. With pkgutil –expand the payload was not able to be extracted…

      http://blog.coolaj86.com/articles/how-to-unpackage-and-repackage-pkg-osx.html

  12. I have still the original /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache .

    I’m booting the MBP2,2 as well as the patched Installer totally normal, at the moment even with the Boot.efi compiled by mikeboss.

    I know that it’s possible to extract package-files with Pacifist – the question is rather _where_ is the Kernel in the many files (apparently not in BaseSystem). I’m too lazy now to extract all the Installer files to find it out ….

  13. PikerAlpha, whole Mac Pro 1,1/2,1 world should praise you now, along with mysterious Tiamo, who started this all. Me first 🙂
    Seems that all needed functions of boot.efi are working as they should.
    What’s on TODO list currently?
    We have confirmed that your LZVN code does work, boot.efi at current stage seems fully functional. Black mode vs grey mode is rather cosmetics.
    Is there something more to test?
    I will gladly do it, I would never think that I’ll compile anything in VS until today morning 🙂
    Thank you for all great work you did, delivering latest OS to machines which were abandoned by Apple is more than “amazing” 😉

    • Thanks. My main focus was to get you guys going with Yosemite, and sure. The white Apple logo is a cosmetic only thing, for most people, and that is why it was the last item on my TODO list. But now that the most important stuff is done, we might as well give it a shot.

  14. Hi, Pike. The repository README still says that the project’s current state is unfinished, and the TODO.txt mentions four minor missing elements (although I think the LZVN routine has already been proven to work) for the project to be concluded, to which making to loader silent (i.e., non-verbose) might be added. Unless this has already been done, are you planning to make efi:/chosen/random-seed really random, read Apple logo from: /usr/standalone/i386/EfiLoginUI/appleLogo.efires, and Update PictData with new images? Some people say the true Golden Master of Yosemite is due to appear in about 7 or 8 days. Will it be possible for you to add the final elements to this wonderful project by then? Many thanks.

    • Hi Peter,

      Sorry. I was rather busy with work, but I will update the TODO list later today. I also added a new compiler directive to silence the messages (off by default). And sure. The TODO list is pretty much solid. Everything should be finished before Yosemite is officially released.

      • That’s fantastic, man. The whole community is heavily indebted to you! I think we all want to invite you to several beers! It’s the least we could do!

  15. Thanks for the hard work! I will send you some flowers when the white Apple logo will show up while booting 😉 Indeed it’s just cosmetic but with a Apple logo it feels a bit more native.

  16. Hey pikeralpha; Thanks for all your work on this; I’ve tried the usual Chameleon and SFOTT to no avail on my MacPro 1.1 2007. I see your method seemed simple enough until Pacifist gave me “The operation couldn’t be completed. (lzma_code error 9.) when trying to extract kernel from Essentials.pkg to system/library/kernels. Please help?!! Thanks buddy BDLV

      • Thank you pikeralpha! I’m a step further and managed this but on booting, we get to the Yosemite install, click all the relevant buttons and then looks promising by starting to install. But; during mid install I get an error extracting the files from Essentials.pkg. I’m I doing something wrong here? I appreciate any help you can give. Thanks. BDLV

      • I guess that you are using the installation method described on forums.macrumors.com, which requires a different kind of installation than the late 2013 MacPro that I have here, so you can better ask them for help. I don’t have a 2006/2007 model to work with and I have no idea what is going on.

      • Right now I have the same lzma _code error, but I’m less experienced than bobby de la vega, and don’t understand your suggestion of extracting the kernel to your own user directory. I tried extracting to desktop, thinking I could then transfer the kernel to the thumb drive from there, but I still got the lzma_code error 9 message. So could you explain to me in more basic steps how to work around this error problem – I’d hate to be defeated at this stage!

Leave a comment