OVERVIEW

May 7, 2026 ยท View on GitHub

kmod - Linux kernel module handling

OVERVIEW

kmod is a set of tools to handle common tasks with Linux kernel modules like insert, remove, list, check properties, resolve dependencies and aliases.

These tools are designed on top of libkmod, a library that is shipped with kmod. See libkmod/README.md for more details on this library and how to use it. The aim is to be compatible with tools, configurations and indexes from module-init-tools project.

Links

Compilation and installation

In order to compile the source code you need:

  • C11 compiler, supporting a range of GNU extensions - GCC 8+, Clang 6+
  • POSIX.1-2008 C runtime library - Bionic, GNU C library, musl

Optional dependencies, required with the default build configuration:

  • ZLIB library
  • LZMA library
  • ZSTD library
  • OPENSSL library (signature handling in modinfo)

All the optional dependencies are loaded on demand via dlopen by default. This can be changed via the dlopen build option. Typical configuration and installation:

meson setup builddir/
meson compile -C builddir/
sudo meson install -C builddir/

For end-user and distributions builds, it's recommended to use:

meson setup --buildtype release builddir/

Hacking

When working on kmod, use the included build-dev.ini file, as:

meson setup --native-file build-dev.ini builddir/

The testsuite can be executed with:

meson test -C builddir

It builds test kernel modules, so kernel headers need to be pre-installed. By default it tries to use the kernel header for the currently running kernel. KDIR=any environment variable can be used to tell it to use any installed kernel header or KDIR=/path/to/specific/headers when a specific one is needed. Example:

KDIR=any meson test -C builddir

Make sure to read our contributing guide and the other READMEs: libkmod and testsuite.

Compatibility with module-init-tools

kmod replaced module-init-tools, which was EOL'ed in 2011. All the tools were rewritten on top of libkmod and they can be used as drop in replacements. Along the years there were a few behavior changes and new features implemented, following feedback from Linux kernel community and distros.