Wie man Kernelmodule auf die Blacklist setzt

Antworten:

44

Hinweis: Blacklisting funktioniert nicht für Module, die in das Kernel-Image integriert sind (dh nicht über eine separate .koDatei geladen werden . Die einzige Möglichkeit, solche Module zu deaktivieren, besteht darin, einen Kernel-Parameter (falls verfügbar) zu verwenden oder den Kernel neu zu kompilieren.

Öffnen Sie einfach Ihre /etc/modprobe.d/blacklistDatei und fügen Sie den Treibernamen mit folgender Syntax hinzu:

blacklist driver-name

BEARBEITEN: In späteren Versionen seit 12.10 (12.04?) Ist die Datei /etc/modprobe.d/blacklist.conf

Starten Sie Ihre Box neu und verwenden Sie den Befehl lsmod, um den Status der Module im Linux-Kernel anzuzeigen

Hinweis : Hier driver-nameist der Name Ihres gewünschten Blacklist-Treibers. Wenn Sie beispielsweise den NIC-Kartentreiber deaktivieren möchten, können Sie den Namen des Kerneltreibers für Ihre LAN-Karte mithilfe des Befehls lspci -vcommand in einem Terminal ermitteln.
Zum Beispiel war meine Ausgabe:

........
........ 
Ethernet-Controller 6: 00.0: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (Version 02)
    Subsystem: Lenovo Gerät 3861
    Flags: Busmaster, Fast Devsel, Latenz 0, IRQ 46
    Speicher bei b8000000 (64-Bit, nicht vorab abrufbar) [Größe = 64 KB]
    Erweiterungs-ROM bei [deaktiviert]
    Fähigkeiten: 
    Verwendeter Kerneltreiber: tg3
    Kernelmodule: tg3
........
........

Hier sehe ich den Fahrer tg3. Sie müssen also tg3(oder Ihren Fahrer) an die Stelle von schreiben driver-name.

Viele Informationen finden Sie hier .

LnxSlck
quelle
7
In meinem Fall ( Lubuntu 12.10) gibt es keine /etc/modprobe.d/blacklistDatei. Es gibt eine /etc/modprobe.d/blacklist.confDatei
Abdull
1
Es ist besser, Module, die von einem Benutzer auf die schwarze Liste gesetzt wurden, in einer separaten Datei zu speichern, um Konflikte während des Upgrades zu vermeiden (siehe diesen Kommentar bei serverfault ).
Alexander Pozdneev
1
Die blacklist.confDatei muss nicht existieren. Sie könnten eine Datei mit dem Namen my-mom-is-awesomedort ablegen, und es würde funktionieren. Erstelle einen beliebigen Namen, wenn du eine bestimmte Datei erstellen willst, nur um eine bestimmte Sache auf die schwarze Liste zu setzen, wie blacklist-nouveauoder was auch immer.
Doug65536
@ doug65536 Diese Frage wurde vor 7 Jahren gestellt, natürlich werden sich die Dinge ändern. Erstellen Sie einfach eine neue Frage mit der Ubuntu-Version, die Sie haben, damit die Leute Ihnen helfen können
LnxSlck
@LnxSlck Ich habe die Verwirrung angesprochen, die in früheren Kommentaren geäußert wurde. Ich wollte keine Hilfe. Was ist mit der Besessenheit, nicht auf ältere Inhalte zu posten? Lass es einfach verrotten? Die Leute finden das immer noch und andere werden die gleichen Fragen haben, die ich angesprochen habe.
Doug65536
28

Sie können sie auch vorübergehend in der Grub-Befehlszeile (Linux-Zeile) auf die Blacklist setzen, wenn Sie mit der Syntax booten

module_to_blacklist.blacklist=yes
Panther
quelle
1
Wie lange ist das "vorübergehend"? Bis zum nächsten Boot?
Seth
1
Seth, es ist nur für den einzelnen Boot temporär, wenn Sie während des Bootens bearbeitet haben. Wenn Sie mit /etc/grub.d/scripts oder / etc / default / grub bearbeiten, ist dies permanent.
Peter
1
Offenbar dies nicht funktioniert für i915: i915: unknown parameter 'blacklist' ignored.
Rafał Cieślak
5
Was ist der Unterschied zwischen diesem und modprobe.blacklist=module_to_blacklist?
Zaz,
4
Oder verwenden Sie den Kernel-Parameter modprobe.blacklist=module_to_blacklist(siehe man modprobefür Details)
Karl Richter
11

Eine andere Möglichkeit, Module in mindestens Ubuntu 16.04 LTS auf die Blacklist zu setzen, besteht darin, der Kernel-Befehlszeile die folgende Zeile hinzuzufügen:

modprobe.blacklist=MODULE_NAME

Die Verwendung des / etc / modprobe-Systems ist der beste Weg, aber dies ist eine Alternative, die zur Not verwendet werden kann, indem Sie Ihre GRUB-Befehlszeile beim Booten bearbeiten.

Dies kann auch dauerhaft gemacht werden, indem / etc / default / grub bearbeitet und der GRUB_CMDLINE_LINUX_DEFAULTVariablen hinzugefügt wird. Zum Beispiel habe ich in meiner / etc / default / grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

Dann renne ich update-grub2dann update-initramfs -u. Nach einem Neustart sind Sie frei von dem Modul, solange es nach dem Start nicht geladen wird.

Diese Methode funktioniert auch in EL-Varianten (RHEL, CentOS, SciLinux), aber Sie müssen die Methoden dieser Distribution verwenden, um grub und die initrd zu aktualisieren.

(Hinweis für diejenigen, die versuchen, Nouveau auf die schwarze Liste zu setzen: Stellen Sie sicher, dass X nicht durch Ausführen geladen wird systemctl set-default multi-user.target. Andernfalls wird Nouveau beim Starten von X erneut geladen!)

Paul
quelle
4

In neueren Versionen müssen Sie die Installationsanweisung in Ihrer Blacklist-Datei verwenden

install modulename /bin/false

Ersetzen Sie "Modulname" oben durch den Namen des Moduls. Dadurch wird das Laden gewaltsam verhindert.

Weitere Informationen zur Installationsanweisung finden Sie im Handbuch zu modprobe.conf

man modprobe.conf
Speeddymon
quelle
2
Das ist sehr hilfreich. Es stellt sich heraus, dass auch bei einem Blacklist-Eintrag in /etc/modprobe/blacklist.confdas Modul noch manuell mit geladen werden kann modprobe <module_name>. Wenn Sie die install <module_name> /bin/falseMethode verwenden, schlägt dies wie gewünscht fehl.
RawwrBag
3

Keine dieser Lösungen funktionierte auf 16.04 LTS für i915.ko.

Die (schmutzige) Lösung, die ich gefunden habe, war das Umbenennen

/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

Leider wird der externe VGA-Bildschirm nicht mehr erkannt: {

plumpsen
quelle
6
Alles, was Sie brauchen, ist sudo update-initramfs -unach dem Ändern von /etc/modeprobe.d/ Dateien
Ivan Black