AFP548

Understanding InstallESD.dmg, Recovery HD, and Lion Internet Recovery

If you’ve done any deployment work with OS X Lion, InstallESD.dmg is probably not a new concept for you. But just in case you haven’t, or just in case you need a quick refresher, with the release of OS X Lion, Apple completely changed its distribution method for Mac OS X. OS X Lion is only available via an Internet download through the Mac App Store. And although downloaded as an application from the Mac App Store, Install Mac OS X Lion.app, contained within it is the disk image that makes the OS X Lion installer magic happen: InstallESD.dmg.

InstallESD.dmg does more than just handle the initial Lion installation. Initially contained within it is also the disk image that forms the basis of Recovery HD. Because InstallESD.dmg is available via the web, users are able to reinstall Lion through Recovery HD or Lion Internet Recovery in worst-case scenarios without needing physical restore media.

Let’s take a deeper look at InstallESD.dmg, Recovery HD, and Lion Internet Recovery to see what they are, what they mean for you as a Mac Admin, and how they’re all related.

InstallESD.dmg

After downloading Lion from the Mac App Store, Install Mac OS X Lion.app is placed in the /Applications directory. InstallESD.dmg is located within the application’s Contents/SharedSupport directories.

mikes-imac:Contents mike$ cd /Applications/Install\ Mac\ OS\ X\ Lion.app/Contents/SharedSupport/
mikes-imac:SharedSupport mike$ ls
InstallESD.dmg
       OSInstall.mpkg

InstallESD.dmg is the new-age Mac OS X retail DVD. As a Mac admin, you can use it to create an external bootable Lion install disk, build a NetInstall or NetRestore set, have it act as the Install DVD for an InstaDMG workflow, and more. A consumer installing Lion would have several pre-installation steps handled by the Install Mac OS X Lion application. After those completed, the installer would prepare InstallESD.dmg to be mounted as the boot volume. The computer would then restart and proceed with and finish the installation.

mikes-imac:SharedSupport mike$ hdiutil attach InstallESD.dmg
mikes-imac:SharedSupport mike$ cd /Volumes/Mac\ OS\ X\ Install\ ESD/
mikes-imac:Mac OS X Install ESD mike$ ls
BaseSystem.chunklist        MacOSX_Media_Background.png kernelcache
BaseSystem.dmg
           Packages            mach_kernel
Install Mac OS X Lion.app
    System              private
Library             boot.efi            usr

Looking inside of InstallESD.dmg, take note of two important files: Install Mac OS X Lion.app and BaseSystem.dmg. Yes, that is another Install Mac OS X Lion.app. That installer runs when booted from InstallESD.dmg. It is what actually installs Lion to the hard drive. BaseSystem.dmg is copied to the Recovery HD partition after it’s created during the Lion installation process. Let’s take a look at Recovery HD.

Recovery HD

As a Mac admin, you can rejoice in the fact that the days of keeping stacks of hardware-specific restore discs to reinstall Mac OS X are gone. Recovery HD is created during the Lion installation process as a very small hidden partition on the primary boot drive.

mikes-imac:~ mike$ diskutil list
/dev/disk0
   #:                         TYPE NAME            SIZE       IDENTIFIER
   0:        GUID_partition_scheme                *1.0 TB     disk0
   1:                          EFI                 209.7 MB   disk0s1
   2:                    Apple_HFS Macintosh HD    999.3 GB   disk0s2
   3:                   Apple_Boot Recovery HD     650.0 MB   disk0s3

As mentioned earlier, BaseSystem.dmg can be found on Recovery HD, as shown below. Newer Mac models that support diskless Apple Hardware Test may also have a disk image for it contained within a hidden .diagnostics folder inside of the com.apple.recovery.boot folder.

mikes-imac:~ mike$ diskutil mount /dev/disk0s3
Volume Recovery HD on /dev/disk0s3 mounted
mikes-imac:~ mike$ cd /Volumes/Recovery\ HD/com.apple.recovery.boot/
mikes-imac:com.apple.recovery.boot mike$ ls
BaseSystem.chunklist    PlatformSupport.plist   boot.efi        kernelcache
BaseSystem.dmg
       SystemVersion.plist
   com.apple.Boot.plist

When booted into Recovery HD, BaseSystem.dmg is mounted as the boot volume with the volume name “Mac OS X Base System”. This is shown in the com.apple.Boot.plist file (“rp” stands for root path).

mikes-imac:com.apple.recovery.boot mike$ /usr/libexec/plistbuddy ./com.apple.Boot.plist -c "print:Kernel\ Flags"
rp=file:///com.apple.recovery.boot/BaseSystem.dmg

The contents of BaseSystem.dmg are shown below.

mikes-imac:Mac OS X Install ESD mike$ hdiutil attach BaseSystem.dmg
mikes-imac:Mac OS X Install ESD mike$ cd /Volumes/Mac\ OS\ X\ Base\ System/
mikes-imac:Mac OS X Base System mike$ ls
Applications    Library     Volumes     dev
private     tmp     var
       Install Mac OS X Lion.app
System        bin     etc     sbin                usr

In case you’re wondering, yes that is yet another Install Mac OS X Lion.app. That one runs when choosing to reinstall Lion when booted into Recovery HD. If you’re super clever, you might wish to customize the “Mac OS X Utilities” screen that is displayed when booted into Recovery HD (like the folks at Google have done). I’ll leave that to the true tinkerers, but taking a peek at the following application should get you started:

/Volumes/Mac\ OS\ X\ Base\ System/System/Installation/CDIS/Mac\ OS\ X\ Utilities.app

Because of Recovery HD’s small size, there is not enough room to store a copy of InstallESD.dmg within it. But thanks to its Internet availability, that’s not a problem. After authenticating with Apple and the iTunes store, the installer downloads a fresh copy of InstallESD.dmg disguised as a package. After download, the installer prepares InstallESD.dmg to be mounted as the boot volume, restarts the computer, and then continues with and finishes the installation.

It’s important to note that DHCP must be available for either a Recovery HD reinstallation of Lion, or a Lion Internet Recovery boot to function. Using Wireshark, I observed the process of reinstalling Lion through Recovery HD. There are far too many steps involved to list them all, but below are the ones I found to be most important. Note that I’m sure it’s possible that the random package names shown below can change, but they did remain consistent throughout my tests. It’s also safe to assume that the mirror names will vary by location, as they are Akamai mirrors. None of the following is officially documented by Apple; the implementation and details are subject to change at any time.

  function isSupportedPlatform(){

        if( isVirtualMachine() ){
                return true;
        }

I encourage you to packet capture the process yourself, whether it be through using a VM at home and sniffing your LAN traffic, or by using port mirroring on a switch. It’s interesting to observe just how many steps are involved behind the scenes. But what is even more interesting, is how Apple has created what appears to be globally available NetBoot over the Internet with Lion Internet Recovery.

Lion Internet Recovery

If for any reason Recovery HD isn’t available or otherwise becomes corrupted, Apple created Lion Internet Recovery as a last resort for users. It’s an EFI firmware function available on most Macs shipped in 2010 or later. It enables users to boot over the Internet to Apple’s servers which will eventually present Recovery HD through a downloaded copy of a BaseSystem.dmg equivalent.

Here’s a riddle: What looks like NetBoot, smells like NetBoot, even tastes a bit like NetBoot, but isn’t actually NetBoot? Lion Internet Recovery. Or rather, it’s not traditional NetBoot with BSDP, TFTP, etc. Almost all Lion Internet Recovery traffic is HTTP traffic.

Just like with Recovery HD, there are many steps involved in booting to Lion Internet Recovery, but below are the most important. None of the following is officially documented by Apple; the implementation and details are subject to change at any time.

Once booted to Lion Internet Recovery, the steps the installer performs to reinstall Lion are identical to those mentioned earlier that occur during a standard Recovery HD initiated reinstallation.

Lion Internet Recovery is an impressive feat of engineering. Again, I would strongly encourage you to packet capture the process to see how it works for yourself. If you’d like to see the full packet capture output from my Lion Internet Recovery boot, it is available here.

Putting It All Together

InstallESD.dmg, contained within the Mac App Store downloadable installer, is at the heart of Recovery HD and Lion Internet Recovery. Recovery HD is there when your users need it, and Lion Internet Recovery is there as a last resort just in case Recovery HD is not. Both rely on BaseSystem.dmg (or RecoveryImage.dmg in the case of Lion Internet Recovery) to provide them with a minimal interface with a few utilities and the ability to reinstall Lion. When choosing to reinstall Lion, either from Recovery HD or Lion Internet Recovery, the installer downloads the latest copy of InstallESD.dmg from the Internet in order to proceed with and finish the reinstallation.

Hopefully after reading this article, the Lion installation and recovery processes have become clearer. Understanding the relationships between them and InstallESD.dmg is critical for deploying Lion and understanding the recovery options available to your users. Hopefully they won’t need to use Recovery HD nor Lion Internet Recovery nearly as many times as I needed to in order to write this article. Fortunately for me, my ISP doesn’t have a bandwidth cap.

Mike Boylan

Mike Boylan is a recent graduate of Robert Morris University in Pittsburgh, PA where he received his Master’s of Science in Competitive Intelligence Systems. Mike is a senior systems engineer for the University focusing on core University server infrastructure and telephony. He also still administers and manages all of the University’s Macs. He’s been doing Mac systems administration for over eight years, having worked previously for Fox Chapel Area School District in Pittsburgh, PA. Fox Chapel holds one of the largest Mac deployments in the Pittsburgh area. When not at work or in class, Mike enjoys spending time with friends and exploring new restaurants. He’s also active in and passionate about Pittsburgh politics. He proudly volunteered for the Bill Peduto for Mayor campaign in 2012/2013. He’s on Twitter at @mboylan.

More Posts - Website

Follow Me:

Exit mobile version