Los dos directorios son proporcionados por los paquetes correspondientes, que contienen los archivos de encabezado para el núcleo. Use el dpkg
comando para encontrar qué paquete proporciona los directorios.
$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...
El primer directorio /usr/src/linux-headers-X.X.XX-XX
comprende archivos de encabezado para múltiples arquitecturas, incluidos x86, amd64, powerpc y otros, lo que da como resultado una mayor cantidad de archivos y un mayor tamaño de paquete.
El otro directorio /usr/src/linux-headers-X.X.XX-XX-generic
parecía contener principalmente códigos fuente relevantes para la arquitectura x86 destinada a la instalación local.
El paquete correspondiente ha insinuado en la descripción, por ejemplo:
$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
This package provides kernel header files for version 3.16.0, for sites
that want the latest kernel headers. Please read
/usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details
Que yo sepa, ambos directorios contienen solo códigos fuente y no binarios. Y la diferencia entre ambos es principalmente la arquitectura objetivo de los códigos fuente.
Relacionado: ¿Qué contiene un árbol fuente del núcleo? ¿Está esto relacionado con los encabezados del kernel de Linux?
Respuesta ampliada (2015.07.30)
Dado que ambos almacenan x86
código relacionado, ¿cuál es la diferencia entre el x86
código en los dos directorios? - Richard Jul 29 '15 a las 19:11
La mayoría de los directorios y archivos contenidos /usr/src/linux-headers-X.X.XX-XX-generic
son enlaces simbólicos, que apuntan a directorios y archivos reales /usr/src/linux-headers-X.X.XX-XX
. En otras palabras, los que se arch/x86
encuentran en esos dos directorios son solo la diferencia de enlaces reales y simbólicos, con algunos archivos sobrantes de asm
encabezados como *-generic
contrapartida.
Entre esos dos paquetes, uno puede notar otra diferencia importante es la presencia de config
y generated
directorios en la *-generic
contraparte.
Según tengo entendido, creo que ese *-generic
directorio contiene los archivos de encabezado necesarios para configurar y compilar módulos relevantes para la x86
arquitectura, sin realizar cambios accidentales en el directorio de origen linux-headers-x.x.xx-xx
.
Sobre todo, los dos directorios son probablemente el enfoque "limpio" para empaquetar y compilar los paquetes en las plataformas respectivas. Aunque, no estoy en posición de aclarar este asunto.
Nota del respondedor : escribí esta respuesta ingenuamente en ese momento, no estoy seguro de qué es correcto o incorrecto, y puede que falte alguna explicación en el medio. Por lo tanto, esta respuesta ahora es un wiki de la comunidad, por lo que cualquier persona con una reputación mínima puede mejorar esta publicación para explicar completamente la diferencia.
x86
código relacionado, ¿cuál es la diferencia entre elx86
código en los dos directorios?