Может возникнуть ситуация, когда вам потребуется запретить загрузку некоторых модулей ядра во время загрузки вашей Linux-системы.
В этом руководстве мы обсудим несколько различных способов внесения модуля в чёрный список, включая его зависимости, в Ubuntu и любых других дистрибутивах на базе Debian.
Это позволит навсегда запретить модулю загружаться во время загрузки.
Черный список модулей при загрузке
Следуйте приведенным ниже шагам, чтобы узнать, как внести модуль ядра в черный список для загрузки в вашей системе.
Начнем с перечисления всех модулей, загруженных в настоящее время в вашей системе Linux:
$ lsmod .... ehci_hcd 40249 0 usbcore 128741 4 ehci_hcd,ohci_hcd,usbhid usb_common 12354 1 usbcore e1000 86156 0 libata 140630 4 libahci,ahci,ata_piix,ata_generic ....
Команда lsmod выводит список всех загруженных в данный момент модулей ядра.
Приведенный выше вывод lsmod был сокращен.
Допустим, мы собираемся внести в черный список модуль usbcore.
Прежде чем выгружать или заносить в черный список какой-либо модуль, полезно посмотреть, какие другие модули зависят от него:
$ modinfo -F depends usbcore usb-common
Из приведенного выше результата видно, что модуль usb-common зависит от usbcore.
Чтобы внести в черный список модуль без зависимостей, создадим файл /etc/modprobe.d/blacklist.conf (если он еще не существует) и добавим в него следующую строку:
blacklist usbcore
После этого обновите initramfs и перезагрузите систему:
# update-initramfs -u # reboot
После перезагрузки используйте lsmod, чтобы проверить, загружен ли модуль в настоящее время.
Если другие модули зависят от того самого модуля, который вы пытаетесь внести в черный список, как в приведенном выше примере, вам нужно внести в черный список все зависимые модули, иначе исходный модуль, который вы внесли в черный список, все равно загрузится.
К счастью, существует трюк, позволяющий внести в черный список все модули, включая их зависимости.
Если по какой-то причине вы не можете внести в черный список модули и все их зависимости, сделайте так, чтобы модуль не загружался и тем самым заставил не загружаться все зависимые модули.
Добавьте следующую строку в /etc/modprobe.d/blacklist.conf, чтобы полностью занести usbcore в черный список, включая все его зависимые модули:
install usbcore /bin/true
Затем обновите initramfs и перезагрузитесь:
# update-initramfs -u
Для полноты картины, пожалуйста, обратите внимание, что хорошей практикой является создание отдельного файла конфигурации модуля для каждого модуля, занесенного в черный список.
Например, если вы хотите внести в черный список модуль e1000, то создайте отдельный файл /etc/modprobe.d/e1000.conf.
Заключение
В этом руководстве мы рассмотрели, как внести модуль ядра в черный список в Ubuntu и других системах Linux на базе Debian.
Это полезно, когда вам нужно предотвратить загрузку модуля, временно или постоянно, во время загрузки.
Изменение легко вернуть, удалив файл, если вам нужно разрешить модулю загружаться снова.
Эти инструкции позволяют модулю оставаться в вашей системе, просто предотвращая его автоматическую загрузку.
См. также:
- ☸️ Как защитить кластер Kubernetes, предотвращая загрузку нежелательных модулей
- 🧱 HiddenWall – Создание скрытых модулей ядра
- Как отключить или включить протокол IPv6 в CentOS / RHEL 7
- 🔐 Шифрование USB-накопителя с помощью Linux