Las fases de arranque (Vigilando el Inicio)
POST (Power-On Self Test)
En el momento en que conectamos el equipo la CPU (Unidad Central de Proceso)
comienza la carga de aquéllas instrucciones grabadas en la BIOS (Sistema Básico
de Entrada/Salida). La BIOS, cierto tipo de firmware, contiene código
dependiente del procesador que inicia el equipo sin importar el sistema que esté
instalado. El primer juego de instrucciones de inicio es la POST, responsable de
las funciones:
- Llevar a cabo la comprobación inicial de hard, como determinar la cantidad
de memoria presente.
- Verificar que los dispositivos que son necesarios para iniciar el sistema
operativo, como el disco duro, están presentes.
- Recuperar los ajustes de configuración del sistema desde la CMOS, que se
encuentra en la placa madre.
- La CMOS es una memoria complementaria no volatil (Complementary Metal
Oxide Semiconductor). Su contenido permanece aún despues del apagado del
equipo. Una configuración de hardware almacenada es por ejemplo el orden
de inicio de dispositivos.
Después de completar la POST, los adaptadores agregados que tienen su propio
firmware (controladoras de disco o de vídeo) proceden a sus propios test.
Si el inicio falla antes o durante la POST, el equipo sufre un fallo de hard.
Normalmente la BIOS muestra en pantalla un mensaje de error que indica la
naturaleza del fallo. Suele además efectuar cierto número de 'beep' dependiendo
de que hard provoca el error, una lectura del manual de la placa madre nos dará
dicha información. Y toda la que podremos necesitar si hay que sustituir algún
elemento, si es posible.
Fase Inicial de arranque
Después de la POST, los valores almacenados en la CMOS determinan el
dispositivo a usar, o el orden de estos, por el equipo para iniciar el sistema
operativo.
Ello significa que si el orden especifica comenzar por la unidad de disquete
y después por el disco duro (normalmente el orden se muestra como A,C), así
que:
- Sí la unidad de disquete contiene un disquete. La BIOS busca en la unidad
si tiene un disquete de inicio, si lo hay cargará en memoria el sector 0 del
disquete -sector de arranque-. Si no es un disquete de inicio, obtendremos un
bonito mensaje indicando que no es de sistema o que tiene un error,
reemplázalo y pulsa una tecla cuando estés preparado. Este mensaje no
desaparecerá hasta que cambiemos el disquete por uno correcto o no pongamos
ninguno y reiniciemos el equipo.
- No hay disquete en la unidad de disquete. Se leerá el MBR, (primer sector
de datos del inicio del disco duro). El MBR contiene las instrucciones (código
de inicio) y una tabla (tabla de particiones) que identifican las particiones
primarias y las extendidas. La BIOS lee el MBR lo carga en memoria y
transfiere el control al propio código del MBR.
El equipo busca entonces la tabla de particiones y en élla la que se
encuentra activa. El primer sector de dicha partición contiene el código de
inicio que permitira al equipo leer el contenido del sistema de archivos
utilizado y localizar e iniciar el archivo cargador del sistema operativo, el
Ntldr.
Si no existe partición activa o el sector de inicio, o éste está corrupto,
puede aparecernos cualquiera de los siguientes mensajes:
- Tabla de partición no válida
- Error en la carga del sistema operativo
- No hay sistema operativo
- Inicio: No se encuentra Ntldr
- No se encuentra Ntldr
Si por el contrario la partición es correcta, el código del sector de
inicio carga el Ntldr y la BIOS le transfiere el control.
- El orden de inicio establece otro dispositivo de inicio. Ya sabemos
que hoy podemos establecer el inicio desde otros dispositivos, como CD-ROMs,
Adaptadores de red, USB u otros dispositivos de almacenamiento.
En este caso seguirá el orden establecido en busca de los archivos/medios
necesarios para iniciar el sistema. (Un cd no arrancable no servirá para
iniciarlo, y pasará el orden al siguiente dispositivo)
Si el inicio falla durante la fase inicial las posibilidades son un error de
BIOS, el subsistema de Disco o el sistema de Archivos. Si hemos cambiado la
configuración del disco hay que comprobar los cables y los jumpers. En todo caso
si definitivamente sospechamos del sistema de archivos habrá que intentar
reparar el MBR y el sector de inicio.(Ya lo veremos más adelante)
Fase de carga de inicio
El Ntldr carga los archivos de inicio desde la partición de arranque y,:
- Establecer el procesador de 32 bits para ejecutarse en Flat Memory Mode.
Un equipo de 32 bits se inicia primero en modo real. En este modo el
procesador deshabilita ciertas características para permitir compatibilidad
con software diseñado para ejecutarse en procesadores de 8/16 bits. Ntldr
conmuta el proccesador en modo protegido 32 bits,
lo que permite un acceso a mayor cantidad de memoria y habilita el inicio de
Windows Server 2003.
- Lee el archivo boot.ini,
Ntldr es capaz de leer nativamente los sistemas de archivo compatibles y usar
esta capacidad para analizar el archivo boot.ini sin cargar completamente el
sistema de archivos. En sistemas de inicio único Ntldr inicia la carga de hard
con Ntdetect.com, si el inicio es múltiple (o está instalada la Consola de
recuperación) se abre un menú con las opciones de inicio. Si seleccionamos uno
de los sistemas: Windows Server 2003, XP, 2000 o NT 4.0 Ntldr procederá con la
fase de detección de hardware, en otro caso, pasará el control al sector de
arranque.
- Detectar el hardware y los perfiles de hardware. En equipos de 32 bits,
Ntldr inicia Ntdetect.com que lleva a cabo una detección de dispositivos
básica. Carga el Kernel
y el HAL
para el sistema elegido en el paso 2. El kernel necesita información del
registro y este de controladores críticos, así que Ntldr carga la clave
HKLM\SYSTEM y controladores de inicio en la memoria. Pasa la información de
boot.ini, los datos del registro para Ntoskrnl.exe. Ntdetect.com detecta la
información de perfil de hardware y comprueba la información en la tabla ACPI.
ACPI permite a Windows Server 2003 la detección de las características de
administración de energia de dispositivos y las necesidades de recursos de
dispositivo.
Si el inicio falla durante la fase de carga de inicio, puede estar fallando
uno de los archivos de carga de inicio, el sistema de archivos o la
configuración de disco. Con el comando Bootcfg desde la Consola
de recuperación podemos comprobar y reparar el boot.ini y reemplazar Ntldr y
Ntdetect.com desde sus originales en el cd de W2k3.
Fase de detección y configuración de hardware
Después de procesar el archivo boot.ini, Ntldr arranca Ntdetect.com. En
sistemas de 32 bists recogerá información sobre el hard instalado mediante
llamadas a las rutinas de firmware del sistema. La información será devuelta al
Ntldr, que la reune y la organiza en estructuras internas de datos, seguidamente
arranca Ntoskrnl.exe y le proporciona la información obtenida por
Ntdetect.com.
- Información del firmware del sistema, por ejemplo la fecha y la hora.
- Tipos de adaptadores y Buses.
- Adaptadores de vídeo
- Teclado
- Puertos de comunicación
- Discos
- Disquetes
- Dispositivos de entrada (ratón, etc..)
- Puertos paralelos.
- Dispositivos ISA
Ntdetect.com depende de la funcionalidad ACPI para llevar a cabo una
enumeración de dispositivos si está disponible. Windows Server 2003 asigna los
recursos de hardware para usarse en sistemas que cumplen con ACPI. Ntdetect.com
lleva a cabo funciones más activas en la enumeración de dispositivos en equipos
que no cumplen con ACPI.
Los errores en esta fase deben solucionarse mediante el uso de la Consola de
recuperación y que suele ser reemplazar los archivos de inicio. Si se recibe un
Stop error, hay que usar la información que el mismo ofrece para encontrar el
componente que está provocando el fallo. La consola puede servirnos también para
deshabilitar dicho elemento o archivos problemáticos.
Fase de carga del núcleo (kernel)
Ntldr es responsable de la carga del Kernel de Windows(Ntoskrnl.exe) y del
HAL en la memoria. El archivo Hal.dll que el equipo usa puede variar dependiendo
del tipo de hardware que usa el mismo. Durante la instalación. el instalador de
Windows Server 2003 copia uno de los diversos archivos(*) HAL y lo renombra a
Hal.dll.
(*)
Descripción en Administrador de dispositivos
(devmgmt.msc)(**) |
Archivo HAL que se copia |
ACPI APIC Multiprocessor PC |
Halmacpi.dll |
ACPI APIC Uniprocessor PC |
Halaacpi.dll |
Advanced Configuration and Power Interface (ACPI) PC |
Halacpi.dll |
MPS Multiprocessor PC |
Halmps.dll |
MPS Uniprocessor PC |
Halapic.dll |
Standard PC |
Hal.dll |
(**)

Juntos, el kernel y el HAL, inicializan un grupo de componentes software que
se denominan Windows executive. Estos procesan la información
almacenada en la clave del registro HKLM\SYSTEM\CurrentControlSet e inician
servicios y controladores.
Control sets
Ntldr lee la información de control set de la clave del registro comentada y
puede determinar que controladores de dispositivo necesitan cargarse en el
inicio. Puede que existan varios ControlSet, todo depende de la frecuencia
con que se cambien los ajustes en la configuración del sistema.
Las subclaves de HKEY_LOCAL_MACHINE\SYSTEM usadas durante el inicio:
- \CurrentControlSet, un puntero a la subclave ControlSetxxx (donde xxx es
un número) designada en el valor \Select\Current.
- \Select, que contiene las siguientes entradas:
- Default, que apunta al número de Control Set (por ejemplo
001=ControlSet001) que el sistema ha especificado para su uso en el
siguiente inicio. Si no hay error o recuperación manual del inicio de la
última configuración buena conocida, este valor es el definido para Default,
Current y LastKnownGood(asumiendo que el usuario es capaz de iniciar sesión
con éxito).
- Current, que apunta al último control set que se utilizó para iniciar el
sistema.
- Failed, que apunta al control set que falló en el inicio. Se
actualiza cuando se usa la opción LastKnownGood para iniciar el sistema.
- LastKnownGood, que apunta al control set que se usó durante la última
sesión de usuario. Cuando un usuario inicia sesión, éste valor se actualiza
con la información de configuración de la sesión previa de
usuario.
Ntldr usa el control set identificado en el valor de \Select\Default a menos
que la elección sea La última configuración buena
conocida de las opciones avanzadas del menú de arranque.
El kernel usa la información obtenida por Ntdetect.com para ayudar a la
creación de la clave del registro HKEY_LOCAL_MACHINE\HARDWARE, que contiene los
datos recogidos sobre el hardware en el inicio del sistema.
Windows Server 2003 es compatible con un extenso juego de dispositivos, con
controladores adicionales proporcionados por sus fabricantes y que no se
entregan en el cd de instalación. Los controladores son componentes en
modo-kernel necesarios para dispositivos que funcionan dentro de un sistema
operativo. Los Servicios son componentes que son compatibles con funciones del
sistema y de las aplicaciones y actuar como servidores de red. Los servicios
pueden ejecutarse en un contexto diferente que las aplicaciones de usuario y
normalmente no ofrecen demasiadas opciones configurables de usuario. Los
controladores generalmente se comunican con los dispositivos mientras los
servicios lo hacen a través de los controladores. Los archivos de controladores
y servicios se guardan normalmente en systemroot\System32 y
systemroot\System32\Drivers y usan las extensiones .exe, .sys, o
.dll.
Los controladores son servicios también. Por eso, durante el inicio del
kernel, Ntldr y Ntoskrnl.exe usan la información de las subclaves del registro
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Servicename para determinar
los controladores y servicios a cargar. En las subclaves Servicename, la entrada
Start especifica cuando iniciarlo. Ntldr carga todos aquéllos
en los que el valor de Start es 0, después de transferir la ejecución al kernel,
éste cargará los que tengan un valor en Start igual a 1.
Los valores de Start pueden ser:
Valor |
Tipo de inicio |
Descripción |
0 |
Boot |
Especifica un controlador que se carga(no iniciado)en el
inicio. Si no se produce ningún error, el controlador se iniciará durante
la inicialización del kernel antes de que los no-Boot comiencen su
carga. |
1 |
System |
Especifiva un controlador que se carga e inicia durante el
inicio del kernel después que aquéllos con un 0 han sido iniciados. |
2 |
Auto load |
Especifica un controlador o servicio que se inicia en el
inicio del sistema por Smss.exe o Services.exe. |
3 |
Load on demand |
Especifica un controlador o servicio que sólo se inicia bajo
petición. Se inician manualmente mediante llamadas a las API SCM Win32
como el snap-in de Services. |
4 |
Disabled |
Especifica un controlador o servicio
deshabilitado. |
Algunos controladores o servicios requieren que algunas condiciones,
denominadas dependencias, se den. Estas dependencias se listan bajo las entradas
DependOnGroup y DependOnService para cada servicio o controlador.
Después del procesamiento de todas las entradas que tienen el tipo de Boot e
inicio de datos, el kernel inicia el Session Manager, que continua ejecutándose
hasta el apagado del sistema. Smss.exe lleva a cabo el inicio de funciones
importantes como:
- Creación de variables de entorno del sistema.
- Inicio de la parte del modo kernel del subsistema Win32 (implementado
mediante systemroot\system32\Win32k.sys), que provoca que Windows Server pase
de modo texto a modo gráfico. Las aplicaciones de usuario se ejecutan en el
subsistema de Windows. Este entorno permite a las aplicaciones el acceso a las
funciones del sistema operativo.
- Inicio de la parte del modo usuario del subsistema Win32 (implementado
mediante systemroot\system32\Csrss.exe). Las aplicaciones que usan el
subsistema de Windows son procesos en modo usuario; no tienen acceso directo
al hardware o a los controladores de dispositivo. Los procesos en modo usuario
se ejecutan con una prioridad más baja que los procesos en modo kernel.Cuando
el sistema necesita más memoria puede paginar la usada por los procesos en
modo usuario en el disco.
- Inicio del Administrador de inicio de sesión
(systemroot\system32\Winlogon.exe).
- Creación de archivos de paginación de memoria virtual adicional.
- Llevar a cabo el renombrado de operaciones retrasadas para archivos
especificados en la entrada del registro
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\PendingFileRenameOperations.
(Por ejemplo: Se ha instalado un nuevo controlador o aplicación donde Windows
debe reemplazar algún archivo en uso)
Session Manager busca la información de servicio que se encuentra en el
registro, subclaves:
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager
contiene una lista de comandos a ejecutar antes de la carga de los servicios.
La herramienta Autochk.exe se especifica por el valor en la entrada del
registro BootExecute y de los ajustes de memoria virtual (archivos de
paginación) guardados en la subclave Memory Management. Esta herramienta es
una versión de Chkdsk y se ejecuta en el inicio si el sistema operativo
detecta un problema de archivos del sistema que requiere reparación antes del
completar el proceso de inicio.
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Subsystems
donde se guarda una lista de subsistemas disponibles.
Si el inicio falla durante la la fase de carga del kernel después de la
instalación de otro sistema operativo la causa suele ser una incompatibilidad
del cargador de inicio (boot loader). Estos cargadores instalados por versiones
anteriores de Windows no se pueden utilizar para el inicio de Windows Server
2003. Podemos recuperar los archivos de inicio mediante la Consola de
Recuperación.
De otra manera, usamos el registro de inicio para aislar el componente que
falla y utilizar la Consola para deshabilitarlo o reemplazar archivos
problemáticos. Si hay un Stop error, habrá info sobre el componente que está
fallando.
Fase de inicio de sesión
El subsistema de Windows inicia Winlogon.exe, un servicio del sistema que
habilita el inicio y el cierre de sesión. Winlogon.exe hace lo siguiente:
- Inicia Services.exe (Service Control Manager o SCM). SCM inicia los
servicios que la entrada del registro start define como
auto-carga en la subkey
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\servicename.
- Inicia el proceso Lsass.exe.
- Analiza la combinación de teclas CTRL+ALT+DEL en el prompt de inicio de
sesión.
La GINA(Graphical Identification and Authentication) recoge el nombre de
usuario y la contraseña, y analiza la información con seguridad para el LSA. Si
el usuario ha introducido credenciales válidas el acceso es concedido mediante
Kerberosv5 o NTLM.
Winlogon inicia los componentes de seguridad y autenticación mientras el
P&P inicia los controladores y servicios auto-carga. Después de que el
usuario haya iniciado sesión, el control set guardado en la entrada
HKEY_LOCAL_MACHINE\SYSTEM\Select\LastKnownGood se actualiza con los valores de
la subclave CurrentControlSet. De forma predeterminada Winlogon lanza
Userinit.exe, éste, dependiendo de la configuración, realizará otros
eventos:
- Los ajustes de Directivas (GP) se aplican, tanto a nivel de usuario como a
nivel de equipo.
- Ejecución de los programas de inicio: Si las directivas no indican lo
contrario, Windows Server 2003 inicia scripts de inicio de sesión, programas
de inicio y aquéllos servicios que se indican en las subclaves del registro y
de las carpetas del sistema siguientes:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows\Run
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Windows\Run
- HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows\RunOnce
- systemdrive\Documents and Settings\All Users\Start Menu\Programs\Startup
- systemdrive\Documents and Settings\All
Users\NombreUsuario\Programs\Startup
- windir\Profiles\All Users\Start Menu\Programs\Startup
- windir\Profiles\NombreUsuario\Start
Menu\Programs\Startup
La carpeta windir\Profiles existe sólo en sistemas que se han actualizado
desde Windows NT 4.0 Server.
Si el arranque falla durante la fase de inicio de sesión, tenemos un problema
con algún servicio o aplicación configurada para su inicio automático.
Detección de dispositivos Plug and Play
La detección P&P se ejecuta de forma asíncrona con el proceso de inicio
de sesión y confia con las características de firm del sistema, hardware,
controladores de dispositivos y sistema operativo para la detección y
enumeración de nuevos dispositivos. Windows Server 2003 optimiza la
compatibilidad P&P para los equipos compatibles ACPI y habilita
características mejoradas, como la compartición de recursos de hardware.
Cuando los dispositivos P&P están correctamente coordinados, Windows
Server 2003 puede detectar nuevos dispositivos, destinar recursos del sistema y
instalar o solicitar controladores con mínima intervención del usuario.
En esta fase, un error es posible si se ha añadido nuevo hardware, hay que
deshabilitarlo y estudiar las instrucciones de instalación y compatibilidad con
Windows Server 2003.
*El inicio en equipos basados en Itanium es diferente.