¿Compilar el destino deb-pkg del kernel de Linux sin generar el paquete dbg?

¿Compilar el destino deb-pkg del kernel de Linux sin generar el paquete dbg?

Estoy construyendo kernels de Linux a la manera de Debian según las instrucciones (en su mayor parte) delManual del kernel de Debian Linux. Entonces, para el paso de compilación utilizo target deb-pkgy, al finalizar con éxito, make deb-pkgse generan algunos paquetes de Debian en el directorio principal:

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

Muchas veces me encuentro solo instalando linux-image-x.y.z.deby los otros cuatro paquetes permanecen sin usar. Esto no sería un gran problema, pero sigo descubriendo que generar el paquete que contiene los símbolos de depuración del núcleo ( linux-image-x.y.z-dbg_x.y.z_arch.deb) lleva una cantidad significativa de tiempo. Me pregunto si hay alguna manera de indicarle al deb-pkgobjetivo de compilación que no genere paquetes de símbolos de depuración.

Respuesta1

La respuesta dada por MariusMatutiae no fue exactamente la que esperaba, pero eché un vistazo a algunos de los scripts de compilación del kernel y encontré una solución viable. El script que genera los paquetes Debian resultantes esscripts/package/builddeb. Al observar este script, las partes que crean el paquete con símbolos de depuración están rodeadas por condicionales que dependen de BUILD_DEBUGqué greps se proporcionan KCONFIGpara CONFIG_DEBUG_INFO=y.

Entonces, para dejar de generar paquetes de Debian con símbolos de depuración, actualmente necesitas deshabilitar la CONFIG_DEBUG_INFOopción del kernel:

CONFIG_DEBUG_INFO=n

Respuesta2

manual del kernelsugiere esto:

La compilación utilizará menos espacio en disco si la opción CONFIG_DEBUG_INFO está deshabilitada. Debuginfo solo es necesario si planea utilizar herramientas de objetos binarios como crash, kgdb y SystemTap en el kernel.

Esto se puede lograr con este comando:

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

Respuesta3

Para aquellos que compilan una versión moderna del kernel (5.19+), estos son los símbolos de configuración que deben cambiar:

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

Dependiendo de la fuente del archivo de configuración (por ejemplo, si es la versión de Ubuntu), es posible que deba ejecutar:

scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT

Respuesta4

Debe configurar lo siguiente.configsímbolos:

 CONFIG_FRAME_POINTER=n

 CONFIG_KGDB=n

 CONFIG_KGDB_SERIAL_CONSOLE=n

También debes asegurarte de que CONFIG_DEBUG_RODATA no esté configurado comentándolo,

 # CONFIG_DEBUG_RODATA

Toda la información para compilar el kernel de Linux se puede encontrar, con bastante autoridad,en la página de inicio del kernel de Linux.

información relacionada