2013-08-01 3 views
0

Когда я компилирую ядро ​​Linux, количество компилируемых драйверов и модулей определенно влияет на размер созданного двоичного файла. Но влияет ли это на размер ядра, когда он загружается в память?Число скомпилированных модулей, влияющих на размер ядра Linux в ОЗУ?

Я имею в виду, когда я компилирую драйверы, которые мне не нужны для моего оборудования, ядро ​​просто игнорирует их или они также загружаются в ОЗУ?

TL;
Я скомпилировал ядро ​​A, содержащее ТОЛЬКО драйверы, которые мне нужны;
Kernel B, содержащий драйверы Мне нужны дополнительные драйверы, которых нет.
Будет ли ядро ​​Б потреблять больше памяти, чем ядро ​​A?

+2

Да. Если драйверы создаются как часть образа ядра. Нет, если они созданы как модули ядра 'ko' и не загружаются, если это необходимо. – TheCodeArtist

+0

@ TheCodeArtist: Можете ли вы представить это как ответ? Некоторые ссылки были бы хороши также :) – Petr

ответ

2
  1. Любой водитель, который построен как часть образа ядра Linux загружается в оперативную память при загрузке и будет продолжать потреблять основную память независимо от того, используется ли он.

  2. Драйверы, построенные как отдельные модули, то есть .ko файлы могут быть отдельно загружены по мере необходимости. Они НЕ используют основную память, если они не загружены.

    • Загрузка модуля ядра осуществляется с помощью modprobe и insmod команды, после загрузки и запуска ядра Linux.

    • При загрузке ядро ​​Linux модуль с помощью modprobe, любые другие модули это зависит от ARE automatically loaded first.

    • Когда модули ядра загружены, их необходимо сопоставить в непрерывный блок виртуальной памяти. Это достигается путем введения additional constraint on the memory map using vmalloc.

Смежные вопросы