Create bootable image from OS X Installation App

root's picture

The OS X releases come only via App Store as an app package but sometimes there is need for a way to transform this into an iso image.
So without further writing, I present you two ways to do so.

1. Download the installer app from App Store or if not available there, use gibMacOS.

It is easy to use, via terminal of course. You clone it, run it and do your thing.

fmbp16:gibMacOS florian$ ./gibMacOS.command 
#######################################################
#                Downloading Catalog                  #
#######################################################

Currently downloading publicrelease catalog from

https://swscan.apple.com/content/catalogs/others/index-10.15-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog

Downloaded 6.82 MB of 6.82 MB (100.00%)

#######################################################
#                      gibMacOS                       #
#######################################################

Available Products:

1. macOS Big Sur 11.0.1 (20B29)
   - 001-79699 - Added 2020-11-12 18:00:08 - 12.19 GB
2. macOS Catalina 10.15.7 (19H15)
   - 001-68446 - Added 2020-11-11 17:48:09 - 8.75 GB
3. macOS Catalina 10.15.7 (19H4)
   - 001-57224 - Added 2020-10-27 17:28:13 - 8.75 GB
4. macOS Catalina 10.15.7 (19H2)
   - 001-51042 - Added 2020-09-24 17:09:31 - 8.75 GB
5. macOS Catalina 10.15.6 (19G2021)
   - 001-36801 - Added 2020-08-12 20:04:02 - 8.75 GB
6. macOS Catalina 10.15.6 (19G2006)
   - 001-36735 - Added 2020-08-06 23:39:24 - 8.75 GB
7. macOS Catalina 10.15.5 (19F2200)
   - 001-15219 - Added 2020-06-15 18:52:41 - 8.74 GB
8. macOS Catalina 10.15.4 (19E2269)
   - 001-04366 - Added 2020-05-04 15:32:04 - 8.75 GB
9. macOS Catalina 10.15.3 (19D2064)
   - 061-86291 - Added 2020-03-23 21:41:00 - 8.69 GB
10. macOS Mojave 10.14.4 (18E2034)
   - 041-88800 - Added 2019-10-23 14:41:18 - 6.53 GB
11. Install macOS High Sierra Beta 10.13.5 (17F66a)
   - 041-90855 - Added 2019-10-23 14:41:18 - 5.69 GB
12. macOS High Sierra 10.13.6 (17G66)
   - 041-91758 - Added 2019-10-19 18:19:55 - 5.71 GB
13. macOS Mojave 10.14.6 (18G103)
   - 061-26589 - Added 2019-10-14 20:51:08 - 6.52 GB
14. macOS Mojave 10.14.5 (18F2059)
   - 061-26578 - Added 2019-10-14 20:38:26 - 6.52 GB

M. Change Max-OS Version (Currently 10.15)
C. Change Catalog (Currently publicrelease)
I. Only Print URLs (Currently False)
S. Set Current Catalog to SoftwareUpdate Catalog
L. Clear SoftwareUpdate Catalog
R. Toggle Recovery-Only (Currently Off)
U. Show Catalog URL
Q. Quit

Please select an option:

Browse to the gibMacOS Folder.
Go to gibMacOS/macOS Downloads/
Open the Big Sur Folder
Open InstallAssistant.pkg
Continue the On-Screen Steps.
Check for Applications Folder, The Installation App will be there.

So, what I did above is one way to get some OSX install apps if they are not available on App Store. However, what follows is an example with a package that was already on the system, it is El Capitan. What I want to say here is: you can use whatever method to get the macos installation app. What follows is not depending of gibMacOS.

2. Install the iesd package from gem:

eeny:~ osx$ sudo gem install iesd
Password:

Fetching: iesd-1.2.2.gem (100%)
Successfully installed iesd-1.2.2
Parsing documentation for iesd-1.2.2
Installing ri documentation for iesd-1.2.2
1 gem installed

3. Extract and convert the installation dmg from the app into a dmg file:

eeny:iso osx$ iesd -i Install\ OS\ X\ El\ Capitan.app -o elcapitan.dmg -t BaseSystem
==> Mounting /Volumes/stuff/kit/iso/Install OS X El Capitan.app/Contents/SharedSupport/InstallESD.dmg
Mounted: /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-c3wghx
==> Mounting /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-c3wghx/BaseSystem.dmg
Mounted: /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-1x9wnj2/d20160917-86405-qaqnxr
==> Copying /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-c3wghx/BaseSystem.dmg
Copied: /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-1x9wnj2/d20160917-86405-qaqnxr/BaseSystem.dmg
==> Copying /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-c3wghx/BaseSystem.chunklist
Copied: /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-1x9wnj2/d20160917-86405-qaqnxr/BaseSystem.chunklist
==> Copying /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-c3wghx/Packages
Copied: /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-1x9wnj2/d20160917-86405-qaqnxr/System/Installation/Packages
==> Unmounting /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-c3wghx/BaseSystem.dmg
Unmounted: /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-1x9wnj2/d20160917-86405-qaqnxr
==> Merging /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-1x9wnj2/BaseSystem.dmg.shadow
Merged: /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-16qa2gj/BaseSystem.dmg
==> Unmounting /Volumes/stuff/kit/iso/Install OS X El Capitan.app/Contents/SharedSupport/InstallESD.dmg
Unmounted: /var/folders/x0/r5mgbqyn2y1128xvypgl46wm0000gp/T/d20160917-86405-c3wghx
/Volumes/stuff/kit/iso/elcapitan.dmg

4. Convert the newly created dmg into sparseimage, to be customised on the next steps:

eeny:iso osx$ hdiutil convert elcapitan.dmg -format UDSP -o elcapitan.sparseimage
Reading Protective Master Boot Record (MBR : 0)…
Reading GPT Header (Primary GPT Header : 1)…
Reading GPT Partition Data (Primary GPT Table : 2)…
Reading  (Apple_Free : 3)…
Reading disk image (Apple_HFS : 4)…
..............................................................................................................................................................................
Reading  (Apple_Free : 5)…
Reading GPT Partition Data (Backup GPT Table : 6)…
..............................................................................................................................................................................
Reading GPT Header (Backup GPT Header : 7)…
...............................................................................................................................................................................
Elapsed Time:  5m 19.237s
Speed: 22.9Mbytes/sec
Savings: 14.6%
created: /Volumes/stuff/kit/iso/elcapitan.sparseimage

5. Mount the sparseimage and the original dmg file and copy the system files into the sparseimage. Unmount them afterwards:

eeny:iso osx$ hdiutil mount Install\ OS\ X\ El\ Capitan.app/Contents/SharedSupport/InstallESD.dmg
Checksumming Protective Master Boot Record (MBR : 0)…
Protective Master Boot Record (MBR :: verified   CRC32 $4C067D6E
Checksumming GPT Header (Primary GPT Header : 1)…
 GPT Header (Primary GPT Header : 1): verified   CRC32 $6C785BBD
Checksumming GPT Partition Data (Primary GPT Table : 2)…
GPT Partition Data (Primary GPT Tabl: verified   CRC32 $28B7052B
Checksumming  (Apple_Free : 3)…
                    (Apple_Free : 3): verified   CRC32 $00000000
Checksumming EFI System Partition (C12A7328-F81F-11D2-BA4B-00A0C93EC93B : 4)…
.....
EFI System Partition (C12A7328-F81F-: verified   CRC32 $B54B659C
Checksumming disk image (Apple_HFS : 5)…
..........................................................................................................................................................................
          disk image (Apple_HFS : 5): verified   CRC32 $212193FB
Checksumming  (Apple_Free : 6)…
..............................................................................................................................................................................
                    (Apple_Free : 6): verified   CRC32 $00000000
Checksumming GPT Partition Data (Backup GPT Table : 7)…
GPT Partition Data (Backup GPT Table: verified   CRC32 $28B7052B
Checksumming GPT Header (Backup GPT Header : 8)…
  GPT Header (Backup GPT Header : 8): verified   CRC32 $A566262B
verified   CRC32 $7B0D9EC5
/dev/disk9          	GUID_partition_scheme          	
/dev/disk9s1        	EFI                            	
/dev/disk9s2        	Apple_HFS                      	/Volumes/OS X Install ESD
eeny:iso osx$ hdiutil mount elcapitan.sparseimage
/dev/disk10         	GUID_partition_scheme          	
/dev/disk10s1       	Apple_HFS                      	/Volumes/OS X Base System
eeny:iso osx$ rm -rf /Volumes/OS\ X\ Base\ System/System/Installation/Packages
eeny:iso osx$ cp -rp /Volumes/OS\ X\ Install\ ESD/Packages /Volumes/OS\ X\ Base\ System/System/Installation
eeny:iso osx$ cp -rp /Volumes/OS\ X\ Install\ ESD/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System/
eeny:iso osx$ cp -rp /Volumes/OS\ X\ Install\ ESD/BaseSystem.dmg /Volumes/OS\ X\ Base\ System/
eeny:iso osx$ hdiutil detach /dev/disk10
"disk10" unmounted.
"disk10" ejected.
eeny:iso osx$ hdiutil detach /dev/disk9
"disk9" unmounted.
"disk9" ejected.

6. Remove the old dmg file, and convert the sparseimage to DMG file:

eeny:iso osx$ rm elcapitan.dmg
eeny:iso osx$ hdiutil convert elcapitan.sparseimage -format UDZO -o elcapitan.dmg
Preparing imaging engine…
Reading Protective Master Boot Record (MBR : 0)…
   (CRC32 $8ABD6A37: Protective Master Boot Record (MBR : 0))
Reading GPT Header (Primary GPT Header : 1)…
   (CRC32 $A51CFB2A: GPT Header (Primary GPT Header : 1))
Reading GPT Partition Data (Primary GPT Table : 2)…
   (CRC32 $64FF28F2: GPT Partition Data (Primary GPT Table : 2))
Reading  (Apple_Free : 3)…
   (CRC32 $00000000:  (Apple_Free : 3))
Reading disk image (Apple_HFS : 4)…
............................................................................................................................................................................
   (CRC32 $7FC7EAA0: disk image (Apple_HFS : 4))
Reading  (Apple_Free : 5)…
..............................................................................................................................................................................
   (CRC32 $00000000:  (Apple_Free : 5))
Reading GPT Partition Data (Backup GPT Table : 6)…
...............................................................................................................................................................................
   (CRC32 $64FF28F2: GPT Partition Data (Backup GPT Table : 6))
Reading GPT Header (Backup GPT Header : 7)…
...............................................................................................................................................................................
   (CRC32 $DAF1AFC4: GPT Header (Backup GPT Header : 7))
Adding resources…
...............................................................................................................................................................................
Elapsed Time:  5m 11.110s
File size: 6716560939 bytes, Checksum: CRC32 $5A7EC524
Sectors processed: 17508712, 14955572 compressed
Speed: 23.5Mbytes/sec
Savings: 25.1%
created: /Volumes/stuff/kit/iso/elcapitan.dmg

If you are unable to boot from it, convert it to iso:

eeny:iso osx$ hdiutil convert elcapitan.dmg -format UDTO -o elcapitan.iso
Reading Protective Master Boot Record (MBR : 0)…
Reading GPT Header (Primary GPT Header : 1)…
Reading GPT Partition Data (Primary GPT Table : 2)…
Reading  (Apple_Free : 3)…
Reading disk image (Apple_HFS : 4)…
............................................................................................................................................................................
Reading  (Apple_Free : 5)…
Reading GPT Partition Data (Backup GPT Table : 6)…
............................................................................................................................................................................
Reading GPT Header (Backup GPT Header : 7)…
............................................................................................................................................................................
Elapsed Time:  5m  2.254s
Speed: 28.3Mbytes/sec
Savings: 0.0%
created: /Volumes/stuff/kit/iso/elcapitan.iso.cdr
eeny:iso osx$ mv elcapitan.iso.cdr elcapitan.iso

There is also an alternative way, with the help of asr command:

eeny:iso osx$ hdiutil attach "Install OS X El Capitan.app/Contents/SharedSupport/InstallESD.dmg" -noverify -nobrowse -mountpoint /Volumes/esd
/dev/disk8          	GUID_partition_scheme          	
/dev/disk8s1        	EFI                            	
/dev/disk8s2        	Apple_HFS                      	/Volumes/esd
eeny:iso osx$ hdiutil create -o elcapitan.cdr -size 7316m -layout SPUD -fs HFS+J
..............................................................................................................................................................................
created: /Volumes/stuff/kit/iso/elcapitan.cdr.dmg
eeny:iso osx$ hdiutil attach elcapitan.cdr.dmg -noverify -nobrowse -mountpoint /Volumes/iso
/dev/disk9          	Apple_partition_scheme         	
/dev/disk9s1        	Apple_partition_map            	
/dev/disk9s2        	Apple_HFS                      	/Volumes/iso
eeny:iso osx$ asr restore -source /Volumes/esd/BaseSystem.dmg -target /Volumes/iso -noprompt -noverify -erase
	Validating target...done
	Validating source...done
	Retrieving scan information...done
	Validating sizes...done
	Restoring  ....10....20....30....40....50....60....70....80....90....100
	Remounting target volume...done
eeny:iso osx$ rm /Volumes/OS\ X\ Base\ System/System/Installation/Packages
eeny:iso osx$ cp -rp /Volumes/esd/Packages /Volumes/OS\ X\ Base\ System/System/Installation
eeny:iso osx$ cp -rp /Volumes/esd/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System/
eeny:iso osx$ cp -rp /Volumes/esd/BaseSystem.dmg /Volumes/OS\ X\ Base\ System/
eeny:iso osx$ hdiutil detach /Volumes/esd
"disk8" unmounted.
"disk8" ejected.
eeny:iso osx$ hdiutil detach /Volumes/OS\ X\ Base\ System
"disk9" unmounted.
"disk9" ejected.
eeny:iso osx$ hdiutil convert elcapitan.cdr.dmg -format UDTO -o elcapitan.iso
Reading Driver Descriptor Map (DDM : 0)…
Reading Apple (Apple_partition_map : 1)…
Reading disk image (Apple_HFS : 2)…
...............................................................................................................................................................................
Elapsed Time:  8m  8.119s
Speed: 15.0Mbytes/sec
Savings: 0.0%
created: /Volumes/stuff/kit/iso/elcapitan.iso.cdr
eeny:iso osx$ mv elcapitan.iso.cdr elcapitan.iso
eeny:iso osx$ ls -la elcapitan.iso
-rw-r--r--+ 1 osx  admin  7671382016 Sep 17 18:51 elcapitan.iso

Thou shalt not steal!

If you want to use this information on your own website, please remember: by doing copy/paste entirely it is always stealing and you should be ashamed of yourself! Have at least the decency to create your own text and comments and run the commands on your own servers and provide your output, not what I did!

Or at least link back to this website.

Recent content

root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root
root