El Proceso de Arranque en Sistemas Operativos


Bootstrapping

En informática, el término bootstrapping se utiliza para cualquier proceso en el que un sistema simple activa a otro más complejo. Es el concepto de arrancar un sistema a partir de una parte pequeña del mismo.

El proceso de arranque se divide en los siguientes pasos:

  • Inicialización del sistema
  • Bootloader
  • Carga del kernel
  • Ejecución del kernel
  • El proceso init

Arranque del Ordenador

Se procede a la ejecución del programa almacenado en la BIOS (Basic Input/Output System). La BIOS guarda la configuración del hardware del sistema y su tarea es ejecutar el POST (Power On Self Test).

Bootloader

El objetivo del bootloader es cargar parte del núcleo (kernel) del sistema operativo en memoria y ejecutarlo. A partir del momento de carga, el bootloader toma el control y se encarga de cargar el resto del sistema operativo.

Puede ubicarse en el primer sector de cada una de las particiones del disco.

GRUB. Grand Unifying Bootloader

Puede trabajar en dos o tres etapas (stages). El primer stage se encuentra situado en el MBR (primer sector del disco duro). La función del stage 1 es básicamente cargar el stage 2 aunque normalmente suele arrancar el stage 1.5. El stage 1.5 se encuentra en los primeros 30 KB del disco inmediatamente después del MBR y antes de la primera partición. En determinadas ocasiones (discos con GPT o LVM) puede ocurrir que este espacio no esté presente lo que provocaría error en el arranque. El stage 1.5 contiene los drivers necesarios para manipular el sistema de ficheros. Esto le permite cargar directamente el stage 2 de una localización conocida en el sistema de ficheros, por ejemplo de /boot/grub. El stage 2 ya se encarga de cargar el kernel del sistema.

El Archivo /proc

Cada sistema operativo ofrece un mecanismo para que el administrador de sistemas investigue las interioridades del sistema operativo y para configurar los parámetros cuando lo necesite. En Linux este mecanismo es el sistema de archivos /proc.

CRON

.---------------- minuto (0 - 59)
|  .------------- hora (0 - 23)
|  |  .---------- día del mes (1 - 31)
|  |  |  .------- mes (1 - 12)
|  |  |  |  .---- día de la semana 0-6
|  |  |  |  |
*  *  *  *  *  comando para ser ejecutado

El Proceso Init

El proceso init es el patrón de todos los procesos. Siempre es el primer proceso que se inicia en el sistema. Este proceso siempre tiene el UID 1.

Este proceso tiene dos finalidades:

  • Es el proceso padre de todos los demás procesos. Debido a que init nunca muere, el sistema siempre se asegura de su presencia y, si es necesario, hace referencia a él. La necesidad de referirse a init, normalmente, ocurre cuando un proceso muere antes de que se completen todos sus procesos hijos. En esta situación los procesos huérfanos pasarán a ser hijos de init.
  • La segunda cosa que hace init es manejar los niveles de ejecución mediante la ejecución de los programas adecuados cuando se llega a un nivel de ejecución en particular. Este comportamiento se define en el archivo /etc/inittab.

Los Niveles de Ejecución (Runlevels)

Los niveles de ejecución (runlevels) hacen referencia al modo de funcionamiento del sistema operativo. Los niveles en Linux son los siguientes:

  • 0: Halt: Corresponde a la fase de shutdown. Introducir init 0 en el shell generalmente apagará el sistema.
  • 1: Single user – Modo texto: Sería el equivalente al “modo seguro” de Windows. Solo es utilizado para realizar reparaciones o hacer mantenimiento del sistema. Solo permite el acceso de un único usuario.
  • 2: Multiusuario (sin NFS): Se utiliza para iniciar la mayoría de los servicios de la máquina aunque no los de compartición de ficheros en red (Samba, NFS). Permite el acceso a múltiples usuarios.
  • 3: Multiuser completo – Modo texto: Es el utilizado habitualmente en los servidores. Carga todos los servicios excepto X-Windows.
  • 4: Definible por el usuario: Se suele utilizar para personalizar el sistema. Se utiliza en muy raras ocasiones.
  • 5: Multiuser completo – Modo X-Windows: Ejecuta todo: GUIs, servicios de impresión,… Es le habitualmente utilizado en los sistemas de escritorio
  • 6: Reboot (rearranque): Está reservado para el reinicio del sistema.

Servicios

En UNIX y en Linux, estos programas se llaman “demonios”, y en Windows, se llaman “Servicios”.

Son programas que pueden iniciarse automáticamente cuando se inicia Windows y proporcionan alguna función esencial.

Se ejecutan sin necesidad que ningún usuario inicie sesión. Se ejecutan con una cuenta de usuario que le proporcione permisos para realizar sus operaciones.

Se pueden configurar los servicios para que se inicien automáticamente en cuanto se inicie Windows, para iniciarlos manualmente, cuando queramos o cuando lo requiera otro programa, o se pueden deshabilitar para impedir que se ejecute el servicio.

Arranque Versiones Anteriores de Windows

  1. Se enciende el ordenador.
  2. Se carga la BIOS la cual ejecuta el proceso POST que chequea todo el hardware del sistema.
  3. Carga y ejecución del Registro de Arranque Maestro (MBR): el MBR se encuentra en el primer sector del disco duro y contiene la tabla de particiones y una pequeña parte de código ejecutable que sirve para iniciar la carga del archivo NTLDR.
  4. NTLDR prepara un menú que permite elegir con qué sistema operativo arrancar. La información la obtiene del fichero BOOT.INI. Si solo hubiera un SO no muestra el menú.
  5. A continuación se ejecuta NTDETECT.COM que examina el ordenador y determina la configuración hardware, con esta información construye la rama HKEY_LOCAL_MACHINE del registro de Windows.

El proceso de arranque de Windows 2008 difiere ya que el fichero NTLDR ya no existe.

Ahora es reemplazado por el Boot Configuration Data (BCD) el cual cambia la funcionalidad y además soporta los nuevos sistemas con EFI.

El BCD ya no guarda la configuración en un fichero de texto como era boot.ini sino que es un fichero binario que solo puede ser modificado mediante la aplicación BCDEdit.exe.

Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *