Comment faire une liste noire des modules du noyau?

Réponses:

44

Remarque: la liste noire ne fonctionnera pas pour les modules intégrés à l'image du noyau (c.-à-d. Non chargés via un .kofichier séparé . La seule façon de désactiver ces modules consiste à utiliser un paramètre de noyau (si disponible) ou à recompiler le noyau.

Ouvrez simplement votre /etc/modprobe.d/blacklistfichier et ajoutez le nom de l’utilisateur à l’aide de 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 ordinateur et utilisez la commande lsmod pour afficher l'état des modules dans le noyau Linux.

Remarque : voici driver-namele nom du pilote de votre liste noire souhaité. Par exemple, si vous souhaitez désactiver le pilote de la carte réseau, vous pouvez trouver le nom du pilote du noyau pour votre carte LAN à l'aide de la commande lspci -vcommand dans un terminal.
Par exemple ma sortie était:

........
........ 
6: 00.0 Contrôleur Ethernet: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rév. 02)
    Sous-système: Lenovo Device 3861
    Drapeaux: maître de bus, développement rapide, latence 0, IRQ 46
    Mémoire à b8000000 (64 bits, non préinstallable) [taille = 64 Ko]
    Extension ROM à [désactivé]
    Capacités: 
    Pilote du noyau utilisé: tg3
    Modules du noyau: tg3
........
........

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

Vous trouverez de nombreuses informations ici .

LnxSlck
la source
7
dans mon cas ( Lubuntu 12.10), il n'y a pas de /etc/modprobe.d/blacklistfichier. Il y a un /etc/modprobe.d/blacklist.conffichier
Abdull
1
Il est préférable de conserver les modules de la liste noire par un utilisateur dans un fichier séparé afin d'éviter les conflits lors de la mise à niveau (voir ce commentaire à serverfault ).
Alexander Pozdneev
1
Le blacklist.conffichier n'a pas besoin d'exister. Vous pouvez mettre un fichier appelé my-mom-is-awesomeici et cela fonctionnerait. Choisissez le nom de votre choix si vous voulez créer un fichier spécifique simplement pour mettre en liste noire un élément spécifique, du type blacklist-nouveauou autre.
Doug65536
@ doug65536 cette question a été postée il y a 7 ans, bien sûr, les choses vont changer. Créez simplement une nouvelle question avec la version Ubuntu que vous avez afin que les gens puissent vous aider
LnxSlck
@LnxSlck Je parlais de la confusion exprimée dans les commentaires précédents. Je ne voulais pas d'aide. Qu'en est-il de l'obsession de ne pas poster de contenu plus ancien? Il suffit de laisser pourrir? Les gens trouvent toujours cela et d’autres auront les mêmes questions que moi.
Doug65536
28

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

module_to_blacklist.blacklist=yes
Panthère
la source
1
Combien de temps est-ce "temporaire"? Jusqu'au prochain démarrage?
Seth
1
Seth, il est temporaire pour un seul démarrage si vous l'avez modifié au démarrage. Si vous éditez en utilisant /etc/grub.d/ scripts ou / etc / default / grub, il est permanent.
Peter
1
Apparemment , cela ne fonctionne pas pour i915: i915: unknown parameter 'blacklist' ignored.
Rafał Cieślak
5
Quelle est la difference entre this et modprobe.blacklist=module_to_blacklist?
Zaz
4
ou utilisez le paramètre du noyau modprobe.blacklist=module_to_blacklist(voir man modprobepour plus de détails)
Karl Richter
11

Une autre façon de répertorier des modules dans au moins Ubuntu 16.04 LTS consiste à ajouter la ligne suivante à la ligne de commande du noyau:

modprobe.blacklist=MODULE_NAME

Utiliser le système / etc / modprobe est la meilleure solution, mais c’est une alternative qui peut être utilisée rapidement en modifiant votre ligne de commande GRUB au démarrage.

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

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

Puis je cours update-grub2, alors update-initramfs -u. Après un redémarrage, vous serez libre du module, tant que rien ne le chargera 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 l'initrd.

(Remarque à l'intention de ceux qui tentent de placer BlackListe sur Nouvelle: assurez-vous de ne pas charger X en cours d'exécution systemctl set-default multi-user.target, sinon, lorsque X démarrera, il chargera de nouveau!)

Paul
la source
4

Dans les versions plus récentes, vous devez utiliser la directive install dans votre fichier de liste noire.

install modulename /bin/false

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

Vous trouverez plus d’informations sur la directive install dans le manuel de modprobe.conf

man modprobe.conf
Speeddymon
la source
2
C'est très utile. Même avec une entrée dans la liste noire /etc/modprobe/blacklist.conf, le module peut toujours être chargé manuellement modprobe <module_name>. L'utilisation de la install <module_name> /bin/falseméthode provoque l'échec souhaité.
RawwrBag le
3

Aucune de ces solutions ne fonctionnait avec 16.04 LTS pour i915.ko.

La solution (sale) que j'ai trouvée était de 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: {

ploc
la source
6
Tout ce dont vous avez besoin est sudo update-initramfs -uaprès la modification des fichiers /etc/modeprobe.d/
Ivan Black