Comment désactiver le chargement des modules inutiles du noyau. Noyau 3.2.4
Réponses
Trop de publicités?Remarque : L'inscription sur liste noire ne fonctionne pas pour les modules qui sont intégrés dans l'image du noyau (c'est-à-dire qui ne sont pas chargés par l'intermédiaire d'un fichier
.ko
fichier. Le seul moyen de désactiver ces modules est d'utiliser un paramètre du noyau (s'il existe) ou de recompiler le noyau.
Il suffit d'ouvrir votre /etc/modprobe.d/blacklist
et ajoutez le nom du pilote 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 machine et utilisez la commande lsmod pour afficher l'état des modules dans le noyau Linux.
Nota : ici driver-name
est le nom du pilote de liste noire souhaité. Par exemple, si vous souhaitez désactiver le pilote de la carte NIC, vous pouvez trouver le nom du pilote du noyau de votre carte LAN en utilisant la commande lspci -v
dans un terminal.
Par exemple, mon résultat est le suivant :
........
........
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 conducteur est tg3
. vous devez donc écrire tg3
(ou votre chauffeur) à la place de driver-name
.
De nombreuses informations peuvent être trouvées aquí .
Une autre façon de blacklister les modules, au moins dans Ubuntu 16.04 LTS, est d'ajouter la ligne suivante à la ligne de commande du noyau :
modprobe.blacklist=MODULE_NAME
L'utilisation du système /etc/modprobe est la meilleure solution, mais il s'agit d'une alternative qui peut être utilisée en cas de besoin en éditant la ligne de commande Grub au démarrage.
Ceci peut également être rendu permanent en éditant /etc/default/Grub et en ajoutant au fichier GRUB_CMDLINE_LINUX_DEFAULT
variable. Par exemple, dans mon /etc/default/Grub j'ai :
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"
Ensuite, je cours update-grub2
entonces update-initramfs -u
. Après un redémarrage, vous serez débarrassé du module, à condition que rien ne le charge après le démarrage.
Cette méthode fonctionne également avec les variantes EL (RHEL, CentOS, SciLinux), mais vous devrez utiliser les méthodes de cette distro pour mettre à jour Grub et l'initrd.
(Note à l'attention de ceux qui tentent d'inscrire Nouveau sur leur liste noire : Assurez-vous de ne pas charger X en exécutant systemctl set-default multi-user.target
Sinon, lorsque X démarrera, il chargera à nouveau nouveau !)
Dans les versions plus récentes, vous devez utiliser la directive install dans votre fichier de liste noire
install modulename /bin/false
Remplacez "modulename" ci-dessus par le nom du module. Cela empêchera son chargement.
Vous pouvez trouver plus d'informations sur la directive install dans le manuel de modprobe.conf
man modprobe.conf
Aucune de ces solutions n'a fonctionné sur 16.04 LTS pour i915.ko.
La solution (sale) que j'ai trouvée a consisté à 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 :{