Skip to content

Latest commit

 

History

History
146 lines (100 loc) · 2.91 KB

presentation.md

File metadata and controls

146 lines (100 loc) · 2.91 KB
marp paginate color backgroundColor header footer author
true
true
![width:100px height:100px](./img/logo.png)
**01/01/1970 - Author**
AnthonyF
<style> section { font-family: 'Century Gothic', serif !important; } </style>

Simple module pour Kernel Linux


Sommaire

  • Modules Kernel
  • Principales commandes
  • Notre premier Hello-Bye World module

Modules Kernel ou LKM (Loadable Linux Kernel)

  • Code compile faisant partie du noyau Linux (souvant des drivers)
  • Acces au controle total de la machine
  • Acces aux appels systemes (Syscall : open, read, brk=>malloc)

==> Kernel space != User space

Avantages

  • Peut etre charge ou decharge (loaded/unloaded) au noyau
  • Pas besoin de redemarrer le systeme ni de recompiler le noyau

Modules de bases

  • Systeme de fichier, protocoles reseaux, etc.

Modules peripheriques

  • Carte son, video, reseaux, etc.

Modules supplementaires

  • Carte video non-libre (Nvidia), Wi-fi, etc.

Principales commandes

Command Description
lsmod Show all loaded kernel modules
modinfo module_name Show information about a kernel module
modprobe --show-depends module_name Show dependencies of a module

Charger manuellement un module

  • les modules sont localises dans /usr/lib/modules/$(uname -r)/

Pour les charger : sudo modprobe module_name

Si le module n'est dans le repertoire : sudo insmod /path/module_name


Decharger manuellement un module

sudo modprobe -rf module_name
-r remove
-f force

ou :
sudo rmmod module_name


Charger ou "blacklister" un module avec un fichier de conf

  • fichier de conf : /etc/module-load.d/name_of_file.conf

Exemple :

cat /etc/modules-load.d/modules.conf 

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
module_name1
module_name1

"Blacklister" un module

  • Eviter le chargement d'un module
  • Ajout de l'option blacklist dans /etc/modprobe.d/

Exemple :

cat /etc/modules-load.d/blacklist.conf 

# Not loaded modules
blacklist module_name1
blacklist module_name1

Developpement de notre premier module

Les packets a installer :

  • gcc
  • make
  • your kernel headers
  • build-essential

Pour build-essential :

sudo apt install gcc build-essential make linux-headers-`uname -r`