3

Я читал, что ядро Linux является монолитным ядром и содержит драйверы внутри него, в одном файле.

Например, у меня есть два ядра Linux 3.16.0.40 и 3.16.0.50 В настоящее время загружается система с 3.16.0.40 и установлена, например, для драйвера nvidia

Драйвер запихивается в ядро?

Если так, если я выберу 3.16.0.50 из grub и загрузлю систему

Может ли он получить доступ к установленному в данный момент драйверу из предыдущего ядра?

Влияет ли переключение между ядрами Linux на программное обеспечение, которому нужен этот драйвер?

2 ответа2

1

Это зависит.

Ядро Linux имеет функцию под названием « Загружаемые модули ядра» (LKM).

Поскольку драйверы обычно создаются как модули ядра, я использую два термина "драйверы" и "модули" взаимозаменяемо. Модули - это файлы, оканчивающиеся на *.ko (объекты ядра). Обычно они находятся в подпапке ниже /lib/modules .

  • Чтобы ответить на ваш заголовок-вопрос: (увеличение площади ядра)

    Ядро, в которое встроены все модули / драйверы, не увеличивает объем памяти во время выполнения. Все загружается при загрузке. Если драйвер (ы) являются модулями ядра, они могут быть загружены позже, и, следовательно, увеличит площадь ядра на более позднем этапе.

    Когда вы сравниваете размер файла ядра со всеми встроенными драйверами и ядра с модулями, файл с модулями меньше. Размер модулей - это разница.

  • Текст вопроса: (доступ к драйверам из предыдущего ядра)

    Нет, это невозможно. Каждый драйвер / модуль должен быть собран именно для того ядра, под которым он должен работать. По этой причине вы увидите каталог с именем ядра в корневом каталоге модулей /lib/modules .

Более подробная информация содержится в загружаемых модулях ядра Linux HOWTO. Хороший способ узнать больше о ядре и модулях - это собрать ядро самостоятельно. Это не так сложно, как кажется. Есть учебники для Ubuntu и для стандартных ядер. (вы, вероятно, найдете больше учебников, если вы Google).

1

Ядро скомпилировано до установки в системе, поэтому его размер указан в камне. Драйверы и любые другие модули или программы не влияют на размер ядра. Только перекомпиляция ядра изменит его размер.

Вот почему существует так много версий Linux. Маленькие к огромным. Некоторые скомпилированы для работы без графического интерфейса вообще, чтобы быть маленькими и простыми для проектов, которым требуется только терминальное соединение, такое как IOT (Internet Of Things). У некоторых есть пользовательский графический интерфейс, например Ubuntu, RedHat и т.д.

Вы можете выбрать GUI, Gnome или KDE. Но это как варианты на автомобиле. Вы можете поменять краску и добавить кожаные сиденья, но это все еще 4 цилиндра под капотом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .