====== Gestion des modules du noyau avec kld sous FreeBSD ======
La gestion des **modules** chargables du noyau FreeBSD s'effectue avec la suite d'outils **kld** (**//Kernel LoaDer//**) qui a été intégrée sous FreeBSD 3.0. Cette suite comprend :
* **kldload** qui permet de charger des modules au noyau.
* **kldunload** au contraire décharge les modules souhaités.
* **kldstat** permet de lister les modules actuellement chargés dans le noyau.
* **kldxref** sert quand à lui à créer et mettre à jour l'index des modules noyau dans ''/boot/kernel/'' ou ''/boot/modules/'' (intégré sous FreeBSD 5.0). Le fichier d'index se nomme ''linker.hints''.
Concernant les fichiers ou répertoires des modules, vous trouverez les modules fournis avec le noyau dans le répertoire ''/boot/kernel/'' et pour les modules installés manuellement c'est dans ''/boot/modules/'', les fichiers de modules finissent par l'extension ''.ko'' pour **Kernel Object**. Le noyau en lui même est ''/boot/kernel/kernel''.
===== Utilisation de la suite d'outils kld =====
Pour faciliter la rédaction de ce tutoriel on va utiliser l'utilitaire d'administration [[wiki:os:bsd_unix:freebsd:tutos:admin:sudo]].
Pour charger un module :
sudo kldload modules.ko
Pour décharger un module :
sudo kldunload modules.ko
Vous n'êtes pas obligé de renseigner l'extension ''.ko'' d'un module. Si vous n'avez pas de complétion complète avec votre shell vous pouvez indiquer le chemin du module, exemple : sudo kldload /boot/kernel/linux.ko
Pour lister les modules actuellement chargés dans le noyau :
kldstat
===== Charger des modules de manière permanente =====
Pour charger des modules de manière permanente il faut soit les renseigner dans le fichier ''/boot/loader.conf'' ou ''/etc/rc.conf'', vous pouvez également les charger de façon individuel ou par petit groupe de modules dans les répertoires ''/boot/loader.conf.d/'' et ''/etc/rc.conf.d/''.
Ajouter module dans ''/boot/loader.conf'' :
sudo echo nom_module_load="YES" >> /boot/loader.conf
Se charge plus vite que dans ''/etc/rc.conf'', le module est chargé directement au boot de FreeBSD sans lecture préalable de ''/etc/rc.conf''.
Ajouter module dans ''/etc/rc.conf'' :
sudo echo kld_list="module" >> /etc/rc.conf
pour ajouter d'autres modules dans ''/etc/rc.conf'', vous avez la possibilité d'en ajouter plusieurs sur une ligne (séparés par un espace) :
sudo echo kld_list+="module module2" >> /etc/rc.conf