![Construyendo una nueva semilla de vainilla: cierta confusión con los debs producidos](https://rvso.com/image/1035886/Construyendo%20una%20nueva%20semilla%20de%20vainilla%3A%20cierta%20confusi%C3%B3n%20con%20los%20debs%20producidos.png)
Entonces quería intentar compilar 2.6.39-4. Seguí el procedimiento enPágina "GitKernelBuild" del wiki de Ubuntu.
En resumen, descargue tar.bz2, extraiga, copie mi configuración anterior, cree oldconfig y luego
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
Todo salió bien, estoy usando este kernel ahora mismo, excepto una pequeña cosa: no puedo compilar otros módulos, compilar dkms, etc. A continuación se incluye más información:
Los archivos deb producidos son dos:
linux-image-2.6.39.4-custom_2.6.39.4-custom-10.00.Custom_amd64.deb
linux-headers-2.6.39.4-custom_2.6.39.4-custom-10.00.Custom_amd64.deb
Estoy un poco confundido por esto.
En los kernels de ubuntu normales, incluso en los de mainline-ppa, hay tres archivos deb instalados. Por ejemplo, para el mismo núcleo delppa de línea principalexisten estos paquetes:
linux-image-2.6.39-02063904-generic_2.6.39-02063904.201108040905_amd64.deb
linux-headers-2.6.39-02063904-generic_2.6.39-02063904.201108040905_amd64.deb
linux-headers-2.6.39-02063904_2.6.39-02063904.201108040905_all.deb
Como puede ver, hay dos paquetes de encabezado diferentes. De hecho, después de instalarlos, los paquetes ppa principales crean un directorio en /lib/modules:
/lib/modules/2.6.39-02063904-generic
En ese directorio, existe un enlace simbólico que apunta a los encabezados genéricos en /usr/src
/lib/modules/2.6.39-02063904-generic/build -> /usr/src/linux-headers-2.6.39-02063904-generic
En /usr/src, existen dos directorios diferentes para este kernel
/usr/src/linux-headers-2.6.39-02063904-generic
/usr/src/linux-headers-2.6.39-02063904
Ahora, aquí está el problema con mis dos paquetes:
En /usr/src solo hay una carpeta,
/usr/src/linux-headers-2.6.39.4-custom
Y bajo /lib/modules, hay una carpeta
/lib/modules/linux-headers-2.6.39.4-custom
El verdadero problema y la razón por la que escribo esta publicación es este enlace simbólico que se crea en el directorio anterior:
/lib/modules/linux-headers-2.6.39.4-custom/build -> /home/nickped/projects/kernel/linux-2.6.39.4
Como puede ver, enlaza con el directorio donde construí el kernel, que por supuesto podría no existir después. Esto hace que otros módulos (por ejemplo, vmware, virtualbox, etc.) no se puedan compilar, ya que no pueden encontrar cosas importantes.
¿Por qué pasó esto? ¿Cómo se puede arreglar? ¿Por qué se producen dos archivos deb y no tres? ¿Cuál es el propósito de esos 3 archivos deb diferentes que tienen las versiones oficiales y cómo pueden ser creados por otros?
Respuesta1
Para responder a la primera pregunta¿Por qué solo hay dos paquetes?o¿Por qué no hay dos archivos de encabezado?- cuando se compilan de forma cruzada, se empaquetan para manejar cada caso de uso. Al dividir los encabezados en un tamaño más grandetodopaquete y uno más pequeño específico de arch, ahorra ancho de banda al enviarlos a los usuarios. Cuando lo haga usted mismo, solo lo necesitará para un arco, por lo que un archivo de encabezado será suficiente.
En cuanto al enlace simbólico a su ubicación de origen, tuve el mismo problema. No he encontrado una buena solución aparte de generar también un linux_source
paquete (simplemente agréguelo después kernel_image kernel_headers
) y luego arreglar el enlace simbólico manualmente.
En realidad hayuna pregunta sobre este lado de las cosas ya. La solución a largo plazo parece ser piratear un script que se ejecuta después de cada instalación del kernel y que simplemente arregla el symink.