Сборка руководства ядра Linux: получающийся двоичный файл в 10 раз больше, чем предварительно скомпилированные двоичные файлы

Попытайтесь войти в систему снова.

Добавление или удаление групп от участника не производят существующие сессии

6
28.07.2014, 08:49
2 ответа

Несмотря на то, что говорит файл , в конце концов, это оказывается отладочными символами. Обсуждение этого вопроса на LKML заставило меня попробовать:

make INSTALL_MOD_STRIP=1 modules_install

И вот, сравнение из каталога /lib/modules/x.x.x ; before:

> ls -hs kernel/crypto/anubis.ko 
112K kernel/crypto/anubis.ko

И после:

> ls -hs kernel/crypto/anubis.ko 
16K kernel/crypto/anubis.ko

Более того, общий размер каталога (с использованием того же .config ), как сообщалось в du -h , увеличился с 185 МБ до 13 МБ.

Имейте в виду, что помимо использования дискового пространства, это не так важно, как может показаться. Отладочные символы не загружаются во время обычного выполнения, поэтому фактический размер каждого модуля в памяти, вероятно, идентичен независимо от размера файла .ko . Я думаю, что единственное существенное различие, которое он будет иметь, будет заключаться в размере файла initramfs , и единственное отличие, которое он будет иметь, - это время, необходимое для распаковки файловой системы. То есть, если вы используете несжатый initramfs, это не имеет значения.

strip --strip-all также работает, а файл сообщает о них правильно как stripped в любом случае. Почему написано, что не удалено для дистрибутивов, остается загадкой.

5
27.01.2020, 20:28

После make oldconfig выполните make vmlinuz . Я думаю, вы обнаружите, что предварительно скомпилированное ядро ​​является «исполняемым bzImage», что означает, что оно сжато на диске. Если вы внимательно посмотрите загрузочные сообщения, вы увидите, что ядро ​​распаковывается на очень ранней стадии процесса.

0
27.01.2020, 20:28

Теги

Похожие вопросы