
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-pkg
e, após o encerramento bem-sucedido, make deb-pkg
existem 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.deb
com 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-pkg
destino 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_DEBUG
qual greps for KCONFIG
fornecido 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_INFO
opçã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.