Arreglando un error de inicio antes de que aparezca el logo de Windows -primera parte-

Solucionar uno de estos errores es más exigente que solucionarlo cuando Windows ya está en ejecución, ya que no podemos acceder al juego completo de herramientas incluídas en Windows. Sin embargo, Windows Server 2003 proporciona varias herramientas que podemos usar en la identificación de la causa del problema e intentar resolverlo sino podemos iniciar el sistema. Si disponemos de un disco ASR lo primero será utilizarlo.


Si por el contrario no disponemos de un disco ASR o incluso con él no logramos solucionar el problema:


diagramabeforelogo


 


Reparar Boot.ini


El archivo boot.ini se crea durante la instalación de Windows Server 2003 en la partición raíz y contiene las entradas que Ntldr usa para mostrar en pantalla el menú de sistemas operativos(Sólo los mostrará si hay dos o más sistemas instalados o si pulsamos la tecla F8). En caso de no aparecer el menú cuando debería o si no se localiza el sistema operativo después de elegirlo desde el menú, puede ser necesario reconstruir el archivo boot.ini. Este archivo incluye la ruta de la aprtición de inicio, el texto a mostrar y algunos parámetros opcionales. Admite múltiples entradas, una por cada instalación de sistemas operativos Windows en particiones separadas.


boot-ini


 


En el archivo boot.ini hallamos dos secciones:


[boot loader] : Configuración que se aplica a todas las instalaciones de Windows en el equipo


[operating systems] : Configuración aplicable a cada instalación de Windows en el equipo.


La entrada default en la sección [boot loader] apunta al sistema operativo predeterminado para iniciarse.


Las diferentes instalaciones de Windows aparecen en la sección [operating systems].


 


Como hemos dicho, si hay dos o más sistemas instalados y con sus respectivas entradas en el boot.ini, o en el caso de haber instalado la consola de recuperación, aparecerá un menú de inicio donde podremos elegir el sistema con el que queremos iniciar o, en su caso, la consola de recuperación.


menu-boot


 


El archivo boot.ini usa la convención de nombres ARC (Advanced RISC Computing) para especificar la ruta de la instalación de Windows Server 2003. Si el contenido del archivo se cambia incorrectamenten o se corrompe el archivo, es posible que no pueda iniciarse Windows Server 2003. Así que si hemos de corregir alguna entrada debemos entender las rutas ARC.


El formato es uno de los siguientes:


multi(w)disk(x)rdisk(y)partition(z)systemroot=”Descripción”


scsi(w)disk(x)rdisk(y)partition(z)systemroot=”Descripción”


signature(v)disk(x)rdisk(y)partition(z)systemroot=”Descripción”


Windows Server 2003 puede utilizar cualquiera de los formatos precedente para ubicar el directorio raíz del sistema.


 


Sintaxis Multi(): Estas sintaxis obliga a Windows Server 2003 a depender de las llamadas de la BIOS para la carga de archivos del sistema. Para llevarlo a cabo, Ntldr usa la interrupción hardware 13 (conocida como INT-13) de las instrucciones firmware para localizar Ntoskrnl.exe y el resto de archivos necesarios para iniciar Windows Server 2003. Esta sintaxis se usa por todas las controladoras que proporcionan compatibilidad con la INT-13 para los discos ATA y SCSI.


multi(w)disk(x)rdisk(y)partition(z)systemroot=”Descripción”


w Especifica el número de la controladora del disco. El primer número válido es 0.


x Este valor es siempre 0 en la sintaxis multi().


y Especifica el disco duro físico conectado a la controladora w. En controladoras ATA el número suele estar entre 0 y 3, en las SCSI entre 0 y 7, o 0 y 15, dependiendo del tipo de adaptador. El primer número válido es 0.


z Especifica el número de la partición del disco duro especificado en y y que está conectado a la controladora w. A todas las particiones se les asigna un número y el primer número válido es 1.


Sintaxis signature(): Esta sintaxis comparte similitudes con la sintaxis scsi() y fue implementada para ofrecer compatibilidad en escenarios plug and play en los que instalamos controladoras adicionales en el equipo. Es Windows Server 2003 durante la instalación el que decide si usa esta sintaxis. Es válida para equipos con cualesquiera discos ATA o SCSI.


Esta sintaxis obliga a Ntldr a localizar el disco con la firma que coincida con el primer valor entre parentesis, a pesar del número de controladora asociada con el disco. La firma de un disco es un número hexadecimal que se extrae desde el MBR y que se escribe en el disco durante la parte en modo texto de la instalación de Windows Server 2003 o durante instalaciones anteriores (incluso de Windows 2000 Server). Es un número hexadecimal que únicamente identifica al disco.


Si observamos esta sintaxis en nuestro boot.ini significa que Ntbootdd.sys es necesario para acceder a la partición de arranque o una de las dos siguientes condiciones se dan:



  • Hemos instalado el sistema en un disco mayor de 7,8GB, el número del último cilindro es mayor de 1024 para la partición y el firmware o la BIOS de la controladora de arranque  no puede acceder mediante la INT-13.
  • La BIOS de la controladora del disco no es compatible con INT-13 o tenemos deshabilitada esta opción en la utilidad de configuración del adaptador. Si la instalación de Windows no es capaz de usar las INT-13 entonces se necesita el archivo Ntbootd.sys para poder acceder a la partición de arranque.

Siempre que sea posible hemos de configurar la controladora para que use las INT-13.


signature(v)disk(x)rdisk(y)partition(z)systemroot=”Descripción”


v Número hexadecimal de 32 bits, extraído del MBR, que identifica el disco.


x Especifica un disco duro físico con firma v, conectado a cualquier controladora que utilice Ntbootdd.sys. Para controladoras SCSI el número está entre 0 y 7 o 0 y 15, dependiendo del tipo de adaptador. El primer número válido es 0.


y Siempre es 0.


z Número de la partición del disco duro físico con firma coincidente con v. El primer número válido es 1.


 


Archivo Ntbootdd.sys: Es una copia de un controlador del dispositivo de almacenamiento que se encuentra en la raíz de la partición de inicio. Se usa cuando se especifica la sintaxis scsi() en el boot.ini o se usa la sintaxis signature() para controladoras de disco con firmware deshabilitado. Puede usarse para discos ATA, siempre dependiendo del tipo de controladora usada.


 



Parámetros y opciones en el Boot.ini


Dentro de la sección: [boot loader]


Timeout=segundos


Especifica el número de segundos durante los que se mostrará el menú de inicio antes de que el sistema predeterminado en la entrada default= se cargue.




    • Si el valor es 0, se arraca inmediatamente el sistema predeterminado.
    • Si el valor es -1, el menú se mostrará indefinidamente sin iniciarse ningún sistema hasta que efectuemos nuestra elección de arranque.

default=ruta ARC al sistema operativo predeterminado para arrancar.


redirect={com1|com2|usar configuración de la BIOS}


En los parámetos comx, x es el número de puerto serie a usar por los servicios de administración de emergencia y que normalmente son 1 o 2.


El valor del parámetro usar config de la BIOS obliga a Windows Server 2003 a detectar y usar la configuración de la tabla de SPCR (Serial Port Console Redirection). Los servicios de administración de emergencia no son habilitados si la tabla SPCR no se detecta. Este valor es la configuración predeterminada para equipos ACPI.


 


Dentro de la sección: [operating systems] pueden ser agregados a las rutas ARC contenidas en la misma.


/3GB


Especifica (equipos 32 bits) que el sistema operativo destina 3GB de espacio en direcciones virtuales para aplicaciones y 1GB para el núcleo (kernel) y componentes ejecutivos.Las aplicaciones deben estar diseñadas para aprovechar la ventaja de este espacio de memoria adicional.


/basevideo


El sistema operativo usará el modo estándar VGA (640x480x256) para el controlador de vídeo instalado. Es útil para arrancar cuando se ha instalado un nuevo controlador de vídeo y no trabaja correctamente, así podemos eliminarlo o usar la característica roll back(volver atrás) para recuperar el controlador anterior.


/baudrate=


Especifica el ratio de baudios a usar en la depuración del kernel sobre un puerto serie. De forma predeterminada son 19200 kilobits/s, pueden usarse 9600, 1920, 38400, 57600 y 115200Kbps. Incluir este parámetro implica la presencia del parámetro /debug.


/bootlog


Habilita el registro de inicio hacia el archivo systemrootNtbtloog.txt.


/crashdebug


Durante el inicio de Windows Server 2003 este parámetro cargará el depurador del kernel, que permanecerá inactivo hasta que ocura un mensaje de STOP error. Útil si sufrimos problemas de núcleo aleatorios.


/debug


Carga el depurador del kernel de Windows al iniciar el sistema.


/debug-port={com1|om2|1394}


Especifica el puerto para la depuración del kernel. Impica la presencia del parámetro /debug y los puertos suelen ser com1, com2 o 1394.


/emsbaudrate=valor


Establece el ratio de baudios para los Servicios de Administración de Emergencia. De foma predeterminada son 9600Kbps, aunque pueden usarse los valores 19200, 57600 y 115200Kbps dependiendo de las capacidades del puerto serie. Debe usarse junto a /redirect= dentro de la sección [boot loader], en otro caso será ignorado.


/fastdetect


Detiene la detección del raton en el bus serie en Ntdetect.com. Se usa cuando tenemos otros dispositivos, que no sean ratón, conectados a los puertos series durante el arranque. Si se establece el parámetro sin especificar un puerto serie, la detección se deshabilita en todos los puertos.


/nolowmem


Ntkrnlpa.exe carga todas las aplicaciones y controladores de dispositivo por encima de los primeros 4GB. Es útil para comprobar la compatibilidad de controladores de dispositivo en equipos con gran cantidad de memoria. Se usa pues en equipos con más de 4GB de RAM y con el parámetro /pae activado.


/pae


Habilita a los equipos de 32 bits a direccionar más de 4GB de memoria (hasta 64GB). Extensiones de direcciones físicas (Physical address extensions PAEs) permiten a una aplicación el acceso a más memoia. Este parámetro es válido solo en equipos de 32 bits que ejecutan Windows Server Enterprise o Datacenter.


Un parámetro relacionado /nopae forzaría a Ntldr a cargar la versión de extensiones de direcciones no-físicas del Windows kernel, siempre que el equipo se detecte compatible 32 bits PAE y tenga más de 4GB de memoria física.


/pcilock


Para los equipos de 32 bits, detiene la detección y asignación dinámica de hardware, solicitudes de interrupción etc… para los dispositivos PCI, dejando a a BIOS que configure los mismos.


/redirect


Obliga a Windows Server 2003 a habilitar EMS. Similar al mismo parámetro de la sección [boot loader], pero habilita EMS después de la elección del sistema operativo.


/safeboot:parámetro


Obliga a arrancar en modo seguro mediante el parámetro especificado. Los parámetros disponibles son:




    • minimal
    • network
    • safeboot:minimal(alternate shell)

Podemos combinar diversos parámetros dentro de boot.ini con este. Por ejemplo, los parámetros que se aplican cuando seleccionamos uno de los modos seguros desde el menú de inicio:




    • Modo seguro  : /safeboot:minimal /sos /bootlog /noguiboot
    • Modo seguro con red : /safeboot:network /sos /bootlog /noguiboot
    • Modo seguro Sólo símbolo del sistema: /safboot:minimal(alternateshell) /sos /bootlog /noguiboot

safeboot


 


sos


Muestra en pantalla los nombres de cada controlador de dispositivo y su carga. Se usa cuando el inicio falla(cargando los cntroladores) para ver que controlador es el que está fallando.


 


El archivo boot.ini tiene asignado de forma predeterminada el atributo de oculto. Para su edición podemos usar las siguientes herramientas:



  • Bootcfg.exe
  • Msconfig.exe
  • Propiedades del sistema
  • Un editor de texto (el bloc e notas por ejemplo).

Por supuesto es recomendable tener una copia del archivo antes de su manipulación, no sea caso que luego el remedio sea peor que la enfermedad.


Ver o editar boot.ini con Bootcfg.exe



  1. Desde el prompt de comandos escribimos bootcfg /query para ver el contenido de boot.ini.
  2. Para editarlo usaremos bootcfg /Addsw o bootcfg /Rmsw para cambiar las opciones.

Una lista completa de parámetros se muestra mediante bootcfg /?


bootcfg_query bootcfg_help


Usando msconfig



  1. Escribimos msconfig en el cuadro Ejecutar de inicio y pulsamos Aceptar.
  2. Pulsamos en la pestaña boot.ini de la herramienta de configuración del sistema.
  3. Para cambiar el sistema predeterminado: seleccionamos desde las opciones listadas en Default operating system

msconfig msconfig_boot-ini


 


Desde las propiedades de Sistema



  1. Abrimos Panel de Control y elegimos Sistema

  2. Pestaña Avanzadas, sección Inicio y recuperación, botón Configuración

  3. El sistema que arranca predeterminadamente podemos cambiarlo desde la lista Default operating System. El cambio se actualiza en el boot.ini.

  4. Pulsamos en el botón Edit si deseamos verlo.

system-properties


 


Con bloc de notas o un editor de texto



  1. Abrimos el editor de texto

  2. Desde el menú de archivo pulsamos en Abrir y le indicamos %systemdrive%boot.ini (normalmente C). La variable de entorno systemdrive representa la letra de unidad asignada a la partición del sistema.

Nota: El archivo boot.ini posee los atributos de oculto, sistema y sólo-lectura de forma predeterminada. Antes de utilizar un editor de texto y realiza cambios que puedan guardarse, debemos cambiar esos atributos; sea desde el prompt attrib rutaboot.ini -h -s -r o accediendo con la interfaz a las propiedades del archivo, habilitando la visión de archivos ocultos y de sistema antes.


Si lo que queremos es reemplazar el archivo boot .ini por el motivo que sea, podemos usar la consola de recuperación y el comando bootcfg.



  1. Iniciamos y elegimos la consola de recuperación

  2. Escribimos bootcfg /rebuild

recovery007 bootcfg_rebuild modificado


El sistema escaneará los discos del equipo y comprobará las instalaciones presentes de Windows, solicitando para cada una de ellas si se añade a la lista, el identificador de carga y las opciones de carga.


 


También podemos crearlo de forma manual. El comando map nos ayudará mostrándonos datos necesarios para que podamos hacerlo así.


map

Recuerda ‘Prevenir es curar’

Hay diversas acciones que podemos llevar a cabo para estar preparados ante cualquier fallo de inicio antes de que éste ocurra. Lo más importante, quizás, sea guardar la información de configuración de disco mediante ASR (Automated System Recovery) en un disquette, ya que podrá ayudarnos rápidamente en recuperar el sistema ante un error de disco. Deberíamos también familiarizarnos con la Consola de recuperación: instalarla y además tener un CD de Windows Server 2003 a mano para utilizarla en caso de que no pueda accederse al disco.

Si hemos sido cautelosos y disponemos de un juego de copia de seguridad creado con ASR será lo primero a usar, antes de cargar la consola de recuperación que se usará cuando no tengamos la copia o no logremos resolver el problema con élla.

Las herramienta de copia de seguridad (BACKUP) contiene la característica ASR que nos permite una recuperación en las ocasiones en que no podemos fácilmente reparar una partición de sistema dañada. ASR copia archivos de sistema en los medios de copia de seguridad y la información de configuración de disco en un disquete.

Pertrechados del juego de copia de seguridad reciente podemos la recuperación ASR iniciando el sistema desde un CD de Windows Server 2003. Durante el proceso de instalación y en modo texto se nos ofrece la posibilidad de pulsar la tecla F2 para ejecutar ASR automatizado. Desde aquí sólo hemos de seguir las instrucciones que nos va ofreciendo la pantalla.

 

Consola de recuperación

En los casos de no poder arrancar el equipo en los modos seguro o última configuración buena conocida podemos usar la Consola de Recuperación. Necesitamos la contraseña de Administrador para utilizar este interfaz en modo de línea de comandos para el inicio de herramientas de recuperación, iniciar o detener servicios, acceder a archivos en el disco duro, o realizar tareas como reemplazar archivos corruptos del sistema. Como se ha dicho, la consola podemos iniciarla desde el arranque del sistema (si la hemos instalado) o desde el cd de instalación en el caso de no haberla instalado o que aún habiéndolo hecho no hay acceso al disco duro.

La corrupción de archivos de sistema o de áreas críticas en el disco duro es lo que nos impide poder usar las opciones de inicio de modo seguro o última configuración buena conocida.

Aunque siempre podemos iniciar la consola desde el cd de instalación, también podemos añadirla como opción al menú de arranque (es una opción sólo disponible en equipos de 32 bits).

Para instalarla:

1. Introducimos el cd de instalación, cancelamos el proceso de instalación.

recovery001

2. Abrimos una CMD, Inicio->Ejecutar escribimos cmd pulsamos ENTER.

recovery002

3. En el prompt escribimos unidad:i386winnt32.exe /cmdcons (unidad es la letra del lector de CD-ROM o de la unidad de red donde se encuentren los archivos)

recovery003

4. Cuando aparezca el cuadro de diálogo de instalación pulsamos Sí.

recovery004

5. Después de la instalación pulsamos en Aceptar.

recovery006

 

En el menú de inicio dispondremos ya de la posibilidad (opción) de arrancar la Consola de Recuperación

recovery007

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,:



  1. 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.
  2. 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.
  3. 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 HKLMSYSTEM 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

(**)


devmgmt


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 HKLMSYSTEMCurrentControlSet 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_MACHINESYSTEM usadas durante el inicio:



  • CurrentControlSet, un puntero a la subclave ControlSetxxx (donde xxx es un número) designada en el valor SelectCurrent.
  • 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 SelectDefault 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_MACHINEHARDWARE, 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 systemrootSystem32 y systemrootSystem32Drivers 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_MACHINESYSTEMCurrentControlSetServicesServicename 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 systemrootsystem32Win32k.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 systemrootsystem32Csrss.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 (systemrootsystem32Winlogon.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_MACHINESYSTEMCurrentControlSetControlSessionManagerPendingFileRenameOperations. (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_MACHINESYSTEMCurrentControlSetControlSessionManager 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_MACHINESYSTEMCurrentControlSetControlSessionManagerSubsystems 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_MACHINESYSTEMCurrentControlSetServicesservicename.

  • 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_MACHINESYSTEMSelectLastKnownGood 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_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunonce

    • HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpoliciesExplorerRun

    • HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun

    • HKEY_CURRENT_USERSoftwareMicrosoftWindowsNTCurrentVersionWindowsRun

    • HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionWindowsRun

    • HKEY_CURRENT_USERSoftwareMicrosoftWindowsNTCurrentVersionWindowsRunOnce

    • systemdriveDocuments and SettingsAll UsersStart MenuProgramsStartup

    • systemdriveDocuments and SettingsAll UsersNombreUsuarioProgramsStartup

    • windirProfilesAll UsersStart MenuProgramsStartup

    • windirProfilesNombreUsuarioStart MenuProgramsStartup

La carpeta windirProfiles 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.