Le système d'exploitation GNU-Linux/Le noyau Linux et les modules

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


  1. Qu'est-ce qu'un système d'exploitation ?
  2. Unix et Linux
  3. Partitionnement du disque
  4. Installation
    1. Installer Debian via le réseau
  5. Utilisateur Unix, l'interface console
    1. Le login
    2. Commandes de base
    3. L'aide en ligne man
    4. L'éditeur de texte vi
    5. Les shells
    6. La complétion
    7. Les jokers
    8. Les répertoires importants
    9. Redirection des entrées/sorties
    10. Invoquer un programme en tâche de fond
    11. Propriétaires et droits d'accès
    12. Processus
    13. Locale
  6. Administration du système
    1. Configuration du réseau
    2. Les utilisateurs et groupes
    3. Le processus d'initialisation
    4. Les systèmes de fichiers
    5. Le système virtuel /proc
    6. Les périphériques /dev
    7. L'ordonnanceur de travaux cron
    8. Le backup : tar et gzip
    9. ghost avec partimage
    10. sauvegarde de fichiers avec rsync
    11. Les fichiers journaux syslog
    12. Installation de nouveaux logiciels
    13. Le noyau Linux et les modules
    14. Autres commandes utiles
    15. Installation RAID1 logiciel + LVM + XFS
    16. Scripts de surveillance
    17. Réseaux sans fil
  7. Administration des services réseaux
    1. Le serveur de noms BIND
    2. Le serveur de configuration réseau DHCP
    3. Le serveur de shell distant SSH
    4. Le partage de fichiers Samba
    5. Le partage de fichiers NFS
    6. Le serveur d'impression CUPS
    7. Le serveur de fichiers FTP
    8. Le serveur Web Apache
    9. La base de données MySQL
    10. Le serveur de mails Postfix
    11. Les annuaires LDAP
    12. L'outil d'administration Webmin
    13. La supervision
  8. Sécurisation d'un serveur Linux
    1. Installation d'un service en mode chroot
    2. Protection avec iptables
  9. Médiagraphie
  10. Auteurs


Dans certains cas, on peut être amené à recompiler un noyau Linux :

  • support d'un périphérique (driver)
  • activation d'une option
  • ...

Les sources du noyau Linux sont disponibles sur kernel.org dans le répertoire /pub/linux/kernel/v2.6/.

Les sources doivent être installées dans le répertoire /usr/src et il faut un lien linux vers la version du noyau que l'on désire compiler :

 # cd /usr/src
 # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.9.tar.bz2
 ...
 # tar xjf linux-2.6.23.9.tar.bz2
 # ln -s linux-2.6.23.9 linux
 # cd linux

Si on désire utiliser les mêmes options de compilation du noyau actuel, on copie le fichier /boot/config-2.6.18-5-686 dans le répertoire /usr/src/linux sous le nom .config :

 # cp /boot/config-2.6.18-5-686 .config

Pour lancer la configuration (en mode texte) du noyau, on tape ensuite make menuconfig. Il faut avoir précédement installé la librairie de développement ncurses et tous les outils de compilation :

 # apt-get install libncurses5-dev build-essential

On installe ensuite kernel-package qui contient les outils Debian permettant de fabriquer un packet .deb contenant le noyau Linux, les modules, le initrd et un script configurant Grub pour booter sur le nouveau noyau (cf explications ci-dessous) :

 # apt-get install kernel-package

On lance ensuite la configuration du noyau via make menuconfig :

 # make menuconfig

On configure le noyau, on quitte en enregistrant la configuration.

Debian fournit une méthode particulière pour lancer la compilation du noyau. il faut auparavant installer le packet kernel-package.

La procédure Debian consiste à fabriquer un fichier .DEB contenant le noyau et les modules compilés. L'avantage de cette méthode est de faciliter la mise à jour du noyau. De même, elle va automatiquement mettre à jour GRUB ou LILO pour démarrer sur le nouveau noyau.

Si on veut que Debian fabrique le fichier initrd automatiquement, il suffit de l'indiquer avec l'option --initrd de make-kpkg.

On lance la compilation du noyau et des modules avec la commande make-kpkg :

 # make-kpkg clean

 # make-kpkg --initrd --rev custom.1 kernel_image
 ...
 # dpkg -i ../linux-image-2.6.23.9_custom.1_i386.deb


On peut également fabriquer un initrd manuellement, voici la procédure :

 # mkinitramfs -o /boot/initrd.img-2.6.23.9 2.6.23.9

On le rajoute dans /boot/grub/menu.lst :

 title           Debian GNU/Linux, kernel 2.6.23.9
 root            (hd1,0)
 kernel          /vmlinuz-2.6.23.9 root=/dev/hdd2 ro
 initrd          /initrd.img-2.6.23.9
 savedefault


Il ne reste plus qu'à rebooter pour démarrer sur le nouveau noyau.

Si tout c'est bien passé, le système va démarrer sur le nouveau noyau. Sinon, le noyau va s'arrêter sur un kernel panic et il faudra rebooter sur le noyau précédent, reprendre la configuration du noyau, le recompiler (avec un numéro de version différent, comme par exemple custom.2).

On vérifie que l'on a bien démarré sur notre nouveau noyau avec la commande uname :

 # uname -r
 2.6.23.9

Pour plus d'informations sur la compilation d'un noyau selon Debian, on peut consulter le Debian Linux Kernel Handbook.

Modules[modifier | modifier le wikicode]

lsmod[modifier | modifier le wikicode]

Cette commande permet de visualiser les modules chargés en mémoire.

Syntaxe:

lsmod

modinfo[modifier | modifier le wikicode]

Cette commande permet de visualiser les informations du module comme le nom du créateur, et les options de chargements.

Syntaxe:

modinfo chemin_du_module
À faire...
link={{{link}}}

mettre un exemple

insmod et modprobe[modifier | modifier le wikicode]

Bien que ces deux commandes permettent de charger un module, la différence tient du fait que certains modules ont besoins que d'autres modules soient chargés.

insmod tente de charger le module demandé et si celui-ci a besoin d'un autre module pour se charger et que ce dernier ne l'est pas, insmod renvoie un message d'erreur et ne charge pas le module.

Syntaxe:

insmod chemin_du_module

modprobe, lui, charge les modules dépendant au modules avant de lancer celui-ci.

Syntaxe:

modprobe chemin_du_module

rmmod[modifier | modifier le wikicode]

Cette commande décharge le module dont le nom est indiqué. Contrairement aux autres commandes, il ne faut pas lui indiquer le chemin du module, mais son nom tel qu'il apparaît listé par la commande lsmod.

Syntaxe:

rmmod nom_du_module

rmmod décharge le module nom_du_module

depmod[modifier | modifier le wikicode]

À faire...
link={{{link}}}

À faire...

À faire...
link={{{link}}}

/etc/modules