PDA

Ver la Versión Completa : Compilacion del Kernel de Linux!!!



Xripox
27/01/2010, 23:34
Bueno les cuento que he tenido la oportunidad de hacer unos cursos en la Academia de Software Libre de Venezuela. Entre las cosas que dieron entre basicas e intermedias, quiero compartir con ustedes algo que me llamo demasiado la Atencion y es la parte de la COMPILACION DEL KERNEL DE LINUX. como todos sabes y alguien que me corrija por si me equivoco el kernel que trae nuestro amado ubuntu es un kernel Generico adaptado a todas las PC, pero al momento de compilar nosotros mismos nuestro kernel este se adapta a nuestro computador obteniendo mejor rendimiento. Yo mismo hice la prueba en mi Computador y en realidad trabaja mucho mejor. Aca les coloco paso a paso como se compila nuestro kernel. Ok si mas detalle comenzamos:

Kernel Linux

La versión del núcleo Linux actualmente consta de cuatro números. Por ejemplo, asumamos que el número de la versión está compuesta de esta forma: A.B.C[.D] (ej.: 2.2.1, 2.4.13 ó 2.6.12.3).
.- El número A denota la versión del núcleo.
.- El número B denota la subversión del núcleo. Los números pares indicaban la versión “estable” lanzada, en cambio los números impares son versiones de desarrollo.
.- El número C indica una revisión mayor en el núcleo. Solo es cambiado cuando se introducen nuevos drivers o características; cambios menores se reflejan en el número D.
.- El número D se produce cuando un grave error requiere de un arreglo inmediato a nivel de Bug-fixes y parches de seguridad

Compilación

(Paso a Paso)

Paso 1:
Lo recomendable es que en primera instancia el usuario realice un aptitude update y un aptitude upgrade para chequear que tanto la lista de repositorios como los paquetes y todo el sistema se encuentre actualizado en su totalidad y estar como root del sistema esto se logra ejecutando en el terminal el comando “sudo su”.

Paso 2:
Instalar los siguientes paquetes:
Kernel-package, libncurses5-dev, Fakeroot, Wget y bzip2

Ej: aptitude install kernel-package libncurses5-dev fakeroot wget bzip2

Nota: Tome en cuenta al root antes del proceso de instalación
.- kernel-package suministrará las herramientas necesarias para poder compilar y generar el paquete con nuestro kernel.
.- libncurses5-dev son las librerías ncurses, método que se utiliza para configurar cómodamente a través de menús el kernel que se desea compilar.
.- fakeroot Ejecuta una orden en un entorno que falsea privilegios de superusuario para la manipulación de ficheros. Útil para permitir a usuarios crear archivos (.tar, .deb, etc.) con ficheros y permisos/propietarios de superusuario.
.- wget herramienta de software libre que permite la descarga de contenidos desde servidores web de una forma simple.
.- bzip2 es un programa libre desarrollado bajo licencia BSD que comprime y descomprime ficheros usando los algoritmos de compresión y de codificación (Teoría de Burrows-Wheeler y Huffman).

En principio, para compilar un kernel es evidente que debes descargar el código fuente del mismo. Para eso ingresamos en la página oficial del proyecto ([Only registered and activated users can see links]) donde se encuentran todos los kernel oficiales de Linux, desde la primera versión hasta la última. Cuando los descarguemos vendrá empaquetado y comprimido en alguno de los siguientes formatos:
.tar.bz2 o .tar.gz . Es indiferente cual se descarguen, ya que se explicará como descomprimir y desempaquetar ambos tipos de formato.

Paso 3:
Descargar el nuevo kernel en el Directorio /usr/src el paquete (source) del Kernel que desee compilar.

Paso 4:
Descomprimir y/o Desempaquetar.
Para quienes se descargaron el .tar.gz :

tar xvzf linux-“versiondelkernel”.tar.gz

Para quienes se descargaron el .tar.bz2 (Notar la j para el de extensión .tar.bz2):

tar xvjf linux-“versiondelkernel”.tar.bz2

Paso 5:
Ahora debemos configurarlo, esto quiere decir decidir cuales módulos deseamos que tenga (o que no tenga) una vez compilado. Como es característico del Software Libre: tenemos varias maneras de hacer las cosas,hablemos sobre 3 formas de configurar el kernel:

1era alternativa: make config <-- Hay que tener algo de experiencia, si no la tienes no te recomiendo seguir este camino ya que hace muchas preguntas de hardware.

2da alternativa: make menuconfig <-- Es muy cómodo hacer la configuración por este método porque posees un menú muy sencillo he interactivo. NOTA: Necesitas tener instalado las las librerías ncurses, en debian: aptitude install libncurses5-dev

3ra alternativa: make xconfig <-- Debes tener instalado y en funcionamiento el servidor X, ya que toda la configuración se hace gráficamente (haciendo uso del sistema de ventanas). NOTA: Necesitas tener instaladas las librerías QT, en debían aptitude install libqt3-dev

Para la configuración se utilizará la segunda alternativa, es decir, make menuconfig. Estás en la libertad de utilizar la que deseen. Sin embargo se recomienda el segundo método debido a que no se necesita estar en entornos de escritorio ni tener funcionando el servidor X, además que tiene una interfaz muy simple e interactiva.


Para comenzar la configuración make menuconfig

Cuando se dediquen a configurar el kernel recuerden ser muy precavidos seleccionando o habilitando los módulos. Si tenemos dispositivos como FlashDrive (o Pendrive) es indefectible activar el soporte SCSI (específicamente soporte para discos SCSI), ya que estos son emulados como discos SCSI en Linux. Si desactivas el soporte para CDROM, evidentemente la unidad de CDROM no funcionaría una vez instalada. De igual manera pasa si desactivamos el soporte USB, no funcionaría todo los que conectemos por el puerto USB.

Aparecerá el menú de configuración del kernel aquí pulsando “Enter” entramos a los distintos menús, pulsando “Y” incluimos lo que seleccionamos como parte de la imagen del kernel, pulsando “M” lo incluiremos como modulo (no ocupara espacio en la imagen del kernel), pulsando “N” lo excluiremos de la imagen y si pulsamos “?” nos mostrara información sobre el menú u opción

[ * ] o indica que la opción sera compilada como parte del kernel.

[ ] o indica que la opción no esta incluida.

[M] o indica que la opción esta como modulo.

Recomiendo que cuando se compila por primera vez no se modifique ninguna opción, simplemente dejarlo como esta, se guarda y sigue con los siguientes pasos, una vez que hayas logrado compilarlo entonces si se recomienda que vaya afinando la configuración de su kernel y lo vuelva a compilar.


menuconfig (screenshot)

Luego de realizar las modicifaciones Escojemos la opcion de “Save Configuration...”

despues de salvar hacemos la carga seleccionando la opcion de “Load an Alternate Configuration File”


[Only registered and activated users can see links]

Luego de todos selecionamos la Opcion Exit y confirmamos nuevamente que salvamos el kernel modificado.


[Only registered and activated users can see links]

Terminada la configuración del kernel lo compilaremos.

Debido a que lo estamos haciendo a la Debian way es necesario que tengamos instalado un paquete llamado kernel-package, explicado anteriormente. Antes de comenzar la compilación debemos estar en el directorio donde se encuentra el código fuente del kernel y luego ejecutar lo siguiente:

make-kpkg clean

make-kpkg --initrd kernel_image kernel_headers

Los que hayan compilado un kernel de Linux este comando equivalen a: make dep, make clean, make bzImage y make modules

La opción --initrd crea una imagen initrd en el paquete que se guardará en /boot cuando se instale el kernel (recordar que solo estamos compilando y empaquetando, no instalando).

El comando anterior (make-kpkg) creará dos paquetes con extensión .deb en el directorio superior. Un paquete será el kernel y el otro los kernel-headers.

La opción de kernel_headers es opcional, por lo general se utiliza debido a que muchos programas y módulos necesitan tener los headers del kernel que se está usando para poder ser instalados (Ej: el driver de nvidia, VMware, ndiswrapper, madwifi, otros).

NOTA: El tiempo de compilación es proporcional a la configuración que hayas hecho y a tu poder de computo.

Si se incluyeron muchos módulos se demorará más. Hay que tener paciencia, es muy frecuente que se tarde bastante.

Una vez que termina la compilación y es corroborada la existencia de los dos paquetes en el directorio superior es el momento de instalarlo. Se deben ejecutar en el directorio donde están los paquetes:

dpkg -i TU_KERNEL.deb

dpkg -i TU_KERNEL-HEADERS.deb

Por ejemplo, un caso real sería:

dpkg -i kernel-image-“versiondelkernel”Custom_i386.deb

dpkg -i kernel-headers-“versiondelkernel”Custom_i386.deb

Se recomienda antes de reiniciar el sistema chequear que aparezca listado el nuevo kernel en el siguiente fichero

/boot/grub/menu.lst (para versiones menores a GRUB2),

/boot/grub/grub.cfg (a partir de GRUB2)

En caso de que no se muestre se debe agregar manualmente.

Importante: Esta informacion fue tomada de la Guia de compilacion de kernel de la Academia de Software Libre de Venezuela, sede Edo. Zulia. Y La comparto con todos Ustedes espero le sirva de provecho!!! y recuerden Compartir es el Primer Paso Para la Comunidad!!!


Visto en Tuxapuntes