Skip to content

Instantly share code, notes, and snippets.

@166MMX
Last active October 15, 2016 18:39
Show Gist options
  • Save 166MMX/f6b18bd15bff05921ce5 to your computer and use it in GitHub Desktop.
Save 166MMX/f6b18bd15bff05921ce5 to your computer and use it in GitHub Desktop.
#!/bin/sh
set -e
InstallESDImage="${1:-/Applications/Install OS X Mavericks.app}/Contents/SharedSupport/InstallESD.dmg"
InstallESDMount=/Volumes/MavericksInstallESD
BaseSystemImage=$InstallESDMount/BaseSystem.dmg
BaseSystemSparseImage=/tmp/BaseSystem.sparseimage
BaseSystemSparseMount=/Volumes/MavericksBaseSystem
BaseSystemIso="$HOME/Desktop/OsXMavericksInstallESD.cdr"
# UDSP - UDIF SPARSE
# UDTO - UDIF DVD/CD-R master for export
hdiutil attach "$InstallESDImage" -readonly -verify -nobrowse -mountpoint $InstallESDMount
hdiutil convert $BaseSystemImage -format UDSP -o $BaseSystemSparseImage
hdiutil resize -size 8g $BaseSystemSparseImage
hdiutil attach $BaseSystemSparseImage -readwrite -verify -nobrowse -mountpoint $BaseSystemSparseMount
rm $BaseSystemSparseMount/System/Installation/Packages
cp -rp $InstallESDMount/Packages $BaseSystemSparseMount/System/Installation/
hdiutil detach $InstallESDMount
hdiutil detach $BaseSystemSparseMount
hdiutil compact $BaseSystemSparseImage
newSize=$(hdiutil resize -limits $BaseSystemSparseImage | tail -n 1 | cut -f 1)
hdiutil resize -size ${newSize}b $BaseSystemSparseImage
hdiutil convert $BaseSystemSparseImage -format UDTO -o "$BaseSystemIso"
rm $BaseSystemSparseImage
#!/usr/bin/env bash
set -u -x -e
app_path="$1"
if [ ! -d "$app_path" ]; then
printf 'No such Application at "%s"' "$app_path" >&2
exit 1
fi
name="$(basename -- "$app_path" | sed 's/^Install //;s/^Mac //;s/^OS X //;s/^machOS //;s/\.app$//;s/ //g')"
esd_vol=~/Volumes/esd
iso_vol=~/Volumes/iso
cdr_file="$name.cdr"
iso_file="$name.iso"
hdiutil attach "$app_path/Contents/SharedSupport/InstallESD.dmg" -noverify -nobrowse -mountpoint "$esd_vol"
hdiutil create -o "$cdr_file" -size "8g" -type "SPARSE" -layout "SPUD" -fs "HFS+J"
hdiutil attach "$cdr_file.sparseimage" -noverify -nobrowse -mountpoint "$iso_vol"
asr restore -source "$esd_vol/BaseSystem.dmg" -target "$iso_vol" -noverify -noprompt -erase
base_vol="$(find /Volumes -type d -name '*Base System' -depth 1)"
rm "$base_vol/System/Installation/Packages"
cp -rpv "$esd_vol/Packages" "$base_vol/System/Installation/"
cp -rpv "$esd_vol/BaseSystem.chunklist" "$base_vol/"
cp -rpv "$esd_vol/BaseSystem.dmg" "$base_vol/"
vol_name="$(diskutil info -plist "$esd_vol" | plutil -extract 'VolumeName' 'xml1' -o - -- - | plutil -p -- - | sed 's/^"//;s/"$//')"
diskutil renameVolume "$base_vol" "$vol_name"
base_vol="/Volumes/$vol_name"
hdiutil detach "$esd_vol"
hdiutil detach "$base_vol"
hdiutil resize -sectors min "$cdr_file.sparseimage"
hdiutil convert "$cdr_file.sparseimage" -format "UDTO" -o "$iso_file"
mv "$iso_file.cdr" "$iso_file"
rm "$cdr_file.sparseimage"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment