Cómo parchear el kernel


Es una pregunta típica en la lista del kernel, así que en este artículo daré sólo unas recetas y guía básica de cómo parchear el kernel de Linux.

No tengo idea de lo que hablas
La primera consideración antes de parchear un kernel es ¿sé como compilar el kernel? ¿alguna vez he compilado alguno? ¿sé que hardware tengo y como configurarlo?. Si las respuesta es NO a cualquiera de estas preguntas, puedes dejar de leer este artículo, no te servirá de mucha ayuda, ya que sólo es un resumen para gente que no tiene del todo claro como parchear el Linux. En todo caso te recomiendo los siguientes enlaces:

Breve intro
El kernel “vanilla”, es decir es oficial de Linus o de Marcelo Tosatti para el caso
del 2.4 en realidad es el menos usado por las distribuciones, que tienen sus propias
versiones, basadas en el oficial pero con parches adicionales. Moraleja: no parchear
los kernels de distribuciones, incluso las de Debian, con parches dedicados a la “oficial”, no funcionará.
Debido a los cambios rápidos que se producen en el desarrollo, y a la lentitud en integrar
esos cambios en las rama estable (ahora 2.4, antes la 2.2, 2.0, 1.2… y luego la 2.6 ó 3.0),
nos obligan a parchear nuestro núcleo con parches de otras personas o ramas, en especial las de Alan
Cox (la rama -acX disponibles en kernel.org o sus mirrors),
y las -ck de Con Kolivas.
La rama de Alan Cox está especialmente orientada a tener las últimas versiones de drivers o módulos importantes, por ejemplo las 2.4.X-acY tienen integrado el XFS, el último ACPI o el DRM/DRI. Los parches de Kolivas están orientados a ofrecer mejores tiempos de respuesta para ordenadores de escritorio (en el sentido de usar programas y escritorio gráfico, como KDE o GNOME, no en el sentido de “escritorio vs. portable”).
Además de estas dos ramas, muchas veces tenemos que recurrir a parchear nuestro kernel con versiones “pre-oficiales” -preX o -rcX (por Release Candidate), que son aquellos parches que se van generando antes de liberar la versión estable oficial.
Entre los parches, hay algunos que se aplican directamente sobre una versión “fija” del kernel, tal es el caso de los parches -pre o -rc o de los de Kolivas. Por ejemplo, en el caso de un -pre ó -rc se aplican sobre la versión estable anterior, así un patch-2.4.22-pre1 deberá aplicarse sobre las fuentes del 2.4.21. En el caso de Kolivas, el nombre del fichero del parche indica a qué versión hay que aplicar, por ejemplo linux-2.4.21-ck1.patch.bz2 indica que debe aplicarse sobre el 2.4.21.
Por otro lado, hay otros parches que son acumulativos a veces sí y otras no, típicamente los de Alan Cox (la rama -ac). En este caso, si el nombre del fichero es patch-2.4.22-pre1-ac3 indica que debe aplicarse primero el parche patch-2.4.22-pre1 (usando la regla anterior) y luego patch-2.4.22-pre1-ac3. Si por el contrario el nombre es patch-2.4.22-ac1 (sin ningún -pre o -rc) es porque se debe aplicar directamente sobre la versión 2.4.22.

Los parches tienen la extensión .bz2 o .gz. En el primer caso se usará el bzcat para descomprimirlo on the fly (y así estarán los ejemplos). En el segundo caso hay que usar el zcat.
Es muy importante mantener la configuración de un kernel entre distintas versiones que compilemos. Esa configuración se mantiene en el fichero .config dentro del directorio del kernel, es mejor mantener siempre una copia del fichero para luego copiar al directorio del nuevo kernel y adaptar la configuración con el make oldconfig.
La receta
En resumen, los pasos para parchear el kernel son:
1. Bajar los fuentes del kernel y el/los parche/es en /usr/src.
2. Descomprimir el kernel:
tar xvjf linux-2.4.21.tar.bz2
3. Ir al directorio del kernel:
cd linux-2.4.21
4. Parchear el kernel:
bzcat ../patch-2.4.21-ac1.bz2 | patch -p1
5. Copiar el .config anterior al directorio actual.
6. Verificar opciones nuevas y hacer consistente con las actuales:
make oldconfig
7. Configurar o modificar más opciones si lo deseamos:
make menuconfig

Ya que lo mencionamos, si te falla aquí no te olvides del apt-get install libncurses-dev 🙂
8. Compilar como lo hacemos habitualmente. En Debian es:
make-kpkg kernel_image
make-kpkg modules_image
(ésta última opción si tenemos fuentes de módulos externos en /usr/src/modules).
9. Instalar como lo hacemos habitualmente. En Debian es:
dpkg -i kernel-image-2.4.21-ac1_10.00.Custom_i386.deb
dpkg -i nombre-módulos-XYS.deb
(éste último es opcional y para cada uno de los módulos que hayamos generado).

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1789 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.