
Estoy siguiendoestepara aprender a compilar el kernel. 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 elmismopágina se menciona:
Construir el kernel es bastante fácil. Cambie su directorio de trabajo a la raíz del árbol de fuentes del kernel y luego escriba los siguientes comandos:
Pero no estoy seguro de cuál es la "raíz del árbol de fuentes del kernel".
¿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 debería 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 $
Respuesta1
Desde elWiki Debian:
Paquetes fuenteproporcionarle todos los archivos necesarios para compilar o, de lo contrario, crear el software deseado.
Consta, en su forma más simple, de tres archivos:
El tarball ascendente con.tar.gzfinalizando
Un archivo de descripción con terminación .dsc. Contiene el nombre del paquete, tanto en su nombre de archivo como en su contenido (después de la palabra clave Fuente:).
Un tarball, con los cambios realizados en el código fuente, además de todos los archivos creados para el paquete Debian.
- esto tiene un.debian.tar.gz(formato fuente: 3.0)
- o un.diff.gzfinal (formato fuente: 1.0)
Es exactamente lo mismo para Ubuntu, y en tu 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 los cambios realizados en el código fuente, además de 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 que termina en ".dsc". Contiene el nombre del paquete, tanto en su nombre de archivo como en su contenido (después de la palabra clave Fuente:);
- "linux-lts-vivid_3.19.0.orig.tar.gz": el archivo tar ascendente con terminación ".tar.gz" (tenga en cuenta que, según mi experiencia, no siempre es un archivo ".tar.gz", puede estar en un formato 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
# ...
Respuesta2
La raíz de su árbol del núcleo es el directorio linux-lts-vivid-3.19.0
.
Acerca de los otros archivos:
En el tarball linux-lts-vivid_3.19.0.orig.tar.gz
puede encontrar el kernel "vainilla", tal como se lanzó en sentido ascendente; A este kernel, los desarrolladores de Ubuntu agregaron parches, controladores y cambiaron cosas que se recopilan en el diff
archivo comprimido linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
.
Respuesta3
Mmm. Cuando ejecutas el comando
apt-get source linux-image-`uname -r`
el comando debeautomáticamenteextraiga los archivos tar de origen y parcheelos para crear un directorio con el nombre de su kernel. En su caso, parece que se llama 'linux-lts-vivid-3.19.0'; está en la lista de su directorio.
Entonces, ese es el directorio fuente, debes ejecutar:
cd linux-lts-vivid-3.19.0
y luego continúa siguiendo las instrucciones