Installing Old Versions of macOS
TIL: You can no longer download older versions of macOS for testing. The Mac App Store link works, but as soon as you GET, this appears[…]
All of Apple’s support documents make the assumption that you can download[…] That is no longer true.
Meanwhile, we have customers on 10.12 who are having issues with Twitterrific, and we can’t fix the problems without seeing them first.
If you have a Mac that shipped on anything before Catalina, you can boot holding CMD-Shift-R and it’ll download the recovery partition for the OS it shipped on. Then you can install that on another drive and use it for downloads.
However, this doesn’t help with getting intermediate releases. You should be downloading and saving copies of those as they become available. If you haven’t already done so, you may be able to use this workaround to download them manually.
Then there’s the question of how to install them. I recently set up an old Mac to use with my ScanSnap, whose software will no longer run on macOS 10.15. When installing from the recovery partition, I got an error that the software couldn’t be verified. And I kept getting errors like that when trying to install two separate versions of macOS from installers I had previously downloaded.
How could all three installers be damaged? The answer is that they weren’t:
Two unusual error messages that can occur during the attempted installation of OS X El Capitan or OS X Yosemite are the “This copy of the Install OS X El Capitan application can’t be verified. It may have been corrupted or tampered with during downloading” error, or a “This copy of the Install OS X Yosemite application can’t be verified. It may have been corrupted or tampered with during downloading” message, or a more vague “An error occurred while preparing the installation. Try running again” error message. Sometimes these can be resolved by simply rebooting and trying to reinstall OS X again (or re-downloading the OS X installer if it was damaged), but if the error messages are persistent, then you may find that modifying the system date of the Mac can be the resolution.
It seems that the installer is signed with a certificate that has expired. When booted from the installer, you can open Terminal and use the date
command to set the clock to the past, i.e. to when that version of macOS was current. After installing, be sure to set the clock to the correct date, or various other things won’t work properly.
The fact that Apple no longer supports old versions of OS X in the latest Xcode’s is a much harder problem to deal with. Good luck debugging a 10.12 specific problem with Xcode 10.2.
Paul speaks the truth. The “easiest” option is to build with current tools into a folder that’s shared with a VM running the older OS.
Along with a healthy portion of
NSLog()
orprint()
.
Previously:
Update (2019-08-29): Craig Hockenberry:
Weirdly, some older macOS releases still work. Starting to think this is a bug, rather than a policy.
I am going to try documenting Xcode patch change notes, maybe this will end up being useful to Developers.
Awesome.
See also: Apple Platform SDK API Differences.
Update (2019-08-30): See also: Howard Oakley.
Update (2020-10-15): I just reinstalled Mojave from an installer disk built with DropDMG. I had to turn off Wi-Fi to prevent the clock from correcting itself, then set the date backward using date -u 1015171718
so that the installer would ignore the expired certificate that caused it to report that the installer was damaged.
Update (2021-04-14): See also: How to get old versions of macOS.
Previously:
13 Comments RSS · Twitter
What a mess! I think offering pre-rolled VMs of each OS release would be a swell idea, but Apple is hardly developer focused enough to care. From the @Craig Hockenberry twitter conversation:
Imagine a world where Apple provided VMs for each OS version for developers.
Here's another salient point:
After fighting this constantly since 10.7 we created VMware Fusion images of all supported macOS environments for our app. A VM for each OS release along with Xcode for debugging. Absolute PITA
You cant tell a customer with 100s of machines to just upgrade the OS to fix an issue
Here is the thing, what an incredible duplication of effort if every single developer needs to do the same freaking thing! Apple needs to dedup this process. Provide testing VMs for your developers, now, for it is long overdue! Also, in the real world of production, you cannot just upgrade with every OS release, every year, because your vendor thinks computers are a consumer network appliance. A Macintosh PC should not be a Roku.
What on earth am I supposed to do if I have an older Mac that is stuck on El Capitan? Or if I wish to use a version that supports older software/doesn't have all the bugs and IOS-isms of the current release?
Glad I got organized last month and made a 64gb stick that installs almost version from 10.6 through High Sierra.
Another issue when trying to install old version of macOS is that the JavScript code of the installation/volume requirement of the macOS distribution packages is incompatible with a more recent release.
e.g. you can install macOS 10.n from macOS 10.n-1 , 10.n-2, but not 10.n+1 because the JavaScript code does not contain the n+1 version in the list of allowed OSes.
Provided you have previously downloaded a given macOS installer, and therefore have the purchase linked to your account, mas ( https://github.com/mas-cli/mas ) can download any OS X installer, provided you know its App Store ID ( e.g. https://www.rhymeswithdiploma.com/2019/01/22/mas-macos-versions.html ).
It should also be noted that older copies of macOS installers fail with "[installer] could not be verified" because Apple's WWDR Intermediate Certificate expired ( https://arstechnica.com/gadgets/2016/03/psa-updated-apple-certificate-means-old-os-x-installers-dont-work-anymore/ ); installers downloaded past some time in 2016 will have the new certificate, and should work fine. E.g. a saved 10.10.0 installer may fail, while a fresh copy of the 10.10.5 installer, downloaded via e.g. mas, will work fine.
Change the date of your Mac to one around the date the version you want to install was released and the installer will work.