Compilar un kernel al estilo Debian
La distribución del kernel se realiza únicamente, en forma de código fuente, aunque lo habitual es utilizar el kernel que nos proporciona el creador de nuestra distribución, es posible compilarnos un kernel a medida para nuestra máquina.
- Aumentar las prestaciones; compilando el kernel para que se ajusten a las características propias de nuestra maquina.
- Soporte nuevo de hardware; a medida que se lanzan nuevas versiones, se incrementan la cantidad de dispositivos soportados.
- Seguridad; como es lógico las prioridades a la hora de lanzar una nueva versión del kernel incluyen la corrección de todos los problemas de seguridad detectados.
- Nuevas características; en cada versión del kernel que se lanza, se mejora sus funciones de gestión de memoria, sistema de ficheros, escalabilidad, etc.
Por el contrario, el proceso de compilar el kernel presenta los siguientes inconvenientes:
- Complejo; el proceso de compilar el kernel puede ser complejo para usuarios poco avanzados. Se debe tener un cierto conocimiento de hardware y de compilación si queremos afrontar con éxito la operación. En algunas ocasiones, al compilar el kernel, también debemos actualizar diversos programas del sistema con lo que la complicación es mayor.
- Problemas de inestabilidad; dado que el kernel es una parte fundamental del sistema operativo, una compilación realizada con opciones equivocadas puede volver inestable la maquina. Estos problemas de inestabilidad pueden producir "cuelgues", corrupción de datos, etc... por lo que conviene tenerlo muy en cuenta si el servidor guarda información importante.
Tenga en cuenta que el proceso de creación de un kernel necesita ser realizado como root.
¿Porqué compilar un kernel al estilo Debian y no hacerlo de la manera clásica?
El hecho de compilarlo al estilo Debian nos proporciona mas ventajas, ya que este se empaqueta automáticamente en un fichero con extensión .deb, es decir se crea un paquete del kernel nuevo, pudiendo grabarlo en un cd-rom, pendrive, ponerlo en nuestro repositorio, etc.. para poder instalarlo en otros ordenadores.
================================================================
EMPEZAMOS
================================================================
1- Descargar el código fuente del nuevo kernel
La web oficial del kernel Linux es http://www.kernel.org
En el aparecen distintas versiones de las ramas 2.2, 2.4, 2.6 (en el momento de escribir estas lineas), además de versiones "beta" del kernel (núcleo) a punto de salir como son los enlaces prepatch y snapshots.
Descargaremos al ultima versión estable, así que haremos clic en el enlace de la letra F (Full) y nos descargaremos el fichero linux-"version".tar.bz2 ( "version" hace referencia al numero de la versión del kernel, es nuestro caso es 2.6.23.1, etc...)
Otra posibilidad es descargarnos el fichero patch: estos contienen los cambios de una determinada versión a la siguiente en formato de texto, con lo cual tienen un tamaño mucho menor. De esta manera, si tenemos instalado actualmente el kernel 2.6.22.2, no hace falta que descarguemos el kernel 2.6.23.1 completo, sino que descarguemos el path-2.6.23.1 y lo aplicamos al kernel 2.6.22.2 que tengamos.
Para descargar el path, hacemos clic sobre los números de la versión. el patch suele venir en .tar.bz2
Otra posibilidad es descargarnos el fichero patch: estos contienen los cambios de una determinada versión a la siguiente en formato de texto, con lo cual tienen un tamaño mucho menor. De esta manera, si tenemos instalado actualmente el kernel 2.6.22.2, no hace falta que descarguemos el kernel 2.6.23.1 completo, sino que descarguemos el path-2.6.23.1 y lo aplicamos al kernel 2.6.22.2 que tengamos.
Para descargar el path, hacemos clic sobre los números de la versión. el patch suele venir en .tar.bz2
Nosotros usaremos la ultima versión estable, así que haremos clic en el enlace de la letra F (Full) y nos descargaremos el fichero linux-"version".tar.bz2 ( hace referencia al numero de la versión del kernel, es nuestro caso es 2.6.23.1, etc...)
==========================================================================
2- Descomprimir el código fuente del nuevo kernel descargado.
Una vez descargado es recomendable colocar el codigo fuente del kernel, en el directorio
/usr/src
A continuación descomprimimos el código fuente del kernel, con el siguiente comando:
# tar xjvf linux-
tras lo cual se nos habrá creado un directorio en /usr/src de nombre:
3- Configuración del código fuente del nuevo kernel
==========================================================================
2- una vez que terminas la compilación del mismo y por cualquier razón quieres volver a recompilar el mismo código fuente del kernel descargado, ya no seria necesario que volvieses a descomprimirlo de nuevo, puedes reutilizar ese mismo código y es ahora cuando tienes que eliminar (limpiar) todos los archivos que se generaron en la compilación anterior.
para limpiar las fuentes del kernel usamos el siguiente comando:
# make mrproper
==========================================================================
1- make config; Este es el proceso clásico por consola. Se nos realizaran preguntas que deberemos contestar. No es muy recomendable ya que si nos equivocamos deberemos empezar de nuevo.
2- make menuconfig; Esta forma es la mas adecuada para realizar la configuración por consola. Presenta una pantalla con menús realizada en ncurses.
4- make oldconfig; Toma como base una configuración anterior, preguntándonos solo sobre las nuevas opciones.
Vamos a usar el método 2 - make menuconfig
make menuconfig
Este método requiere que este instalado los siguientes paquetes:
libncurses5-dev
gcc
make
build-essential
kernel-package
para configurarlo entramos en el directorio que mencionamos antes:
/usr/src/linux-"version"
y arrancamos el menú de configuración:
# make menuconfig
Cuando terminemos de configurar el código fuente, seleccionamos Exit para grabar los cambios. Se nos habrá almacenado las configuraciones que hayamos realizados en el fichero .config del directorio del código fuente del kernel.
==========================================================================
Por ejemplo: Si tenemos un Pendrive es indispensable que activemos el soporte SCSI en el kernel (específicamente soporte para discos SCSI) debido a que estos dispositivos son emulados como discos SCSI en Linux. También hemos de tener en cuenta que si tenemos discos SCSI y no le activamos el soporte en el kernel, evidentemente no funcionara. Si desactivas el soporte para CDROM, evidentemente la unidad de CDROM no funcionaria una vez que lo instalemos y usemos el kernel. De igual manera pasa si desactivamos el soporte USB, no funcionara todo lo que conectemos por e puerto USB.
==========================================================================
4- Compilar el código fuente del nuevo kernel
Una vez terminado de configurar el kernel, vamos a proceder a compilarlo.
Comando:
make-kpkg clean
Comando 2:
make-kpkg --initrd linux_image linux_headers linux_source --append-to-version=-usuariodebian -j4
make Es compilar, construir o crear en Unix
-kpkg Es el comando kernel-package, el cual crea el paquete .deb una vez que se ha compilado el kernel
--initrd Incluye la imagen initramfs y los scripts de instalación
kernel_image o linux_image Generar un archivo .deb con la imagen del kernel
kernel_headers o linux_headers Generar un archivo .deb con los headers del kernel
kernel_source o linux_source Generar un archivo .deb con el código fuente del kernel
--append-to-version Es para ponerle un nombre personalizado al kernel.
-j4 es el numero de procesos usados al compilar (dependiendo del procesador que tenga tu ordenador) se pueden usar 4, 8,16, 32, 64
El resultado del comando anterior va a crear tres paquetes con extensión .deb en el directorio superior en donde esta el código fuente o source de nuestro kernel. En nuestro caso es en:
/usr/src
Un paquete va a ser el kernel completo, y el otro va a ser el kernel-headers (cabecera del kernel)
La opción de kernel_headers que colocamos para la compilación es opcional, yo personalmente la coloco debido a que muchos programas y módulos necesitan tener los headers del kernel que se esta usando para poder ser instalado.
Por ejemplo los driver de: nvidia, vmware, ndiswrapper, madwifi y otros, requieren la cabecera del kernel para la instalación del driver
Si no necesitas el kernel_headers borra este del comando anterior.
kernel_headers o linux_headers Generar un archivo .deb con los headers del kernel
kernel_source o linux_source Generar un archivo .deb con el código fuente del kernel
--append-to-version Es para ponerle un nombre personalizado al kernel.
-j4 es el numero de procesos usados al compilar (dependiendo del procesador que tenga tu ordenador) se pueden usar 4, 8,16, 32, 64
/usr/src
La opción de kernel_headers que colocamos para la compilación es opcional, yo personalmente la coloco debido a que muchos programas y módulos necesitan tener los headers del kernel que se esta usando para poder ser instalado.
Por ejemplo los driver de: nvidia, vmware, ndiswrapper, madwifi y otros, requieren la cabecera del kernel para la instalación del driver
Si no necesitas el kernel_headers borra este del comando anterior.
==========================================================================
==========================================================================
5- Instalando el nuevo kernel compilado
Una vez termina la compilación, vemos que en el directorio superior en donde estan las fuentes del kernel (
linux-image-2.6.23.1_2.6.23.1-10.00.Custom_i386.deb
La instalación es tan fácil como usar el comando dpkg -i en consola, o usando en modo gráfico kpackage:
En modo consola:
# dpkg -i
# dpkg -i linux-headers-2.6.23.1_2.6.23.1-10.00.Custom_i386.deb
linux-image-2.6.23.1_2.6.23.1-10.00.Custom_i386.deb
Resumen paso a paso de como compilar un nuevo kernel.
1- Instalamos los programas necesarios para el proceso de descargar, configuración, compilación e instalación:
libncurses5-dev
gcc
make
build-essential
kernel-package
gcc
make
build-essential
kernel-package
wget
2- Descargamos el código fuente del nuevo kernel desde la web oficial. www.kernel.org
# wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-"version".tar.bz2
3- Descomprimir el código fuente del nuevo kernel descargado en la carpeta /usr/src
# tar xjvf linux-"version".tar.bz2
4- Configuración del código fuente del nuevo kernel, para ello hacemos una limpieza total del árbol del kernel y comenzar una compilación en limpio.
# make mrproper
# make mrproper
arrancamos el programa de configuración:
# make menuconfig
5- Compilamos el código fuente del nuevo kernel, limpiando primero el compilador
# make-kpkg clean
Luego compilamos usando el siguiente comando:
# make-kpkg --initrd linux_image linux_headers linux_source --append-to-version=-usuariodebian -j4
6- Instalamos el nuevo kernel generado
# dpkg -i linux-image-"version".deb
# dpkg -i linux-image-"version".deb
# dpkg -i linux-headers-"version".deb
.
1 comentario:
Muchas gracias amigo, e estado navegando mucho por tu blog, y me haz sacado muchas dudas en cuanto al kermel, la instalación de programas, etc etc etc, MUCHISIMAS GRACIAS POR CREARLO Y REPLETARLO DE TUTOS para los novatos como yo, estoy por pasarme a Linux, todos me recomiendan Ubuntu, pero me gusta más los estable y funciona, y prefiero Debian , tambien xq le estoy metiendo la mano a eso de los servidores webs (y todos recomiendan a Debian como base), en Fin solo queria saludarte!, y agradecerte, Chao! xD
Publicar un comentario