Cómo funciona la herramienta Reparación de inicio de Windows Vista (Parte III)

En este artículo se va a describir el arranque de los sistemas operativos Windows Vista y Windows 7. Antes de comenzar, es necesario que veamos unas pinceladas del arranque de sistemas operativos anteriores, para poner el nuevo sistema de arranque en contexto.

El proceso de arranque en Windows XP y anteriores

El proceso de arranque comienza cuando la BIOS de la máquina lee el primer sector del disco duro. Este sector (el sector de arranque), típicamente contiene una porción de código denominada MBR (Master Boot Record), pero podría contener cualquier otro código ejecutable. En sistemas Windows XP y anteriores sistemas NT, dicho código apunta al fichero Ntldr mediante una cadena de tipo Unicode situada en una posición fija de dicho primer sector del disco duro. El archivo Ntldr es el encargado de leer el fichero Boot.ini, que contiene información importante sobre los sistemas que están instalados y cómo se debe arrancar cada uno de ellos. Si procede, Ntldr muestra al usuario una lista de sistemas operativos para que elija alguno mediante las flechas de dirección.

La nueva arquitectura de arranque

El problema principal de este esquema primitivo de arranque es que se trata de un esquema enormemente dependiente del hardware. Este problema se hizo patente cuando Intel desarrolló, a mediados de los años 90, una nueva especificación para sus máquinas Itanium, con el objetivo de evitar las limitaciones impuestas por el ya vetusto sistema PC BIOS. Esta especificación se denominó EFI (Extended Firmware Interface) y básicamente consiste en una interfaz entre el sistema operativo y el firmware de la máquina. EFI soporta tanto el esquema clásico de particiones basado en MBR como el nuevo esquema GPT (Guid Partition Table). La principal ventaja de este nuevo esquema es que no se ve afectado por las limitaciones de MBR, tales como el límite de 4 particiones primarias por disco y los 2TB como máximo por partición.

Con la salida al mercado de Windows Vista, Microsoft introdujo un nuevo almacén de configuración de arranque denominado almacén BCD (Boot Configuration Data). Podríamos decir que este almacén realiza las mismas funciones que el fichero Boot.ini realiza en sistemas Windows XP o anteriores. La diferencia fundamental reside en que el almacén BCD es independiente del hardware y es capaz de arrancar tanto sistemas PC BIOS tradicionales como sistemas basados en EFI. En el futuro podría darse soporte a nuevos esquemas de arranque.

La arquitectura del BCD está formada por tres componentes bien diferenciados: almacén BCD, objeto BCD y elemento BCD.

Almacén BCD

El almacén BCD es un contenedor de objetos BCD, entidad que a su vez contiene elementos BCD. Físicamente es un fichero binario con una estructura similar a los ficheros binarios que representan ramas del Registro del sistema. Su nombre es BCD y está situado en el directorio \Boot (en un sistema PC BIOS) o \EFI\Microsoft\Boot (en un sistema EFI) de la partición activa del disco. 

Objetos BCD

Por defecto, el almacén BCD contiene los siguientes objetos BCD:

  • Administrador de arranque de Windows: Este objeto contiene entradas correspondientes a cada uno de los sistemas operativos instalados en la máquina. También existen parámetros adicionales, tales como el tiempo de espera hasta que se seleccione la entrada por defecto de dicho menú o la ordenación de la lista de sistemas operativos. Podríamos decir que este objeto BCD reemplaza la funcionalidad de la porción [boot loader] del fichero Boot.ini.
  • Cargador de arranque de Windows: Existe un objeto BCD de este tipo por cada sistema Windows Vista/Windows 7 que esté instalado en el equipo. Se podría decir que este objeto reemplaza la funcionalidad de la sección [operating systems] del fichero Boot.ini.
  • Ntldr: Este objeto BCD es opcional y contiene la información necesaria para arrancar sistemas Windows XP o anteriores. Nótese que el fichero Ntldr no sirve para nada en Windows Vista/Windows 7, excepto para arrancar sistemas anteriores.

Además de estos objetos BCD, las aplicaciones pueden crear sus propios objetos utilizando la interfaz de programación del almacén BCD. Por ejemplo, la utilidad de comprobación de memoria RAM incluida en el entorno de recuperación de Windows Vista/Windows 7 programa un análisis de RAM mediante el ejecutable Mdsched.exe, que crea un nuevo objeto BCD que apunta al ejecutable \Boot\Memtest.exe (en sistemas PC BIOS) o \EFI\Microsoft\Boot\Memtest.efi (en sistemas EFI). Otras aplicaciones de terceros podrían crear sus propios objetos en el BCD.

Elementos BCD

Los elementos BCD guardan los parámetros de configuración de cada uno de los objetos BCD. Estos parámetros, como ya se ha comentado, pueden ser la existencia de un depurador de kernel, el sistema operativo que iniciará por defecto, si se han activado las PAE (Physical Address Extensions), etc.

Este diagrama proporciona una visión global de la arquitectura del BCD:

Esquema de la arquitectura BCD

Cada uno de los objetos BCD anteriores enlaza con un ejecutable diferente. Como ya se comentó, el objeto BCD correspondiente al análisis de memoria RAM enlaza con el ejecutable Memtest.exe o Memtest.efi. La entrada correspondiente al arranque de un sistema Windows Vista/Windows 7 enlaza con el ejecutable Winload.exe o Winload.efi, encargado de inicializar el núcleo del sistema operativo mediante Ntoskrnl.exe y cargar algunos controladores de arranque. Si el sistema hibernó por última vez, un objeto BCD apuntará al ejecutable Winresume.exe o Winresume.efi, que es el encargado de reanudar el sistema operativo para dejarlo tal cual estaba antes de ser hibernado.

¿Qué hace la herramienta Reparación de inicio si se encuentra con algún problema?

Si alguna de las estructuras comentadas anteriormente se ha dañado, el sistema no podrá arrancar. La herramienta Reparación del inicio habrá obtenido toda la información mediante su conjunto inicial de pruebas. Si la tabla de particiones, sector de arranque o almacén BCD estuviera dañado, el ejecutable BCDMD (Boot Critical Disk Meta-data Repair) se encarga de regenerar toda esta información. Esta herramienta básicamente realiza un análisis en busca de sistemas operativos, a la vez que compara esta información con la residente en el almacén BCD. Si la información del BCD no fuera coherente, esta herramienta es capaz de modificarla para que lo sea. Si los ficheros Winload.exe o Bootmgr no estuvieran o estuvieran dañados, Reparación de inicio puede recuperarlos en ciertas circunstancias, como ya vimos, mediante el comando Bfsvc.exe /nosetupcheck.

Otro de los problemas que puede afectar al arranque del sistema, como ya vimos, es una corrupción de los ficheros de sistema o bien un problema de permisos sobre ciertos ficheros importantes. Para el primer caso, Reparación del inicio ejecuta el comando Sfc.exe, cuyo funcionamiento se describió en un anterior artículo. Para el segundo caso, la herramienta reconstruye los permisos correctos, teniendo en cuenta que los ficheros del sistema operativo tienen una serie de permisos por defecto, para evitar su accidental eliminación o sobreescritura.

Si el Registro resultara estar corrupto, se puede recuperar a partir de la copia de seguridad del directorio %windir%\system32\config\RegBack. Si dicha copia tampoco estuviera en buen estado, se recurre a la copia con extensión .old que hay en el mismo directorio. Sin embargo, ante una corrupción del Registro la restauración del sistema se intenta aplicar siempre en primer lugar. El motivo es claro, las ramas de Registro del punto de restauración probablemente serán más recientes que las que hay en la carpeta RegBack. Solo se recurre a esta carpeta si no hubiera puntos de restauración disponible o estos no hubieran solucionado el problema.

Haciendo referencia a los puntos de restauración, la herramienta elige el más reciente que sea anterior a la causa que ha producido el fallo. Por ejemplo, si el usuario instaló un controlador y el sistema dejó de iniciar, Reparación del inicio intentará usar el punto de restauración más reciente anterior a la instalación del controlador. Para el caso de un Registro corrupto, la herramienta prueba con el punto de restauración más reciente que haya disponible.

Espero que toda esta información sobre el arranque de Windows Vista/Windows 7 y la herramienta Reparación del inicio les sirva para comprender un poco mejor cómo arranca el sistema operativo, qué estructuras están asociadas al arranque, qué problemas pueden surgir y cómo los aborda la herramienta de Reparación del inicio.

(Esta entrada ha sido programada. Daniel está en estos momentos en Redmond, Washington).

Published Sun, Mar 1 2009 8:58 by dmartin

Comments

Thursday, October 29, 2009 5:03 PM by Marcos

# re: Cómo funciona la herramienta Reparación de inicio de Windows Vista (Parte III)

Hola Daniel.

¿Como determinar o "ver" que software y que controladores intervienen en el arranque del sistema operativo (Vista) para deshabilitar ante un posible fallo? Esto debido a la instalación previa de un programa que pueda dañar el sistema y en el siguiente inicio no tenga manera de arrancar y provoque "pantallazo".

Gracias.

Thursday, October 29, 2009 5:42 PM by dmartin

# re: Cómo funciona la herramienta Reparación de inicio de Windows Vista (Parte III)

@Marcos: Si instalas algún programa y no puedes volver a iniciar el sistema por un pantallazo azul, puedes hacer uso de la opción avanzada de arranque "Última configuración buena conocida".

Lo que hace esta opción es restaurar la rama de Registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet con una copia de seguridad creada cuando tu sistema sí era capaz de arrancar. Si así logras arrancar el sistema, podrías comparar la rama que te comento con la correspondiente copia de seguridad (HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX, donde "XXX" es un número) para detectar qué controlador es el culpable.

Para saber qué número debes asignar a "XXX", echa un vistazo al valor "LastKnownGood" de la clave HKEY_LOCAL_MACHINE\SYSTEM\Select.

Thursday, October 29, 2009 6:05 PM by Marcos

# re: Cómo funciona la herramienta Reparación de inicio de Windows Vista (Parte III)

Gracias.

He probado con la opción "Ultima configuracion buena conocida" pero nada.

¿El comando regedit, que se ejecuta desde el simbolo de sistema en Reparacion de inicio de Windows Vista, carga el registro del sistema operativo?. Si fuese así, ¿serviría eliminar la entrada dentro de: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

para que no inicie el software en cuestion?

Y otra duda, como te comentaba, ¿para deshabilitar servicios? ¿como procedería? en Xp mediante la Consola de recuperación tiene el comando Disable, ¿pero en Vista?.

Friday, October 30, 2009 5:41 AM by dmartin

# re: Cómo funciona la herramienta Reparación de inicio de Windows Vista (Parte III)

@Marcos: La clave de Registro que comentas carga elementos del inicio pero algo más tarde en la etapa de arranque.

¿Has probado a ejecutar la herramienta Reparación de inicio desde el DVD de Vista? Si no fuese capaz de solucionar el problema, habría que echar un vistazo a su LOG asociado en %WINDIR%\System32\LogFiles\Srt

Friday, October 30, 2009 9:32 AM by Marcos

# re: Cómo funciona la herramienta Reparación de inicio de Windows Vista (Parte III)

Si, he ejecutado la herramienta y nada. Comprobaré el LOG y te comento.

Sunday, November 01, 2009 8:37 AM by Marcos

# re: Cómo funciona la herramienta Reparación de inicio de Windows Vista (Parte III)

Lo tengo resuelto.

Al final hice un chkdsk al disco duro y volví a ejecutar la herramienta de reparación, elegí un punto de restauración anterior a la instalación del software y todo perfecto, ha vuelto a arrancar.

Muchas gracias por tu ayuda.

Un saludo.

Leave a Comment

(required) 
(required) 
(optional)
(required)