Skip to content

A generator of (minimal) Linux kernel configuration files.

License

Notifications You must be signed in to change notification settings

rbarrois/kconfgen

Repository files navigation

kconfgen

https://secure.travis-ci.org/rbarrois/kconfgen.svg?branch=master Latest Version Supported Python versions Wheel status License

kconfgen is a tool to manage Linux kernel configuration files.

It enables users to:

  • Assemble kernel configuration files from fragments;
  • Ensure that only minimal lists of flags are kept in version control;
  • Split a single kernel configuration file in fragments by topic.

Usage:

kconfgen merge

Assemble a .config file from a set of (minimal) definitions

kconfgen merge \
  --kernel=/usr/src/linux-4.19.57 --arch=x86 \
  defconfig.net defconfig.crypto defconfig.laptop > .config

It is also possible to generate a defconfig file, which contains only the minimal set of flags to get to the provided .config file:

kconfgen merge \
  --kernel=/usr/src/linux-4.19.57 --arch=x86 \
  --minimal \
  defconfig.net defconfig.crypto defconfig.laptop > some_host.defconfig

kconfgen split

Split a .config file into a set of minimal definitions, based on their sections:

kconfgen split \
  --kernel=/usr/src/linux-4.19.57 --arch=x86 \
  --sections="net crypto fs" \
  ./fragments/ < ./.config

ls fragments/
  defconfig.net
  defconfig.crypto
  defconfig.fs
  defconfig

It is also possible to split by maximal section size:

kconfgen split \
  --kernel=/usr/src/linux-4.19.57 --arch=x86 \
  --max-symbols=20 \
  ./fragments/ < ./.config

ls fragments/
  defconfig.net
  defconfig.net_netfilter
  defconfig.crypto
  defconfig.drivers
  defconfig

kconfgen assemble

Assemble a defconfig file for a specific profile:

kconfgen assemble \
  --kernel=/usr/src/linux-4.19.57 \
  some-profile > defconfig

The list of profiles and the defconfig files to use for them is listed in a toml file:

[ profile.example ]
arch = "x86"
include = [ "core", "server" ]
extras = [ "defconfig.example", "defconfig.wifi_intel" ]

[ include.core ]
files = [ "defconfig.crypto", "defconfig.fs" ]

[ include.server ]
files = [ "defconfig.net", "defconfig.net_netfilter" ]

It is also possible to dynamically include more sections:

# Don't forget the `--` to separate the profile from extra includes
kconfgen assemble \
    --kernel=/usr/src/linux-4.19.57 \
    --include sound wireless \
    -- some-profile > defconfig

About

A generator of (minimal) Linux kernel configuration files.

Resources

License

Stars

Watchers

Forks

Packages

No packages published