martes, 17 de mayo de 2016

Secuencia de arranque

Secuencia de arranque. Marcha y paro de los servicios

Cuando se enciende un sistema informático se inicia la secuencia de arranque. La secuencia de arranque es variable en función de la plataforma (hardware y software) en la que tiene lugar. Una posible división a grosso modo puede ser:

Pasos:

  1. Se pulsa el botón de encendido.
  2. El hardware comienza a funcionar, su primer trabajo consiste en ejecutar el POST (power on self test)
  3. Se carga y ejecuta el gestor de arranque
  4. Se carga y ejecuta el sistema operativo

Power on self test

Cuando el hardware al recibir alimentación comienza a funcionar, su primera tarea consiste en realizar unas pruebas de autodiagnóstico. Si las comprobaciones no encuentran ningún error, el dispositivo reanuda su funcionamiento normal. En el caso de la CPU, una vez que completa su inicialización comienza a cargar instrucciones desde la memoria principal y ejecutarlas. La dirección de memoria a la que la CPU acude por primera vez para cargar instrucciones corresponde a un área de memoria no volátil. En el caso de los PCs este área de memoria corresponde a la BIOS (Basic Input Output System).
En otras plataformas, el software que se almacena en esta memoria recibe otro nombre. Por ejemplo, en algunas máquinas de Apple y Sun se utiliza Open Firmware. En los nuevos Mac sobre Intel se utiliza EFI.
El código que carga y ejecuta la CPU tiene por función:
  • Verificar la integridad del propio código de la BIOS
  • Encontrar, medir y verificar la memoria principal del sistema
  • Descubrir, inicializar y catalogar los diferentes buses del sistema
  • Ceder el control a otras posibles BIOS (controladoras RAID, SCSI...)
  • Proporcionar al usuario un entorno de configuración (seleccionar la unidad de arranque, hora del reloj de tiempo real...)
  • Identificar, organizar y seleccionar los dispositivos preparados para el arranque
  • Construir el entorno de ejecución que precisa el sistema operativo

Los sistemas operativos modernos, aunque reciben la información (de memoria, buses y dispositivos) recopilada por la  BIOS, el propio sistema operativo realiza su propio examen del sistema. Aún así, la BIOS sigue teniendo un papel principal en el arranque, al seleccionar el dispositivo desde el que se cargará el gestor de arranque.

Gestor de arranque

El gestor de arranque (bootloader) está almacenado en el MBR (Master Boot Record). La BIOS carga su contenido en memoria principal, y cede el control del sistema, al iniciar su ejecución.
La función principal del gestor de arranque es encontrar la imagen del núcleo, cargarla en memoria principal y comenzar su ejecución. Para ello puede interaccionar con el usuario (permitiendo escoger entre diferentes núcleos alternativos), o incluso alterar la tabla de particiones del disco (para ocultar, hacer visible o cambiar alguna partición).
Algunos de los gestores de arranque más populares son:
NTLOADER
Gestor de arranque nativo de Windows. También puede arrancar GNU/Linux
LILO
Linux Loader es un gestor de arranque libre que puede cargar tanto Windows como GNU/Linux (u otros sistemas operativos). Es flexible y fácil de utilizar
GRUB
Grand Unified Bootloader es el gestor de arranque oficial del proyecto GNU. Es muy flexible y potente.

Secuencia de arranque del sistema operativo

Cuando el gestor de arranque carga la imagen del núcleo en memoria principal, cede el control del sistema al núcleo y comienza la ejecución del sistema operativo.
El sistema operativo inicia su propia secuencia de arranque, en la que normalmente detecta y configura el hardware disponible. Después crea el primer procesosiguiendo la ejecución de uno o varios scripts, inicia los servicios que estén configurados.
En Unix hay dos estilos de arranque diferenciados:
Estilo BSD
Los scripts /etc/rc y /etc/rc.local controlan el arranque del sistema
Estilo System V
Existen diferentes niveles de ejecución. En cada nivel de ejecución hay scripts que controlan qué servicios se deben iniciar y detener

Niveles de ejecución

Un nivel de ejecución (runlevel) es un estado de funcionamiento del sistema informático. En cada nivel de ejecución, el sistema tiene en marcha diferentes servicios. Los niveles de ejecución son configurables, se pueden definir nuevos y cambiar el significado de los que están configurados.

No hay comentarios:

Publicar un comentario