Почему размер моего скомпилированного ядра Linux значительно больше оригинала?

В чем обусловлена значительная разница в размере между скомпилированным мной ядром и готовыми общедоступными ядрами? Мой сборный весит не менее 400 MB, в то время как общедоступные версии обычно весят около 130 MB. Буду благодарен за лучшую стратегию сборки моего ядра и дополнительную информацию или ссылку по важным конфигурационным параметрам для моей ситуации.
  • 1 декабря 2023 г. 21:49
Ответы на вопрос 8
Разница в размере ядер обычно обусловлена следующими факторами:

1. Конфигурация: когда вы компилируете ядро самостоятельно, вы выбираете определенные параметры конфигурации. Если вы включаете больше драйверов и функций в своей компиляции, они занимают больше места, что увеличивает размер вашего скомпилированного ядра. Напротив, готовые ядра часто конфигурируются с учетом баланса между размером ядра и универсальностью использования.

2. Отладочная информация: Отладочная информация может значительно увеличить размер вашего ядра. Вы можете отключить ее, установив опцию CONFIG_DEBUG_INFO в значение "нет" в файле конфигурации .config.

3. Оптимизация: в основном ядра Linux максимально оптимизированы для уменьшения их размера. Если вы используете другие настройки или опции компиляции, это может повлиять на размер скомпилированного ядра.

4. Статические модули: Если в ядре используются статические модули (то есть модули, которые вмонтированы в само ядро, а не загружаются динамически), это также может увеличить размер ядра.

Чтобы минимизировать размер вашего ядра, убедитесь, что вы инклюдируете только те драйверы и функции, которые действительно необходимы для вашей системы. Вы также можете использовать различные утилиты для настройки конфигурационных файлов ядра, такие как menuconfig, xconfig или nconfig. Они предоставляют интерфейс пользователя, который позволяет вам выбрать, какие функции включить в вашу компиляцию ядра. 

Кроме того, обратите внимание на отладочную информацию: в большинстве случаев отладка не требуется для обычного использования, и вы можете отключить ее для уменьшения размера.
 Для обновления ядра в системе gentoo используется утилита genkernel, но ее нужно запускать вручную.
 За обновлениями ядра придется следить самостоятельно, поскольку операционные системы обычно не предлагают автоматического отслеживания. 
Если твоя цель - отредактировать существующие конфигурации ядра в дистрибутиве, используй настройки из /boot/config..., а не из каталога с исходниками. Эта последняя опция просто восстанавливает конфигурацию из предыдущей сборки. 
 Те, кто использует gentoo, могут просто скопировать конфигурации у Ubuntu, чтобы решить некоторые проблемы, например, с видеодрайверами. 
 Ядра высокой емкости не нагружают систему, и потеря нескольких мегабайтов не окажет заметного влияния на производительность x86-машин. 
 Отключение излишних функций не гарантирует отсутствие проблем. Однако это может немного ускорить загрузку, что особенно актуально для виртуальных машин. 
 Единственная причина заморачиваться с компиляцией ядра - это желание включить новые функции. Например, можно взять ядро, оптимизированное для работы в облачной среде, и добавить отключенный функционал. 
Похожие вопросы