
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-pkg
y, al finalizar con éxito, make deb-pkg
se 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.deb
y 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-pkg
objetivo 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_DEBUG
qué greps se proporcionan KCONFIG
para CONFIG_DEBUG_INFO=y
.
Entonces, para dejar de generar paquetes de Debian con símbolos de depuración, actualmente necesitas deshabilitar la CONFIG_DEBUG_INFO
opció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.