Как мне отключить загрузку ненужных модулей ядра? Ядро 3.2.4
Примечание: внесение в черный список приведет не работает для модулей, которые встроены в образ ядра (т.е. не загружаются через отдельный
.ko
файл. Единственный способ отключить такие модули - это использовать параметр ядра (если он доступен) или перекомпилировать ядро.
Просто открой свой /etc/modprobe.d/blacklist
файл и добавьте имя драйвера, используя следующий синтаксис:
blacklist driver-name
РЕДАКТИРОВАТЬ: В более поздних версиях, начиная с 12.10 (12.04?), файл /etc/modprobe.d/blacklist.conf
Перезагрузите свой компьютер и используйте команду lsmod, чтобы отобразить статус модулей в ядре Linux
Примечание: здесь driver-name
это имя нужного вам драйвера из черного списка. Например, если вы хотите отключить драйвер сетевой карты, вы можете найти имя драйвера ядра для вашей сетевой карты с помощью команды lspci -v
команда в терминале.
Например, мой вывод был :
................ 6:00.0 Контроллер Ethernet: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02) Подсистема: Lenovo Device 3861 Флаги: bus master, fast devsel, задержка 0, IRQ 46 Память на уровне b8000000 (64-разрядная, без предварительной выборки) [размер=64 Кб] ПЗУ расширения на [отключено] Возможности: Используемый драйвер ядра: tg3 Модули ядра: tg3................
Здесь, я вижу, водитель tg3
. итак, вам нужно написать tg3
(или ваш водитель) в месте driver-name
.
Можно найти много информации здесь.
Вы также можете временно занести их в черный список в командной строке grub (строка Linux) при загрузке с помощью синтаксиса
module_to_blacklist.blacklist=yes
Другой способ внести модули в черный список, по крайней мере, в Ubuntu 16.04 LTS, - это добавить следующую строку в командную строку ядра:
modprobe.blacklist=MODULE_NAME
Использование системы /etc/modprobe - лучший способ, но это альтернатива, которую можно использовать в крайнем случае, отредактировав командную строку GRUB при загрузке.
Это также можно сделать постоянным, отредактировав /etc/default/grub и добавив в GRUB_CMDLINE_LINUX_DEFAULT
переменная. Например, в моем /etc/default/grub у меня есть:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"
Тогда я бегу update-grub2
, затем update-initramfs -u
. После перезагрузки вы будете свободны от модуля, если после загрузки его ничто не загрузит.
Этот метод также работает в вариантах EL (RHEL, CentOS, SciLinux), но вам придется использовать методы этого дистрибутива для обновления grub и initrd.
(Примечание для тех, кто пытается внести nouveau в черный список: убедитесь, что вы не загружаете X, запустив systemctl set-default multi-user.target
, в противном случае, когда X запустится, он снова загрузит nouveau!)
В более поздних версиях вам необходимо использовать директиву install в вашем файле черного списка
install modulename /bin/false
Замените "modulename" выше на имя модуля. Это принудительно предотвратит его загрузку.
Вы можете найти более подробную информацию о директиве установки в руководстве для modprobe.conf
man modprobe.conf
Ни одно из этих решений не работало на 16.04 LTS для i915.ko.
(Грязное) решение, которое я нашел, состояло в том, чтобы переименовать
/lib/modules/4.4.0-22-generic/kernel/drivers/gpu/drm/i915/i915.ko/usr/lib/xorg/modules/drivers/modesetting_drv.so/usr/lib/xorg/modules/drivers/intel_drv.so
К сожалению, внешний VGA-экран больше не распознается:{
связанные: linux - Skip kernel module at boot - Super User | встроенное подмножество: How to block drivers built-into Kernel, i.e. drivers who are not a module - Unix & Linux Stack Exchange