Comment créer une liste noire des modules du noyau?

34

Comment désactiver le chargement des modules du noyau inutiles? Kernel 3.2.4

    
posée Ringtail 06.03.2012 - 00:23
la source

5 réponses

34
  

Remarque: la liste noire ne fonctionnera pas pour les modules intégrés à l'image du noyau (c.-à-d. non chargée via un fichier .ko distinct. La seule façon de désactiver ces éléments) modules est via un paramètre du noyau (si disponible) ou en recompilant le noyau.

Ouvrez simplement votre fichier /etc/modprobe.d/blacklist et ajoutez le nom d'utilisateur en utilisant la syntaxe suivante:

blacklist driver-name

EDIT: Dans les versions ultérieures depuis 12.10 (12.04?), le fichier est /etc/modprobe.d/blacklist.conf

Redémarrez votre boîte et utilisez la commande lsmod pour afficher l'état des modules du noyau Linux

Remarque : ici driver-name est le nom du pilote de liste noire souhaité. Par exemple, si vous souhaitez désactiver le pilote de la carte réseau, vous pouvez rechercher le nom du pilote du noyau de votre carte réseau en utilisant la commande lspci -v dans un terminal.
Par exemple, ma sortie était la suivante:

........
........ 
6:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
    Subsystem: Lenovo Device 3861
    Flags: bus master, fast devsel, latency 0, IRQ 46
    Memory at b8000000 (64-bit, non-prefetchable) [size=64K]
    Expansion ROM at  [disabled]
    Capabilities: 
    Kernel driver in use: tg3
    Kernel modules: tg3
........
........

Ici, je vois que le pilote est tg3 . vous devez donc écrire tg3 (ou votre pilote) à la place de driver-name .

Beaucoup d’informations peuvent être trouvées ici .

    
réponse donnée LnxSlck 06.03.2012 - 00:27
la source
24

Vous pouvez également les mettre temporairement sur la ligne de commande grub (ligne linux) lorsque vous démarrez avec la syntaxe

module_to_blacklist.blacklist=yes
    
réponse donnée Panther 06.03.2012 - 00:44
la source
5

Une autre façon de créer une liste noire des modules dans Ubuntu 16.04 au moins est d’ajouter la ligne suivante à la ligne de commande du noyau:

modprobe.blacklist=MODULE_NAME

Utiliser le système / etc / modprobe est le meilleur moyen, mais c'est une alternative qui peut être utilisée dans un pincement en éditant votre ligne de commande GRUB au démarrage.

Cela peut également être rendu permanent en éditant / etc / default / grub et en ajoutant la variable GRUB_CMDLINE_LINUX_DEFAULT . Par exemple, dans mon / etc / default / grub, j'ai:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

Ensuite, je lance update-grub2 , puis update-initramfs -u . Après un redémarrage, vous serez libéré du module, tant que rien ne le charge après le démarrage.

Cette méthode fonctionne également dans les variantes EL (RHEL, CentOS, SciLinux), mais vous devrez utiliser les méthodes de cette distribution pour mettre à jour grub et initrd.

(Remarque pour ceux qui essaient de mettre en liste noire les nouveaux: assurez-vous de ne pas charger X en exécutant systemctl set-default multi-user.target , sinon, lorsque X démarrera, il chargera encore nouveau!)

    
réponse donnée Paul 29.09.2016 - 19:51
la source
3

Aucune de ces solutions n’a fonctionné sur 16.04 LTS pour i915.ko.

La solution (sale) que j'ai trouvée consistait à renommer

/lib/modules/4.4.0-22-generic/kernel/drivers/gpu/drm/i915/i915.ko
/usr/lib/xorg/modules/drivers/modesetting_drv.so
/usr/lib/xorg/modules/drivers/intel_drv.so

Malheureusement, l'écran VGA externe n'est plus reconnu: {

    
réponse donnée plop 07.06.2016 - 13:39
la source
3

Dans les versions plus récentes, vous devez utiliser la directive d’installation dans votre fichier de liste noire

install modulename /bin/false

Remplacez "modulename" ci-dessus par le nom du module. Cela empêchera de force son chargement.

Vous pouvez trouver plus d’informations sur la directive d’installation dans le manuel de modprobe.conf

man modprobe.conf
    
réponse donnée Speeddymon 26.11.2016 - 17:48
la source

Lire d'autres questions sur les étiquettes