Master 1 ère année Sécurité des Systèmes Informatique 1 Gestion de modules Un module est un morceau de code qui peut être chargé à la volée dans le noyau. Le principal avantage est de permettre un noyau de plus petite taille Cela permet également de rajouter certains périphériques sans pour autant refaire une compilation du noyau. La plupart des modules se trouve avec les sources du noyau. On y trouve: La plupart des systèmes de fichiers: minix, msdos, sysv5, NFS,.. Un ensemble de support matériel: carte Ethernet, SCSI, pilotes CDROM,... Un module est un morceau de code qui peut être chargé à la volée dans le noyau. Le principal avantage est de permettre un noyau de plus petite taille Cela permet également de rajouter certains périphériques sans pour autant refaire une compilation du noyau. La plupart des modules se trouve avec les sources du noyau. On y trouve: La plupart des systèmes de fichiers: minix, msdos, sysv5, NFS,.. Un ensemble de support matériel: carte Ethernet, SCSI, pilotes CDROM,...
Master 1 ère année Sécurité des Systèmes Informatique 2 Gestion et installation de modules La création de modules se fait grâce à la commande make modules L'installation se fait grâce à make module-install L'ensemble des modules se trouve placé dans le répertoire /lib/modules/version-noyau/ Dans ce répertoire, on trouve un fichier modules.dep définissant les dépendances entre modules. Pour charger ou décharger un module, on utilise les commandes insmod et rmmod. Insmod peut prendre des paramètres tels que irq,... La commande modprobe permet le chargement d'un module ou d'une pile de modules en fonction des dépendances La commande /sbin/depmod -a permet la création du nouveau fichier de dépendance. La création de modules se fait grâce à la commande make modules L'installation se fait grâce à make module-install L'ensemble des modules se trouve placé dans le répertoire /lib/modules/version-noyau/ Dans ce répertoire, on trouve un fichier modules.dep définissant les dépendances entre modules. Pour charger ou décharger un module, on utilise les commandes insmod et rmmod. Insmod peut prendre des paramètres tels que irq,... La commande modprobe permet le chargement d'un module ou d'une pile de modules en fonction des dépendances La commande /sbin/depmod -a permet la création du nouveau fichier de dépendance.
Master 1 ère année Sécurité des Systèmes Informatique 3 Configuration des modules au démarrage et « daemon » kerneld La plupart du temps, les commandes modprobe sont placées dans les fichiers de configuration Si le démon kerneld est installé au niveau du noyau (CONFIG_KERNELD) il peut alors s'occuper de charger et décharger un module à la volée. Le noyau prévient qu'il a une demande non résidente Le noyau envoie un message à kerneld Kerneld demande à modproble de charger les modules correspondant à la description Modproble regarde quels sont les modules nécessaires et demande à insmod de les charger Le noyau utilise cette partie comme si elle était résidente La plupart du temps, les commandes modprobe sont placées dans les fichiers de configuration Si le démon kerneld est installé au niveau du noyau (CONFIG_KERNELD) il peut alors s'occuper de charger et décharger un module à la volée. Le noyau prévient qu'il a une demande non résidente Le noyau envoie un message à kerneld Kerneld demande à modproble de charger les modules correspondant à la description Modproble regarde quels sont les modules nécessaires et demande à insmod de les charger Le noyau utilise cette partie comme si elle était résidente
Master 1 ère année Sécurité des Systèmes Informatique 4 Compilation du noyau Pourquoi compiler un noyau ? Avoir un noyau optimisé (de petite taille) Installer un nouveau périphérique (non prévu initialement en module) Corriger certaines erreurs ou apporter des optimisations (meilleur gestion des processus) De quoi a-t-on besoin ? Quelques utilitaires de bases (find, tar, gcc,...) Les sources à installer (kernel.org) Le compilateur gcc ad-hoc Vérifier que les versions des logiciels utiles sont à jour (./Documentation/Changes). Pourquoi compiler un noyau ? Avoir un noyau optimisé (de petite taille) Installer un nouveau périphérique (non prévu initialement en module) Corriger certaines erreurs ou apporter des optimisations (meilleur gestion des processus) De quoi a-t-on besoin ? Quelques utilitaires de bases (find, tar, gcc,...) Les sources à installer (kernel.org) Le compilateur gcc ad-hoc Vérifier que les versions des logiciels utiles sont à jour (./Documentation/Changes).
Master 1 ère année Sécurité des Systèmes Informatique 5 Configuration du noyau make config/menuconfig/xconfig/oldconfig permet la configuration de base du noyau. L'ensemble des paramètres est positionné. Choisir les fonctionnalités (y/n) ou autoriser le chargement à la demande (M) Ne pas sélectionner de pilotes non nécessaires afin d’améliorer les performances Il existe un grand nombre de paramètres pour la configuration du noyau: Type d'architecture Multi-processeurs Gestion de la mémoire haute Très nombreux périphériques... (> 2500 options) make config/menuconfig/xconfig/oldconfig permet la configuration de base du noyau. L'ensemble des paramètres est positionné. Choisir les fonctionnalités (y/n) ou autoriser le chargement à la demande (M) Ne pas sélectionner de pilotes non nécessaires afin d’améliorer les performances Il existe un grand nombre de paramètres pour la configuration du noyau: Type d'architecture Multi-processeurs Gestion de la mémoire haute Très nombreux périphériques... (> 2500 options)
Master 1 ère année Sécurité des Systèmes Informatique 6 Compilation et installation Une étape importante est de générer l'ensemble des dépendances avec make dep Une fois la configuration terminée, lancez la compilation avec make (bzImage, zImage, vmlinuz,...) dans le répertoire /usr/src/linux Si certaines parties de votre noyau sont en modules, vous devez les compiler avec make modules puis les installer avec make modules-install Attention: avant de faire une installation des modules, veillez à sauvegarder le répertoire de module de votre ancienne installation (normalement /lib/module/version- noyau) Le chargeur de module a besoin de connaître les dépendances entre ceux-ci. Le fichier /lib/module/version-noyau/modules.dep Une étape importante est de générer l'ensemble des dépendances avec make dep Une fois la configuration terminée, lancez la compilation avec make (bzImage, zImage, vmlinuz,...) dans le répertoire /usr/src/linux Si certaines parties de votre noyau sont en modules, vous devez les compiler avec make modules puis les installer avec make modules-install Attention: avant de faire une installation des modules, veillez à sauvegarder le répertoire de module de votre ancienne installation (normalement /lib/module/version- noyau) Le chargeur de module a besoin de connaître les dépendances entre ceux-ci. Le fichier /lib/module/version-noyau/modules.dep
Master 1 ère année Sécurité des Systèmes Informatique 7 Installation du noyau Veillez à conserver une ancienne version de votre noyau au cas où. Pour faire une installation, vous devez soit la faire au travers de lilo (créer une nouvelle entrée pour ce noyau, soit en faire votre noyau par défaut avec make install) Vous pouvez également copier l'ancienne version à la place de la nouvelle (attention cependant car cette version doit être physiquement à la même place) Vous devez également copier le fichier system.map qui contient l'ensemble des symboles du noyau dans le répertoire /boot, car certains utilitaires en ont besoin. Veillez à conserver une ancienne version de votre noyau au cas où. Pour faire une installation, vous devez soit la faire au travers de lilo (créer une nouvelle entrée pour ce noyau, soit en faire votre noyau par défaut avec make install) Vous pouvez également copier l'ancienne version à la place de la nouvelle (attention cependant car cette version doit être physiquement à la même place) Vous devez également copier le fichier system.map qui contient l'ensemble des symboles du noyau dans le répertoire /boot, car certains utilitaires en ont besoin.