Skip to content

Instantly share code, notes, and snippets.

@geoff-nixon
Created December 7, 2015 10:51
Show Gist options
  • Save geoff-nixon/b96bc9c5bca538aa0819 to your computer and use it in GitHub Desktop.
Save geoff-nixon/b96bc9c5bca538aa0819 to your computer and use it in GitHub Desktop.
#!/bin/sh -x ## or just ` curl -Ls http://git.io/vRozn | sh `.
## Downloads the Mac OS X 10.10 Recovery Partition update,
## Copy's over the 10.10 version of Disk Utility.app, then
## use git to apply a binary patch so it will run on 10.11+.
cd /tmp
rm -rf DU1010
mkdir DU1010
cd DU1010
# See: https://github.com/wdas/reposado
curl -ORL http://swcdn.apple.com/content/downloads/21/09/031-20634/8d84o1ky5gn2agnf5kiz9eed134n7y3q4c/RecoveryHDUpdate.pkg
xar -xf RecoveryHDUpdate.pkg
hdiutil attach -nobrowse RecoveryHDMeta.dmg
hdiutil attach -nobrowse "/Volumes/Recovery HD Update/BaseSystem.dmg"
cp -Rp "/Volumes/OS X Base System/Applications/Utilities/Disk Utility.app" .
hdiutil detach "/Volumes/OS X Base System"
hdiutil detach "/Volumes/Recovery HD Update"
rm * 2>/dev/null
git apply --no-index <<-PATCH
diff --git a/Disk Utility.app/Contents/MacOS/Disk Utility b/Disk Utility.app/Contents/MacOS/Disk Utility
index 20f16f995699699ac5841a455c261a2e45e6a4e5..ce4994ac078a99803ba6b5f3467fae425b5bf643 100755
GIT binary patch
delta 44
scmZoTC);pNcEgiI#+K%%iS17l8G)Dyh?#+y1&CRJm~H#hM0ROb0OUIqApigX
delta 44
scmZoTC);pNcEgiI#@6PiiS17l8G)Dyh?#+y1&CRJm~H#hM0ROb0OVa1A^-pY
PATCH
mv "Disk Utility.app" "Disk Utility (10.10).app"
open .
@avujnic
Copy link

avujnic commented Feb 1, 2017

Is this possible in Sierra?

@mcohrs
Copy link

mcohrs commented Aug 22, 2017

Ca you please add support for sierra? macOS 12.4 =>

@mcohrs
Copy link

mcohrs commented Aug 22, 2017

Thank you :)

@kbansal
Copy link

kbansal commented Jun 2, 2018

I was able to get it to work on Sierra.

The issue was some missing symbols (_kDMMediaTypeCDROM and _DIHLGetBundleSize), which are only found in old frameworks. So just copy them over and use install_name_tool to load them instead.

  1. Run the script as above.

  2. Re-download the package and mount them:

curl -ORL http://swcdn.apple.com/content/downloads/21/09/031-20634/8d84o1ky5gn2agnf5kiz9eed134n7y3q4c/RecoveryHDUpdate.pkg

xar -xf RecoveryHDUpdate.pkg

hdiutil attach -nobrowse RecoveryHDMeta.dmg
hdiutil attach -nobrowse "/Volumes/Recovery HD Update/BaseSystem.dmg"
  1. Copy over DiskManagement.framework and DiskImages.framework from

/Volumes/OS X Base System/System/Library/PrivateFrameworks

to

/tmp/DU1010/Disk Utility (10.10).app/Contents/Frameworks

  1. Use install_name_tool to change where to look for those shared libraries (use otool -L in before/after to confirm that paths are really changing).
cd "/tmp/DU1010/Disk Utility (10.10).app/Contents/MacOS"
install_name_tool -change /System/Library/PrivateFrameworks/DiskManagement.framework/Versions/A/DiskManagement @executable_path/../Frameworks/DiskManagement.framework/Versions/A/DiskManagement Disk\ Utility
install_name_tool -change /System/Library/PrivateFrameworks/DiskImages.framework/Versions/A/DiskImages @executable_path/../Frameworks/DiskImages.framework/Versions/A/DiskImages Disk\ Utility

@DoctorDan1986
Copy link

Doesn't work. Under 10.13.6, it won't even start.

@Denial-Steinberg
Copy link

on 10.14.6
Dyld Error Message:
Symbol not found: OBJC_CLASS$_NSStatusBarWindow
Referenced from: /Volumes/VOLUME/Yosemite Disk Utility For El Capitan.app/Contents/MacOS/Disk Utility
Expected in: /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
in /Volumes/VOLUME/Yosemite Disk Utility For El Capitan.app/Contents/MacOS/Disk Utility

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment