¡Otro blog!

Para crear y mantener un blog en condiciones hace falta disponer de mucho tiempo e interés. De lo segundo no me falta, pero de lo primero ando muy escaso. Por eso mismo la finalidad de este blog es tener anotado a mi disposición (y a la de todo al que le pueda servir lo que escriba) todas las modificaciones y experiencias que llevo a cabo en mi ordenador. Me he cansado de configurar siempre las mismas cosas y no acordarme dónde lo anoté cuando ocurre un desastre.
Este blog lo inicio más como utilidad personal que como punto de encuentro de navegantes.
Si lo que aquí encuentras te resulta útil me alegraré mucho...Lo actualizaré cuando pueda.

sábado, 28 de julio de 2007

Arrancando el sistema

Ya estamos en casa y por fín tenemos un ratito para disfrutar con el ordenador. Nos sentamos delante de la pantalla, apretamos el botón de encendido y en unos segundos a disfrutar.

Pero ¿sabemos qué ocurre desde que apretamos ese botón hasta que aparece el loggin? En ese espacio de tiempo lo que ocurre es el arranque del sistema. Normalmente el sistema arranca automáticamente sin nuestra intervención, pero cuando aparecen los problemas nos conviene saber cómo es el proceso para intentar levantar el sistema.
Secuencia de arranque

En los sistema basados en Intel (Pc's) el arranque pasa por las siguientes etapas:

  1. Comprobar el correcto funcionamiento del hardware cuando se aplica la alimentación del sistema. Este autochequeo se llama POST y verifica qué componentes están presentes y si están funcionales.
  2. Localizar y lanzar el programa gestor de arranque. La BIOS del sistema lo busca en el sector de arranque del disco duro (Master Boot Record) y comienza su ejecución. En Linux suele ser LILO o GRUB, en Windows puedes ser el gestor de arranque estándar de DOS u otro cualquiera.
  3. Se ejecuta el gestor de arranque que es el responsable de localizar y ejecutar el sistema operativo en sí.
Cuando el gestor de arranque es LILO o GRUB se presenta al usuario un menú de opciones al arrancar. Tras la elección el gestor arranca el sistema operativo que elijamos.

Lanzado el Núcleo del sistema éste toma el control sobre el proceso de arranque y completa las tareas de inicialización hasta dejar el sistema listo para ser usado. Esto incluye la preparación de los dispositivos, arrancar los procesos servidores, inicializar las conexiones de red y otras tareas similares.

EL KERNEL SE INICIA...

Ahora vamos a ver el proceso de arranque tras cargar el Kernel.
En la fase inicial, el Kernel comprueba el hardware del sistema y trata de identificar los dispositivos.

Según avanza el arranque, examina otros subsistemas hard; buses E/S, interfaces de red, discos duros, lectores cd CD-ROM, disqueteras, otros dispositivos de almacenamiento...Y mientras hace eso, también inicializa las estructuras de datos internas.

La fase inicial termina con el kernel inicializando los recursos de los sistemas de archivos -LVM (subsistema del gestor lógico de volúmenes), habilitar soporte para RAID, activar los dispositivos configurados que hagan falta, búsqueda de dispositivos SCSI y localizar particiones en los discos duros.

Cuando todo esto ha terminado, el Kernel monta el sistema de archivos raíz en modo de sólo lectura, libera memoria y arranca el primer proceso en el sistema que ejecuta el programa INIT.

Los mensajes que se generan en esta fase se guardan en /var/log/boot.log
En Slackware12 se guardan en /var/log/btmp
Estos mensajes los puedes ver accediendo al fichero o utilizando el comando dmesg.


INIT TOMA EL CONTROL

En Linux el proceso init es el primero en ser lanzado y por ello su identificador de proceso (PID) es 1. Init va creando procesos a medida que vayan siendo necesarios. Al ser lanzado lo primero que hace es llevar a cabo las acciones especificadas en su archivo de configuración, /etc/inittab. El funcionamiento de init se estructura en niveles de ejecución.
Un nivel de ejecución es un modo de operar específico del sistema y un conjunto predefinido de procesos del sistema. Los niveles de ejecución se designan con un número.
En Slackware los niveles de ejecución son:

0 = halt
1 = single user mode
2 = unused (but configured the same as runlevel 3)
3 = multiuser mode (default Slackware runlevel)
4 = X11 with KDM/GDM/XDM (session managers)
5 = unused (but configured the same as runlevel 3)
6 = reboot

Init lleva al sistema a su nivel de ejecución por defecto (3 en Slackware). Mas tarde podemos cambiar el nivel de ejecución de init con el comando telinit siendo root. Por ejemplo:

#telinit3

Le dice a init que lleve el sistema al nivel 3 de ejecución.

#telinit6

Especifíca el reinicio del sistema.

EL ARCHIVO INITTAB

Es una serie de entradas que corresponden a procesos que se han de empezar cuando el sistema entre en cada uno de los niveles de ejecución definidos. Cada entrada tiene la siguiente sintaxis:

xx:niveles:acción:proceso

xx: es una etiqueta para la entrada (uno o dos caracteres). Son sensibles a las mayúsculas y han de ser únicas en el archivo inittab.

niveles: es una lista de los niveles de ejecución a los que se aplica la entrada (donde un espacio en blanco indica todos los niveles).

acción: es una palabra clave que indica cómo y bajo qué circunstancias debería init empezar el proceso especificado en el último campo de la entrada.
Estas son las palabras clave de acción más importantes:
wait: Arranca el proceso y espera a que termine antes de seguir a la siguiente entrada.
once: Arranca el proceso sólo si no está ejecutándose ya.
respawn: Arranca el proceso (sin esperar), y lo relanza automáticamente en caso de que muera.
bootwait: Ejecuta el proceso sólo en el arranque, esperando a que este termine.
initdefault: Especifica el nivel de ejecución por defecto.
ctrlaltdel: Ejecutar la acción cuando se detecte la secuencia Ctrl-Alt-Supr en el teclado.
power: Se definen varias palabras clave para varios eventos relacionados con la pérdida de potencia.

INITTAB CON MAS DETALLE

Veamos algunas entradas para el archivo inittab. Describiré el inittab de
Slackware12, aunque en las demás distribuciones será muy parecido.
Las primeras líneas comienzan con # este simbolo significa que la línea es un comentario y no se tendrá en cuenta. La primera entrada activa que vemos define el nivel de ejecución por defecto. En
Slackware es el 3, pero si deseais que vuestro linux arranque con un login gráfico no teneis más que editar inittab y cambiar el 3 por el 4.
La segunda entrada especifica el script que ha de ejecutar init siempre que arranque el sistema.
Las siguientes entradas especifican los script de control usado para cada nivel de ejecución del sistema definido. Observa que en todos los casos se ejecuta el script rc con el nivel de ejecución pasado como argumento.
La línea

ca::ctrlaltdel:/sbin/shutdown -t5 -r now

especifica qué hará el sistema cuando se apretan simultáneamente las teclas Contr-Alt-Supr y que en este caso hará que tras 5 segundos el sistema se reiniciará.

Luego vienen unas entradas que indican qué hacer cuando hay fallos de potencia en el sistema.

Las entradas finales se corresponden con los procesos getty para las seis líneas terminales habilitandolas para que sean usadas como entrada de usuarios.

RESUMIENDO

El arranque del sistema se realiza en tres etapas:
Primero se carga el kernel
Luego se inicia el proceso init
Por último se ejecutan los scripts (guiones) de arranque del sistema.

No hay comentarios: