Copying OpenIndiana Image onto USB in OS X

Multithreaded JavaScript has been published with O'Reilly!

What is OpenIndiana? It is a Unix-like OS based on the Illumos kernel, which is in turn based on OpenSolaris.

Follow this guide if you would like to “burn” the OpenIndiana installer to a USB drive from within OS X. Doing this will allow you to boot from this USB drive so that you can install it on another machine. This installer requires a 1GB+ drive, and it will destroy everything on said drive. You probably won't be able to install it on your Mac unless you do some funky firmware hacking which I don't know how to do.

First, download both the 1G.header file, and the .usb image of your choice from the OpenIndiana Download page, saving them both into the Downloads directory. Next you'll want to plug in your thumb drive.

Open up a terminal and run these commands. We want to figure out what the location of the drive is in /dev, since you'll need that to copy the image to. You can't just copy files to the mounted location you see in Finder.

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *128.0 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS System                  127.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *750.2 GB   disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:                  Apple_HFS Media                   649.8 GB   disk1s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk1s3
   4:                  Apple_HFS Server                  99.3 GB    disk1s4
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *2.0 GB     disk2
   1:                 DOS_FAT_16 2GB-IBM                 2.0 GB     disk2s1

In my example, the thumb drive is named 2GB-IBM in Finder, so I know that the logical location of the drive is /dev/disk2, while the partition the data is on is /dev/disk2s1.

Now, we want to dismount the device from the OS so that we can make whatever changes we want to it. Unfortunately, if you drag and drop the icon in finder to the trashcan, it will eject the whole device, not just the partition. So, you'll want to do the following in terminal (making sure to use the partition name from your machine):

$ diskutil umount /dev/disk2s1
Volume 2GB-IBM on disk2s1 unmounted

Now that this is done, it's time to write the image files. You'll want to switch over to root, and use some dd magic to copy the image to your device (the drive, not the partition). Note that you'll want to change the .usb filename (since you'll likely download a different version), as well as the path to the drive location.

$ cd ~/Downloads
$ sudo su
# cat 1G.header oi-dev-151a5-text-x86.usb | dd bs=1024k of=/dev/disk2
0+38330 records in
0+38330 records out
627990016 bytes transferred in 203.415960 secs (3087221 bytes/sec)

If you see nothing happen for a long time, it is probably writing the image (this can be confirmed if your USB light is blinking). When it is finished, you'll see those three lines of output appear.

If you see the following error, you need to be running the commands as root. Just adding sudo to the beginning of the cat/dd command won't work, since you'll run the cat as root and the dd as normal user:

dd: /dev/disk2: Permission denied

If you see an error similar to this, you're trying to unmount or eject a non-mounted device. You might have typo'd the name, or you might have to unplug and replug the device in:

umount: /dev/disk2: not currently mounted

If you see this error, your partition needs to be unmounted before you attempt to write to it:

dd: /dev/disk2s1: Resource busy

Good luck, and leave a comment if something didn't work for you.

Tags: #macos
Thomas Hunter II Avatar

Thomas has contributed to dozens of enterprise Node.js services and has worked for a company dedicated to securing Node.js. He has spoken at several conferences on Node.js and JavaScript and is an O'Reilly published author.