cirros-dev / cirros

116 stars 33 forks source link

The CirrOS project provides linux disk and kernel/initramfs images. The images are well suited for testing as they are small and boot quickly. Please note that:

CirrOS images have useful tools and function for debugging or developing cloud infrastructure. Supported architectures are:

Resulting images can be booted using QEMU. Several ways of booting are provided:

Build instructions

The following works on Ubuntu 22.04 LTS, running on x86_64. Native building for other architectures is not recommended. Support for building under other distributions is limited and not tested.

Clone sources

Install required software

To get build going we need some packages installed. If you use Ubuntu 22.04 LTS then all you need to do is:

If you use other distribution then please check what script does and install required components using methods preferred by your distribution.

Short version

Once you fetched source code all you have to do something like:

If you want to build for only a subset of supported architectures, use the ARCHES variable like:

Resulting images will be present in ../build-dYYMMDD/release directory.

Long, detailed version

To use it, you would do something like:

   $ wget https://github.com/mozilla/gecko-dev/raw/master/security/nss/lib/ckfw/builtins/certdata.txt -O certdata.txt
   $ ./bin/mkcabundle <certdata.txt > src/etc/ssl/certs/ca-certificates.crt

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.

   $ kver="5.15.0-48.54"
   $ ./bin/grab-kernels "$kver" $ARCH

testing images

We provide simple script to test resulting image. You run it this way:

   $ RELEASE_DIR=$PWD/../build-*/release IMG=$PWD/../build-*/release/cirros-*-x86_64-disk.img bin/test-boot

Note: "RELEASE_DIR" variable is required only for aarch64 and arm images.

Once image boots you can login with 'cirros' user using 'gocubsgo' as password. Root access is granted with 'sudo' call.