InstaUp2Date Guide 10.6

From AFP548 Wiki
Jump to: navigation, search

InstaUp2Date and 10.6.x Guide[edit]

InstaUp2Date is a helper script that was created Karl Kuehn to setup directories that InstaDMG uses in order to build images. It is an extremely powerful tool that automates the setup and execution of an InstaDMG build. The aim of this guide is to show one style of workflow that could be used for building images as well as some helpful packages/scripts that assist in the image building process. This guide applies only to OS X 10.6.x, but many of these principles can be used for creating 10.5.x images as well.

Before you go through this guide, it would be beneficial to watch the Mac Manager’s Meeting InstaDMG presentation on iTunesU ( Karl Kuehn is the current developer of InstaDMG, his presentation goes over how to use InstaDMG/InstaUp2Date for a fully updated image and also talks about how the Catalog files work. It would also be beneficial download and have the InstaDMG 1.6 guide ( handy for more info regarding the specific processes that take place.

Required for this tutorial:

  • Retail Mac OS X Install DVD (Either 10.6.0 (10A432) or 10.6.3 (10D575) Reference builds)
  • Any Client Machine with OS X 10.6.x that is fully updated
  • Text Editor – This can be anything from Text Wrangler or Text Mate to nano or vi on the commandline. Tab characters must be respected by the text editor, otherwise it could cause issues when editing the catalog files.
  • Packaging Application – JAMF’s Composer, LANrev’s InstallEASE, Whitebox’s Packages or Apple’s PackageMaker.


  1. Setting up InstaDMG for the first time
  2. Planning your workflow
    • Gathering all the settings you will need and packaging them up.
    • Software that would be on the image by default.
  3. Setting up the catalog files
    • Determining common settings (Power, Admin account, etc) and decide if they will be shared with other images.
    • Creating Checksums for each package
    • Creating the catalogs themselves
  4. Running InstaUp2Date
    • Basic Run plus processing
    • Getting fancy with Scratch Disks

Setting Up InstaDMG for the first time[edit]

Note: 10.5.x machines cannot create 10.6.x images(and vice-versa) at this time. Please use a 10.6.x box to build a 10.6.x Image.

Firstly, Open Terminal (Applications-->Utilities-->

Change the working folder to wherever you would like to store the main InstaDMG folder. (In this example, ‘cd ~/Desktop/’ )

cd ~/Desktop/

Type ‘svn checkout instadmg’ where ‘instadmg’ is whatever you would like to name the folder where InstaDMG resides. By default this will be created in the directory you are currently in (~/Desktop/ in our example). The output should look similar to this:

svn checkout instadmg
A    instadmg/InstallerFiles
A    instadmg/InstallerFiles/BaseUpdates
A    instadmg/InstallerFiles/InstaUp2DatePackages
A    instadmg/InstallerFiles/InstallerDiscs
A    instadmg/InstallerFiles/CustomPKG
A    instadmg/InstallerFiles/BaseOS
A    instadmg/InstaDMG1-6.pdf
A    instadmg/instadmg.bash
A    instadmg/OutputFiles
A    instadmg/Logs
A    instadmg/Caches
A    instadmg/Caches/BaseImageCache
A    instadmg/Caches/InstaUp2DateCache
A    instadmg/AddOns
A    instadmg/AddOns/createUser
A    instadmg/AddOns/createUser/createUser.pkg
A    instadmg/AddOns/createUser/createUser.pkg/Contents
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Info.plist
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Archive.pax.gz
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Resources
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Resources/package_version
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Resources/postflight
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Resources/password_hash
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Resources/en.lproj
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Resources/en.lproj/Description.plist
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Resources/USERDATA
A    instadmg/AddOns/createUser/createUser.pkg/Contents/Resources/shadowHash
A    instadmg/AddOns/createUser/createUser.pkg/Contents/
A    instadmg/AddOns/createUser/createUser.pkg/Contents/PkgInfo
A    instadmg/AddOns/createUser/README.txt
A    instadmg/AddOns/InstaUp2Date
A    instadmg/AddOns/InstaUp2Date/InstaUp2Date Instructions.rtf
A    instadmg/AddOns/InstaUp2Date/
A    instadmg/AddOns/InstaUp2Date/
A    instadmg/AddOns/InstaUp2Date/
A    instadmg/AddOns/InstaUp2Date/CatalogFiles
A    instadmg/AddOns/InstaUp2Date/CatalogFiles/iLife09_Updates.catalog
A    instadmg/AddOns/InstaUp2Date/CatalogFiles/10.5_vanilla.catalog
A    instadmg/AddOns/InstaUp2Date/CatalogFiles/iWork09_Updates.catalog
A    instadmg/AddOns/InstaUp2Date/CatalogFiles/10.6_vanilla.catalog
A    instadmg/AddOns/InstaUp2Date/CatalogFiles/sample.catalog
A    instadmg/Documentation
A    instadmg/Documentation/InstaDMG1-6.pdf
A    instadmg/Documentation/License
A    instadmg/Documentation/CHANGELOG
A    instadmg/Documentation/InstallerChoices
A    instadmg/Documentation/InstallerChoices/OSInstall.mpkg_choiceIdentifiers.txt
A    instadmg/Documentation/InstallerChoices/InstallerChoices.xml
A    instadmg/Documentation/InstallerChoices/README
A    instadmg/Documentation/README
 U   instadmg
Checked out revision 316.

Place a Retail OS X Install DVD into the DVD drive and change the working directory to ~/Desktop/instadmg/Addons/InstaUp2Date/

cd ~/Desktop/instadmg/Addons/InstaUp2Date/

If you look at the contents of this directory, you will notice several different items. is used for creating an image file of the OS X Install DVD that is currently in the drive, is used to generate a sha hash for the packages we’ll be adding later and is the command that kicks off the whole image building process. We will discuss catalogs later in this guide, but you can see there is a folder that contains an example catalog as well as the vanilla catalog files. There is also an ‘InstaUp2Date Instructions.rtf’ file within the InstaUp2Date folder which provides more in-depth documentation on InstaUp2Date.
To create a disk image of your Mac OS X Install DVD so that it can be used with InstaDMG/InstaUp2Date, type the following:

sudo ./ --automatic

This process will take a decent amount of time.

After the process is complete, you will find that the Install DVD has been imported to the BaseOS folder (~/Desktop/instadmg/InstallerFiles/InstallerDiscs). This is where InstaDMG will look for the install disc, so we do not need to do anything further with the Install DVD disk image.
We are now set up to start using InstaUp2Date. To make sure the Base OS disk image is working properly and that the Vanilla catalog is up to date, we will build a vanilla image. Make sure you are still in the InstaUp2Date folder and type the following:

sudo ./ -p 10.6_vanilla

This command will setup InstaDMG to process the 10.6_vanilla.catalog and the –p will tell it to process, which runs InstaDMG automatically for you. After this process completes, restore it to a machine using your favorite method (NetRestore, DeployStudio, ASR or even Disk Utility) and run software updates to see if any updates are missing from the 10.6_vanilla.catalog. If it is missing updates, we'll cover how to edit catalogs later in this guide.

Planning your Workflow[edit]


It is important that before we start making an image, we think about what settings we will want to set on the image itself as well as which settings we could set using Open Directory via Workgroup Manager. If you have Open Directory available in your environment, it is best to manage your settings using OD as much as is possible, although you might still want to do the initial settings on the image. The easiest way to go about figuring out which settings you want to modify is by starting with a plain vanilla install of 10.6.x and looking at what you want to be set by default. Make a spreadsheet, a document, checklist or whatever works for you to keep track of all the settings that you want to change. My philosophy for building images is to make it as similar to a vanilla install as is possible. Generally speaking, the changes that I make are to make the end-users like easier (like showing mounted volumes on the desktop) or for locking down a machine in a Computer Lab environment. Both are different situations and require different configuration, but they will share some common elements. We will cover how to do many of the common settings on an image that would be used for a single end-user. All settings and software .pkgs or .dmgs should be placed in instadmg/InstallerFiles/InstaUp2DatePackages. We will specify which package gets used where later in this guide when we go over catalog files.

Clear Registration and Setup Assistant – This is done for us thanks to akinspe from -

Create an admin user – This can be accomplished using the createUser package that is included when you checkout InstaDMG using the svn command above. Using createUser is pretty easy because many of the settings it comes with can be left default. The package itself resides in ‘InstaDMG/Addons/createUser/createUser.pkg’ I normally leave this package in place and make a copy of it elsewhere. The README.txt contains directions on how to use the createUser.pkg. NOTE: When creating a password as per the README directions using the ./shadowHash command, if your passwords have a symbol in them, they MUST either in quotes or escaped with backslashes ( \ ). Example:

“[email protected]$$w0rd”

but NOT both.

Computer Settings - Most settings are done using a firstboot package. The firstboot package normally has a postflight script (Firstboot Post Flight) that changes some settings on the image when it gets installed to it using InstaDMG as well as installing a launchd item and script. The script gets called by the launchd item when it is booted up for the first time(First boot script). When packaging the actual firstboot.pkg, it is in best practice to place the script into /Library/Scripts/Companyname/. See this guide for how to customize a firstbook.pkg: Firstboot_Package_Guide. Here some some common settings that we will put in our firstboot script:

# First Boot script that is used along with a launchd item.  Delets both itself and the launchd item after completion.
# Define 'kickstart' and 'systemsetup' variables, built in OS X script that activates and sets options for ARD.
# Delete iMovie (Previous Version) Directory if it exists, because we don't need it. 
#Use when installing iLife using the original installers with InstaDMG.
rm -R /Applications/iMovie\ \(previous\ version\).localized/
# ARD Configuration
#Enable ARD for localadmin
$kickstart -configure -allowAccessFor -specifiedUsers
$kickstart -activate -configure -access -on -users "localadmin" -privs -all -restart -agent
# Set time zone and time server.
$systemsetup -setusingnetworktime on
$systemsetup -settimezone America/New_York -setnetworktimeserver
#Sets HostName
scutil --set HostName $(scutil --get LocalHostName)
#Sets computer to never sleep while plugged in to a power source
pmset -c sleep 0
#Adds Printers
lpadmin -p "Printer Name" -L "Printer Location" -D "Printer Description" -E -v lpd://server/printqueue -P $genericppd -o printer-is-shared=false
#Securely removes the launchd item and script.
srm /Library/LaunchDaemons/
srm "$0"

For a more exhaustive list of things that are used on firstboot, see Firstboot Script Commands.

Along with this firstboot script, you'll need a launchd item. In your firstboot.pkg, you want this item to be placed in /Library/LaunchDaemons/. Here is a pretty generic launchd item, customize it with your proper reverse dns company name (Exmaple: or edu.schoolname.firstboot):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "">
<plist version="1.0">

Both of these files must be installed to your image using a Package. Another part that you'll need for the firstboot package is a postflight script. Many settings can be configured during the creation of the image (during the InstaDMG process) and those are all set in the postflight. And example of a good postflight is as follows:

# Standard settings for images.
# Script is meant to be run as a postflight script in a .pkg file. 
# Also installs startup settings script as a Launchd item which is inside the package /Contents/Resources directory.
##### Begin Declare Variables Used by Script #####
# Declare 'defaults'and 'PlistBuddy'.
# Declare directory variables.
USERPREFS_DIR="$3/System/Library/User Template/English.lproj/Library/Preferences"
# Set variable to location of update_dyld_shared_cache command on targetvolume.
##### End Declare Variables Used by Script #####
##### Begin Preference Setting #####
# These settings can be set on the target volume before startup.
#Enables SSH
$PlistBuddy -c "Delete Disabled" $3/System/Library/LaunchDaemons/ssh.plist
# Display login window as Name and Password.
$defaults write "${PREFS_DIR}/" SHOWFULLNAME -bool YES
# Set Safari Preferences.
$defaults write "${USERPREFS_DIR}/" HomePage
$defaults write "${USERPREFS_DIR}/" ShowStatusBar -bool YES
# Set Finder Prefereces.
$defaults write "${USERPREFS_DIR}/" ShowMountedServersOnDesktop -bool YES
#Firewall Settings | 0 = Off | 1 = On For Specific Services | 2 = On For Essential Services
$defaults write "${PREFS_DIR}/" globalstate -int 0
exit 0

Here is a download of the above scripts in a PackageMaker .pmdoc: File:Firstboot.dmg. Just open the .pmdoc in PackageMaker to see how it is laid out. For more Postflight Commands see Firstboot_Postflight_Commands.

This is a good starting point for a managed machine's default settings. From here, we will move on to software.


InstaDMG images can contain any amount of software from a plain vanilla OS X 10.6 install to an Image with Final Cut Studio 3 and CS5 Master Collection. The images can be as slim or as loaded as you want them to be. With the purpose in mind, create another list with all the software you will want on this image. In this example, we will keep it fairly light, but will include many pieces of software that would be commonly found in the Enterprise or Education.

iLife 09 - iLife is a staple piece of software for Macs, so it would only be fitting that we include this in our standard image. We will be installing iLife 09, which works quite well using the original installer plus the iLife updates. No changes need to be made to the installers, so we'll talk more about iLife 09 in the catalog setup section of this guide.

Office 2008 - Office 2008 is another piece of software that is very common in Education and the Enterprise. We can use the default installer for Office 2008 (We are using the 12.2.2 SP2 installer in this guide). I highly suggest getting the Office 2008 SP2 media for use with InstaDMG. It only requires one update (12.2.5) and it works many times better then the original media set. The 12.2.5 Update does require some slight modification for it to work properly with InstaDMG. Thankfully, this modification is trivial thanks to mosen's PatchOfficeUpdate droplet (Found here: ). Just extract the zip, drop the 12.2.5 update onto it and it will patch it for use with InstaDMG. NOTE: This ONLY works with 10.6.x, which is what this guide focuses on. If you use Mosen's patcher, it will not work with 10.5.x. For this guide, we will not be covering how to customize the Office 2008 default settings. That will be covered in Office_2008_Settings.
Office 2011 - This installer works just fine with InstaDMG, but there are some issues with the postflight script that microsoft has in the installer. This must be patched to work correctly (Licensing is broken otherwise). Just Drag and drop "Office Installer.mpkg" onto the "" and it will fix the proper postflight. Download the patcher here: PatchOffice2011Installer

Firefox - If you do not desire to customize firefox, it works with InstaDMG as-is. Just download the latest version from the Mozilla website and dump it into the InstaUp2DatePackages directory. InstaDMG knows that there is a .app sitting in the .dmg file and will copy it to Applications (This works with any drag and drop .app file that is by itself on a .dmg image).

Flip4Mac WMV Components - This is a .dmg with a .pkg inside of it and InstaDMG handles this without repacking. Just download it from the main website and put it in the InstaUp2DatePackages directory.

Flash Player - Previous to the official 10.1 update, this would work perfectly fine with InstaDMG, but adobe saw fit to change their installer from a .pkg file to a .app installer. This will not work out of the box because InstaDMG by default copies .app files into /Applications.

Setting up the catalog files[edit]

Now that we have all our settings and software ready to go and packaged, we need to setup our catalog files for processing by InstaUp2Date.

Determine Common Settings[edit]

It is useful to put all settings and software that will be common between several images into one catalog. This means that when an update comes out for one of those items, you only have to change it in one catalog file vs several. In this guide, the following items will most likely be in common with another image down the road:

  • clearReg.pkg
  • Firefox 3.6.6.dmg
  • WM Components

Before we actually create the catalog files, we need to generate checksums for each package/dmg that we will be using. The easiest way to do it is as follows:

cd ~/Desktop/instadmg/Addons/InstaUp2Date/
./ ~/Desktop/instaDMG/InstallerFiles/InstaUp2DatePackages/* > checksums.txt

This will make a checksum for every package within the InstaUp2DatePackages folder and store them in a file named checksums.txt within the InstaUp2Date folder. You can cut and paste from from the file name through the end of the hash and it will be formatted correctly for the catalog file as you'll see below.

Making the catalog files[edit]

First, lets create our common catalog file. It would look something like this:

# This is the catalog for packages shared between all images.
include-file:	10.6_vanilla.catalog
# Output Volume Name = Macintosh HD
# Output File Name = Common-1.0.0
Base OS Disk:
	# the first one should be disk 1 of an installer disk
	# this is not yet implimented
System Settings:
Third Party Software:
	ClearRegistration	clearReg.pkg	sha1:b0ba0f6bfd26956562e286bbcdfa8f78dd3722eb
	Firefox 3.6.6	Firefox 3.6.6.dmg	sha1:9e332f68315a618f6f905c45a66684ea2468d3c1
	Flip4Mac	WM Components	sha1:cb285d13f6ab156f702903cf4da9c424ec33e0d9
Apple Updates:
Software Settings:

Lets look at how the catalog file is laid out:

  • At the very top, it is best practice to put a comment with what this particular catalog file is used for.
  • include-file: tells this catalog to run 10.6_vanilla.catalog before it runs itself. If you were to call common.catalog using InstaUp2Date, it would run vanilla first, then itself.
  • Output Volume Name = Macintosh HD and Output File Name = Common-1.0.0 - This is where we name what the volume is named when mounted as well as what the name of the file product's file name is. In general, these remain commented out on intermediate catalogs such at common.catalog. This prevents mishaps with the final volume name and file name.
  • The format for putting packages into the catalog file is [Tab]Package Description[Tab]File Name[Tab]checksum.

This catalog file is done and contains all the common items that would be updated on a regular basis. We will make two more catalog files for this model image so that it is easier to upkeep with future additions and updates.
The next catalog will be Base.catalog:

# This is the catalog for the Base Snow Leopard Settings
include-file:	common.catalog
# Output Volume Name = Macintosh HD
# Output File Name = Base-1.0.0
Base OS Disk:
	# the first one should be disk 1 of an installer disk
	# this is not yet implimented
System Settings:
Third Party Software:
	create local admin	createUser.pkg	sha1:c6f31d71c40499a73ba68d14c7adb35f9fac3782
	First Boot Setting	firstboot.pkg	sha1:5cc584fca87164114cc64c52018f152e8a6074b8
Apple Updates:
Software Settings:

And here would be our Snowleopard.catalog:

# This is the catalog for the Base Leopard Image
include-file:	Base.catalog
Output Volume Name = Macintosh HD
Output File Name = Snowleopard-1.0.0
System Settings:
Third Party Software:
	Office 2008 SP2	Office Installer.mpkg	sha1:021a599899d12958bc9aa02d0b9a5002c0b8d79f
	Office 12.2.5	Office 2008 12.2.5 Update.mpkg	sha1:c742570712129dfc4534de08a4250c41f9c83a59
	iLife 09	iLife09.mpkg	sha1:d58806ffbea052b45f0826d25ff41322333f6305
	iPhoto_81	sha1:e6b1bf494881ba3b357f7d023e2c434e8caf06c8
	GarageBand51	sha1:7c771583c826c8c70e5c5f01d925e28636d0364d
	iDVD704	sha1:d9b6fd4b1a4c8f875dc1a8ca3c8dd31ebae5e1c0
	iLifeSupport904	sha1:7cda1492d1bab91383b5738a7cda2cde24f72d2c
	iWeb301	sha1:90a1616428c56f086a41e29528a84971f35f3842
	iMovie806	sha1:5b63ad631d7a9b9e668db5cb1edf4d421c8af87f
	iPhoto_812	sha1:b7cdf308a45a2ce5b8e1cbf3a78cbaa17dc62c28
Apple Updates:
Software Settings:

This basically contains the original iLife 09 Installer as well as all the updates for it. There is a seperate iLife09Updates.catalog that is by default in the catalogs directory which could also be called to run these updates (And that is probably the smarter way to do it).
These catalogs are all set up and ready to go. Using the include-file: part of the catalogs chains them all together. When we call Snowleopard.catalog with InstaUp2Date, it will process them in the following order:
10.6_Vanilla.catalog --> Common.catalog --> Base.catalog --> Snowleopard.catalog

This ensures that everything gets installed in the correct order throughout the process.

Running InstaUp2Date[edit]

So long as all the work that was accomplished previous to this was done correctly, running the actual command is the easiest part of the whole process. To kick off InstaUp2Date and build the model image, here is the command that you need:

cd ~/Desktop/instadmg/Addons/InstaUp2Date/
sudo ./ -p Snowleopard

Note: You do not need to include the .catalog when calling it using instaUp2Date.
Thats it! Sit back, relax and get a cup of coffee.
Now, if you want to speed up the build process, you can use a scratch disk. Using a scratch disk, instadmg will write to the scratch drive, then write back to the drive that the instaDMG which is faster then writing to and reading from the same disk. In the presentation linked above, Karl discusses how much this speeds up the build process. Here is the command if you would like to use a scratch drive:

 sudo ./ -p Snowleopard.catalog --instadmg-scratch-folder /Volumes/ScratchDriveName

Congratulations, you have just made your first basic image using InstaDMG.

If you do not have a deployment server setup yet, there are many options, but DeployStudio ( is the most flexible free option for deploying images that exists right now.

For further help, feel free to join us in ##osx-server on