You are on page 1of 38

Kernel Linux

Kernel Linux
Actualmente Linux es un ncleo monoltico hbrido. Los controladores de dispositivos y las extensiones del ncleo normalmente se ejecutan en un espacio privilegiado conocido como anillo 0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan en espacio de usuario. A diferencia de los ncleos monolticos tradicionales, los controladores de dispositivos y las extensiones al ncleo se pueden cargar y descargar fcilmente como mdulos, mientras el sistema contina funcionando sin interrupciones.

Kernel Linux
Tambin, a diferencia de los ncleos monolticos tradicionales, los controladores pueden ser prevolcados (detenidos momentneamente por actividades ms importantes) bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware, y para mejorar el soporte de multiprocesamiento simtrico.

Kernel Linux
El hecho de que Linux no fuera desarrollado siguiendo el diseo de un microncleo (diseo que, en aquella poca, era considerado el ms apropiado para un ncleo por muchos tericos informticos) fue asunto de una famosa y acalorada discusin entre Linus Torvalds y Andrew S. Tanenbaum. A diferencia de los ncleos monolticos tradicionales, los controladores de dispositivos son fcilmente configurables como mdulos del ncleo cargables, y se pueden cargar o descargar mientras se est ejecutando el sistema.

Jerarqua de Directorios
En Linux existe un sistema de archivos que carga y contiene todos los directorios, redes, programas, particiones, dispositivos, etc. que el sistema sabe reconocer, o por lo menos, identificar. Este sistema de ficheros y directorios, tiene como base al carcter (/); ese mismo carcter sirve tambin para demarcar los directorios, como por ejemplo: "/home/usuario/imagen.jpg".

Jerarqua de Directorios
El directorio especificado por una ruta consistente slo por este carcter (/) contiene toda la jerarqua de los directorios que constituyen todo el sistema. A este directorio suele llamarse directorio raz. En Linux, a los discos no se les asigna una letra como en Windows (p.e. "C:"), sino que se les asigna un directorio de la jerarqua del directorio raz (/), como por ejemplo: "/media/floppy". Es prctica comn en el sistema de ficheros de Linux, utilizar varias sub-jerarquas de directorios, segn las diferentes funciones y estilos de utilizacin de los archivos.

Clasificacin de las Jerarquas


* Estticos: Contiene archivos que no cambian sin la intervencin del Estticos administrador (root), sin embargo, pueden ser ledos por cualquier otro usuario. (/ bin, /sbin, /opt, /boot, /usr/bin...) * Dinmicos: Contiene archivos que son cambiantes, y pueden leerse y Dinmicos escribirse (algunos solo por su respectivo usuario y el root). Contienen configuraciones, documentos, etc. Para estos directorios, es recomendable una copia de seguridad con frecuencia, o mejor an, deberan ser montados en una particin aparte en el mismo disco, como por ejemplo, montar el directorio /home en otra particin del mismo disco, independiente de la particin principal del sistema; de esta forma, puede repararse el sistema sin afectar o borrar los documentos de los usuarios. (/var/mail, /var/spool, /var/run, /var/lock, /home...) * Compartidos: Contiene archivos que se pueden encontrar en un ordenador Compartidos y utilizarse en otro, o incluso compartirse entre usuarios. * Restringidos: Contiene ficheros que no se pueden compartir, solo son Restringidos modificables por el administrador. (/etc, /boot, /var/run, /var/lock...)

Kernel Panic
En Linux, un panic es un error insalvable del sistema detectado por el ncleo en oposicin a los errores similares detectados en el cdigo del espacio de usuario. Es posible para el cdigo del ncleo indicar estas condiciones mediante una llamada a la funcin de pnico situada en el archivo header sys/system.h. Sin embargo, la mayora de las alertas son el resultado de excepciones en el cdigo del ncleo que el procesador no puede manejar, como referencias a direcciones de memorias invlidas.

Kernel Panic
Generalmente esto es indicador de la existencia de un bug en algn lugar de la cadena de alerta. Tambin pueden indicar una falla en el hardware como una falla del RAM o errores en las funciones aritmticas en el procesador, o por un error en el software.

Versiones
Ms all de haber desarrollado su propio cdigo y de integrar los cambios realizados por otros programas, Linus Torvalds continua lanzando nuevas versiones del ncleo Linux. Estos son llamados ncleos vanilla, lo que significa que no han sido modificados por nadie. Muchos desarrolladores de distribuciones Linux modifican dicho ncleo en sus productos, principalmente para agregarle soporte a dispositivos o herramientas que no fueron oficialmente lanzadas como estables, mientras que algunas distribuciones, como Slackware, mantienen el ncleo vanilla.

Versiones

Linea del Tiempo

Numeracin
La versin del ncleo Linux actualmente consta de cuatro nmeros. Por ejemplo, asumamos que el nmero de la versin est compuesta de esta forma: A.B.C[.D] (ej.: 2.2.1, 2.4.13 2.6.12.3).

El nmero A denota la versin del ncleo. El nmero B denota la subversin del ncleo. Los nmeros pares indicaban la versin estable lanzada, en cambio los nmeros impares son versiones de desarrollo. El nmero C indica una revisin mayor en el ncleo. Solo es cambiado cuando se introducen nuevos drivers o caractersticas; cambios menores se reflejan en el nmero D. El nmero D se produce cuando un grave error requiere de un arreglo inmediato a nivel de Bug-fixes y parches de seguridad.

Numeracin
Tambin, algunas veces luego de las versiones puede haber algunas letras como rc1 o mm2. El rc se refiere a release candidate e indica un lanzamiento no oficial. Otras letras usualmente (pero no siempre) hacen referencia a las iniciales de la persona. Esto indica una bifurcacin en el desarrollo del ncleo realizado por esa persona, por ejemplo ck se refiere a Con Kolivas, ac a Alan Cox, mientras que mm se refiere a Andrew Morton.

Compilacin
Muchos usuarios de Linux (en su mayora novatos) pueden preguntarse el porque o para que compilar e instalar un kernel si ya se encuentra uno listo y ptimo en nuestro S.O.. La respuesta es muy sencilla y es que entre una versin y otra de los distintos kernel se agregan caractersticas nuevas al mismo adems de una serie de mejoras, tomando en cuenta de que la versin a compilar sea de una versin mas actual de la que se est utilizando en el Sistema Operativo.

Compilacin
(Paso a Paso)
Paso 1: Lo recomendable es que en primer 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. 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 instalacin Nota

Compilacin
(Paso a Paso)

kernel-package

suministrar las herramientas necesarias

para poder compilar y generar el paquete con nuestro kernel.

libncurses5-dev

son las libreras ncurses, mtodo que se

utiliza para configurar cmodamente a travs de mens el kernel que se desea compilar.

fakeroot

Ejecuta una orden en un entorno que falsea

privilegios de superusuario para la manipulacin de ficheros. til para permitir a usuarios crear archivos (.tar, .deb, etc.) con ficheros y permisos/propietarios de superusuario.

Compilacin
(Paso a Paso)

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 compresin y de codificacin (Teora de Burrows-Wheeler y Huffman).

Compilacin
(Paso a Paso)
En principio, para compilar un kernel es evidente que debes descargar el cdigo fuente del mismo. Para eso ingresamos en la pgina oficial del proyecto (http://kernel.org) donde se encuentran todos los kernel oficiales de Linux, desde la primera versin 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.

Compilacin
(Paso a Paso)
Paso 3: Descargar en el Directorio /usr/src el paquete (source) del Kernel que desee compilar. Ej:
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2

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


tar xvzf linux-2.6.15.tar.gz

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


tar xvjf linux-2.6.15.tar.bz2

Compilacin
(Paso a Paso)
Paso (Opcional) Una vez descomprimido el archivo tendremos un directorio con el siguiente nombre (Ej.) linux-2.6.15.2 creamos un enlace simblico: ln -s linux-2.6.15.2 linux y entramos al directorio cd linux

Compilacin
(Paso a Paso)
Paso 5: Ahora debemos configurarlo, esto quiere decir decidir cuales mdulos deseamos que tenga (o que no tenga) una vez compilado. Como es caracterstico 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 cmodo hacer la configuracin por este mtodo porque posees un men muy sencillo he interactivo. NOTA: Necesitas tener instalado las las libreras ncurses, en debian: aptitude install libncurses5-dev

Compilacin
(Paso a Paso)
Paso 5 (cont.):
3ra alternativa: make xconfig <-- Debes tener instalado y en funcionamiento el servidor X, ya que toda la configuracin se hace grficamente (haciendo uso del sistema de ventanas). NOTA: Necesitas tener instaladas las libreras QT, en debian aptitude install libqt3-dev

Para la configuracin se utilizar la segunda alternativa, es decir, make menuconfig. Ests en la libertad de utilizar la que deseen. Sin embargo se recomienda el segundo mtodo debido a que no se necesita estar en entornos de escritorio ni tener funcionando el servidor X, adems que tiene una interfaz muy simple e interactiva.

Compilacin
(Paso a Paso)
Para comenzar la configuracin:
make menuconfig

Cuando se dediquen a configurar el kernel recuerden ser muy precavidos seleccionando o habilitando los mdulos. Si tenemos dispositivos como FlashDrive (o Pendrive) es indefectible activar el soporte SCSI (especficamente 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 funcionara una vez instalado. De igual manera pasa si desactivamos el soporte USB, no funcionara todo los que conectemos por el puerto USB.

Compilacin
(Paso a Paso)
Aparecer el men de configuracin del kernel aqu pulsando Enter entramos a los distintos mens, 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 informacin sobre el men u opcin.
[ * ] o indica que la opcin sera compilada como parte del kernel. [ ] o indica que la opcin no esta incluida. [M] o indica que la opcin esta como modulo.

Compilacin
(Paso a Paso)
Recomiendo que cuando se compila por primera vez no se modifique ninguna opcin, 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 configuracin de su kernel y lo vuelva a compilar.

Compilacin
(Paso a Paso)
menuconfig (screenshot)

Compilacin
(Paso a Paso)
menuconfig (screenshot)

Compilacin
(Paso a Paso)
menuconfig (screenshot)

Compilacin
(Paso a Paso)
Terminada la configuracin 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 compilacin debemos estar en el directorio donde se encuentra el cdigo 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

Compilacin
(Paso a Paso)
La opcin --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 extensin .deb en el directorio superior. Un paquete ser el kernel y el otro los kernel-headers.

Compilacin
(Paso a Paso)
La opcin de kernel_headers es opcional, por lo general se utiliza debido a que muchos programas y mdulos 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 compilacin es proporcional a la NOTA configuracin que hayas hecho y a tu poder de computo. Si se incluyeron muchos mdulos se demorar ms. Hay que tener paciencia, es muy frecuente que se tarde bastante.

Instalacin
(Paso a Paso)
Una vez que termina la compilacin 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 estn los paquetes:
dpkg -i TU_KERNEL.deb dpkg -i TU_KERNEL-HEADERS.deb

Por ejemplo, un caso real sera:


dpkg -i kernel-image-2.6.15_10.00.Custom_i386.deb dpkg -i kernel-headers-2.6.15_10.00.Custom_i386.deb

Recomendacin
(GRUB)
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.

Mas informacin
* Si desea indagar sobre otras opciones y argumentos que pueda utilizar con make-kpkg para compilar el kernel le recomiendo leer las pginas del manual (estn completamente en espaol). Para ello:
man make-kpkg

* Una vez descargado el cdigo fuente del kernel leer el archivo README incluido en el mismo.

Ayuda

Todos los kernels que han existido se encuentran en: http://kernel.org/pub/linux/kernel Para averiguar los cambios que sufre un determinado release del kernel tendrs que ver el archivo Changelog. Si ya se tiene un kernel configurado y no se quiere reiterar el tedioso paso de configurar nuevas versiones se puede hacer lo siguiente: En /boot debe estar la configuracin anterior, el archivo que contiene tu clafiguracin anterior se llama
VERSION_KERNEL config-

(Ej. config-2.6.14). Ese archivo se tiene que

copiar en el directorio donde estn las fuentes del kernel con el nombre .config (recuerden el "." que es importante, sin l no funcionar el proceso). Un ejemplo completo sera: cp /boot/config-2.6.14 /usr/src/linux-2.6.15/.config make oldconfig

Ayuda

Una vez realizado lo anterior ya se tiene lista la configuracin, podemos verificar usando cualquiera de los 3 mtodos explicados en el paso 5. Se notar que se tiene una 5 configuracin diferente a la que viene por defecto. Recordar que para la configuracin del kernel con make config debemos conocer nuestro hardware, por eso si eres un usuario novato se recomienda quese vaya por el make menuconfig Si compilars ms de un kernel puedes colocarle un nombre a cada compilacin para identificar al paquete .deb en el directorio superior. Para hacer esto se necesita agregar --append-toversion=NOMBRE. Como se imaginaran, donde dice nombre es version=NOMBRE donde se coloca el nombre que caracterice a cada kernel.

Ayuda

Quieres ejecutar con un solo comando todos los pasos para tener en funcionamiento un mdulo con Module Assistant? Pues el truco es ejecutar: m-a a-i madwifi

Donde a-i Significa "auto-install", equivale a prepare,build e install

Si se tiene un kernel con mdulos ya instalados (por ejemplo, madwifi, nvidia, etc) e instalas un nuevo kernel se perder el soporte de estos mdulos en tel nuevo kernel.

Ergo: tienes que volver a compilarlos, no es tan trfico porque afortunadamente tienes la herramienta Module Assitant

Recuerden que no estn vetados de GOOGLE. Si se presenta algn problema: www.google.com

You might also like