Skip to content
No description, website, or topics provided.
Shell Awk Makefile Other
Branch: master
Clone or download
hrw Merge pull request #16 from hrw/travis-minimal
CI: we do not need Ruby so let go with minimal shell env
Latest commit cdab2bf Jan 17, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
conf buildroot 2019.02.1 ppc64le config, using musl and libtirpc May 16, 2019
doc doc: update create-release for tag different than version Oct 10, 2017
lxd-meta Add stream data and creation of metadata for lxd and -lxc.tar.xz. Nov 20, 2017
src Retry on metadata transient issues Jan 8, 2020
ChangeLog Change the password in /etc/shadow to gocubsgo. Nov 3, 2016
Makefile fix make br-menuconfig May 17, 2015
README README file updates. May 16, 2019
TODO add TODO Oct 20, 2011
fixup-fs make fixup-fs idempotent Jan 14, 2013
makedevs.list makedevs.list: fix device type of /dev/random and /dev/urandom May 10, 2013


This is a project to build a small cloud image that has useful tools and
function for debugging or developing cloud infrastructure.

The following works on Ubuntu 18.04 LTS, running on x86_64.  Native building
for other architectures is not recommended.

To use it, you would do something like:
 * get the build dependencies:
   $ ./bin/system-setup

 * git clone
   git clone git://
   git clone git+ssh://

 * cd cirros

 * download buildroot and setup environment
   $ br_ver="2019.02.1"
   $ mkdir -p ../download
   $ ln -snf ../download download
   $ ( cd download && wget${br_ver}.tar.gz )
   $ tar -xvf download/buildroot-${br_ver}.tar.gz
   $ ln -snf buildroot-${br_ver} buildroot

 * optionally update src/etc/ssl/certs/ca-certificates.crt
   This is not required, but can be done to make sure its up to date.
   # wget -O certdata.txt
   # ./bin/mkcabundle <certdata.txt > src/etc/ssl/certs/ca-certificates.crt

 * apply any local cirros patches to buildroot
   ( cd buildroot && QUILT_PATCHES=$PWD/../patches-buildroot quilt push -a )

 * download the buildroot sources
   $ ARCH=i386
   $ make ARCH=$ARCH br-source

 * Build buildroot for a given arch
   # ARCH should be set to 'i386', 'x86_64', 'arm' or 'aarch64'
   $ make ARCH=$ARCH OUT_D=$PWD/output/$ARCH

   This will do a full buildroot build, which will take a while. The output
   that CirrOS is interested in is output/i386/rootfs.tar.
   That file is the full buildroot filesystem, and is used as input for
   subsequent steps here.

 * Download a kernel to use.
   The kernel input to bundle must be in deb format. The ubuntu '-virtual'
   kernel is used as a starting point.

   # kver is newest -updates kernel from
   $ kver="4.4.0-148.174"
   $ ./bin/grab-kernels "$kver" $ARCH

 * Download EFI grub to use.
   The grub-efi input to bundle will be in tar.gz format.

   # gver is newest from
   $ gver="2.02~beta2-36ubuntu3.22"
   $ ./bin/grab-grub-efi "$gver" $ARCH

 * build disk images using bin/bundle
   $ sudo ./bin/bundle -v --arch=$ARCH output/$ARCH/rootfs.tar \
      download/kernel-$ARCH.deb download/grub-efi-$ARCH.tar.gz output/$ARCH/images

 * Then, test using the images
   $ kvm -drive file=disk.img,if=virtio -curses
   $ kvm file=blank.img,if=virtio -curses \
      -kernel kernel -initrd initrd -drive -append "debug-initrd"
You can’t perform that action at this time.