Les modules du kernel sont encore chargés après un plantage, ils ne peuvent pas les décharger

J'ai trouvé un comportement amusant dans le kernel Linux (version 3.19.0). Nous étions en train de tester un pilote réseau et le système était complètement bloqué, il n'a même pas répondu aux commands SysRq. Après le redémarrage, le pilote que nous testions apparaissait toujours chargé, même lorsqu'il n'était pas configuré pour se charger au démarrage. Ce qui est pire, il n'a pas pu être supprimé ni avec modprobe -r ni rmmod -f . Le journal du kernel n'a rien montré d'utile.

Nous avons essayé de redémarrer encore et encore, même en mettant en list noire le module mais il est toujours apparu comme un module chargé. La seule solution que nous avons trouvée était de réinstaller le kernel ( apt-get remove/install linux-image-$(uname-r) ). Il a ensuite disparu et tout a recommencé à fonctionner parfaitement.

Est-ce que quelqu'un sait ce qui pourrait se passer ici et pourquoi le kernel a-t-il chargé le module même si on lui a explicitement demandé de ne pas le faire?

Edit: la reconfiguration ne l'a pas corrigé, j'ai dû réinstaller le package kernel.

Peut être votre module a été chargé au cours de l'étape initrd. À ce stade, booloader charge un file spécial et le transmet au kernel qui, à son tour, le monte en tant que système de files et charge différents modules à partir de là. Le but initial était de charger les pilotes nécessaires pour lire le système de files racine sans comstackr tous les pilotes possibles dans le kernel. Le file Initrd est régénéré de différentes manières par différentes dissortingbutions, généralement régénérées lors de la mise à jour du kernel. Comme vous semblez utiliser la dissortingbution basée sur Debian, essayez ceci: https://wiki.debian.org/KernelModuleBlacklisting .