Является ли отключенная опция ядра эквивалентной, не загружая соответствующий модуль?

Предположим, что я задал параметр конфигурации tristate kernel, который будет построен как модуль, но я не загружаю соответствующий модуль ядра во время выполнения (и он не загружается автоматически). Является ли функциональность полученного ядра эквивалентом того, что было бы, если бы я отключил опцию прямо? Или есть какая-то разница между выгруженным модулем и отключенным вариантом ядра?

Иногда при установке пакетов в моей системе Gentoo я получаю предупреждения о форме

CONFIG_FLUX_CAPACITOR устанавливается, когда это не должно быть

Как правило, оказывается, что опция фактически устанавливается как модуль, который затем не загружается. Похоже, что программное обеспечение отлично работает в каждом случае, с которым я столкнулся до сих пор, но мне интересно, может ли это что-то, что я могу ожидать в целом.

  • скомпилировать один файл ядра linux
  • Каково влияние на производительность системы при включении информации об отладке ядра?
  • DisplayPort и Intel HD вызывают зависание GPU
  • исходный код ядра для beaglebone black
  • Замена для крышки
  • Хорошие способы размещения или распространения моего патча для списка рассылки ядра Linux
  • Разница между загрузочными и не загружаемыми разделами
  • как файловое вредоносное ПО работает на Linux?
  • One Solution collect form web for “Является ли отключенная опция ядра эквивалентной, не загружая соответствующий модуль?”

    Отключенная опция времени компиляции означает, что код не скомпилирован.

    Выгрузка модуля означает, что код был скомпилирован в модуль, но не загружен в память и, следовательно, не запущен. Имейте в виду, что иногда модули могут загружаться автоматически, поэтому, если вам нужно отключить определенные функции, безопасная опция – отключить ее во время компиляции или занести в черный список в /etc/modprobe.conf или /etc/modprobe.d/* , Или удалив файл модуля из файловой системы – возможно, вы захотите запустить depmod после этого и запомните, что могут быть некоторые другие модули, которые зависят от него (что может вызвать некоторые проблемы позже).

    Тем не менее, умение одинаково. Там может (или не быть) небольшая разница в коде, который адаптирован для работы с или без модуля, который вы отключите: предположим, вы можете скомпилировать ядро ​​с функцией A в качестве модуля. Если функция B способна использовать функцию A, но не требует ее, результирующий код может отличаться. С включенным A (независимо от того, что он является модулем или скомпилирован в), B может включать опциональную проверку наличия функции A. С отключенным во время компиляции такая проверка в B не имеет значения и может быть пропущена полностью. Это, однако, должно быть явно указано в самом коде (например, с помощью директивы C #ifdef ), сам компилятор не может это решить. Следовательно, это зависит от авторов частей, которые имеют функцию A в качестве дополнительной зависимости. Следует ли это назвать функционально другим, сомнительно – оно не изменяет возможности, но, скорее всего, изменяет время выполнения (хотя и немного, но даже может быть хрустящим в некоторых случаях).

    Linux и Unix - лучшая ОС в мире.