Kernelmodul beim Booten überspringen

11407
Gris

Es gibt ein kaputtes Kernelmodul, aufgrund dessen ich das Betriebssystem nicht einmal laden kann, also kann ich es nicht löschen oder beheben. Ist es möglich, dieses Modul beim Booten mit den Parametern des Kernels oder etwas zu überspringen?

8
verwandte https://askubuntu.com/questions/110341/how-to-blacklist-kernel-module Ciro Santilli 新疆改造中心 六四事件 法轮功 vor 6 Jahren 0

3 Antworten auf die Frage

5
Anton Samsonov

Das Deaktivieren bestimmter Module ist vom Bootloader aus möglich, scheint jedoch von der Distribution abhängig zu sein.

Zum einen heißt es in den Dokumentationen zu Linux-Kernel-Parametern, Stand August 2016:

module_blacklist= [KNL] Laden Sie keine durch Kommas getrennte Liste von Modulen. Nützlich zum Debuggen von Problemmodulen.

Auf der anderen Seite wird die Option, die für mich mit openSUSE 42.1 (Linux 4.1.31) funktioniert hat, im Wiki für  Arch-Kernel-Module beschrieben :

Sie können Module auch vom Bootloader aus auf eine schwarze Liste setzen. Einfach hinzufügen

modprobe.blacklist=modname1,modname2,modname3

in die Kernelzeile Ihres Bootloaders ein, wie in den Kernel-Parametern beschrieben. Wenn Sie mehr als ein Modul auf eine schwarze Liste setzen, beachten Sie, dass diese nur durch Kommas getrennt sind. Leerzeichen oder irgendetwas anderes könnten die Syntax vermutlich durchbrechen.

(Danke an @gertvdijk von  unix.SE für diesen Hinweis.)

Erwähnenswert ist auch die folgende Methode :

Um zu verhindern, dass bestimmte Module vom Kernel über die Befehlszeile von grub geladen werden, müssen Sie sie mit der folgenden Syntax als Parameter an die Kernelzeile übergeben.

$module_name.blacklist=yes

Ich habe keine Ahnung, woher sie das bekommen haben, aber es wird definitiv nicht schaden, eine andere Methode auszuprobieren, wenn alles andere fehlschlägt.

Ich habe die gleiche Frage, warum "$ module_name.blacklist = yes" funktioniert, und ich denke, dass es mit diesem Teil des Kernelcodes zusammenhängt: https://git.kernel.org/pub/scm/linux/kernel/git/ stable / linux-stable.git / tree / kernel / params.c? h = v3.2.96 # n786 Johnlcf vor 6 Jahren 0
1

You should be able to either add it to /etc/modprobe.d/blacklist, or blacklist 'modulename'

Dies funktioniert, erfordert aber das Booten eines anderen Kernels (falls verfügbar) oder eines LiveCD-Systems. quack quixote vor 14 Jahren 0
1
quack quixote

Blacklisting the module as mentioned in the previous answer is the best way to completely avoid a kernel module. Aside from blacklisting, there is no generic way to disable a module.

Some Linux distributions do provide kernel boot parameters to do things like this.

  • In Arch Linux, load_modules=off forces udev to skip auto-loading. This would allow you to boot without loading modules, blacklist a module that's causing trouble, and reboot normally without the troubled module loading.
  • Knoppix has a long list of extra boot parameters (aka "cheatcodes"); these are a mix of normal kernel boot parameters and Knoppix-specific extras.

For further info, see the Kernel Parameters documentation. There are parameters for disabling specific subsystems. For example:

  • nousb disables kernel USB support
  • cgroup_disable=[name] disables a particular controller; however, "memory" is the only example specifically supported
  • libata.noacpi disables ACPI use in libata (SATA controllers); this is an example of passing a module parameter via the kernel