The Shining Path of Least Resistance


Building Chef on the BeagleBone Black

Posted by mattray on October 20, 2016

chef-logoI wanted to get Chef running on my BeagleBone Black running Debian, using the full-stack Omnibus builder they use for their packages. While ARM is not a supported platform, the open source community had already done a lot of work getting it ready. The first step was to get the build toolchain in place, so I followed the instructions from I had to make 1 small fix (already merged), but here’s how I got omnibus-toolchain installed:

sudo apt-get install autoconf binutils-doc bison build-essential flex gettext ncurses-dev libssl-dev libreadline-dev zlib1g-dev git libffi6 libffi-dev ruby ruby-dev
sudo gem install bundler
git clone
cd omnibus-toolchain
sudo bundle install --without development
sudo bundle exec omnibus build omnibus-toolchain
sudo FORCE_UNSAFE_CONFIGURE=1 bundle exec omnibus build omnibus-toolchain

Note the FORCE_UNSAFE_CONFIGURE=1, there was a bug in gtar that I didn’t debug.

Luckily Carl Perry already had an ARMHF Chef 12.8.1 build available for bootstrapping.

After installing the package locallly

dpkg -i /tmp/chef_12.8.1%2B20160319051316-1_armhf.deb

I did a chef-client run remotely

$ knife bootstrap -x debian --sudo -N beaglebone
Creating new client for beaglebone
Creating new node for beaglebone
Connecting to -----> Existing Chef installation detected Starting the first Chef Client run... Starting Chef Client, version 12.8.1 resolving cookbooks for run list: [] Synchronizing Cookbooks: Installing Cookbook Gems: Compiling Cookbooks... [2016-10-13T07:53:21+11:00] WARN: Node beaglebone has an empty run list. Converging 0 resources Running handlers: Running handlers complete Chef Client finished, 0/0 resources updated in 14 seconds

The next step was to get the omnibus cookbook in place to use my machine as a builder. After sorting through the dependencies and getting it uploaded, I had to make 1 small change to disable grabbing the omnibus-toolchain because I had already built it locally. Once that was in place, it was a matter of sudoing to the omnibus user, downloading the Chef source and running

cd chef/omnibus
bundle install --without development
bundle exec omnibus build chef -l debug

And approximately 3 hours later I had a new chef_12.15.27+20161013214455-1_armhf.deb which worked great once installed.

root@beaglebone:/home/omnibus/chef-12.15.27/omnibus/pkg# dpkg -i chef_12.15.27+20161013214455-1_armhf.deb
Selecting previously unselected package chef.
(Reading database ... 82288 files and directories currently installed.)
Preparing to unpack chef_12.15.27+20161013214455-1_armhf.deb ...
Unpacking chef (12.15.27+20161013214455-1) ...
Setting up chef (12.15.27+20161013214455-1) ...
Thank you for installing Chef!

I’ll continue to refine the build process and follow along with new releases of Chef. Now I can move on to the next more important piece, which is actually using the box. Feel free to download it: chef_12.15.27+20161013214455-1_armhf.deb

4 Responses to “Building Chef on the BeagleBone Black”

  1. […] that I have Chef installed, I wanted to make a new build for Chef 12.17.1. The build version of Ruby used by omnibus-toolchain […]

  2. David Wolf said

    Hey there! At first thank you for all the infos and hints you provied here!

    I’m trying to get a chef running via the omnibus builder on a raspberry pi with Raspbian Light and followed your steps for guidance.
    But I’m facing some problems and as I’m new to Linux, Pi’s and stuff I thought I’ll ask you if you could help me out!

    I always end up with some “transitve_dependency” errors or license errors such as:

    – while doing “sudo FORCE_UNSAFE_CONFIGURE=1 bundle exec omnibus build omnibus-toolchain”:

    Software ‘omnibus’ is not supported project type for transitive dependency license collection. See for the list of supported languages and dependency managers. If this project does not have any transitive dependencies, consider setting ‘skip_transitive_dependency_licensing’ to ‘true’ in order to correct this error.

    ==> Somehow I fixed this by setting skip_transitive_dependency_licensing to true but I dont know if this is the right way. Should this fail at all?

    – later while doing “bundle exec omnibus build chef -l debug”:

    Encountered error(s) with project’s licensing information.
    Failing the build because :fatal_licensing_warnings is set in the configuration.

    Dependency ‘jaro_winkler’ version ‘1.5.3’ under ‘ruby_bundler’ is missing license files information.
    >> Found 32 dependencies for ruby_bundler. 31 OK, 1 with problems
    If you are encountering missing license or missing license file errors for **transitive** dependencies, you can provide overrides for the missing information at

    I hope you can help me out!

    Greetz & Many thanks!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: