Є зламаний модуль ядра, через який я навіть не можу завантажити ОС, тому не можу його видалити чи виправити. Чи можливо пропустити цей модуль при завантаженні, використовуючи параметри ядра чи щось таке?
Є зламаний модуль ядра, через який я навіть не можу завантажити ОС, тому не можу його видалити чи виправити. Чи можливо пропустити цей модуль при завантаженні, використовуючи параметри ядра чи щось таке?
Відповіді:
Чорний список модуля, як згадувалося в попередній відповіді, - найкращий спосіб повністю уникнути модуля ядра. Крім чорного списку, немає загального способу відключення модуля.
Деякі дистрибутиви Linux надають параметри завантаження ядра для таких дій.
load_modules=off
сили Udev пропустити автозагрузку. Це дозволить завантажуватись без завантаження модулів, чорний список модуля, який спричиняє проблеми, і перезавантажуватись нормально без завантаження проблемних модулів.Для отримання додаткової інформації дивіться документацію щодо параметрів ядра . Існують параметри вимкнення конкретних підсистем. Наприклад:
nousb
відключає підтримку ядра USBcgroup_disable=[name]
відключає певний контролер; однак, "пам'ять" - єдиний приклад, який спеціально підтримуєтьсяlibata.noacpi
відключає використання ACPI в libata (контролери SATA); це приклад передачі параметра модуля через ядроВідключення спеціальних модулів є можливим з завантажувача, але виглядає як-дистрибутив залежить на насправді.
З одного боку, в документації з параметрами ядра 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, або "ім'я модуля" в чорний список