kairos-white-column 5bc2fe34
Immucore

The Kairos immutability management interface

license docs go report card

## What is Immucore? --- Immucore is the management interface to mount Kairos disks and filesystems. It is a dracut module responsible for mounting the root tree during boot time with the specific immutable setup. The immutability concept refers to read only root (/) system. To ensure the linux OS is still functional certain filesystem paths are required to be writable, in those cases an ephemeral overlay tmpfs filesystem is set in place. Ephemeral refers that changes to files or dirs in this filesystem will be lost upon reboot. Additionally, the immutable rootfs module can also mount a custom list of device blocks with read write permissions, those are mostly devoted to store persistent data. Immucore is mostly configured via kernel command line parameters or via the `/run/cos/cos-layout.env` environment file. These are the read write paths the module mounts as part of the overlay ephemeral tmpfs: `/etc`, `/root`, `/home`, `/opt`, `/srv`, `/usr/local` and `/var`. ## Kernel configuration parameters The immutable rootfs can be configured with the following kernel parameters: * `cos-img/filename=`: This is one of the main parameters, it defines the location of the image file to boot from. This defines the booting mode for Immucore, setting in motion the full workflow to end up with an immutable system. * `rd.immucore.overlay=tmpfs:`: This defines the size of the tmpfs used for the ephemeral overlayfs. It can be expressed in MiB or as a % of the available memory. Defaults to `rd.immucore.overlay=tmpfs:20%` if not present. Backwards compatible with the old `rd.cos.overlay` directive. * `rd.immucore.overlay=LABEL=`: Optionally and mostly for debugging purposes the overlayfs can be mounted on top of a persistent block device. Block devices can be expressed by LABEL (`LABEL=`) or by UUID (`UUID=`) Backwards compatible with the old `rd.cos.overlay` directive. * `rd.immucore.mount=LABEL::`: This option defines a persistent block device and its mountpoint. Block devices can also be defined by UUID (`UUID=:`). This option can be passed multiple times. Backwards compatible with the old `rd.cos.mount` directive. * `rd.immucore.oemlabel=