Explicamos cómo funciona el proceso de arranque del sistema operativo Microsoft Windows Server 2003, en un equipo con procesador x86: secuencia de prearranque, secuencia de arranque y fase de carga de Windows. También os indicamos cómo modificar y personalizar el proceso de arranque.

La secuencia de prearranque de Windows Server 2003

Todos los procesos de la secuencia de prearranque están controlados por los programas que están almacenados en la memoria ROM del equipo y consisten en los siguientes apartados:

  • Chequeo inicial del hardware, inicialización de la tarjeta de vídeo y de los adaptadores SCSI.
Proceso de arranque en Windows Server 2003 - Secuenca de prearranque ROM
  • Carga y ejecución del Registro de Arranque Maestro (MBR). Dicho registro está localizado en el área del sistema del sector de arranque del disco duro, contiene la tabla de particiones y una pequeña parte de código ejecutable que sirve para iniciar la carga del archivo NTLDR (es un archivo oculto de sólo lectura que se encuentra en el directorio raíz del volumen del sistema, es decir, donde se encuentra instalado el sistema operativo Windows Server 2003), y seguir con la secuencia de arranque.

Almacenamiento de un MBR (Master Boot Record) estándar:

DirecciónDescripción
0x0000Área de Código
0x01B84 bytes firma del disco (opcional)
0x01BEPara entradas en la tabla de particiones primarias de 16 bytes (esquema estándar de la Tabla de Particiones del MBR)
0x01FE2 bytes firma del MBR (0xAA55)

Estructura del MBR:

512 Bytes
Primer sector físico del disco (pista cero)
446 Bytes Código máquina (gestor de arranque)
64 Bytes Tabla de particiones
2 Bytes Firma de unidad arrancable («55h AAh» en hexadecimal)
446 BytesCódigo máquina (gestor de arranque)64 BytesTabla de particiones2 BytesFirma de unidad arrancable («55h AAh» en hexadecimal)446 BytesCódigo máquina (gestor de arranque)64 BytesTabla de particiones2 BytesFirma de unidad arrancable («55h AAh» en hexadecimal)
446 BytesCódigo máquina (gestor de arranque)
64 BytesTabla de particiones
2 BytesFirma de unidad arrancable («55h AAh» en hexadecimal)
446 BytesCódigo máquina (gestor de arranque)
64 BytesTabla de particiones
2 BytesFirma de unidad arrancable («55h AAh» en hexadecimal)

Registro de partición de 16 bits de un MBR:

OffsetDescripción
0x00Estado: (0x80 = bootable, 0x00 = non-bootable, otros = mal formado)
0x01Cabezal, Sector y Cilindro del primer sector en la partición
0x04Tipo de partición
0x05Cabezal, Sector y Cilindro del último sector de la partición
0x08(4 bytes) Logical block address del primer sector de la partición
0x0C(4 bytes) Longitud de la partición, en sectores

Para ver el fichero ntldr en Windows Server 2003 tendremos que mostrar:

Proceso de arranque en Windows Server 2003 - Opciones de carpeta

Marcaremos la opción «Mostrar todos los archivos y carpetas ocultos»:

Proceso de arranque en Windows Server 2003 - Opciones de carpeta - Mostrar todos los archivos y carpetas ocultos

También desmarcaremos la opción «Ocultar archivos protegidos del sistema operativo (recomendado):

Proceso de arranque en Windows Server 2003 - Opciones de carpeta - Mostrar todos los archivos y carpetas ocultos

Nos mostrará un aviso como este:

Proceso de arranque en Windows Server 2003 - Opciones de carpeta - Aviso

Con el texto:

—————————
Advertencia
—————————
Ha seleccionado mostrar los archivos protegidos del sistema operativo (los archivos etiquetados como Sistema y Oculto) en Windows Explorer. Estos archivos son necesarios para iniciar y ejecutar Windows. Si los elimina o los modifica puede provocar que el equipo no funcione. ¿Confirma que desea mostrar estos archivos?
—————————
Sí No
—————————

El fichero ntldr (290KB de tamaño aproximado, con los atributos RHSA):

Proceso de arranque en Windows Server 2003 - Fichero NTLDR

La secuencia de arranque de Windows Server 2003

Esta fase comienza cuando se ha cargado el archivo NTLDR y se inicia su ejecución. Realiza las siguientes operaciones:

  • Cambia el modo de trabajo del procesador de 16 bits a 32 bits.
  • Inicia un sencillo sistema de archivos que permite a Windows Server 2003 arrancar desde el disco duro.
  • Prepara un menú que permite escoger entre las distintas opciones de arranque, si hay más de una, en caso contrario no aparecerá. Este menú está definido por las entradas que existen en el archivo BOOT.INI:
Proceso de arranque en Windows Server 2003 - Menú de arranque BOOT

En nuestro caso, puesto que tenemos en la misma unidad de disco dos sistemas operativos (Windows Server 2003 Enterprise y Linux Ubuntu Server), nos aparecerá el menú de arranque para que seleccionemos desde qué sistema operativo queremos arrancar.

Pulsa aquí para saber cómo ver y modificar las opciones de inicio de este menú de arranque en Windows Server 2003.

  • Después de la elección realizada por el usuario, si ha seleccionado Windows Server 2003, NTLDR carga el sistema operativo y se ejecuta NTDETECT.COM, que es un archivo oculto de sólo lectura que se encuentra en el directorio raíz del volumen del sistema, con un tamaño aproximado de 47KB, con los atributos de RHSA. Si se ha seleccionado otro sistema operativo (como Linux Ubuntu Server), NTLDR transferirá el control a los archivos de arranque del sistema operativo seleccionado:
Proceso de arranque en Windows Server 2003 - Fichero NTDETECT.COM
  • NTDETECT.COM examina el ordenador y determina la configuración del hardware, tipo de ordenador, tipo de bus, tipo de tarjeta de vídeo, tipo de teclado y ratón, puertos serie y paralelo que se encuentran en el equipo, y si hay unidades de discos flexibles:
Proceso de arranque en Windows Server 2003 - Ventana de inicio de Windows Server 2003
  • Con la información obtenida, NTDETECT.COM construye la clave HARDWARE de la categoría HKEY_LOCAL_MACHINE del Registro de Configuraciones y devuelve la información a NTLDR:
Proceso de arranque en Windows Server 2003 - Clave HARDWARE de la categoría HKEY_LOCAL_MACHINE del Registro de Configuraciones
  • NTLDR ejecuta el archivo NTOSKRNL.EXE que se encuentra en Windows/system32 y es el núcleo del sistema operativo, tiene un tamaño aproximado de 2.363KB, con el atributo de A. NTLDR le pasa la información de configuración de hardware a NTOSKRNL.EXE para iniciar la fase de carga:
Proceso de arranque en Windows Server 2003 - Fichero NTOSKRNL.EXE

La fase de carga de Windows Server 2003

NTOSKRNL.EXE realiza la fase de carga de Windows Server 2003 y comprende las siguientes operaciones:

1 Fase de carga del kernel

En esta fase se realizan los siguientes procesos:

1.1 Ejecución del archivo HAL.DLL (Hardware Abstraction Layer ó Nivel de Abstracción del Hardware), con un tamaño aproximado de 114KB, que se utiliza para administrar los servicios de hardware (en encuentra en Windows/system32):

Proceso de arranque en Windows Server 2003 - Fichero HAL.DLL (Nivel de Abstracción del Hardware)

1.2 Carga en memoria de los valores de configuración almacenados en la clave Services de CurrentControlSet de SYSTEM de la categoría HKEY_LOCAL_MACHINE del Registro de Configuraciones de Windows Server 2003, para determinar los dispositivos que se van a iniciar:

Proceso de arranque en Windows Server 2003 - Registro - Services

1.3 Iniciación de los dispositivos del punto anterior cuyo valor de la clave START sea cero (por ejemplo ACPI):

Proceso de arranque en Windows Server 2003 - Registro - Services - Valor con la clave START igual a cero

1.4 Se escriben distintos valores en las claves del Registro de Configuraciones correspondientes a los dispositivos que acaban de iniciarse.

2 Fase de inicialización del kernel

En esta fase se realizan los siguientes procesos:

2.1 Iniciación de los dispositivos del proceso 1.2 (arriba descrito) cuyo valor de clave START sea uno (por ejemplo Beep):

Proceso de arranque en Windows Server 2003 - Registro - Services - Valor con la clave START igual a uno

2.2 Se escriben distintos valores en las claves del Registro correspondientes a los dispositivos que acaba de iniciar.

3 Fase de carga de servicios

En esta fase se realizan los siguientes procesos:

3.1 Iniciación de los dispositivos del proceso 1.2 (arriba descrito) cuyo valor de la clave START sea dos (por ejemplo Browser):

Proceso de arranque en Windows Server 2003 - Registro - Services - Valor con la clave START igual a dos

3.2 Se escriben distintos valores en las claves del Registro correspondientes a los dispositivos que acaba de iniciar.

3.3 Se cargan los servicios utilizando el archivo SMSS.EXE (Windows NT Session Manager), con un tamaño de 53KB, ubicado en Windows/system32:

Proceso de arranque en Windows Server 2003 - SMSS.EXE

Siguiendo esta secuencia:

  • Ejecuta los programas indicados en la clave BootExecute que se encuentra en HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Control/Session Manager del Registro. El valor por defecto de esta clave es: autochek autochk *, que ejecuta el archivo AUTOCHK.EXE (Programa de comprobación automática) para realizar la misma función que el comando CHKDSK de MS-DOS, es decir, detectará y corregirá los errores. Así mismo, se pueden añadir otros programas en este valor, situando cada comando en una línea separada con el Editor de Registro:
Proceso de arranque en Windows Server 2003 - Registro - Session Manager
  • El archivo AUTOCHK.EXE, ubicado en Windows/system32, con un tamaño de 616KB:
Proceso de arranque en Windows Server 2003 - Archivo AUTOCHK.EXE
  • Crea el archivo PAGEFILE.SYS en el directorio raíz del volumen del sistema utilizando los valores definidos en:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management

El fichero PAGEFILE.SYS (su tamaño puede variar dependiendo de la configuración del sistema, suele ser de 2 x cantidad memoria RAM del equipo), tiene los atributos HSA (Oculto, Sistema, Archivo):

Proceso de arranque en Windows Server 2003 - Archivo PAGEFILE.SYS

La clave de registro Memory Management:

Proceso de arranque en Windows Server 2003 - Registro - Memory Management
  • Carga los subsistemas que están definidos en:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control Session Manager/SubSystems

Proceso de arranque en Windows Server 2003 - Registro - SubSystems

Durante la iniciación de los dispositivos en cualquiera de las tres fases anteriores, se pueden producir cuatro valores que se guardarán en la clave ErrorControl de cada dispositivo:

Proceso de arranque en Windows Server 2003 - Registro - Services - ErrorControl
  • 0x0: este código informa de un error que es ignorado por la secuencia de arranque y no presenta un mensaje de aviso en la pantalla.
  • 0x1: este código informa de un error que es ignorado por la secuencia de arranque y presenta un mensaje de aviso en la pantalla.
  • 0x2: este código informa de un error severo. Si el sistema no se está iniciando con la Última configuración buena conocida (Last Known Good Configuration), se usará dicha configuración. Si el sistema se está iniciando con la Última configuración buena conocida, el error se ignorará.
  • 0x3: ese código informa de un error crítico. La secuencia de arranque falla y se vuelve a comenzar utilizando la Última configuración buena conocida (Last Known Good Configuration). Si se estaba usando dicha configuración cuando se produjo el error, la secuencia de arranque falla y se presenta en pantalla un mensaje de error.

4 Fase de carga del subsistema Windows

En esta fase se realizan los siguientes procesos:

4.1 Se ejecuta el archivo WINLOGON.EXE, se encuentra en Windows/system32, ocupa unos 501KB (Aplicación de inicio de sesión de Windows NT) que, a su vez, ejecuta el archivo LSASS.EXE, se encuentra en Windows/system32, ocupa unos 16KB (Núcleo LSA, Autoridad de Seguridad Local) que es el que se encarga de mostrar la pantalla de inicio de sesión, la que pide el nombre del usuario, su contraseña y el dominio Windows al que quiere conectarse: El fichero WINLOGON.EXE:

Proceso de arranque en Windows Server 2003 - El fichero WINLOGON.EXE

El fichero LSASS.EXE:

Proceso de arranque en Windows Server 2003 - El fichero LSASS.EXE

La ventana de inicio de sesión de Windows Server 2003, pulsando Control + Alt + Sup nos pedirá usuario, contraseña y dominio (LSASS.EXE):

Proceso de arranque en Windows Server 2003 - Inicio de sesión

Petición de usuario, contraseña y dominio Windows:

Proceso de arranque en Windows Server 2003 - Petición de usuario, contraseña y dominio

4.2 Si el usuario es autorizado para acceder al servidor, se ejecutará el archivo USERINIT.EXE, con un tamaño de 26KB, se encuentra en Windows/system32 (Aplicación de inicio de sesión):

Proceso de arranque en Windows Server 2003 - Fichero USERINIT.EXE

para cargar el programa indicado como valor de la clave SHELL del usuario (se encuentra en HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/WinLogon que suele ser EXPLORER.EXE) que a su vez cargará el escritorio por defecto del usuario: La clave SHELL de Winlogon:

Proceso de arranque en Windows Server 2003 - La clave SHELL de Winlogon

El fichero EXPLORER.EXE (ubicado en la carpeta del sistema operativo, con un tamaño de 1.029KB):

Proceso de arranque en Windows Server 2003 - El fichero EXPLORER.EXE

El escritorio de Windows Server 2003 para el usuario que ha iniciado sesión, tras la carga del sistema operativo Windows Server 2003:

Proceso de arranque en Windows Server 2003 - El escritorio de Windows Server 2003 para el usuario que ha iniciado sesión

Personalización del proceso de arranque de Windows Server 2003

El proceso de arranque está controlado por el contenido del fichero BOOT.INI, ubicado en el raíz de la unidad del sistema operativo y por varias claves del registro de configuraciones de Windows.

Archivo BOOT.INI

BOOT.INI es un archivo de texto sin formato que está almacenado en el directorio raíz del volumen del sistema, se crea en el momento de la instalación y tiene los atributos de sólo lectura y oculto. Hay que proceder con precaución al editarlo porque podemos hacer que el equipo no arranque.

Para editar este fichero podremos hacerlo directamente abriéndolo con cualquier editor de texto plano (como el notepad):

roceso de arranque en Windows Server 2003 - El escritorio de Windows Server 2003 para el usuario que ha iniciado sesión

Nota: si no aparece tendremos que activar la opción de mostrar los ficheros ocultos, desde el Explorador de Windows, menú «Herramientas» – «Opciones de carpeta», pestaña «Ver», marcaremos la opción «Mostrar todos los archivos y carpetas ocultas»:

Proceso de arranque en Windows Server 2003 - El escritorio de Windows Server 2003 para el usuario que ha iniciado sesión

También deberemos desmarcar la opción «Ocultar archivos protegidos del sistema operativo (recomendado)».

Ejemplo de contenido de un fichero boot.ini de Windows Server 2003, con dos sistemas operativos en el mismo equipo (Windows y GNU Linux):

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)WINDOWS=»Windows Server 2003″ /noexecute=optout /fastdetect
multi(0)disk(0)rdisk(0)partition(2)EXT3=»Linux Ubuntu Server» /noexecute=optout /fastdetect

Proceso de arranque en Windows Server 2003 - El escritorio de Windows Server 2003 para el usuario que ha iniciado sesión

Las particiones están identificadas en el fichero boot.ini utilizando las convenciones ARC (Advanced RISC Computer) que definen el disco duro y sus particiones. Los parámetros de ARC significan lo siguiente:

  • scsi/multi(numero): identifica el adaptador de hardware, donde «numero» es el número de adaptador, cero corresponde al primero.
  • disk(numero): identifica la dirección del dispositivo en el bus SCSI.
  • rdisk(numero): identifica el número del disco cuando se usa el parámetro multi (para el primer disco, «numero» será cero).
  • partition(numero): identifica la partición en el disco especificado por el parámetro rdisk (el valor de «numero» será uno para la primera partición).

El archivo boot.ini se divide en dos secciones:

  • [boot loader]: establece el sistema operativo por defecto que se cargará si no se selecciona ningún otro. Esta sección admite dos parámetros opcionales:
    • timeout=segundos: establece el intervalo de tiempo, en segundos, que esperará para que el usuario haga una selección. En caso de que no lo haga, se cargará el sistema operativo indicado por defecto.
    • default=partición: establece la partición (en parámetros con convención ARC) y el directorio del sistema operativo por defecto que se cargará cuando transcurra el intervalo de tiempo indicado en timeout.
  • [operating system]: en esta sección se especifica el directorio desde el cual se cargará el sistema operativo. En cada línea podremos especificar un sistema operativo. Cada uno admite diferentes parámetros, algunos de ellos:
    • /basevideo: obliga al sistema a configurarse en un formato estándar de vídeo VGA con una resolución de 640×480.
    • /bootlog: habilita el registro de inicio para guardar información del arranque.
    • /crashdebug: premite enviar información de la depuración de errores del sistema operativo únicamente cuando ocurre un error fatal. Además, activa la Recuperación automática y reinicio.
    • /debug: habilita la presentación de la depuración de errores del sistema operativo.
    • /debugport: permite especificar el puerto serie que se utilizará para la depuración de errores del sistema operativo.
    • /fastdetect: realiza una detección rápida de los dispositivos.
    • /kernel=archivo: permite especificar un archivo de kernel alternativo.
    • /maxmen=megabytes: limita la cantidad de memoria RAM (en MB) que usará Windows.
    • /nodebug: suprime la presentación de la depuración de errores.
    • /noguiboot: suprime la pantalla gráfica donde se muestra el proceso del arranque mediante una serie de puntos azules sucesivos en la parte inferior de la pantalla.

Anexo

Hardware utilizado y sistema de virtualización

Para realizar este artículo hemos usado un equipo con un procesador Intel Core 2 Quad Q9400 a 2,66GHz, 4GB RAM. Este equipo tiene como sistema operativo Windows XP SP3 y para realizar el artículo hemos virtualizado, utilizando con VMware Server 2.0, Windows Server 2003.

Referencias

Fuente: libro «Aprenda Microsoft Windows Server 2003» de José Luis Raya y Laura Raya, de la editorial Ra-Ma.