Cuando mencionamos la palabra “núcleo” (Kernel en íngles) es imposible no pensar en Linux. Y es que GNU/Linux es el sistema operativo que realmente le ha dado gran popularidad a este término.
A él le debemos que hayamos llegado tan profundo en la informática verdadera (en la que se sabe ciertamente cómo se maneja la información en su más bajo nivel). En la actualidad no es tan recurrente que necesitemos compilar un núcleo, aunque tiempo atrás si lo era. Hoy día esto se hace por alguna necesidad específica o por el simple hecho de aprender cómo se hace.
Entre las razones existentes para compilar un núcleo tenemos:
* Eres un desarrollador del núcleo.
* Necesitas compilar un núcleo con alguna característica especial que el núcleo oficial de tu distro no tiene.
* Te estás preparando para corregir un error en el núcleo oficial de tu distro.
* Tienes hardware que el núcleo oficial de tu distro no soporta.
Existen muchas maneras de compilar el núcleo (casi una por cada distribución). Esto significa que para cada distro, ya sea basada en Red Hat, Debian o Slackware, debemos documentarnos muy bien antes de comenzar tan importante tarea, porque si se nos queda algún módulo excluido o incluido sin necesidad podría generar conflictos e incluso no funcionar correctamente.
Todo el proceso se puede resumir en los siguientes pasos generales para todas las distros:
1. Obtener las fuentes del núcleo.
2. Instalar las herramientas necesarias para la compilación (gcc, build-essentials, etc.).
3. Descomprimir las fuentes del núcleo en /usr/src/
4. Configurar el núcleo (ej. make menuconfig).
5. Compilar (make), compilar los módulos (make modules), instalar los módulos, (make modules_install).
6. Instalar el núcleo compilado (make install).
7. Crear la imagen (initrd) para el nuevo núcleo y ajustar grub para que la encuentre.
Este proceso puede ser una excelente manera de ajustar nuestro sistema para que soporte nuevo hardware o para hacerlo más liviano quitando, cuidadosamente, módulos que no utilizaremos. De cualquier manera es recomendable que aparte de esta guía busques la ayuda de personas más experimentadas si tienes una buena razón para hacerlo, aún si lo haces por puro placer o aprendizaje.
A continuación veremos cómo compilarlo en algunas distribuciones más usadas.
Compilar el núcleo en Fedora/CentOS y otras derivadas.
Paso 1: Instalar algunos dependencias o prerequisitos
su -c 'yum groupinstall “Development Tools”'su -c 'yum install ncurses-devel qt-devel unifdef'
Paso 2: Descargar las fuentes de kernel.org del estable más reciente (2.6.36)
Para tener un núcleo totalmente libre descargad las fuentes desde la siguiente página:
http://www.fsfla.org/svnwiki/selibre/linux-libre/
cd /tmpwget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2
Paso 3: Descomprimir las fuentes.
mkdir /usr/src/linuxtar -xjvf linux-2.6.36.tar.bz2 /usr/src/linuxcd /usr/src/linux
Paso 4: Configurar el Núcleo.
Hay varias formar de hacer la configuración que querramos:
* make menuconfig: Menú basado en texto y diálogos a colores.
* make xconfig: Gráfico (Qt), de uso preferible en KDE.
* make gconfig: Gráfico (Gtk), de uso preferible en Gnome.
Paso 5: Compilar el Núcleo.
Compilar para crear una imagen comprimida del Núcleo:
make
Compilar los módulos del Núcleo:
make modules
Instalar los módulos:
make modules_install
Paso 6: Instalar el Núcleo.
make install
Paso 7: Modificar grub para que asuma el nuevo Núcleo.
nano /boot/grub/grub.conf
Y una vez en el editor, escribir lo siguiente (suponiendo que la partición del sistema es (hd0,0), es decir, la primera de todas y que además está en el primer disco duro. En caso de que este no sea tu escenario, debes cambiar convenientemente ese parámetro. así como los parámetros VolGroup00 y LogVol00, como detallan aquí). http://www.linux.com/learn/tutorials/362602-how-to-compile-the-linux-kernel.
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.35.4)
root (hd0,0)
kernel /vmlinuz-2.6.35.4 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.35.4.img
title CentOS (2.6.36)
root (hd0,0)
kernel /vmlinuz-2.6.36 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.36.img
Y finalmente reiniciamos
shu*** -r now
Compilar el Núcleo en Debian/Ubuntu.
Paso 1: Instalar algunos dependencias o prerequisitos:
sudo apt-get install build-essential gcc libncurses5-dev
Paso 2: Descargar las fuentes de kernel.org del estable más reciente (2.6.36. )
Nota:
Para tener un núcleo totalmente libre descargad las fuentes desde la siguiente página:
http://www.fsfla.org/svnwiki/selibre/linux-libre/
cd /tmpwget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2
Paso 3: Descomprimir las fuentes.
mkdir /usr/src/linuxtar -xjvf linux-2.6.36.tar.bz2 /usr/src/linuxcd /usr/src/linux
Paso 4: Configurar el Núcleo.
Hay varias formar de hacer la configuración que querramos:
* make menuconfig: Menú basado en texto y diálogos a colores.
* make xconfig: Gráfico (Qt), de uso preferible en KDE.
* make gconfig: Gráfico (Gtk), de uso preferible en Gnome.
Paso 5: Compilar el Núcleo.
Compilar para crear una imagen comprimida del Núcleo:
make
Compilar los módulos del Núcleo:
make modules
Instalar los módulos:
make modules_install
Paso 6: Instalar el Núcleo:
make install
Paso 7: Crear la imagen initrd.
La imagen initrd contiene los controladores de dispositivos necesarios para cargar el resto del sistema operativo. No todas las computadoras requieren esto pero no está demás crearla.
cd /bootmkinitrd -o initrd.img-2.6.36 2.6.36
Paso 8: Modificamos grub para que asuma el nuevo Núcleo añadiendo lo siguiente.
nano /boot/grub/menu.lst
Y una vez en el editor, escribimos lo siguiente (como en el caso anterior, tenemos que tener cuidado con la partición donde tenemos el sistema y, por tanto, donde tenemos el núcleo y demás ficheros del sistema de arranque)
title Ubuntu GNU/Linux, kernel 2.6.36 Default
root (hd0,0)
kernel /boot/vmlinuz root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.36
savedefault
boot
Otra forma menos delicada de hacer este paso es con un comando que actualiza el archivo menu.lst y lo ajusta de forma automática.
update-grub
Y finalmente reiniciamos
shu*** -r now
Enlaces de referencia
* http://wiki.centos.org/HowTos/Custom_Kernel
* https://help.ubuntu.com/community/Kernel/Compile
* http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html
* http://www.linuxforums.org/forum/kernel/55612-mini-howto-compile-linux-kernel-2-6-a.html
* http://www.linux.com/learn/tutorials/362602-how-to-compile-the-linux-kernel
Nota:
Para tener un núcleo totalmente libre descargar las fuentes desde la siguiente página:
http://www.fsfla.org/svnwiki/selibre/linux-libre/
http://www.muylinux.com/2010/11/10/como-compilar-el-kernel-linux-en-ubuntu-fedora-y-otras/
A él le debemos que hayamos llegado tan profundo en la informática verdadera (en la que se sabe ciertamente cómo se maneja la información en su más bajo nivel). En la actualidad no es tan recurrente que necesitemos compilar un núcleo, aunque tiempo atrás si lo era. Hoy día esto se hace por alguna necesidad específica o por el simple hecho de aprender cómo se hace.
Entre las razones existentes para compilar un núcleo tenemos:
* Eres un desarrollador del núcleo.
* Necesitas compilar un núcleo con alguna característica especial que el núcleo oficial de tu distro no tiene.
* Te estás preparando para corregir un error en el núcleo oficial de tu distro.
* Tienes hardware que el núcleo oficial de tu distro no soporta.
Existen muchas maneras de compilar el núcleo (casi una por cada distribución). Esto significa que para cada distro, ya sea basada en Red Hat, Debian o Slackware, debemos documentarnos muy bien antes de comenzar tan importante tarea, porque si se nos queda algún módulo excluido o incluido sin necesidad podría generar conflictos e incluso no funcionar correctamente.
Todo el proceso se puede resumir en los siguientes pasos generales para todas las distros:
1. Obtener las fuentes del núcleo.
2. Instalar las herramientas necesarias para la compilación (gcc, build-essentials, etc.).
3. Descomprimir las fuentes del núcleo en /usr/src/
4. Configurar el núcleo (ej. make menuconfig).
5. Compilar (make), compilar los módulos (make modules), instalar los módulos, (make modules_install).
6. Instalar el núcleo compilado (make install).
7. Crear la imagen (initrd) para el nuevo núcleo y ajustar grub para que la encuentre.
Este proceso puede ser una excelente manera de ajustar nuestro sistema para que soporte nuevo hardware o para hacerlo más liviano quitando, cuidadosamente, módulos que no utilizaremos. De cualquier manera es recomendable que aparte de esta guía busques la ayuda de personas más experimentadas si tienes una buena razón para hacerlo, aún si lo haces por puro placer o aprendizaje.
A continuación veremos cómo compilarlo en algunas distribuciones más usadas.
Compilar el núcleo en Fedora/CentOS y otras derivadas.
Paso 1: Instalar algunos dependencias o prerequisitos
su -c 'yum groupinstall “Development Tools”'su -c 'yum install ncurses-devel qt-devel unifdef'
Paso 2: Descargar las fuentes de kernel.org del estable más reciente (2.6.36)
Para tener un núcleo totalmente libre descargad las fuentes desde la siguiente página:
http://www.fsfla.org/svnwiki/selibre/linux-libre/
cd /tmpwget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2
Paso 3: Descomprimir las fuentes.
mkdir /usr/src/linuxtar -xjvf linux-2.6.36.tar.bz2 /usr/src/linuxcd /usr/src/linux
Paso 4: Configurar el Núcleo.
Hay varias formar de hacer la configuración que querramos:
* make menuconfig: Menú basado en texto y diálogos a colores.
* make xconfig: Gráfico (Qt), de uso preferible en KDE.
* make gconfig: Gráfico (Gtk), de uso preferible en Gnome.
Paso 5: Compilar el Núcleo.
Compilar para crear una imagen comprimida del Núcleo:
make
Compilar los módulos del Núcleo:
make modules
Instalar los módulos:
make modules_install
Paso 6: Instalar el Núcleo.
make install
Paso 7: Modificar grub para que asuma el nuevo Núcleo.
nano /boot/grub/grub.conf
Y una vez en el editor, escribir lo siguiente (suponiendo que la partición del sistema es (hd0,0), es decir, la primera de todas y que además está en el primer disco duro. En caso de que este no sea tu escenario, debes cambiar convenientemente ese parámetro. así como los parámetros VolGroup00 y LogVol00, como detallan aquí). http://www.linux.com/learn/tutorials/362602-how-to-compile-the-linux-kernel.
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.35.4)
root (hd0,0)
kernel /vmlinuz-2.6.35.4 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.35.4.img
title CentOS (2.6.36)
root (hd0,0)
kernel /vmlinuz-2.6.36 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.36.img
Y finalmente reiniciamos
shu*** -r now
Compilar el Núcleo en Debian/Ubuntu.
Paso 1: Instalar algunos dependencias o prerequisitos:
sudo apt-get install build-essential gcc libncurses5-dev
Paso 2: Descargar las fuentes de kernel.org del estable más reciente (2.6.36. )
Nota:
Para tener un núcleo totalmente libre descargad las fuentes desde la siguiente página:
http://www.fsfla.org/svnwiki/selibre/linux-libre/
cd /tmpwget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2
Paso 3: Descomprimir las fuentes.
mkdir /usr/src/linuxtar -xjvf linux-2.6.36.tar.bz2 /usr/src/linuxcd /usr/src/linux
Paso 4: Configurar el Núcleo.
Hay varias formar de hacer la configuración que querramos:
* make menuconfig: Menú basado en texto y diálogos a colores.
* make xconfig: Gráfico (Qt), de uso preferible en KDE.
* make gconfig: Gráfico (Gtk), de uso preferible en Gnome.
Paso 5: Compilar el Núcleo.
Compilar para crear una imagen comprimida del Núcleo:
make
Compilar los módulos del Núcleo:
make modules
Instalar los módulos:
make modules_install
Paso 6: Instalar el Núcleo:
make install
Paso 7: Crear la imagen initrd.
La imagen initrd contiene los controladores de dispositivos necesarios para cargar el resto del sistema operativo. No todas las computadoras requieren esto pero no está demás crearla.
cd /bootmkinitrd -o initrd.img-2.6.36 2.6.36
Paso 8: Modificamos grub para que asuma el nuevo Núcleo añadiendo lo siguiente.
nano /boot/grub/menu.lst
Y una vez en el editor, escribimos lo siguiente (como en el caso anterior, tenemos que tener cuidado con la partición donde tenemos el sistema y, por tanto, donde tenemos el núcleo y demás ficheros del sistema de arranque)
title Ubuntu GNU/Linux, kernel 2.6.36 Default
root (hd0,0)
kernel /boot/vmlinuz root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.36
savedefault
boot
Otra forma menos delicada de hacer este paso es con un comando que actualiza el archivo menu.lst y lo ajusta de forma automática.
update-grub
Y finalmente reiniciamos
shu*** -r now
Enlaces de referencia
* http://wiki.centos.org/HowTos/Custom_Kernel
* https://help.ubuntu.com/community/Kernel/Compile
* http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html
* http://www.linuxforums.org/forum/kernel/55612-mini-howto-compile-linux-kernel-2-6-a.html
* http://www.linux.com/learn/tutorials/362602-how-to-compile-the-linux-kernel
Nota:
Para tener un núcleo totalmente libre descargar las fuentes desde la siguiente página:
http://www.fsfla.org/svnwiki/selibre/linux-libre/
http://www.muylinux.com/2010/11/10/como-compilar-el-kernel-linux-en-ubuntu-fedora-y-otras/