- Eres un desarrollador del kernel.
- Necesitas compilar un kernel con alguna característica especial que un kernel oficial de tu distro no tiene.
- Te estás preparando para corregir un bug en el kernel oficial de tu distro.
- Tienes hardware que el kernel oficial de tu distro no soporta.
Todo el proceso se puede resumir en los siguientes pasos generales para todas las distros:
- Obtener las fuentes del kernel.
- Instalar las herramientas necesarias para la compilación (gcc, build-essentials, etc.).
- Descomprimir las fuentes del kernel en /usr/src/
- Configurar el kernel (ej. make menuconfig).
- Compilar (make), compilar los módulos (make modules), instalar los módulos, (make modules_install).
- Instalar el kernel compilado (make install).
- Crear la imagen (initrd) para el nuevo kernel y ajustar grub para que la encuentre.
A continuación veremos cómo compilarlo en algunas distribuciones más usadas.
Compilar el Kernel en Fedora/CentOS y otras derivadas
Paso 1: Instalar algunos dependencias o prerequisitossu -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)
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 Kernel.
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 Kernel.
Compilar para crear una imagen comprimida del Kernel
makeCompilar los módulos del Kernel
make modulesInstalar los módulos
make modules_installPaso 6: Instalar el Kernel
make installPaso 7: Modificar grub para que asuma el nuevo Kernel.
nano /boot/grub/grub.confY 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í).
#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.imgY finalmente reiniciamos
shutdown -r now
Compilar el Kernel en Debian/Ubuntu
Paso 1: Instalar algunos dependencias o prerequisitos:
sudo apt-get install build-essential gcc libncurses5-devPaso 2: Descargar las fuentes de kernel.org del estable más reciente (2.6.36. )
cd /tmpwget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2Paso 3: Descomprimir las fuentes.
mkdir /usr/src/linuxtar -xjvf linux-2.6.36.tar.bz2 /usr/src/linuxcd /usr/src/linuxPaso 4: Configurar el Kernel.
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 Kernel.
Compilar para crear una imagen comprimida del Kernel
makeCompilar los módulos del Kernel
make modulesInstalar los módulos
make modules_installPaso 6: Instalar el Kernel
make installPaso 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.36Paso 8: Modificamos grub para que asuma el nuevo Kernel añadiendo lo siguiente.
nano /boot/grub/menu.lstY 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 kernel 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 bootOtra 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-grubY finalmente reiniciamos
shutdown -r nowEnlaces 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
No hay comentarios:
Publicar un comentario