Bootstrappr

A little while ago, I made a new Mac deployment tool available:

https://github.com/munki/bootstrappr

Bootstrappr is really nothing more than a Bash script that installs any packages it finds in an adjacent packages directory. There’s no GUI, no bells and whistles.

What is it for? Why would you use it?

You’d use it for installation-based deployment workflows on iMac Pro (and potentially any Mac).

The iMac Pro does not support NetBoot, which is commonly used for initial setup/deployment workflows. Machines are booted from a network image, and then the deployment tool does one or more of the following:

  • Erases the startup disk and/or repartitions the internal drive
  • Restores a deployment image to a target volume
  • Installs macOS to a target volume
  • Installs one or more packages to a target volume
  • Stages one or more scripts or packages to be run or installed on next boot from a target volume

For environments where NetBoot wasn’t available or practical, external drives (USB, Firewire, Thunderbolt) were often used as a boot volume. Once booted from the external drive, most of the above operations could be done.

But the iMac Pro also makes using external drives difficult. It is the first Mac to support Secure Boot, and out of the box it will not boot from external drives. You can configure an iMac Pro to boot from external drives, but it’s a pain, completely manual, and takes several minutes (at least).

So what’s left?

Target Disk Mode: you can start up an iMac Pro in Target Disk Mode by holding down the T key as it starts up. You can then connect it to another Mac (I hope you have the right cables/adapters), and then install packages or possibly even restore an image to the iMac Pro’s internal drive.

Recovery: you can start up in Recovery by holding down Command-R at boot. Once in Recovery you can open a Terminal and install packages to the macOS start up volume.

Bootstrappr is intended for use in Recovery, and with installation-based workflows. (See https://managingosx.wordpress.com/2017/11/20/macos-installation-based-workflows/)

I create a disk image containing Bootstrappr and the packages I wish to install, and make that disk image available at http://macbootstrap (You can pick any URL you wish — this one is short and easy to remember. Alternately, you could create USB Thumb drives with the exact same contents and use those.). Once booted into Recovery, you can open Terminal and do this:

# hdiutil attach http://macbootstrap
/dev/disk3          	GUID_partition_scheme          	
/dev/disk3s1        	Apple_HFS                      	/Volumes/bootstrap
# /Volumes/bootstrap/run 
*** Welcome to bootstrappr! ***
Available volumes:
    1  Macintosh HD
    2  Target Volume
    3  bootstrap
Install to volume # (1-3): 2

Installing packages to /Volumes/Target Volume...
installer: Package name is foo
installer: Installing at base path /Volumes/Target Volume
installer: The install was successful.
installer: Package name is bar
installer: Installing at base path /Volumes/Target Volume
installer: The install was successful.
installer: Package name is baz
installer: Installing at base path /Volumes/Target Volume
installer: The install was successful.
installer: Package name is Munki - Managed software installation for OS X
installer: Installing at base path /Volumes/Target Volume
installer: The install was successful.

Packages installed. What now?
    1  Restart
    2  Shut down
    3  Quit
Pick an action # (1-3): 3

The packages I install create a local admin account, suppress the Setup Assistant, and install and configure Munki. When the machine reboots, Munki takes over and finishes the setup of the machine.

With Secure Boot we should be able to trust the OS installed by Apple on fresh-out-of-the-box machines; there’s no need to re-install macOS. Instead we just install what we need to get the remainder of our initialization/deployment process going. Bootstrappr is one way to accomplish that on the iMac Pro (and presumably future Macs).


Bootstrappr