Скомпилировать ядро ​​Linux deb-pkg target без генерации пакета dbg?

Скомпилировать ядро ​​Linux deb-pkg target без генерации пакета dbg?

Я собираю ядра Linux способом Debian, следуя (в основном) инструкциямСправочник по ядру Debian Linux. Итак, для этапа компиляции я использую target deb-pkg, и после успешного завершения make deb-pkgв родительском каталоге генерируется несколько пакетов Debian:

linux-firmware-image-VERSIONS.deb
linux-headers-VERSIONS.deb
linux-image-VERSIONS.deb
linux-image-VERSION-dbg_VERSION.deb
linux-libc-dev_VERSIONS.deb

Часто я обнаруживаю, что устанавливаю только linux-image-x.y.z.debчетыре других пакета, оставшихся неиспользованными. Это не было бы большой проблемой, но я постоянно обнаруживаю, что генерация пакета, содержащего символы отладки ядра ( linux-image-x.y.z-dbg_x.y.z_arch.deb), занимает значительное количество времени. Мне интересно, есть ли способ указать deb-pkgцели сборки не генерировать пакеты символов отладки?

решение1

Ответ, данный MariusMatutiae, не совсем тот, который я ожидал, но я посмотрел некоторые скрипты сборки ядра и нашел работающее решение. Скрипт, который генерирует результирующие пакеты Debian, этоscripts/package/builddeb. Глядя на этот скрипт, можно увидеть, что части, которые создают пакет с отладочными символами, окружены условными операторами, зависящими от BUILD_DEBUGтого, какие grep-ы указаны KCONFIGдля CONFIG_DEBUG_INFO=y.

Таким образом, чтобы прекратить создание пакетов Debian с отладочными символами, в настоящее время вам необходимо отключить CONFIG_DEBUG_INFOопцию ядра:

CONFIG_DEBUG_INFO=n

решение2

kernel-руководствопредполагает следующее:

Сборка будет использовать меньше места на диске, если опция CONFIG_DEBUG_INFO отключена. Debuginfo нужна только в том случае, если вы планируете использовать инструменты бинарных объектов, такие как crash, kgdb и SystemTap, в ядре.

Это можно сделать с помощью этой команды:

cd linux-source-4.12
scripts/config --disable DEBUG_INFO

решение3

Для тех, кто компилирует современную версию ядра (5.19+), вот символы конфигурации, которые следует изменить:

scripts/config --undefine GDB_SCRIPTS
scripts/config --undefine DEBUG_INFO
scripts/config --undefine DEBUG_INFO_SPLIT
scripts/config --undefine DEBUG_INFO_REDUCED
scripts/config --undefine DEBUG_INFO_COMPRESSED
scripts/config --set-val  DEBUG_INFO_NONE       y
scripts/config --set-val  DEBUG_INFO_DWARF5     n

В зависимости от источника файла конфигурации (например, версия Ubuntu) вам может потребоваться выполнить:

scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT

решение4

Вам необходимо установить следующее:.configсимволы:

 CONFIG_FRAME_POINTER=n

 CONFIG_KGDB=n

 CONFIG_KGDB_SERIAL_CONSOLE=n

Вам также следует убедиться, что CONFIG_DEBUG_RODATA не установлен, закомментировав его,

 # CONFIG_DEBUG_RODATA

Всю информацию по компиляции ядра Linux можно найти, довольно авторитетно,на домашней странице Linux Kernel.

Связанный контент