You are on page 1of 12

2.

2 NUCLEO O KERNEL

Definición de Kernel Núcleo. Parte esencial de un sistema operativo que


provee los servicios más básicos del sistema. Se encarga de gestionar los
recursos como el acceso seguro al hardware de la computadora. Se encarga
también del multiplexado, determinando qué programa accederá a un determinado
hardware si dos o más quieren usarlo al mismo tiempo.

El kernel también ofrece una serie de abstracciones del hardware para que los
programadores no tengan que acceder directamente al hardware, proceso que
puede ser complicado.

En informática, el núcleo (también conocido en español con el anglicismo


kernel, de raíces germánicas como kern) es la parte fundamental de un sistema
operativo. Es el software responsable de facilitar a los distintos programas acceso
seguro al hardware de la computadora. Como hay muchos programas y el acceso
al hardware es limitado, el núcleo también se encarga de decidir qué programa
podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se
conoce como multiplexado. Acceder al hardware directamente puede ser
realmente complejo, por lo que los núcleos suelen implementar una serie de
abstracciones del hardware. Esto permite esconder la complejidad, y proporciona
una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para
el programador.

Esquema básico de la interacción entre un Núcleo (Kernel), el resto del Software


(los programas de aplicación, las bases de datos, etc.) y el Hardware.

1
Generalidades

En informática, el núcleo de un sistema operativo, es el programa informático que


se asegura de:

· La comunicación entre los programas informáticos y el hardware.

· Gestión de los distintos programas informáticos (tareas) de una máquina.

· Gestión del hardware (memoria, procesador, periférico, forma de


almacenamiento, etc.)

La mayoría de los sistemas operativos se construyen en torno al concepto del


núcleo. La existencia de un núcleo, es decir, de un único programa responsable de
la comunicación entre el hardware y el programa informático, resulta de
compromisos complejos referentes a cuestiones de resultados, seguridad y
arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la
utilización de los recursos materiales (hardware), en particular, de la memoria.
Los núcleos tienen como funciones básicas de garantizar el cargamento y la
ejecución de los procesos, las entradas / salidas y proponer un interfaz entre el
espacio núcleo y los programas del espacio del usuario.

Tipos de Núcleos

No necesariamente se necesita un núcleo para usar una computadora. Los


programas pueden cargarse y ejecutarse directamente en una computadora
«vacía», siempre que sus autores quieran desarrollarlos sin usar ninguna
abstracción del hardware ni ninguna ayuda del sistema operativo. Ésta era la
forma normal de usar muchas de las primeras computadoras: para usar distintos
programas se tenía que reiniciar y reconfigurar la computadora cada vez. Con el
tiempo, se empezó a dejar en memoria (aún entre distintas ejecuciones) pequeños
programas auxiliares, como el cargador y el depurador, o se cargaban desde
memoria de sólo lectura. A medida que se fueron desarrollando, se convirtieron en
los fundamentos de lo que llegarían a ser los primeros núcleos de sistema
operativo.

Hay cuatro grandes tipos de núcleos:

· Los núcleos monolíticos facilitan abstracciones del hardware subyacente


realmente potentes y variadas.

2
· Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de
abstracciones simples del hardware, y usan las aplicaciones llamadas servidores
para ofrecer mayor funcionalidad.

· Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los


micronúcleos puros, excepto porque incluyen código adicional en el espacio de
núcleo para que se ejecute más rápidamente. Son los que reciben o dan salida a
señales analógicas que son procesadas digitalmente. Esto puede realizarse
gracias a los conversores analogicos/digitales que , como su nombre indica
,convierte señales analógicas a digitales

· Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de


bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi
directo al hardware.

El kernel ó núcleo de linux se puede definir como el corazón de este sistema


operativo. Es el encargado de que el software y el hardware de tu ordenador
puedan trabajar juntos.

Las funciones más importantes del mismo, aunque no las únicas, son:

• Administración de la memoria para todos los programas y procesos en


ejecución.
• Administración del tiempo de procesador que los programas y procesos en
ejecucion utilizan.
• Es el encargado de que podamos acceder a los periféricos/elementos de
nuestro ordenador de una manera cómoda.

Hasta que empezó el desarrollo de la serie 2.6 del núcleo, existieron dos tipos de
versiones del núcleo:

• Versión de produccion: La version de produccion, era la version estable


hasta el momento. Esta version era el resultado final de las versiones de
desarrollo o experimentales.

Cuando el equipo de desarrollo del núcleo experimental, decidia que tenia


un núclo estable y con la suficiente calidad, se lanzaba una nueva versión
de producción ó estable. Esta versión era la que se debia utilizar para un
uso normal del sistema, ya que eran las versiones consideradas más
estables y libres de fallos en el momento de su lanzamiento.

• Versión de desarrollo: Esta versión era experimental y era la que utilizaban


los desarrolladores para programar, comprobar y verificar nuevas

3
características, correcciones, etc. Estos núcleos solian ser inestables y no
se debian usar sin saber lo que se hacia.

Como interpretar los numeros de las versiones de las series por debajo de la 2.6:

• Las versiones del núcleo se numeraban con 3 numeros, de la siguiente


forma: AA.BB.CC

AA: Indicaba la serie/versión principal del núcleo. Solo han existido la 1 y 2.


Este número cambiaba cuando la manera de funcionamiento del kernel
habia sufrido un cambio muy importante.
BB: Indicaba si la versión era de desarrollo ó de producción. Un número
impar, significaba que era de desarrollo, uno par, que era de producción.
CC: Indicaba nuevas revisiones dentro de una versión, en las que lo único
que se habia modificado eran fallos de programación.

• Unos ejemplos nos ayudaran a entenderlo mejor:

ej1: versión del núcleo 2.4.0: Núcleo de la serie 2 (AA=2), versión de


producción 4 (BB=4 par), primera versión de la serie 2.4 (CC=0)
ej2: versión del núcleo 2.4.1: Núcleo de la serie 2, versión 4, en el que se
han corregido errores de programación presentes en la version 2.4.0
(CC=1)
ej3: versión del núcleo 2.5.0: versión 0 del núcleo de desarrollo 2.5.

Con la serie 2.6 del núcleo, el sistema de numeración asi como el modelo de
desarrollo han cambiado. Las versiones han pasado a numerarse con 4 digitos y
no existen versiones de produccion y desarrollo.

• Las versiones del núcleo se numeran hoy en dia con 4 digitos, de la


siguiente forma: AA.BB.CC.DD.

AA: Indica la serie/versión principal del núcleo.


BB: Indica la revision principal del núcleo. Numeros pares e impares no
tienen ningun significado hoy en dia.
CC: Indica nuevas revisiones menores del núcleo. Cambia cuando nuevas
caracteristicas y drivers som soportados.
DD: Este digito cambia cuando se corrigen fallos de programación o fallos
de seguridad dentro de una revisión.

Hoy en dia se suele usar el nucleo distribuido con la distribucion que el usuario
utiliza. Son las distribuciones las encargadas de distribuir núcleos estables a sus
ausuarios y estos nucleos se basan en el núcleo ("vanilla") distribuido por Linux
Torvalds y el equipo de programadores del núcleo.

4
Dónde conseguir el núcleo

El núcleo denominado "vanilla" (sin alteraciones y suministrado por Linux


Torvalds) se puede bajar de un gran número de servidores en internet pero el sitio
oficial es http://www.kernel.org/. En este enlace tienes la lista internacional oficial
de servidores espejos, de donde es posible bajarse cualquier versión del núcleo
(última y antigüas).

Cada distribución distribuye sus nucleos por los canales de actualización


habituales para cada una de ellas.

Configuración e instalación de un nuevo núcleo

Este es uno de los temas que asustan a los nuevos usuarios de Linux. Lo primero,
deciros que no hay razón para asustarse, la configuración e instalación de un
nuevo núcleo en nuestro sistema es mas fácil de lo suena. Lo segundo, es que
puedes tener un sistema estable, actualizado y que funcione sin problemas
durante meses sin tener que compilar un solo núcleo, siempre y cuando utilices los
núcleos distribuidos con esa distribución.

Es muy recomendable el utilizar los núcleos distribuidos por la distribución que


utilizas. Estos núcleos tienen muy buena calidad y son muy completos y con esto
nos evitamos el trabajo de configurar, compilar y mantener nuevas versiones del
núcleo. Si eres de los que les gustan experimentar y aprender nuevas cosas,
adelante, nadie impide bajar el último núcleo y experimentar con el, esto era
mucho más común hace unos años y una tarea casi imprescindible en muchos
casos.

Para los interesados en el tema existen dos documentos muy buenos que podeis
utilizar para aprender a como compilar un núcleo, FAQ/Kernel compilation y el
Kernel Rebuild Guide

Como compilar un kernel.

Cuando Linux inicia, se suele cargar un archivo comprimido en memoria


que suele andar por /boot, y que se llama /boot/vmlinux-x.x.x, este archivo resulta
ser el kernel comprimido.

La idea de configurar u optimizar este kernel, es la de crear este archivo,


con los drivers y datos que sean acordes a la configuración técnica de nuestra
máquina. Para hacer esto, los drivers pueden ser configurados tanto formando
parte del kernel como de forma de un módulo cargable. El propósito de este
concepto radica en que hay drivers, como el audio, por ejemplo, que no hacen
falta todo el tiempo, sino solo cuando se va ha necesitar en una aplicación tipo CD
Player. Si por lo contrario, es necesario desde un principio convendría que sea
parte del kernel. Si elijo cargarlo como módulo, se puede hacer de dos maneras, o
5
habilito la opción de que el kernel lo cargue o bien lo realizo a mano, a través del
comando insmod.

Si hemos cargado las fuentes del kernel precompilado de nuestra


distribución, tendremos las mismas en el directorio /usr/src/linux, allí hay un
archivo oculto llamado .config, es un archivo, para variar de texto, por lo que
podemos abrirlo con cualquier editor e imprimirlo, por cualquier cosa. Existen
opciones de configuración que no deben cambiarse como protocolos, y otras
cosas, pero con el tiempo de uso del Sistema se verán que cosa hacen falta o no.
Sobre todo en kernel nuevos a compilar. Como norma, suelo dejar el kernel viejo y
le agrego el nuevo, como predeterminado en el arranque. Si tengo algún
inconveniente de que no arranque o algo similar, entonces vuelvo a bootear e
inicio el viejo, para solucionar el problema.

El proceso empleado para bootear es bastante simple ya que son


comandos mas o menos estándares. El único inconveniente aparece al tener que
elegir las cosas a cargar o no.

Para iniciar la compilación se requiere tener instalado la utilidad make y un


compilador para C, como el gcc.

Sabiendo que tenemos los dos programas y las fuentes del kernel en
nuestro poder, comenzamos con el proceso:

Primero borramos el directorio /usr/src/linux, recordemos que es un link.

Luego descomprimamos y desempaquetemos las fuentes en el directorio


/usr/src/linux, cambiamos el nombre del directorio a /usr/src/linux-x.x.x que
corresponden a la versión del kernel, por ejemplo si han descargado el 2.2.17,
sería /usr/src/linux-2.2.17.

Creamos un link en el directorio /usr/src/linux que señale a /usr/src/linux-


2.2.17, esto nos servirá cuando estemos compilando.

Dentro de directorio tenemos tres opciones para trabajar, si estamos sobre


las X ponemos (en consola), make xconfig, si estamos en consola y deseamos
trabajar con una pequeña pantalla gráfica ponemos make menuconfig. Si
deseamos trabajar directamente desde consola, se usa make config. Las
diferencias son, que las dos primeras pueden o permiten mostrar una ayuda, por
las dudas, mientras que le otra no, además de no permitir ir hacia atrás.

Luego de optimizar el kernel, se graban los cambios, en este punto se


pueden hacer varias cosas, una es grabar la configuración en un archivo que yo
he definido y la otra es guardar en el mismo .config. Otra opción es de no guardar
e incluso permite cargar una configuración anterior, por ejemplo si estamos
actualizando y no queremos volver a verificar todas las opciones.

6
Luego de terminar el proceso de selección, hacemos make dep, que crea
las dependencias de los módulos, algunos hacen make clean, que borra las
configuraciones anteriores. Yo no lo hago, a criterio.

Posterior a esto viene make bzImage, este paso es muy importante ya que
comprime el kernel que hemos creado. Puede pasar que indique que el cache sea
muy chico, entonces se hace make zImage. Recuerden que Linux considera las
palabras con letras mayúsculas y minúsculas. Suele tardar algún tiempo.

Terminado este proceso viene make modules, que crea los módulos que
hemos definido. Al terminar hacemos make modules_install y genera los
directorios e instala los módulos creados en el paso anterior.

Hasta aquí se crearan dos archivos que nos interesan, uno es


/usr/src/linux/System.map, y otro llamado /usr/src/linux/arch/i386/boot/bzImage,
ahora los copiamos al directorio /boot haciendo:

# cp /usr/src/linux/System.map /boot/System.map-2.2.27, (según el ejemplo)


# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinux-2.2.17.

Ahora debemos borrar el archivo /boot/System.map, que suele ser un link, y


lo creamos nuevamente para el System.map nuevo.

En este paso algunos hacen make lilo, pero prefiero configurar el archivo de
configuración del lilo de forma personal, de la siguiente manera:

Agrego como opción:


image=/boot/vmlinux-2.2.17
label=linux.nuevo # aquí va el nombre que decidan.
root= /dev/hda5 # el dispositivo que es el linux native. Suele ser el mismo
que el kernel viejo.
read-only
append=” opciones “ # qauí van las opciones que necesiten.

Luego de hacer esto hay que reinstalar el lilo para ver si es tomado el nuevo
kernel, se escribe en consola lilo -v.

Si hay error entonces será indicado, puede ser que parezca por un error de
tipeo en alguna sentencia, se modifica el /etc/lilo.conf y se reinstala.

Luego se reinicia la PC y se bootea con el nuevo kernel.

Si todo funciona bien, entonces no habría problemas pero si hay duda


pueden consultar el Kernel-Como para ver si hay algún problema.

Hago notar, que este método, me a dado resultado y a varios de la misma


manera, por lo que considero que no tendrán problemas al respecto.

7
Kernel Panic

El kernel panic es un mensaje desplegado por un sistema operativo una vez


detectado un error interno de sistema del cual no se puede recuperar.
Intentos del sistema operativo para leer una dirección de memoria inválida o no
permitida son una fuente común de kernel panics. El error también puede ocurrir
como resultado de un fallo de hardware.

Un kernel panic puede ser producto de una explotación de una vulnerabilidad en


algún módulo del kernel de forma malintencionada, logrando corromper la
integridad del sistema.

Kernel Panic, o “Pantalla azul de la muerte” en Windows

La llamada Blue Screen of Death o BSoD (más conocida en español como


pantalla azul de la muerte o «pantallazo azul»), hace referencia a la pantalla
mostrada por el sistema operativo Windows de Microsoft cuando no puede (o está
en peligro de no poder) recuperarse de un error de sistema. Hay dos pantallas de
error de Windows referidas como pantallas azules de la muerte, siendo una de
ellas bastante más seria que la otra.

· Una pantalla azul de la muerte es conocida como un "Stop Error" o "Error de


detención grave" en los manuales de Windows XP.

· Una pantalla azul de la muerte "real" sucede cuando el kernel del sistema
operativo Windows NT no puede recuperarse de un error y la única acción que un
usuario puede realizar es reiniciar el sistema perdiendo todo el trabajo no
guardado, el estado de todos los programas ejecutándose en ese momento y,
posiblemente, poniendo en peligro la integridad del sistema de archivos.

8
La pantalla azul de la muerte está presente, de una forma u otra, en todos los
sistemas Windows desde Windows 2.0.

La información mostrada en la pantalla azul de la muerte no es, en ningún caso,


suficiente para determinar que fue mal, incluso para alguien con acceso al código
fuente (por ejemplo, no contiene un volcado de pila y, aunque lo contuviese, sería
bastante trabajo copiarlo a otro sitio, dado que no se pueden grabar los datos
mostrados en la pantalla azul). La pantalla sólo muestra el punto en el cual el
código falló (que puede ser completamente diferente del punto donde el error fue
originado) y, por ello puede inducir erróneamente al usuario a pensar que se trata
de un error de hardware o algo similar.

El motivo más común por el cual se muestran pantallas azules, es por problemas
entre versiones incompatibles de DLLs (biblioteca de enlace dinámico). Esta causa
es conocida en ocasiones como el infierno de las DLL. Windows carga esas DLL
en memoria cuando son necesitadas por los programas. Si esas DLLs son
reemplazadas por otras más recientes (o más antiguas), la próxima vez que la
aplicación cargue la DLL puede encontrarse con algo distinto a lo que espera.
Estas incompatibilidades aumentan con el paso del tiempo, según se va instalando
más y más software. Ello es uno de las principales motivos por los cuales un
sistema recién instalado es más estable que uno al que se le han practicado
múltiples instalaciones y desinstalaciones de programas.

Kernel Panic en Mac Os

Se produce cuando el núcleo del Sistema recibe datos en un formato que le es


desconocido o que no puede usar debidamente, también pueden ser causados por
un mal estado del hardware del equipo, o por problemas con los drivers de estos.

9
Como se ve en la imagen, un Kernel Panic consiste en un texto sobrescrito en la
última imagen que se mostrara en pantalla, el cual, a diferencia de Windows,
puede ser de gran ayuda para los programadores y ayudarles a solucionar los
problemas que pudieran tener tanto el hardware como el software (si es que el
problema es algo mas grande que un simple “cuelgue” ).

10
Kernel Panic en Linux

En Linux, un “panic” es un error insalvable del sistema detectado por el kernel en


oposición a los errores similares detectados en el código del espacio de usuario.
Es posible para el código del kernel indicar estas condiciones mediante una
llamada a la función de pánico situada en el archivo header sys/system.h. Sin
embargo, la mayoría de los alertas son el resultado de excepciones en el código
del kernel que el procesador no puede manejar, como referencias a direcciones de
memorias inválidas. Generalmente esto es indicador de la existencia de un bug en
algún lugar de la cadena de alerta. También pueden indicar una falla en el
hardware como una falla del RAM o errores en las funciones aritméticas en el
procesador, o por un error en el software.

11
Y acá un plus para hacer un poco interesante este documento:
Si tienes Windows y el color azul del panic te tiene enfermo, con esto vas a poder
cambiarle el color

1) Con el Notepad abrir archivo System.ini (C: \WINDOWS)

2) Localizar Sección 386ENH

3) Añadir a esa sección el siguiente texto:

MessageBackColor=Numero de color y MessageTextColor=Numero de Color

4) Los números de colores son: 0 -> Azul, 1 -> Verde, 2-> cian, 3 rojo, 4 magenta,
5 marrón, 6 blanco, 7 azul intenso, 8 verde intenso, A: cian intenso, B rojo intenso,
C magenta intenso, D amarillo, E blanco.

12

You might also like