Skip to content

systemd/mkosi

Use this GitHub Action with your project

Add this Action to an existing workflow or create a new one.

View on Marketplace
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
October 18, 2023 21:39
December 18, 2023 21:27
July 15, 2016 10:44
November 30, 2023 12:15
November 3, 2016 11:27
December 22, 2023 13:59
December 18, 2023 21:27

mkosi β€” Build Bespoke OS Images

A fancy wrapper around dnf --installroot, apt, pacman and zypper that generates customized disk images with a number of bells and whistles.

For a longer description and available features and options, see the man page.

Packaging status

Installation

You can install mkosi from your distribution using its package manager or install the development version from git. If you install mkosi using your distribution's package manager, make sure it installs at least mkosi v16 or newer (Use mkosi --version to check). If your distribution only packages an older version of mkosi, it is recommended to install mkosi using one of the alternative installation methods listed below instead.

Running mkosi from the repository

To run mkosi straight from its git repository, you can invoke the shim bin/mkosi. The MKOSI_INTERPRETER environment variable can be set when using the bin/mkosi shim to configure the python interpreter used to execute mkosi. The shim can be symlinked to e.g. /usr/local/bin to make it accessible from the PATH.

git clone https://github.com/systemd/mkosi
ln -s $PWD/mkosi/bin/mkosi /usr/local/bin/mkosi
mkosi --version

Python installation methods

mkosi can also be installed straight from the git repository url using pipx:

pipx install git+https://github.com/systemd/mkosi.git
mkosi --version

which will transparently install mkosi into a Python virtual environment and a mkosi binary to ~/.local/bin. This is, up to the path of the virtual environment and the mkosi binary, equivalent to

python3 -m venv mkosivenv
mkosivenv/bin/pip install git+https://github.com/systemd/mkosi.git
mkosivenv/bin/mkosi --version

You can also package mkosi as a zipapp that you can deploy anywhere in your PATH. Running this will leave a mkosi binary in builddir/

git clone https://github.com/systemd/mkosi
cd mkosi
tools/generate-zipapp.sh
builddir/mkosi --version

Besides the mkosi binary, you can also call mkosi via

python3 -m mkosi

when not installed as a zipapp.

Please note, that the python module exists solely for the usage of the mkosi binary and is not to be considered a public API.

kernel-install plugin

mkosi can also be used as a kernel-install plugin to build initrds. To enable this feature, install kernel-install/50-mkosi-initrd.install into /usr/lib/kernel/install.d and install mkosi-initrd/mkosi.conf into /usr/lib/mkosi-initrd. Extra distro configuration for the initrd can be configured using drop-ins in /usr/lib/mkosi-initrd. Users can add their custom configuration in /etc/mkosi-initrd.

Once installed, the mkosi plugin can be enabled by writing initrd_generator=mkosi-initrd to /usr/lib/kernel/install.conf or to /etc/kernel/install.conf.

Hacking on mkosi

To hack on mkosi itself you will also need mypy, for type checking, and pytest, to run tests. We check tests and typing in CI (see .github/workflows), but you can run the tests locally as well.

References

Community

Find us on Matrix at #mkosi:matrix.org.