Ignorer le module du noyau au démarrage

12

Il y a un module de noyau cassé, à cause duquel je ne peux même pas charger le système d'exploitation, donc je ne peux pas le supprimer ou le réparer. Est-il possible de sauter ce module au démarrage, en utilisant les paramètres du noyau ou quelque chose?

Gris
la source
connexes askubuntu.com/questions/110341/how-to-blacklist-kernel-modules
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Réponses:

1

La mise sur liste noire du module comme mentionné dans la réponse précédente est le meilleur moyen d'éviter complètement un module du noyau. Mis à part la mise sur liste noire, il n'existe aucun moyen générique de désactiver un module.

Certaines distributions Linux fournissent des paramètres de démarrage du noyau pour faire des choses comme ça.

  • Sous Arch Linux , load_modules=offforce udev à ignorer le chargement automatique. Cela vous permettrait de démarrer sans charger les modules, de mettre sur liste noire un module qui cause des problèmes et de redémarrer normalement sans le chargement du module en difficulté.
  • Knoppix a une longue liste de paramètres de démarrage supplémentaires (alias "cheatcodes") ; ce sont un mélange de paramètres de démarrage du noyau normal et d'extras spécifiques à Knoppix.

Pour plus d'informations, consultez la documentation des paramètres du noyau . Il existe des paramètres pour désactiver des sous-systèmes spécifiques. Par exemple:

  • nousb désactive le support USB du noyau
  • cgroup_disable=[name]désactive un contrôleur particulier; cependant, la "mémoire" est le seul exemple spécifiquement pris en charge
  • libata.noacpidésactive l'utilisation d'ACPI dans libata (contrôleurs SATA); ceci est un exemple de passage d'un paramètre de module via le noyau
Quack Quichotte
la source
7

La désactivation de modules spécifiques est possible à partir du chargeur de démarrage, mais ressemble en effet à la distribution.

D'une part, les documentations sur les paramètres du noyau Linux indiquent, en août 2016:

module_blacklist= [KNL] Ne chargez pas de liste de modules séparés par des virgules. Utile pour déboguer les modules problématiques.

D'autre part, l'option qui a fonctionné pour moi avec openSUSE 42.1 (Linux 4.1.31) est décrite dans le  wiki des modules Arch Kernel :

Vous pouvez également mettre des modules sur liste noire à partir du chargeur de démarrage. Ajoutez simplement

modprobe.blacklist=modname1,modname2,modname3

à la ligne du noyau de votre chargeur de démarrage, comme décrit dans Paramètres du noyau. Lorsque vous mettez sur liste noire plus d'un module, notez qu'ils sont séparés par des virgules uniquement. Les espaces ou toute autre chose pourraient vraisemblablement briser la syntaxe.

(Merci à @gertvdijk à  unix.SE de l' avoir signalé.)

Il convient également de mentionner la méthode suivante :

Afin d'empêcher certains modules d'être chargés par le noyau à l'aide de la ligne de commande grub, vous devez les passer en paramètre à la ligne du noyau en utilisant la syntaxe ci-dessous.

$module_name.blacklist=yes

Je n'ai aucune idée d'où ils l'ont obtenu, mais cela ne fera certainement pas de mal d'essayer une autre méthode si tout le reste échoue.

Anton Samsonov
la source
J'ai la même question sur pourquoi "$ module_name.blacklist = yes" fonctionne, et je pense que cela est lié à cette partie du code du noyau: git.kernel.org/pub/scm/linux/kernel/git/stable/linux- stable.git /…
Johnlcf
1

Vous devriez être en mesure de l'ajouter à /etc/modprobe.d/blacklist ou à la liste noire 'modulename'


la source
cela fonctionnera mais nécessite un démarrage vers un autre noyau (si disponible) ou un système LiveCD.
Quack Quichotte