cuál es la diferencia entre src versión 3. * y 3. * - genérico

10

En mi Linux / Ubuntu local, tengo dos directorios para Linux src

/usr/src/linux-3.16.0
/usr/src/linux-3.16.0-generic

Encontré que el código en 3.16.0 es mucho más que eso en 3.16.0-generic. Me pregunto por qué y cómo esos dos directorios son diferentes (¿y qué representan?)

Ricardo
fuente

Respuestas:

1

Los dos directorios son proporcionados por los paquetes correspondientes, que contienen los archivos de encabezado para el núcleo. Use el dpkgcomando 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-XXcomprende 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-genericparecí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 x86código relacionado, ¿cuál es la diferencia entre el x86có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-genericson 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/x86encuentran en esos dos directorios son solo la diferencia de enlaces reales y simbólicos, con algunos archivos sobrantes de asmencabezados como *-genericcontrapartida.

Entre esos dos paquetes, uno puede notar otra diferencia importante es la presencia de configy generateddirectorios en la *-genericcontraparte.

Según tengo entendido, creo que ese *-genericdirectorio contiene los archivos de encabezado necesarios para configurar y compilar módulos relevantes para la x86arquitectura, 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.

clearkimura
fuente
Dado que ambos almacenan x86código relacionado, ¿cuál es la diferencia entre el x86código en los dos directorios?
Richard
@ Richard He actualizado mi respuesta como se mencionó anteriormente a mi mejor saber, lo más simple posible. Mi respuesta puede verse como ingenua, por lo que es posible que desee buscar una mejor respuesta de otra persona.
clearkimura