cpu2asr

June 10, 2011

There’s one more new tool in MTK that I thought was worth a quick shout-out, namely cpu2asr. While netbless has turned out to be pretty useful, restoring entire CPUs with it has two drawbacks:

  • You have to create a user account to install the bundled applications (the second disc)
  • It’s slow. While an installer-based workflow is great for doing “archive & install” — type installations, restoring a brand new drive with this method is much slower than a simple ASR restore.

So we need a method to create ASR-ready images from the bundled media. The obvious problem is the media will only install on the machine the it was designed for (i.e., you need to have an actual “MacBook Pro (Mid 2010)” to create the corresponding ASR image. With so many Mac models out there, this isn’t always possible, especially if you’re a service-only shop like us. And even if we manage to do this, doing “gold master” restores has some potential problems, with machine-specific settings and code being redistributed to several different units.

This is where cpu2asr comes in. It takes 3 arguments - disc 1, disc 2 and the name of the output image. The result is an ASR-ready image you can restore on a machine in minutes, via Deploy Studio or whatever. You can also run the tool on any Mac (there’s an [incredibly crude hack to basically bypass all requirement checks).

So far I’ve managed to create both 10.5 and 10.6-based ASR images with it (the 10.6-based ones needed an additional step to extract the XAR archive for the patching to work). Since the “volumes” are installed “offline” never booted, you also avoid distributing and machine-specific settings.

So, in summary, the whole process becomes a simple matter of:

# cpu2asr Mac\ OS\ X\ Install\ DVD.dmg Application\ Install\ Disc.dmg imac_21.5_m10.dmg

The code could still use some cleanup (and a few more features, like the option to install additional packages) but I’ve now “imaged” half a dozen machines with this so it seemed safe to put it out there. Also, while digging through the OS X distribution files, I’ve found that one bundled OS build can support several Mac models, so it would make sense to figure out an efficient workflow for storing and distributing these (kinda like asd2nb, but storing it with the OS’s build number, for example).