Compilación de Núcleo · 9 min read · Nov 27, 2025
Cómo Compilar Un Núcleo - A La Manera De Debian

Cada distribución tiene algunas herramientas específicas para construir un núcleo personalizado a partir de las fuentes. Este artículo trata sobre la compilación de un núcleo en un sistema Debian (Etch). Describe cómo construir un núcleo personalizado utilizando las últimas fuentes de núcleo sin modificar de www.kernel.org (núcleo vanilla) para que seas independiente de los núcleos suministrados por tu distribución. También muestra cómo parchear las fuentes del núcleo si necesitas características que no están allí.
¡No emito ninguna garantía de que esto funcionará para ti!
1 Nota Preliminar
Describiré dos formas de compilar un nuevo núcleo. Usando el primer método, terminarás con un paquete kernel.deb que se puede instalar en el sistema, y que puedes compartir con otros e instalar en otros sistemas Debian Etch.
El segundo método es compilar un núcleo de la manera “tradicional”. Este método funciona en cualquier distribución de Linux, pero, por supuesto, no terminas con un paquete kernel.deb.
2 Construyendo Un Paquete .deb Del Núcleo
Este capítulo muestra cómo construir un núcleo y terminar con un paquete .deb que puedes instalar y compartir con otros.
2.1 Instalar Paquetes Requeridos Para La Compilación Del Núcleo
Primero actualizamos nuestra base de datos de paquetes:
apt-get updateLuego instalamos todos los paquetes necesarios así:
apt-get install kernel-package ncurses-dev fakeroot wget bzip2 build-essential2.2 Descargar Las Fuentes Del Núcleo
A continuación, descargamos nuestro núcleo deseado a /usr/src. Ve a www.kernel.org y selecciona el núcleo que deseas instalar, por ejemplo, linux-2.6.21.3.tar.bz2 (puedes encontrar todos los núcleos 2.6 aquí: http://www.kernel.org/pub/linux/kernel/v2.6/). Luego puedes descargarlo a /usr/src así:
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2Luego descomprimimos las fuentes del núcleo y creamos un enlace simbólico linux al directorio de fuentes del núcleo:
tar xjf linux-2.6.21.3.tar.bz2
ln -s linux-2.6.21.3 linux
cd /usr/src/linux2.3 Aplicar Parche A Las Fuentes Del Núcleo (Opcional)
A veces necesitas controladores para hardware que no está soportado por el nuevo núcleo por defecto, o necesitas soporte para técnicas de virtualización o alguna otra tecnología de vanguardia que aún no ha llegado al núcleo. En todos estos casos, tienes que parchear las fuentes del núcleo (siempre que haya un parche disponible…).
Ahora supongamos que has descargado el parche necesario (lo llamo patch.bz2 en este ejemplo) a /usr/src. Así es como lo aplicas a tus fuentes del núcleo (debes seguir en el directorio /usr/src/linux):
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1El primer comando es solo una prueba, no hace nada a tus fuentes. Si no muestra errores, puedes ejecutar el segundo comando que realmente aplica el parche. ¡No lo hagas si el primer comando muestra errores!
También puedes aplicar preparches del núcleo a tus fuentes del núcleo. Por ejemplo, si necesitas una característica que solo está disponible en el núcleo 2.6.22-rc3, pero las fuentes completas aún no han sido liberadas para este núcleo. En su lugar, hay disponible un parche-2.6.22-rc3.bz2. Puedes aplicar ese parche a las fuentes del núcleo 2.6.21, pero no al núcleo 2.6.21.1 o 2.6.21.2, etc. Esto se explica en http://kernel.org/patchtypes/pre.html:
Los preparches son el equivalente a las versiones alfa para Linux; viven en los directorios de prueba en los archivos. Deben aplicarse utilizando la utilidad patch(1) al código fuente de la versión completa anterior con un número de versión de 3 partes (por ejemplo, el preparche 2.6.12-rc4 debe aplicarse a las fuentes del núcleo 2.6.11, no, por ejemplo, 2.6.11.10.)
Así que si deseas compilar un núcleo 2.6.22-rc3, debes descargar las fuentes del núcleo 2.6.21 ( http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2) en el paso 3 en lugar del núcleo 2.6.21.3!
Así es como aplicas el parche 2.6.22-rc3 al núcleo 2.6.21:
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc3.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p12.4 Configurar El Núcleo
Es una buena idea usar la configuración de tu núcleo de trabajo actual como base para tu nuevo núcleo. Por lo tanto, copiamos la configuración existente a /usr/src/linux:
make clean && make mrproper
cp /boot/config-`uname -r` ./.configLuego ejecutamos
make menuconfiglo que abre el menú de configuración del núcleo. Ve a Cargar un Archivo de Configuración Alternativo y elige .config (que contiene la configuración de tu núcleo de trabajo actual) como el archivo de configuración:


Luego navega por el menú de configuración del núcleo y haz tus elecciones. Cuando termines y selecciones Salir, responde a la siguiente pregunta (¿Deseas guardar tu nueva configuración del núcleo?) con Sí:

2.5 Construir El Núcleo
Para construir el núcleo, ejecuta estos dos comandos:
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headersDespués de –append-to-version= puedes escribir cualquier cadena que te ayude a identificar el núcleo, pero debe comenzar con un guion (-) y no debe contener espacios en blanco.
Ahora ten paciencia, la compilación del núcleo puede tardar algunas horas, dependiendo de la configuración de tu núcleo y la velocidad de tu procesador.
2.6 Instalar El Nuevo Núcleo
Después de la exitosa construcción del núcleo, puedes encontrar dos paquetes .deb en el directorio /usr/src.
cd /usr/src
ls -lEn mi sistema de prueba se llamaron linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb (que contiene el núcleo real) y linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb (que contiene archivos necesarios si deseas compilar módulos adicionales del núcleo más adelante). Los instalo así:
dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb(Puedes incluso transferir los dos archivos .deb a otros sistemas Debian Etch e instalarlos allí exactamente de la misma manera, lo que significa que no tienes que compilar el núcleo allí nuevamente.)
Eso es todo. El archivo de configuración del cargador de arranque GRUB /boot/grub/menu.lst se ha modificado automáticamente, y se ha creado un ramdisk para el nuevo núcleo en /boot.
Ahora reinicia el sistema:
shutdown -r nowEn el aviso de arranque, selecciona tu nuevo núcleo (debería ser seleccionado por defecto):

Si todo va bien, debería iniciarse con el nuevo núcleo. Puedes verificar si realmente está usando tu nuevo núcleo ejecutando
uname -rEsto debería mostrar algo como
2.6.21.3-customSi el sistema no arranca, reinícialo y selecciona tu viejo núcleo en el aviso de arranque. Ahora puedes intentar nuevamente compilar un núcleo funcional. No olvides eliminar la(s) estrofa(s) del núcleo que no funciona de /boot/grub/menu.lst.
3 Construyendo Un Núcleo De La Manera Tradicional
Este capítulo describe un enfoque diferente que se puede usar en cualquier sistema Linux (aparte de detalles como crear un ramdisk o actualizar el cargador de arranque). Por supuesto, no terminarás con un paquete kernel.deb.
3.1 Instalar Paquetes Requeridos Para La Compilación Del Núcleo
Primero actualizamos nuestra base de datos de paquetes:
apt-get updateLuego instalamos todos los paquetes necesarios así:
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential3.2 Descargar Las Fuentes Del Núcleo
A continuación, descargamos nuestro núcleo deseado a /usr/src. Ve a www.kernel.org y selecciona el núcleo que deseas instalar, por ejemplo, linux-2.6.21.3.tar.bz2 (puedes encontrar todos los núcleos 2.6 aquí: http://www.kernel.org/pub/linux/kernel/v2.6/). Luego puedes descargarlo a /usr/src así:
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2Luego descomprimimos las fuentes del núcleo y creamos un enlace simbólico linux al directorio de fuentes del núcleo:
tar xjf linux-2.6.21.3.tar.bz2
ln -s linux-2.6.21.3 linux
cd /usr/src/linux3.3 Aplicar Parche A Las Fuentes Del Núcleo (Opcional)
A veces necesitas controladores para hardware que no está soportado por el nuevo núcleo por defecto, o necesitas soporte para técnicas de virtualización o alguna otra tecnología de vanguardia que aún no ha llegado al núcleo. En todos estos casos, tienes que parchear las fuentes del núcleo (siempre que haya un parche disponible…).
Ahora supongamos que has descargado el parche necesario (lo llamo patch.bz2 en este ejemplo) a /usr/src. Así es como lo aplicas a tus fuentes del núcleo (debes seguir en el directorio /usr/src/linux):
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1El primer comando es solo una prueba, no hace nada a tus fuentes. Si no muestra errores, puedes ejecutar el segundo comando que realmente aplica el parche. ¡No lo hagas si el primer comando muestra errores!
También puedes aplicar preparches del núcleo a tus fuentes del núcleo. Por ejemplo, si necesitas una característica que solo está disponible en el núcleo 2.6.22-rc3, pero las fuentes completas aún no han sido liberadas para este núcleo. En su lugar, hay disponible un parche-2.6.22-rc3.bz2. Puedes aplicar ese parche a las fuentes del núcleo 2.6.21, pero no al núcleo 2.6.21.1 o 2.6.21.2, etc. Esto se explica en http://kernel.org/patchtypes/pre.html:
Los preparches son el equivalente a las versiones alfa para Linux; viven en los directorios de prueba en los archivos. Deben aplicarse utilizando la utilidad patch(1) al código fuente de la versión completa anterior con un número de versión de 3 partes (por ejemplo, el preparche 2.6.12-rc4 debe aplicarse a las fuentes del núcleo 2.6.11, no, por ejemplo, 2.6.11.10.)
Así que si deseas compilar un núcleo 2.6.22-rc3, debes descargar las fuentes del núcleo 2.6.21 ( http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2) en el paso 3 en lugar del núcleo 2.6.21.3!
Así es como aplicas el parche 2.6.22-rc3 al núcleo 2.6.21:
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc3.bz2
cd /usr/src/linux
bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p13.4 Configurar El Núcleo
Es una buena idea usar la configuración de tu núcleo de trabajo actual como base para tu nuevo núcleo. Por lo tanto, copiamos la configuración existente a /usr/src/linux:
make clean && make mrproper
cp /boot/config-`uname -r` ./.configLuego ejecutamos
make menuconfiglo que abre el menú de configuración del núcleo. Ve a Cargar un Archivo de Configuración Alternativo y elige .config (que contiene la configuración de tu núcleo de trabajo actual) como el archivo de configuración:


Luego navega por el menú de configuración del núcleo y haz tus elecciones. Cuando termines y selecciones Salir, responde a la siguiente pregunta (¿Deseas guardar tu nueva configuración del núcleo?) con Sí:

3.5 Construir E Instalar El Núcleo
Para construir el núcleo, ejecuta estos comandos:
make all
make modules_install
make installAhora ten paciencia, la compilación del núcleo puede tardar algunas horas, dependiendo de la configuración de tu núcleo y la velocidad de tu procesador.
3.6 Pasos Post-Instalación
El nuevo núcleo está ahora instalado, pero aún necesitamos un ramdisk para nuestro nuevo núcleo (de lo contrario, ¡el sistema probablemente no arrancará!), y necesitamos informar al cargador de arranque GRUB sobre nuestro nuevo núcleo.
Primero, hacemos esto:
depmod 2.6.21.3
apt-get install yairdLuego creamos un ramdisk con el siguiente comando:
mkinitrd.yaird -o /boot/initrd.img-2.6.21.3 2.6.21.3La configuración de GRUB es muy fácil en Debian Etch. Todo lo que tenemos que hacer es ejecutar
update-grubEsto detectará el nuevo núcleo y el ramdisk y actualizará /boot/grub/menu.lst por nosotros.
Ahora reinicia el sistema:
shutdown -r nowEn el aviso de arranque, selecciona tu nuevo núcleo (debería ser seleccionado por defecto). Si todo va bien, debería iniciarse con el nuevo núcleo. Puedes verificar si realmente está usando tu nuevo núcleo ejecutando
uname -rEsto debería mostrar algo como
2.6.21.3Si el sistema no arranca, reinícialo y selecciona tu viejo núcleo en el aviso de arranque. Ahora puedes intentar nuevamente compilar un núcleo funcional. No olvides eliminar la(s) estrofa(s) del núcleo que no funciona de /boot/grub/menu.lst.
4 Enlaces
- Debian: http://www.debian.org
- Los Archivos del Núcleo de Linux: http://www.kernel.org
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.