/gardenlinux

Garden Linux - The best Linux for Gardener nodes!

Primary LanguagePythonMIT LicenseMIT


FeaturesBuild RequirementsQuick StartCustomize


Garden Linux is a Debian derivate that aims to provide a small, auditable linux image for most Cloud Providers and Bare Metal.

Features:

  • easy to use build system for OS images
  • builds are repeatable and auditable
  • small footprint (based on minbase of Debian)
  • subscribes for debian/testing, so no huge (problematic) version jumps needed
  • whole setup is purely systemd based (network, fstab etc.) #101 #102
  • initramfs is dracut generated #105
  • optional complete immutability #104
  • regular updates (since the whole build process is completely automated via a Tekton CI) and
  • thorough automated testing
    • unit tests against the local build and
    • integration tests against the various cloud Providers (only rc builds)
  • aiming to always integrate the latest LTS kernel #100 (currently 5.4)
  • running scans against common issues like
    • license voilations (we try to be completely open! #1)
    • scans for outdated software versions
  • project licensed under MIT
  • supporting major platforms out-of-the-box
    • major cloud providers AWS, Azure, Google, Alicloud
    • major virtualizer VMware, OpenStack, KVM
    • bare metal

Build Requirements

The entire build runs in a docker container (well a privileged one with extended capabilities - since we need loop back support) We can run on any system supporting Docker and having loopback support and has

  • 2+ GiB (use RAM-disk; use fs with sparse-file support)
  • 10+ GiB free disk space
  • Internet connection to access snapshot.debian.org and repo.gardenlinux.io

Required packages for a convenient build (on Debian/Ubuntu):

apt install bash docker.io docker-compose make coreutils gnupg git qemu-system-x86

Required packages for deployment on cloud services:

apt install python3

Required kernel modules

ext4, loop, squashfs, vfat, vsock (for VM image builds and extended virtualized tests)

Required packages to configure the CI pipeline

apt install bash git python

pip install tekton

Quick start

Build all images:

make all

Building specific platform images:

make aws
make gcp
make azure
make ali
make vmware
make openstack
make kvm
make metal

See in build/ folder for the outcome

Customize builds

Our build is based on a feature system.

The feature system distinguishes between

  • Platforms (aws, azure, google ...)
  • Features (container host, virtual host ...)
  • Modifiers (_slim. _readonly, _pxe ...)

if you want to manually build choose:

build.sh <Platform>,[<feature1>],[<featureX>],[_modifier1],[_modifierX] destination [version]

e.g. build.sh server,cloud,chost,vmware build/

builds a server image, cloud-like, with a container host for the VMware platform. The build result can be found in build/

also look into our Version scheme since adding a date or a Version targets the whole build for a specific date