Skip to content
/ tuxml Public

The main repository of the TuxML project contains the scripts for building Linux kernel configurations in the large.

License

Notifications You must be signed in to change notification settings

TuxML/tuxml

Repository files navigation

TuxML: Machine Learning and Linux Kernel

The goal of TuxML is to predict properties of Linux Kernel configurations (e.g., does the kernel compile? what's its size? does it boot?). The Linux Kernel provides nearly 15000 configuration options: there is an infinity of different kernels. As we cannot compile, measure, and observe all combinations of options (aka configurations), we're trying to learn Linux kernel properties out of samples of configurations. See talk at Embedded Linux Conference Europe in 2019:

Alt text

You can easily loan your machine and contribute if you want, just copy and paste the line below!

TuxML's
Logo

The goal of the TuxML team is to develop tools, mainly based on Docker and Python, to massively compile and gather data about thousand of kernel configurations. The TuxML name comes from the combination of Tux, the mascot of the Linux Kernel, and ML for statistical Machine Learning.

I want to help by compiling some Linux kernels!

Requirements : Python3 and Docker are needed (do not forget to start the docker service usually with sudo service docker start).

wget https://raw.githubusercontent.com/TuxML/tuxml/master/kernel_generator.py ; python3 kernel_generator.py --dev 1

Copy this command and run it in a terminal. It will send compilation results to our database. You can modify the 1 parameter to any other number (it's the number of kernels your machine will compile). The python script gives you some other options that you can use, see this page for more.

For a more up-to-date version of TUXML, please consider the dev branch

Build, Docker images

git clone https://github.com/TuxML/tuxml 
cd tuxml 
cd docker_management 
python3 docker_image_tuxml.py -f
docker images 
cd ..
python3 kernel_generator --dev 1 --linux_version 5.8 --tiny

https://gitlab.inria.fr/diverse/docker/container_registry

I want to know more about the project!

Please check our wiki.

Contributors' list

  • Mathieu Acher (University Rennes 1, INRIA, CNRS, IRISA), scientific leader
  • DiverSE team (INRIA/IRISA research team)
  • ANR VaryVary project
  • Master 1's team of 2017-2018 :
    • Corentin CHÉDOTAL
    • Gwendal DIDOT
    • Dorian DUMANGET
    • Antonin GARRET
    • Erwan LE FLEM
    • Pierre LE LURON
    • Alexis LE MASLE
    • Mickaël LEBRETON
    • Fahim MERZOUK
  • Alexis LE MASLE (internship during 2018 summer)
  • Master 1's team of 2018-2019 :
    • Valentin PETIT
    • Julien ROYON CHALENDARD
    • Cyril HAMON
    • Paul SAFFRAY
    • Michaël PICARD
    • Malo POLES
    • Luis THOMAS
    • Alexis BONNET
  • Paul SAFFRAY (internship during 2019 summer)

Documentation

Requirements

  • python-mysql

    We suggest to install with your package manager instead of pip. For more info, please check the notes from its github repository:

    This project adds Python 3 support and bug fixes. I hope this fork is merged back to MySQLdb1 like distribute was merged back to setuptools.

    and this stackoverflow question

  • sphinx

    Check sphinx extensions used in the configuration file

Generate documentation

Run the following command from the root dir (ProjetIrma)

make doc

Index file of the documentation will be generated in Documenetation/doc/index.html

You can clean the Documentation directory with the following command

make cleandoc

(You can check Documentation's Makefile for more info about the doc generation)

Some commands

Generate local images and run the kernel generator

cd docker_management/; 
python3 docker_image_tuxml.py; 
cd ../; 
python3 kernel_generator.py --dev --local --tiny --logs LOGS 1;

WIPE Docker images and containers /!\ WARNING all docker images and containers will be removed

docker stop $(docker ps -a -q); 
docker rm $(docker ps -a -q); 
docker rmi $(docker images -q); 

About

The main repository of the TuxML project contains the scripts for building Linux kernel configurations in the large.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published