Compilar o destino deb-pkg do kernel Linux sem gerar o pacote dbg?

Compilar o destino deb-pkg do kernel Linux sem gerar o pacote dbg?

Estou construindo kernels Linux da maneira debian, conforme instruído (na maior parte) peloManual do Kernel Debian Linux. Portanto, para a etapa de compilação eu uso target deb-pkge, após o encerramento bem-sucedido, make deb-pkgexistem alguns pacotes debian gerados no diretório pai:

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

Muitas vezes eu me pego instalando apenas linux-image-x.y.z.debcom os outros quatro pacotes restantes sem uso. Isso não seria um grande problema, mas continuo descobrindo que gerar o pacote contendo os símbolos de depuração do kernel ( linux-image-x.y.z-dbg_x.y.z_arch.deb) leva um tempo significativo. Estou me perguntando se existe uma maneira de indicar ao deb-pkgdestino de construção para não gerar pacotes de símbolos de depuração?

Responder1

A resposta dada por MariusMatutiae não foi exatamente a que eu esperava, mas dei uma olhada em alguns dos scripts de construção do kernel e encontrei uma solução viável. O script que gera os pacotes debian resultantes éscripts/package/builddeb. Observando este script, as partes que constroem o pacote com símbolos de depuração são cercadas por condicionais, dependendo de BUILD_DEBUGqual greps for KCONFIGfornecido CONFIG_DEBUG_INFO=y.

Então, para parar de gerar pacotes debian com símbolos de depuração, atualmente você precisa desabilitar a CONFIG_DEBUG_INFOopção do kernel:

CONFIG_DEBUG_INFO=n

Responder2

manual do kernelsugere isso:

A compilação usará menos espaço em disco se a opção CONFIG_DEBUG_INFO estiver desabilitada. Debuginfo só é necessário se você planeja usar ferramentas de objetos binários como crash, kgdb e SystemTap no kernel.

Isso pode ser alcançado por este comando:

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

Responder3

Para aqueles que estão compilando uma versão moderna do kernel (5.19+), estes são os símbolos de configuração a serem alterados:

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

Dependendo da origem do arquivo de configuração (por exemplo, se é a versão do Ubuntu), pode ser necessário executar:

scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT

Responder4

Você precisa definir o seguinte.configsímbolos:

 CONFIG_FRAME_POINTER=n

 CONFIG_KGDB=n

 CONFIG_KGDB_SERIAL_CONSOLE=n

Você também deve certificar-se de que CONFIG_DEBUG_RODATA não esteja definido comentando-o,

 # CONFIG_DEBUG_RODATA

Todas as informações para compilar o kernel Linux podem ser encontradas, com bastante autoridade,na página inicial do Kernel Linux.

informação relacionada