Metadata-Version: 2.1
Name: autokernel
Version: 0.9.1
Summary: A tool to autodetect and manage kernel configuration options
Home-page: https://github.com/oddlama/autokernel
Author: oddlama
Author-email: oddlama@oddlama.org
Maintainer: oddlama
Maintainer-email: oddlama@oddlama.org
License: MIT
Keywords: autokernel,config,detect,detection,kconf,kconfiglib,kernel,manager
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Security
Classifier: Topic :: System :: Operating System Kernels
Classifier: Topic :: System :: Operating System Kernels :: Linux
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Requires-Dist: kconfiglib
Requires-Dist: lark-parser
Requires-Dist: python-dateutil
Requires-Dist: requests
Requires-Dist: sympy
Requires-Dist: importlib-resources ; (python_version<'3.7')

<br/><br/>
[![autokernel](./docs/imgs/autokernel_banner.svg)](https://autokernel.oddlama.org)
<br/><br/>

[Quick start guide](https://autokernel.oddlama.org/en/latest/intro/quick-start-guide.html) \|
[Documentation](https://autokernel.oddlama.org/en/latest) \|
[Gitter Chat](https://gitter.im/oddlama-autokernel/community)

[![Docs](https://readthedocs.org/projects/autokernel/badge/?version=latest)](https://autokernel.oddlama.org/en/latest/?badge=latest)
[![Gitter](https://badges.gitter.im/oddlama-autokernel/community.svg)](https://gitter.im/oddlama-autokernel/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)

## About autokernel

Autokernel is primarily a kernel configuration management tool.
Its main purpose is to generate a kernel `.config` file from
a more formal description of your configuration.
To help you writing the configuration, it comes with some helpful features:

* Detect kernel options for your system (based on information from `/sys`)
* Manage the kernel configuration in a more structured and sane way.
  Option conflict detection and conditional expressions for configuration statements
  allow writing a sound, modular and reusable configuration.
* Build the kernel (and initramfs) and install them

You may use it for any combination of the above, There is no need to
use it as a build system if you only want to detect options for your device.

Please have a look at the [Introduction](https://autokernel.oddlama.org/en/latest/intro/introduction.html)
section from the documentation, which explains more about what
this tool is designed for, and how it works.

Detecting kernel options                                                           | Automatically satisfying a kernel option
---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------
[![asciicast](https://asciinema.org/a/320174.svg)](https://asciinema.org/a/320174) | [![asciicast](https://asciinema.org/a/320179.svg)](https://asciinema.org/a/320179)

## Quick start

To get started right away, please check out the [Quick start guide](https://autokernel.oddlama.org/en/latest/intro/quick-start-guide.html).
For in-depth command explanations, visit the [Usage section](https://autokernel.oddlama.org/en/latest/contents/usage.html).

## Installation

Use can use pip to install autokernel, or run from source:

#### pip

```bash
pip install autokernel
```

#### From source

```bash
git clone "https://github.com/oddlama/autokernel.git"
cd autokernel
pip install -r requirements.txt
./bin/autokernel.py --help
```

Afterwards you should run `autokernel setup` once to create a default configuration
in `/etc/autokernel`.

## Kernel hardening

A special note if you are interested in hardening your kernel:
Be aware that autokernel provides a preconfigured module for kernel
hardening ([hardening.conf](./autokernel/contrib/etc/modules_d/hardening.conf)), which is
compatible with any kernel version >= 4.0. Every choice is also fully documented
and explanined. Feel free to adjust it to your needs.

## Acknowledgements

I would like to especially thank the following projects and people behind them:

- [kconfiglib](https://github.com/ulfalizer/Kconfiglib) for the awesome python library to load and process Kconfig files, whithout which this project would have been impossible.
- [sympy](https://www.sympy.org/) for the sophisitcated symbolic logic solver
- [lark](https://github.com/lark-parser/lark) for the great parsing library
- [LKDDb](https://cateee.net/lkddb/) for providing the awesome Linux Kernel Driver Database (which is used for option detection)
- [KSSP](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings) for the great list of kernel hardening options
- [CLIP OS](https://docs.clip-os.org/clipos/kernel.html#configuration) for their well documented and well chosen kernel options
- [kconfig-hardened-check](https://github.com/a13xp0p0v/kconfig-hardened-check) for the collection of options from several kernel hardening resources



