The official Cloud Foundry app container rootfs
Ruby Shell Makefile Dockerfile
Clone or download

Cloud Foundry cflinuxfs2

This repo contains scripts for creating warden root filesystems.

  • cflinuxfs2 derived from Ubuntu 14.04 (Trusty Tahr)


  • GNU make
  • Docker

Adding a new package to the rootfs

cflinuxfs2/build/ has a list of packages passed to apt-get install as well.

Creating a rootfs tarball

To create a rootfs for the cflinuxfs2 stack:


This will create the cflinuxfs2.tar.gz file, which is the artifact used as the rootfs in Cloud Foundry deployments.

Creating a BOSH release from the rootfs tarball

To start, clone the repository containing the cflinuxfs2-rootfs BOSH release:

git clone`
cd cflinuxfs2-release`

Replace the old cflinuxfs2 tarball with the new tarball created above:

rm -f config/blobs.yml
mkdir -p blobs/rootfs
cp <path-to-new-tarball>/cflinuxfs2.tar.gz blobs/rootfs/cflinuxfs2-new.tar.gz

Create a dev release and upload it to your BOSH deployment:

bosh create release --force --with-tarball --name cflinuxfs2-rootfs
bosh upload release <generated-dev-release-tar-file>

If your Diego deployment manifest has version: latest indicated for the cflinuxfs2-rootfs release, then redeploying your Diego will enable this new rootfs to be used in your app containers.

Testing the rootfs

To run the local tests, just run rspec. If the top level of this repo contains a file named cflinuxfs2.tar.gz, the tests will be run against this file. Otherwise, make will be run to create a new rootfs.

To test the rootfs BOSH release, see the instructions here

Release pipeline

The generation and release of a new rootfs happens on the cflinuxfs2 CI pipeline.

  • A new stack is generated with make.

  • A dev BOSH release of that new stack is generated and deployed to the BOSH Lite at and the rootfs smoke tests run.

  • CF and Diego are deployed to that BOSH Lite. The cf-acceptance-tests are then run against the deployment.

  • Once all tests pass and the product manager ships the release, the rootfs tarball can be found as a Github Release, Docker Image, and as a BOSH release. A commit is also made to update the blobs on cf-release develop.