Return to site

Contents Sharedsupport Installesd.dmg Missing

broken image


If, like a friend of mine, you find yourself needing to install a fresh copy ofmacOS Sierra on an older Mac, and you want to create a bootable USB flash driveto hold the installer using createinstallmedia, a quick bit of Googling startsto turn up numerous threads like this.

How to fix the problem where the SharedSupport folder is not present in the Contents of the DMG. Believe it or not, your DMG is already that 'InstallESD.dmg'. Create bootable ISO from HighSierra Installer. GitHub Gist: instantly share code, notes, and snippets. The MacOS High Sierra InstallESD.DMG is found under: Contents/SharedSupport/ Now copy this InstallESD.DMG as you need it in TransMac to Create macOS High Sierra Bootable USB Installer on Windows 10. Ok, so lets continue with TransMac Restore Disk Image to Drive.

Mount the InstallESD.DMG. To get the InstallESD.DMG, right mouse on 'OS X Yosemite' select 'Show Package Contents'. Go to Contents/SharedSupport, InstallESD.dmg should be there. Make a double click on InstallESD.dmg to make a volume of Yosemite installation on the left side: 3. Convert Yosemite.DMG to ISO format using Disk Utility. Make sure it is in your downloads folder. If you still happen to have the el capitan DP1 installer app somewhere, right click on it and click Show Package Contents. Go to Contents/SharedSupport/. Copy the InstallESD.dmg file into your Downloads folder.

tl;dr: In late 2019, Apple published an updated macOS Sierra installer whichbroke the ability to create bootable installation media, failing with an errorlike /Volumes/XYZ is not a valid volume mount point.

Attempting to use Sierra's createinstallmedia on my macOS Catalina machineyielded a slightly different set of problems, but with a bit ofreverse-engineering, I was able to figure out how to make it work.

If you don't care for the nitty gritty technical analysis, you can skip right tothe instructions below.

technical deep-dive

The oft-suggested workaround, assuming you have an older Mac upon which theSierra installer can be installed, involves finding and downloading an oldercopy of Install macOS Sierra.app from a who-knows-how-trustworthy source,running createinstallmedia from within the newer installer app bundle, andthen renaming the older installer app bundle out from under createinstallmediabefore confirming that you'd like to erase the target disk.

Gross.

With those instructions, if you don't have an older Mac upon which you caninstall the Sierra installer (or if it's not in working order), you're kind ofout of luck.

I neither had an older Mac, nor was I content with downloading apossibly-sketchy older version of the installer from some random place on theinternet, so I set my sights on figuring out how to prepare the installationmedium from my Catalina machine.

problem #1: missing InstallESD.dmg

After downloading InstallOS.dmg via the Download macOS Sierra link in step 4of this Apple support document, I mounted the disk image, andattempted to run the installation package, only to be met with this dialog:

Oops. My machine (a 2019 Mac mini) is too new to run Sierra, so the installerpackage is preventing me from even installing Install macOS Sierra.app.

OK, fine—we'll extract the contents of the installer package manually:

Note that we use pkgutil's undocumented --expand-full flag here, because--expand isn't enough to cause Install macOS Sierra.app to be extracted fromthe Payload file within the installer package.

Sharedsupport

Now let's copy the installer app to /Applications:

And attempt to run createinstallmedia (assuming we have a blank flash drivemounted at /Volumes/Untitled):

Immediately, we get /Applications/Install macOS Sierra.app does not appear to be a valid OS installer application. Grr.

Using Hopper to disassemble createinstallmedia, I quickly narrowedin on the cause of the does not appear to be a valid OS installer applicationerror message, centered around a failing validation routine called at address0x1000017a3:

If the validation routine at sub_100001cb2 returns 1, we jump to0x1000018b7 and continue on. If it returns 0, we jump to 0x10000198c, atwhich point the does not appear to be a valid OS installer application messageis printed, and the program exits. If it returns anything other than 0 or 1,we don't jump anywhere, and execute the next instruction after 0x1000017b3.

sub_100001cb2, as Hopper calls it, isn't too terribly difficult to read, butrather than regurgitating a wall of x86_64 assembly here, I'll just explainwhat it does. It:

  • Accepts an NSString * as its only parameter, which is the path to Install macOS Sierra.app that the user specified for the --applicationpath flag tocreateinstallmedia
  • Validates the existence of that path, and that it's a directory
  • Ensures that the bundle identifier of the application begins withcom.apple.InstallAssistant
  • Looks for SharedSupport/OSInstall.mpkg within the app bundle, and if itcan't find that, falls back to looking for SharedSupport/InstallInfo.plist
  • If InstallInfo.plist exists, it then looks up the System Image Info -> URLkey, and looks for a disk image named after that value, which is expected tocontain OSInstall.mpkg

Here's our first problem.

InstallInfo.plist looks like this:

System Image Info -> URL tells us we're looking for InstallESD.dmg, andsub_100001cb2 expects that path to be relative to the SharedSupportdirectory. Let's see what's in SharedSupport:

D'oh! No InstallESD.dmg.

After a bit of head scratching, I realized that, because InstallOS.pkg neverran successfully, its link_package script never ran, which contains this veryimportant line:

Easy fix—since we've already extracted InstallOS.pkg, we can copyInstallESD.dmg over manually:

Cool, that's that out of the way.

problem #2: mismatched bundle version strings

Now, at this point, you might be tempted to run createinstallmedia again.

Don't do that.

Without fixing one last issue, attempting to run createinstallmedia will causeit to spawn copies of itself ad infinitum until your machine runs out of RAM, oryou sudo killall -9 it.

That's because of one additonal check in our friend sub_100001cb2. Thepseudocode looks like this:

Installesd.dmg

r13 is an NSFileManager *, rdx is /Applications/Install macOS Sierra.app/Contents/SharedSupport/InstallESD.dmg, and var_38 is the bundleidentifier of Install macOS Sierra.app (com.apple.InstallAssistant.Sierra).

If InstallESD.dmg exists (which it should, now that we've copied it into theapp bundle), and if the bundle identifier is com.apple.InstallAssistant.Sierra(it is), then we check to see if the CFBundleShortVersionString is 12.6.03.Depending on the result of that comparison, r14 is set, and is then returnedin rax.

The Hopper-generated pseudocode for the assignment to r14 looks a littleweird—the assembly looks like this:

My x86_64 assembly-fu was just rusty enough that that didn't make immediatesense to me, and I didn't feel like launching createinstallmedia under lldbto debug interactively, so I whipped up a quick test program to help meunderstand what that code was doing:

That gives us:

Changing either of the strings in the -isEqualToString: comparison so thatthey don't match gives us:

Contents

Now let's copy the installer app to /Applications:

And attempt to run createinstallmedia (assuming we have a blank flash drivemounted at /Volumes/Untitled):

Immediately, we get /Applications/Install macOS Sierra.app does not appear to be a valid OS installer application. Grr.

Using Hopper to disassemble createinstallmedia, I quickly narrowedin on the cause of the does not appear to be a valid OS installer applicationerror message, centered around a failing validation routine called at address0x1000017a3:

If the validation routine at sub_100001cb2 returns 1, we jump to0x1000018b7 and continue on. If it returns 0, we jump to 0x10000198c, atwhich point the does not appear to be a valid OS installer application messageis printed, and the program exits. If it returns anything other than 0 or 1,we don't jump anywhere, and execute the next instruction after 0x1000017b3.

sub_100001cb2, as Hopper calls it, isn't too terribly difficult to read, butrather than regurgitating a wall of x86_64 assembly here, I'll just explainwhat it does. It:

  • Accepts an NSString * as its only parameter, which is the path to Install macOS Sierra.app that the user specified for the --applicationpath flag tocreateinstallmedia
  • Validates the existence of that path, and that it's a directory
  • Ensures that the bundle identifier of the application begins withcom.apple.InstallAssistant
  • Looks for SharedSupport/OSInstall.mpkg within the app bundle, and if itcan't find that, falls back to looking for SharedSupport/InstallInfo.plist
  • If InstallInfo.plist exists, it then looks up the System Image Info -> URLkey, and looks for a disk image named after that value, which is expected tocontain OSInstall.mpkg

Here's our first problem.

InstallInfo.plist looks like this:

System Image Info -> URL tells us we're looking for InstallESD.dmg, andsub_100001cb2 expects that path to be relative to the SharedSupportdirectory. Let's see what's in SharedSupport:

D'oh! No InstallESD.dmg.

After a bit of head scratching, I realized that, because InstallOS.pkg neverran successfully, its link_package script never ran, which contains this veryimportant line:

Easy fix—since we've already extracted InstallOS.pkg, we can copyInstallESD.dmg over manually:

Cool, that's that out of the way.

problem #2: mismatched bundle version strings

Now, at this point, you might be tempted to run createinstallmedia again.

Don't do that.

Without fixing one last issue, attempting to run createinstallmedia will causeit to spawn copies of itself ad infinitum until your machine runs out of RAM, oryou sudo killall -9 it.

That's because of one additonal check in our friend sub_100001cb2. Thepseudocode looks like this:

r13 is an NSFileManager *, rdx is /Applications/Install macOS Sierra.app/Contents/SharedSupport/InstallESD.dmg, and var_38 is the bundleidentifier of Install macOS Sierra.app (com.apple.InstallAssistant.Sierra).

If InstallESD.dmg exists (which it should, now that we've copied it into theapp bundle), and if the bundle identifier is com.apple.InstallAssistant.Sierra(it is), then we check to see if the CFBundleShortVersionString is 12.6.03.Depending on the result of that comparison, r14 is set, and is then returnedin rax.

The Hopper-generated pseudocode for the assignment to r14 looks a littleweird—the assembly looks like this:

My x86_64 assembly-fu was just rusty enough that that didn't make immediatesense to me, and I didn't feel like launching createinstallmedia under lldbto debug interactively, so I whipped up a quick test program to help meunderstand what that code was doing:

That gives us:

Changing either of the strings in the -isEqualToString: comparison so thatthey don't match gives us:

Interesting—so our validation routine at sub_100001cb2 must be returning 1or 2 (the former if the strings don't match, and the latter if they do match).Recall that if sub_100001cb2 returns 0, we get the /Applications/Install macOS Sierra.app does not appear to be a valid OS installer application error.

So let's see if our Info.plist has the bundle version we're expecting. Surveysays:

Aha! So sub_100001cb2 must be returning 1, which results in us jumping toloc_1000018b7, and doing this:

Meaning, this copy of createinstallmedia will spawn a copy of itself as a childprocess with identical arguments, and wait for the child to exit. Since it'sbeen given the same arguments as its parent, the child process executes inexactly the same way, and ends up reaching this code, where it too spawns a copyof itself, and waits for that process to exit. And on and on… 😐

Thankfully, this is also an easy fix: we can just modify Install macOS Sierra.app/Contents/Info.plist to have the 'correct' bundle version string:

Verify that did the trick:

Brilliant.

Moment of truth—let's try running createinstallmedia again:

Installesd.dmg Couldn't Be Copied To Sharedsupport

Yahtzee! That seems to have done the trick.

just give me the instructions, dammit

Note that I performed these steps on a machine running macOS Catalina (10.15.6).I don't see any reason why these steps wouldn't work on older versions of macOS,but, y'know, YMMV.

  • Download the macOS Sierra InstallOS.dmg from step 4 of this Apple supportdocument by clicking the Download macOS Sierra link
  • Mount the newly-downloaded InstallOS.dmg disk image by double-clicking it
  • Extract the contents of the installer package to your desktop:
  • Copy Install macOS Sierra.app to your /Applications folder:
  • Copy InstallESD.dmg to the SharedSupport directory within the installerapp bundle:
  • Fix the bundle version string in Install macOS Sierra.app's Info.plist:
  • Finally, run createinstallmedia:

The last step assumes you've got your target flash drive mounted at/Volumes/Untitled. If necessary, replace that path with wherever your flashdrive is mounted. createinstallmedia will format and overwrite that drive, soType Carefully™.

Look at you! You've got the macOS Sierra installer on a bootable flash drive.

To perform a clean installation of macOS Sierra (basically, Mac OS X 10.12), I recommend using a bootable USB flash drive containing the macOS Sierra installer. Below are the steps I took to create the bootable USB flash drive and how I used it to install macOS Sierra.

Note: The macOS Sierra Disk Utility and installer appears to be more buggy and much slower than previous versions. The best advice for installing macOS Sierra is to try again and be very patient (if you expect an operation to complete in 5 minutes, then give it at least 50 minutes).

Download macOS Sierra Installer

The macOS Sierra installer is available from the Mac App Store. Run the 'App Store' application, search for 'macOS Sierra', and download it. It will save the installer as an '/Applications/Install macOS Sierra.app' file (about 4.97GB in size).

Note: If you run the macOS Sierra installer to upgrade your Mac, the downloaded file will be deleted automatically after the upgrade is completed. To keep that file, you will want to move it out of the Applications folder so it won't be deleted after an upgrade. Launch the 'Terminal' application and run this command to move the downloaded installer to your user's 'Downloads' folder:

sudomv/Applications/Install macOS Sierra.app/ ~/Downloads/

If you are paranoid (doesn't hurt), you can verify that the installer file was downloaded correctly by verify its checksum. Run the 'Terminal' application and this command:

hdiutil verify /Applications/Install macOS Sierra.app/Contents/SharedSupport/InstallESD.dmg
# If successful, the last output line should read:
# hdiutil: verify: checksum of '/Applications/Install macOS Sierra.app/Contents/SharedSupport/InstallESD.dmg' is VALID

Format USB Flash Drive

The macOS Sierra installer takes up 5.1GB of space on the USB flash drive, so you will need a flash drive with a capacity of 8GB or greater.

Note: If the flash drive is mounted under '/Volumes' successfully when you plug it in, you can skip the following steps to reformat the flash drive. This is because the script we run to create the bootable drive will reformat the flash drive as an initial step. Because I am paranoid, I recommend reformatting the USB flash drive manually anyhow.

Contents Shared Support Installesd.dmg Missing Files

Format the USB flash drive using these steps:

  1. Plug the USB flash drive into your Mac.
  2. Launch the 'Disk Utility' application.
  3. On the left-hand pane, select the USB drive (not the partition under it, if any).
  4. Click on the 'Erase' tab (or button at the top).
    1. Input a name like 'Sierra' (this name will be overwritten later).
    2. Select 'Mac OS Extended (Journaled)' for 'Format'.
    3. Select 'Master Boot Record' for 'Scheme'.
    4. Click the 'Erase…' button at the bottom. Click the 'Erase' button in the warning popup dialog if you get one.
      • The format operation may take several minutes to complete. (USB 2.0 and large capacity drives will take longer.) After the format completes, the partition will be mounted under '/Volumes/Sierra' (or whatever name you selected above).
      • Note: Under macOS Sierra, the Erase function will fail if the USB drive's partition is mounted. You can manually unmount the partition before running Erase. Or you can run Erase twice; the first time will unmount the partition and fail, and the second time will actually do the format (which will succeed).
  5. Close the 'Disk Utility' application.

Create Bootable USB Flash Drive Installer

To create the bootable USB macOS Sierra installer, run the 'Terminal' application and this command:

# The --volume value is the mounted USB flash drive partition; in this case, named /Volumes/Sierra
sudo/Applications/Install macOS Sierra.app/Contents/Resources/createinstallmedia --volume/Volumes/Sierra --applicationpath/Applications/Install macOS Sierra.app --nointeraction
# You will be prompted for your user's administrative password.

Update: For macOS 10.14 Mojave (and its predecessor, macOS 10.13 High Sierra), the createinstallmedia command no longer requires the '–applicationpath' and '–nointeraction' flags, so omit them. The command becomes just 'createinstallmedia –volume /Volumes/Mojave'.

Note: If the createinstallmedia command returns a 'Failed to start erase of disk due to error (-9999, 0)' error, then your current Mac OS X version does not fully support the createinstallmedia tool. Instead, create the USB installation drive manually using instructions from Bootable USB Flash Drive to Install Mac OS X 10.10 Yosemite.

The 'createinstallmedia' program will erase the USB flash drive, create a new partition named 'Install macOS Sierra', and copy the installation files to that partition. The output will look like:

Erasing Disk: 0%.. 10%.. 20%.. 30%..100%..
Copying installer files to disk..
Copy complete.
Making disk bootable..
Copying boot files..
Copy complete.
Done.

The program will pause at the 'Copying installer files to disk…' output line above. This step took 20-30 minutes with my Kingston 16GB USB 2.0 flash drive. Yours may take a shorter or longer time. I recommend giving it at least an hour, maybe two, before giving up.

Note: Mac hardware is very finicky about USB flash drives. Initially, I used a Corsair 32GB USB 3.0 drive; however, when I held down the Option key to try to boot with it, the Mac would freeze with a black startup screen. The Kingston 16GB USB 2.0 drive did not have this problem. So if you enounter issues (when erasing and copying) or weirdness (when booting), consider changing to another brand of USB flash drive. If you don't have another drive, consider at least testing the flash drive to make sure it is not bad or corrupted ('First Aid' in 'Disk Utility' is the minimum; google for more powerful tools).

Boot With USB Flash Drive

Note: I recommending connecting the Mac to its AC power adapter before beginning the macOS Sierra installation. The installation may take a long time (an hour or more) and you don't want the battery to die in the middle.

To boot a Mac with the USB flash drive:

  1. Shutdown the Mac.
  2. Insert the USB flash drive.
  3. While holding the 'option/alt' key down, turn on the Mac to display the boot Startup Manager.
  4. You should see one or more icons, one of which should be called 'Install macOS Sierra' for the USB flash drive. (The internal hard drive may not be visible if it does not have a valid, bootable partition installed.)
    • Note: If you don't see the USB flash drive's 'Install macOS Sierra', try removing and re-inserting the USB flash drive while viewing the Startup Manager screen. The USB flash drive should then appear after a few seconds.
  5. Select the 'Install macOS Sierra' (with left/right arrow keys) and hit the 'return/enter' key to boot from the USB flash drive.

It may take 5-10 minutes or longer to load the installer from the USB flash drive. Sometimes the progress bar may appear to be frozen… just be patient. I would give it at least 30-60 minutes to load before giving up.

Format the Hard Drive Mac os x el capitan 10.11 download.

When the installer finishes loading, you will see a 'macOS Utilities' window appear. Do the following to format the internal hard drive:

  1. Click on the 'Disk Utility' option and click the 'Continue' button on the bottom to launch the 'Disk Utility' application.
  2. On the left-hand pane, select the hard drive (not the partition under it, if any).
  3. Click on the 'Erase' button at the top.
    1. Input a name like 'macOS'.
    2. Select 'Mac OS Extended (Journaled)' for 'Format'.
    3. Select 'GUID Partition Map' for 'Scheme'.
    4. Click the 'Erase…' button at the bottom.
      • For SSD (Solid State Drive), the format operation may take less than a minute to complete. For mechanical hard drive, it may several minutes to hours, depending upon the size, speed, and condition of your hard drive.
      • Note: Again, the Erase function will fail if the hard drive's partition is mounted. You can manually unmount the partition before running Erase. Or you can run Erase twice; the first time will unmount the partition and fail, and the second time will actually do the format (which will succeed).
  4. Close the 'Disk Utility' application.

Note: Now and then, I noticed the output of the Erase seems to erroneously double the size of the hard drive. For a 128GB hard drive, the graph shows 120.88GB macOS (in blue) and 120.37 GB Unformatted (in red). I think it is just a user interface bug because when I close Disk Utility and re-open it, the graph then only shows the 120.88GB macOS (in blue).

Install macOS Sierra

Back at the 'macOS Utilities' window, do the following to begin the macOS Sierra installation process:

  1. Click on the 'Install macOS' option and click the 'Continue' button.
  2. The 'macOS Sierra' installer's splash screen will appear. Click the 'Continue' button.
  3. Click on the 'Agree' button to agree to the license. A popup confirmation window will appear; click on the popup's 'Agree' button.
  4. Select the hard drive and click the 'Install' button.

Note: You may encounter strange hardware behavior. On my 13 inch Macbook Pro Retina, the macOS Sierra installer turned the fan on to maximum for the whole duration of the installation. Thankfully, once it finished and rebooted, the fan turned off and stayed off.

The macOS Sierra installer tries to be helpful by telling you how long it will take. Unfortunately, it lies. You should take whatever remaining time it tells you and multiple by 10 (for minutes) or 100 (for seconds). If it says '6 minutes remaining', that could mean 60 minutes or one hour remaining. Worse, if it says '6 seconds remaining', you may be staring at that message for 600 seconds or one hour.

The best solution is to be patient. Go grab a bite to eat and watch a movie. Take a long nap or better yet, sleep your 8 hours. I would wait at least 4 hours before giving up.

Note: You can display the installer's log window (using the menu or pressing Cmd+L). I didn't find this helpful at all. Even for a successful install, numerous errors are logged; I don't know what is a critical or non-critical error. And often, you won't see a progress/status log output for a long time, easily 20-30 minutes. Not seeing any new log statements does not mean that the installer froze. So the logs didn't do anything for me.

What Does Giving Up Mean?

Giving up means you have accepted defeat. The next step is to retreat and try again. Some suggestions on how to proceed:

  • Reset your Mac by doing the following:
    1. Reset the SMC (see step 3 under the 'Reset the SMC on Mac notebook computers' section).
    2. Reset the NVRAM (aka PRAM).
    3. Run the Apple Hardware Diagnostic or Test to make sure you don't have a hardware failure.
    4. Finally, retry the macOS Sierra install.
  • Use a different USB port on the Mac.
  • Use another brand of USB flash drive.
  • Delete and re-download the macOS Sierra installer (especially if you downloaded it a long while ago). Even if the checksum is okay, you may want to re-download in case there is a newer version of the installer with a bug fix for your very problem.
  • Download an older Mac OS X version, say Mac OS X 10.11 El Capitan, install that, and then upgrade to macOS Sierra. If you know the Mac OS X version which came with your Mac originally, consider downloading (if you still have access) and installing that version first.
  • Use the Mac Recovery System to download and install the original OS version that came with your Mac. Then upgrade from that to macOS Sierra.
  • Buy a more recent model Mac (at most a couple of years old). It may be that your current Mac is too old or slow to support macOS Sierra. It's okay to keep running an old Mac OS version. (For example, if I had a Core 2 Duo Mac, I would not run anything later than Mac OS X 10.9 Mavericks on it.)

Hopefully, this post will help you to do a fresh installation of macOS Sierra.

Contents Shared Support Installesd.dmg Missing Data

Some info above taken from:





broken image