Have a Lion Mac without a recovery partition?
Here's a method to create one, programatically. It won't be too hard to package this up, or script it.Some background:
We've been looking for a way to create a recovery partition on systems that don't have one, e.g. using a custom image.
Initially, I spent time tearing apart OSInstall.mpkg
from the 10.7.0 base install. I noticed the Distribution file for it had, along with the usual pkg-ref
entries, a system-image
entry. The source for this was BaseSystem.dmg
, and I suspect 10.7's installer can do something with this.
Before I had success with that, though, I downloaded and expanded the RecoveryHDUpdate package.
Inside of that, there was ./RecoveryHDUpdate.pkg/Scripts/replaceRecovery
, which called out ./RecoveryHDUpdate.pkg/Scripts/Tools/dmtest
and references BaseSystem.dmg
from inside the RecoveryHDMeta.dmg
This is all you need to add a recovery partition. I've only tested this on a few machines at this point.How to do it:
All commands are single lines.
$ hdiutil attach RecoveryHDUpdate.dmg
$ pkgutil --expand /Volumes/Mac\ OS\ X\ Lion\ Recovery\ HD\ Update/RecoveryHDUpdate.pkg /tmp/RecoveryHDUpdate
$ hdiutil attach /tmp/RecoveryHDUpdate/RecoveryHDUpdate.pkg/RecoveryHDMeta.dmg
$ /tmp/RecoveryHDUpdate/RecoveryHDUpdate.pkg/Scripts/Tools/dmtest ensureRecoveryPartition / /Volumes/Recovery\ HD\ Update/BaseSystem.dmg 0 0 /Volumes/Recovery\ HD\ Update/BaseSystem.chunklist[... magic happens ...]
$ hdiutil eject /Volumes/Recovery\ HD\ Update
$ hdiutil eject /Volumes/Mac\ OS\ X\ Lion\ Recovery\ HD Update
$ sudo touch /Library/Preferences/SystemConfiguration/com.apple.Boot.plist
$ sudo kextcache -f -u /
No warranty expressed or implied.