¿Dónde / cuál es la fuente real del núcleo?

8

Estoy siguiendo esto para aprender a compilar el núcleo. solía

apt-get source linux-image-$(uname -r)

para descargar el código fuente del kernel de Linux que estoy usando actualmente.

Después de ejecutar el comando anterior, se descargaron los siguientes archivos (y directorios).

user $ ls -l
total 130972
drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0
-rw-rw-r--  1 sps sps  10980684 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
-rw-rw-r--  1 sps sps      7396 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.dsc
-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
user $ 

En la misma página se menciona:

Construir el núcleo es bastante fácil. Cambie su directorio de trabajo a la raíz del árbol de fuentes del núcleo y luego escriba los siguientes comandos:

Pero no estoy seguro de cuál es la "raíz del árbol fuente del núcleo".

¿Es el directorio actual (donde ejecuté apt-get source ...y donde tengo los archivos enumerados anteriormente)?

O, es el directorio:

drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0

o, debo extraer el tarball

-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz

Salida para uname -r:

user $ uname -r
3.19.0-30-generic
user $ 
sps
fuente

Respuestas:

8

Del Wiki de Debian :

Los paquetes fuente le proporcionan todos los archivos necesarios para compilar o, de lo contrario, construir el software deseado.

Consiste, en su forma más simple, en tres archivos:

  • El tarball aguas arriba con finalización .tar.gz

  • Un archivo de descripción con finalización .dsc. Contiene el nombre del paquete, tanto en su nombre de archivo como en el contenido (después de la Fuente: palabra clave).

  • Un tarball, con cualquier cambio realizado en la fuente ascendente, más todos los archivos creados para el paquete Debian.

    • Esto tiene un .debian.tar.gz (formato de origen: 3.0)
    • o un final .diff.gz (formato de origen: 1.0)

Es lo mismo para Ubuntu, y en su caso:

  • "linux-lts-vivid-3.19.0": el núcleo real , parcheado a partir del tarball ascendente "linux-lts-vivid_3.19.0.orig.tar.gz" con las modificaciones enumeradas en "linux-lts-vivid_3.19.0 -30.34 ~ 14.04.1.diff.gz ";
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz": un tarball, con cualquier cambio realizado en la fuente ascendente, más todos los archivos creados para el paquete Debian;
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.dsc": un archivo de descripción ".dsc" que termina. Contiene el nombre del paquete, tanto en su nombre de archivo como en el contenido (después de la Fuente: palabra clave);
  • "linux-lts-vivid_3.19.0.orig.tar.gz": el tarball ascendente con el final ".tar.gz" (tenga en cuenta que en mi experiencia no siempre es un archivo ".tar.gz", puede estar ligeramente diferentes formatos, como ".tar.xz");

Cuando ejecuta apt-get source linux-image-$(uname -r), el tarball ascendente se parchea automáticamente con las modificaciones enumeradas en "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz" en "linux-lts-vivid-3.19.0":

% apt-get source linux-image-$(uname -r)
# ...
dpkg-source: info: extracting linux in linux-3.19.0
dpkg-source: info: unpacking linux_3.19.0.orig.tar.gz
dpkg-source: info: applying linux_3.19.0-30.34.diff.gz
# ...
kos
fuente
4

La raíz de su árbol de kernel es el directorio linux-lts-vivid-3.19.0.

Sobre los otros archivos:

En el tarball linux-lts-vivid_3.19.0.orig.tar.gzpuede encontrar el kernel "vainilla", como se lanzó en sentido ascendente; a este núcleo, los desarrolladores de Ubuntu han agregado parches, controladores, cambios en las cosas que se recopilan en el diffque está comprimido linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.

Rmano
fuente
4

Hmmm Cuando ejecutas el comando

apt-get source linux-image-`uname -r`

el comando debe extraer automáticamente los tarballs de origen y parchearlos para crear un directorio llamado después de su núcleo. En su caso, parece que se llama 'linux-lts-vivid-3.19.0', está en su lista de directorios.

Entonces, ese es el directorio de origen, debe ejecutar:

cd linux-lts-vivid-3.19.0

y luego seguir las instrucciones

Nick Veitch
fuente