Имеется сломанный модуль ядра, из-за которого я даже не могу загрузить ОС, поэтому не могу удалить или исправить ее. Можно ли пропустить этот модуль при загрузке, используя параметры ядра или что-то еще?
3 ответа
Отключение специальных модулей можно с загрузчика, но выглядит дистрибутив-зависимого действительно.
С одной стороны, в документации по параметрам ядра 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
Я понятия не имею, откуда они это взяли, но точно не помешает попробовать любой другой метод, если ничего не получится.
Вы должны иметь возможность либо добавить его в /etc/modprobe.d/blacklist, либо в черный список 'modulename'
Добавление в черный список модуля, как упомянуто в предыдущем ответе, является лучшим способом полностью избежать модуля ядра. Помимо черного списка, нет общего способа отключить модуль.
Некоторые дистрибутивы Linux предоставляют параметры загрузки ядра для таких вещей.
- В Arch Linux
load_modules=off
заставляет udev пропускать автозагрузку. Это позволит вам загружаться без загрузки модулей, заносить в черный список модуль, который вызывает проблемы, и нормально перезагружаться без проблемной загрузки модулей. - Knoppix имеет длинный список дополнительных параметров загрузки (он же «чит-коды») ; Это сочетание обычных параметров загрузки ядра и дополнительных функций, специфичных для Knoppix.
Для получения дополнительной информации см. Документацию параметров ядра. Есть параметры для отключения определенных подсистем. Например:
nousb
отключает поддержку ядра USBcgroup_disable=[name]
отключает определенный контроллер; однако "память" является единственным примером, специально поддерживаемымlibata.noacpi
отключает использование ACPI в libata (контроллеры SATA); это пример передачи параметра модуля через ядро