С незапамятных времен мы использовали в наших доморощенных системах “черный список” для блокировки модулей ядра черный список (в различных воплощениях). Он верно служит нам, но мы (или, скорее, наши upstream-разработчки) уже достигли поворотного пункта, где такой список более не требуется.

Поэтому мы приняли решение избавиться от всей логики “черного списка” модулей и рассчитывать только на “черный список”, представляемый
modprobe
. Это означает изменения в синтаксисе, а также небольшие изменения в функциональности. Мы надеемся, что кратковременные неудобства оправдаются выгодами в долгосрочной перспективе.

Из-за не связанных (с этим) изменений в нашем пакете udev, мы более не загружаем так много модулей, как мы ранее привыкли делать по умолчанию, поэтому некоторые проблемные модули (например,
pcspkr
and
snd-seq-oss
), возможно, больше не нужно помещать в “черный список”.


Различное представление “черных списков”
Представления о блокировке модулей, которое мы использовали ранее (к сожалению) немного отличается от того, что принято для modprobe.

  • наш “черный список”: блокируемый модуль, или модуль, который зависит от него, никогда не будет загружаться автоматически udev, но может быть загружен вручную.
  • “черный список” modprobe: блокируемый модуль не будет загружен автоматически, но могут быть загружены, если другой не-блокируемый модуль зависит от него, или если он загружен вручную.
  • отключение модуля: можно получить то же поведение, которого мы добивались, заставляя модуль всегда быть не в состоянии загрузиться, но будет невозможно загрузить его вручную.

Блокирование или отключение модулей при загрузке (boot time)
Модули могут быть блокированы во время загрузки путем добавления
modprobe.blacklist=mod1,mod2,mod3
к командной строке ядра (в grub, lilo или syslinux). В качестве варианта, модули могут быть отключены напрочь путем добавления взамен указанного выше
mod1.disable=1 mod2.disable=1 mod3.disable=1
. Это полезно в чрезвычайной ситуации, когда поломанный модуль делает невозможным загрузку системы.

Постоянное блокирование или отключение
Вместо того, чтобы блокировать модули через “черный список” в
rc.conf
, используйте родные конфигурационные файлы modprobe. Они могут быть найдены в /etc/modprobe.d/, и документированы в
man modprobe.d
.

Замена находящейся в
rc.d
строке
MODULES=(!mod1 !mod2 !mod3)
заключается в добавлении файла
.conf
в
/etc/modprobe.d/
следующего содержания:

blacklist mod1
blacklist mod2
blacklist mod3

Кроме того, для чтобы модули никогда не добавлялись, даже если они необходимы другими модулями загрузки:

install mod1 /bin/false
install mod2 /bin/false
install mod3 /bin/false

Оригинал: News: Changes to module blacklisting
Автор: Tom Gundersen
Дата публикации: 08.06.2011
Говорила мама: "RTFM, сынок!"