Loading a new beaglebone OS onto a SD card using Mac OS X

Installing a new version of the angstrom Linux distribution onto a beagle bone board is as simple as copying the operating system into a SD card. For Mac OS X users, this task can be done through the terminal.

Step #1 – Go to the beaglebone angstrom website, and download the latest *.img.xz pre-compiled file.

Step #2 – Since xz is probably not installed in your base Mac OS X system, download the homebrew software package. After you install homebrew you can also install xz by typing the following in the command line:

brew install xz

Step #3 – In order for you to uncompress the OS into the SD card you need to have administrator privileges. In my computer, I have an account called administrator, so first I need to substitute my current user identity with the administrator. This can be done using the su command. You also need to be in the superuser mode, so after su you also need to use sudo.

su – Administrator
sudo -s

Unlike what is reported on the angstrom website you probably won’t be able to write to the SD card without running unmount first. When you try to uncompress the OS file into the SD card you will probably get a Resource busy error message.
Here is a summary of all commands this far:

Step #4 – In order to overwrite all the partitions on the SD card, you have to make sure the mac OS isn’t using it first. On the command line, type mount and once you know in which directory the device is mounted on (eg. /Volumes/BEAGLE_BONE), type:
[stextbox id="grey" float="false" image="null"]diskutil umountDisk /Volumes/BEAGLE_BONE[/stextbox]

Step #5 – Once that is done you need to figure out what is the system identifier for your SD card (e.g. disk1). Just type:

diskutil list

Step #6 – You are now ready to load the OS into the SD card. This process will take around 30 minutes.

xz -dkc Angstrom-Cloud9-IDE-eglibc-ipk-v2011.10-core-beaglebone-r0.img.xz > /dev/disk1


  1. Thanks for the comments. Good stuff.

    A couple of suggestions. “brew install wget” you mean “brew install xz”.

    Secondly, instead of using su/sudo at the start, you can just type “sudo ” in front of the “xz” command. All the others you can do as a normal user, and it is safer to use sudo this way then getting root access all the time.



    • Thank you for the comment. There is always a typo… right? I will change the “brew install xz” right now.
      As for the su/sudo comment. I agree with you. However in macosx by default a normal user is not allowed on the list of sudoers. I could have gone into the administrator account and added the normal user to the sudoers list, but that will probably confuse some readers… and if you accidently mess up the appropriate files, things can go terribly wrong with the system.

      Thank you!

      • Well, that’s why he mentioned to NOT use sudo for every single command :) contrary to popular opinion, 90% of the users may mess up something, so it is better to NEVER give regular users the su powers.

        If you need to be the su, the you use sudo but just for that command(s), otherwise there is no real need to have the username saved in the sudoer or to log in as root honestly.

        Even the most skilled unix admin think twice before logging in as root :)

  2. awesome–thanks!

  3. Thanks! This worked for me (BeagleBone A3). Indeed took almost 40 minutes!

  4. Thx for this. The Angstrom distros now seem to be .gz files. I just tried another way using gunzip -c instead of xz and this seemed to go ok *but* the ‘bone doesn’t boot off the uSD produced. See http://islanddon.net/beaglebone-and-the-mac (slightly more recent)

    The other difference is in writing the image to the uSD. You do so directly whereas Don’s example uses dd. Can you shed any light on that?

    Thx. P

    • That is incorrect… the BeagleBone is still available as a xz file.
      The end result is the same. With the “>” operator I am sending the output of the decompression to the usD. The dd command is a low-level copy utility.

      The “>” operator also works with other things… for example files.
      If you type:
      echo “hello”
      This will type hello to the console
      If you type:
      echo “hello” > file.txt
      This will redirect the output from the console straight into a file called file.txt, overwriting anything that was in that file (if any).

  5. Excellent instructions. Thanks for posting. Adding my thread of actions (using macports below in case they are helpful)

    # Download the latest version of Angstrom

    # Install xz using MacPorts
    sudo port install xz

    # Insert your SD card and list disks, making note of BeagleBone drive (by size)
    diskutil list

    # Unmount the Mac-readable partition (in my case: disk1s1 ) of the disk (disk1 for me)
    diskutil unmount disk1s1

    # Copy image over to SD card (replace “disk1” with your own)
    xz -dkc Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.05-beaglebone-2012.06.18.img.xz > /dev/disk1

    # Eject SD card
    diskutil eject disk1

    # Put SD card in the BeagleBone and power up!

    • thanks for posting — I was running into a Permission Denied issue when trying to write to my card. I had assumed that ejecting the card via Finder would free it up for writing — it did not.

      Things started working when I did
      diskutil unmount disk1s1



  1. MAKE | How-To: Get Started with the BeagleBone - [...] Nuno Alves wrote a great post on how to load a new beaglebone OS into a SD card using …
  2. Como atualizar o Angstrom para a Beaglebone no Mac | Elyézer Rezende - [...] um novo assunto aqui no blog. Aguardem por novos posts sobre Linux Embarcado e BeagleBone.Fonte: http://www.nunoalves.com/open_source/?p=90Compartilhe:EmailPrint This entry was posted …
  3. BeagleBone Setup: the lost packages - [...] on the Getting Started Page, but the process for Mac / Linux is woefully neglected. Thankfully nunoalves.com has a …