Пропустить модуль ядра при загрузке

11214
Gris

Имеется сломанный модуль ядра, из-за которого я даже не могу загрузить ОС, поэтому не могу удалить или исправить ее. Можно ли пропустить этот модуль при загрузке, используя параметры ядра или что-то еще?

8
связанные https://askubuntu.com/questions/110341/how-to-blacklist-kernel-modules Ciro Santilli 新疆改造中心 六四事件 法轮功 6 лет назад 0

3 ответа на вопрос

5
Anton Samsonov

Отключение специальных модулей является возможным из загрузчика, но выглядит дистрибутив-зависимого действительно.

С одной стороны, в документации по параметрам ядра Linux по состоянию на август 2016 года говорится:

module_blacklist= [KNL] Не загружайте список модулей через запятую. Полезно для отладки проблемных модулей.

С другой стороны, опция, которая работала для меня с openSUSE 42.1 (Linux 4.1.31), описана в  вики модулей Arch Kernel :

Вы также можете занести в черный список модули из загрузчика. Просто добавь

modprobe.blacklist=modname1,modname2,modname3

в строку ядра вашего загрузчика, как описано в параметрах ядра. Когда вы заносите в черный список более одного модуля, обратите внимание, что они разделены только запятыми. Пробелы или что-либо еще могут предположительно нарушить синтаксис.

(Спасибо @gertvdijk в  unix.SE за указание на это.)

Также стоит упомянуть следующий метод :

Чтобы предотвратить загрузку определенных модулей ядром с помощью командной строки grub, вы должны передать их в качестве параметра в строку ядра, используя приведенный ниже синтаксис.

$module_name.blacklist=yes

Я понятия не имею, откуда они это взяли, но точно не помешает попробовать любой другой метод, если ничего не получится.

У меня тот же вопрос о том, почему «$ module_name.blacklist = yes» работает, и я думаю, что он связан с этой частью кода ядра: https://git.kernel.org/pub/scm/linux/kernel/git/ стабильный / Linux-stable.git / дерево / ядро ​​/ params.c? ч = v3.2.96 # n786 Johnlcf 6 лет назад 0
1

Вы должны иметь возможность либо добавить его в /etc/modprobe.d/blacklist, либо в черный список 'modulename'

это будет работать, но требует загрузки другого ядра (если доступно) или системы LiveCD. quack quixote 13 лет назад 0
1
quack quixote

Добавление в черный список модуля, как упомянуто в предыдущем ответе, является лучшим способом полностью избежать модуля ядра. Помимо черного списка, нет общего способа отключить модуль.

Некоторые дистрибутивы Linux предоставляют параметры загрузки ядра для таких вещей.

  • В Arch Linux, load_modules=offсилы Udev пропустить автозагрузку. Это позволит вам загружаться без загрузки модулей, заносить в черный список модуль, который вызывает проблемы, и нормально перезагружаться без проблемной загрузки модулей.
  • Knoppix имеет длинный список дополнительных параметров загрузки (он же «чит-коды») ; Это сочетание обычных параметров загрузки ядра и дополнительных функций, специфичных для Knoppix.

Для получения дополнительной информации см. Документацию параметров ядра . Есть параметры для отключения определенных подсистем. Например:

  • nousb отключает поддержку ядра USB
  • cgroup_disable=[name]отключает определенный контроллер; однако «память» является единственным примером, специально поддерживаемым
  • libata.noacpiотключает использование ACPI в libata (контроллеры SATA); это пример передачи параметра модуля через ядро